@taskforcehq/taskforce 0.3.327 → 0.3.329

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.
Files changed (360) hide show
  1. package/dist/Taskforce.module.css +257 -87
  2. package/dist/TaskforceCore.js +237 -230
  3. package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.js +1 -1
  4. package/dist/cli.js +34 -0
  5. package/dist/cliCloudTargetGuard.d.ts +5 -0
  6. package/dist/cliCloudTargetGuard.js +11 -0
  7. package/dist/components/activity/EntityActivityTimeline.js +15 -5
  8. package/dist/components/context/AttachmentPreviewHost.js +1 -1
  9. package/dist/components/context/ContextAttachmentManager.d.ts +3 -0
  10. package/dist/components/context/ContextAttachmentManager.js +116 -20
  11. package/dist/components/features/AnnotatedAttachmentWorkspace.js +24 -8
  12. package/dist/components/features/TaskSettings.d.ts +12 -1
  13. package/dist/components/features/TaskSettings.js +147 -40
  14. package/dist/components/features/agentCapabilities/AgentCapabilitiesPrototype.d.ts +1 -1
  15. package/dist/components/features/planning/PlanningEntitySummary.d.ts +3 -1
  16. package/dist/components/features/planning/PlanningEntitySummary.js +3 -2
  17. package/dist/components/features/planning/PlanningLinkPicker.d.ts +3 -1
  18. package/dist/components/features/planning/PlanningLinkPicker.js +5 -3
  19. package/dist/components/features/planning/PlanningModule.js +28 -14
  20. package/dist/components/features/planning/PlanningTaskOrderList.d.ts +1 -1
  21. package/dist/components/features/planning/PlanningTaskOrderList.js +17 -6
  22. package/dist/components/features/planning/PlanningVisualIdentity.d.ts +14 -0
  23. package/dist/components/features/planning/PlanningVisualIdentity.js +106 -0
  24. package/dist/components/features/planning/planningTaskArrangement.d.ts +1 -0
  25. package/dist/components/features/planning/planningTaskArrangement.js +5 -5
  26. package/dist/components/features/planning/planningWorkspaceModel.d.ts +11 -0
  27. package/dist/components/features/taskforceAgentEditorModel.js +3 -1
  28. package/dist/components/task/TaskActionHeader.d.ts +2 -1
  29. package/dist/components/task/TaskActionHeader.js +2 -2
  30. package/dist/components/task/TaskCard.d.ts +5 -0
  31. package/dist/components/task/TaskCard.js +101 -13
  32. package/dist/components/task/TaskContextUpload.d.ts +3 -0
  33. package/dist/components/task/TaskContextUpload.js +2 -2
  34. package/dist/components/task/TaskForm.d.ts +4 -0
  35. package/dist/components/task/TaskForm.js +32 -7
  36. package/dist/components/task/TaskImageReviews.js +28 -19
  37. package/dist/components/task/TaskKanban.d.ts +6 -1
  38. package/dist/components/task/TaskKanban.js +152 -6
  39. package/dist/components/task/TaskList.d.ts +5 -0
  40. package/dist/components/task/TaskList.js +3 -3
  41. package/dist/components/task/TaskStatusActions.js +11 -2
  42. package/dist/components/task/TaskWorkstreamPicker.js +2 -1
  43. package/dist/components/ui/DocumentTypeIcon.d.ts +7 -0
  44. package/dist/components/ui/DocumentTypeIcon.js +8 -0
  45. package/dist/components/ui/PasswordInput.d.ts +6 -0
  46. package/dist/components/ui/PasswordInput.js +11 -0
  47. package/dist/components/ui/TaxonomyDropdown.d.ts +9 -1
  48. package/dist/components/ui/TaxonomyDropdown.js +30 -3
  49. package/dist/components/ui/TopNoticeLayer.js +1 -1
  50. package/dist/components/views/AppShellHeader.js +32 -11
  51. package/dist/components/views/PlanComparisonPage.js +12 -0
  52. package/dist/components/views/StandaloneLayout.js +68 -39
  53. package/dist/components/views/WidgetView.js +10 -7
  54. package/dist/components/views/panels/PlanningDrawer.d.ts +7 -1
  55. package/dist/components/views/panels/PlanningDrawer.js +51 -54
  56. package/dist/components/views/standalone/modals/AccountSettingsModal.js +26 -17
  57. package/dist/config/envSchema.js +13 -0
  58. package/dist/config/localServiceCloudTarget.d.ts +10 -0
  59. package/dist/config/localServiceCloudTarget.js +76 -0
  60. package/dist/config/localServiceRuntimeContract.d.ts +13 -0
  61. package/dist/config/localServiceRuntimeContract.js +135 -0
  62. package/dist/core/AiProfileService.d.ts +1 -0
  63. package/dist/core/AiProfileService.js +48 -9
  64. package/dist/core/AttachmentLinkService.js +7 -4
  65. package/dist/core/DeletedTaskLifecycleService.d.ts +5 -0
  66. package/dist/core/DeletedTaskLifecycleService.js +55 -3
  67. package/dist/core/McpTokenService.d.ts +4 -0
  68. package/dist/core/McpTokenService.js +52 -0
  69. package/dist/core/TaskAttachmentLinksDurableMutationService.d.ts +8 -2
  70. package/dist/core/TaskAttachmentLinksDurableMutationService.js +51 -18
  71. package/dist/core/Taskforce.d.ts +124 -2
  72. package/dist/core/Taskforce.js +1175 -87
  73. package/dist/core/types.d.ts +8 -1
  74. package/dist/documentReviews/DocumentReviewCommentStore.d.ts +11 -0
  75. package/dist/documentReviews/DocumentReviewCommentStore.js +35 -2
  76. package/dist/documentReviews/service.d.ts +4 -0
  77. package/dist/documentReviews/service.js +141 -46
  78. package/dist/hooks/sync/useDurableLocalOutboxDrain.d.ts +1 -1
  79. package/dist/hooks/sync/useDurableTaskCreateMutation.js +1 -1
  80. package/dist/hooks/sync/useDurableTaskMetadataMutation.d.ts +1 -0
  81. package/dist/hooks/sync/useDurableTaskMetadataMutation.js +1 -0
  82. package/dist/hooks/sync/useDurableTaskStatusMutation.d.ts +1 -0
  83. package/dist/hooks/tasks/taskHttpMutation.js +1 -0
  84. package/dist/hooks/tasks/useCloudTaskSearch.d.ts +12 -0
  85. package/dist/hooks/tasks/useCloudTaskSearch.js +71 -0
  86. package/dist/hooks/tasks/useTaskDescriptionImageDraftRecovery.d.ts +16 -0
  87. package/dist/hooks/tasks/useTaskDescriptionImageDraftRecovery.js +197 -0
  88. package/dist/hooks/tasks/useTaskEditorNavigation.d.ts +16 -3
  89. package/dist/hooks/tasks/useTaskEditorNavigation.js +72 -13
  90. package/dist/hooks/tasks/useTaskFormActions.d.ts +9 -0
  91. package/dist/hooks/tasks/useTaskFormActions.js +96 -17
  92. package/dist/hooks/ui/useSettingsModel.d.ts +24 -2
  93. package/dist/hooks/ui/useSettingsModel.js +13 -2
  94. package/dist/hooks/ui/useSettingsPersistence.d.ts +12 -1
  95. package/dist/hooks/ui/useSettingsPersistence.js +74 -47
  96. package/dist/hooks/useFilterSort.d.ts +7 -3
  97. package/dist/hooks/useFilterSort.js +15 -5
  98. package/dist/hooks/useTaskData.d.ts +10 -1
  99. package/dist/hooks/useTaskData.js +216 -7
  100. package/dist/hooks/useTaskMutations.d.ts +10 -2
  101. package/dist/hooks/useTaskMutations.js +223 -43
  102. package/dist/hooks/useTaskforce.d.ts +94 -57
  103. package/dist/hooks/useTaskforce.js +428 -16
  104. package/dist/hooks/useUiNotice.d.ts +4 -0
  105. package/dist/hooks/useUiNotice.js +4 -0
  106. package/dist/mcp/adminWorkspaceRegistrar.js +3 -3
  107. package/dist/mcp/canonicalAssetHelpers.d.ts +13 -0
  108. package/dist/mcp/canonicalAssetHelpers.js +39 -5
  109. package/dist/mcp/collaborationRegistrar.js +15 -13
  110. package/dist/mcp/documentAssetRegistrar.js +60 -44
  111. package/dist/mcp/documentHelpers.d.ts +1 -0
  112. package/dist/mcp/documentHelpers.js +7 -3
  113. package/dist/mcp/localServiceProxy.js +4 -1
  114. package/dist/mcp/runtime.d.ts +16 -0
  115. package/dist/mcp/runtime.js +735 -210
  116. package/dist/mcp/taskAttachmentCommandAdapter.d.ts +2 -0
  117. package/dist/mcp/taskAttachmentCommandAdapter.js +14 -8
  118. package/dist/mcp/taskPlanningRegistrar.js +78 -67
  119. package/dist/mcp/toolCallCompatibility.js +38 -1
  120. package/dist/mcp/toolCatalog.d.ts +1 -0
  121. package/dist/mcp/toolRegistry.js +2 -2
  122. package/dist/migrations/taskSchemaMigrations.js +47 -0
  123. package/dist/runtime/appGateDefinitions.d.ts +30 -6
  124. package/dist/runtime/appGateDefinitions.js +6 -6
  125. package/dist/runtime/appGates.d.ts +12 -13
  126. package/dist/runtime/appGates.js +29 -13
  127. package/dist/runtime/nodeAppGates.d.ts +8 -0
  128. package/dist/runtime/nodeAppGates.js +27 -0
  129. package/dist/server/appAccess.d.ts +12 -0
  130. package/dist/server/appAccess.js +21 -0
  131. package/dist/server/authorizedWorkspaceAccess.d.ts +12 -0
  132. package/dist/server/authorizedWorkspaceAccess.js +40 -0
  133. package/dist/server/cloudCollectionRead.d.ts +25 -0
  134. package/dist/server/cloudCollectionRead.js +120 -0
  135. package/dist/server/cloudCollectionReadPool.d.ts +52 -0
  136. package/dist/server/cloudCollectionReadPool.js +140 -0
  137. package/dist/server/cloudCollectionReadWorker.d.ts +1 -0
  138. package/dist/server/cloudCollectionReadWorker.js +36 -0
  139. package/dist/server/index.d.ts +6 -11
  140. package/dist/server/index.js +67 -42
  141. package/dist/server/localServiceLease.d.ts +6 -0
  142. package/dist/server/localServiceLease.js +17 -1
  143. package/dist/server/localWorkspaceSyncServerRuntime.js +10 -3
  144. package/dist/server/rateLimit.d.ts +1 -0
  145. package/dist/server/rateLimit.js +4 -0
  146. package/dist/server/realtimeSyncWs.js +36 -12
  147. package/dist/server/routes/admin.js +1 -0
  148. package/dist/server/routes/agentRoles.js +3 -2
  149. package/dist/server/routes/agentSkills.js +3 -2
  150. package/dist/server/routes/agents.js +118 -16
  151. package/dist/server/routes/annotatedAttachments.js +3 -2
  152. package/dist/server/routes/auth.js +3 -1
  153. package/dist/server/routes/documents.d.ts +5 -2
  154. package/dist/server/routes/documents.js +160 -13
  155. package/dist/server/routes/durableTaskHttpRouters.d.ts +11 -2
  156. package/dist/server/routes/durableTaskHttpRouters.js +2 -2
  157. package/dist/server/routes/localService.js +4 -0
  158. package/dist/server/routes/primitives.d.ts +4 -0
  159. package/dist/server/routes/shared.d.ts +24 -0
  160. package/dist/server/routes/shared.js +114 -18
  161. package/dist/server/routes/sync.js +22 -0
  162. package/dist/server/routes/syncAuxRoutes.js +5 -2
  163. package/dist/server/routes/syncPullApplyRoutes.js +23 -4
  164. package/dist/server/routes/syncV3FeedRoutes.js +22 -18
  165. package/dist/server/routes/syncV3LocalCaptureRoutes.js +48 -4
  166. package/dist/server/routes/syncV3LocalFeedApplyRoutes.d.ts +1 -0
  167. package/dist/server/routes/syncV3LocalFeedApplyRoutes.js +26 -0
  168. package/dist/server/routes/syncV3OperationRoutes.js +27 -2
  169. package/dist/server/routes/tasks.js +299 -97
  170. package/dist/server/routes/workspaces.js +43 -1
  171. package/dist/server/routes.js +35 -7
  172. package/dist/server/workspaceDeletionAdmission.d.ts +23 -0
  173. package/dist/server/workspaceDeletionAdmission.js +50 -0
  174. package/dist/service/localServiceCli.js +52 -25
  175. package/dist/service/localServiceClientLifecycle.js +93 -6
  176. package/dist/services/codexAppServerModelGateway.d.ts +112 -0
  177. package/dist/services/codexAppServerModelGateway.js +438 -0
  178. package/dist/services/taskforceAgentMcpBridge.d.ts +7 -1
  179. package/dist/services/taskforceAgentMcpBridge.js +23 -3
  180. package/dist/shared/planningIdentity.d.ts +20 -0
  181. package/dist/shared/planningIdentity.js +79 -0
  182. package/dist/shared/taskforceAgentDefinition.js +7 -1
  183. package/dist/shared/taskforceAgentModels.d.ts +1 -0
  184. package/dist/shared/taskforceAgentModels.js +30 -1
  185. package/dist/storage/postgresAdapter.d.ts +20 -3
  186. package/dist/storage/postgresAdapter.js +110 -14
  187. package/dist/storage/postgresRequestDiagnostics.d.ts +8 -0
  188. package/dist/storage/postgresRequestDiagnostics.js +24 -0
  189. package/dist/storage/postgresWorker.js +13 -4
  190. package/dist/storage/postgresWorkerProtocol.d.ts +29 -0
  191. package/dist/storage/postgresWorkerProtocol.js +30 -0
  192. package/dist/storage/workspaceAssetStore.d.ts +32 -0
  193. package/dist/storage/workspaceAssetStore.js +70 -0
  194. package/dist/sync/cloudSyncApi.d.ts +4 -1
  195. package/dist/sync/cloudSyncApi.js +7 -2
  196. package/dist/sync/contentSyncState.d.ts +1 -1
  197. package/dist/sync/coordinator/localSyncExecutionPermitStore.d.ts +17 -0
  198. package/dist/sync/coordinator/localSyncExecutionPermitStore.js +77 -23
  199. package/dist/sync/coordinator/localWorkspaceSyncRunner.js +6 -2
  200. package/dist/sync/coordinator/workspaceSyncTransportGateway.js +4 -2
  201. package/dist/sync/engine/workspaceSyncEngineBrowserGatewayRemoteServices.js +20 -2
  202. package/dist/sync/engine/workspaceSyncEngineLocalServices.d.ts +4 -0
  203. package/dist/sync/engine/workspaceSyncEngineLocalServices.js +11 -0
  204. package/dist/sync/engine/workspaceSyncEngineRemoteServices.d.ts +16 -0
  205. package/dist/sync/engine/workspaceSyncEngineRemoteServices.js +2 -1
  206. package/dist/sync/engine/workspaceSyncEngineServerRemoteServices.d.ts +1 -1
  207. package/dist/sync/engine/workspaceSyncEngineServerRemoteServices.js +46 -4
  208. package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.d.ts +3 -1
  209. package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.js +51 -11
  210. package/dist/sync/engine/workspaceSyncEngineTransfers.d.ts +1 -1
  211. package/dist/sync/engine/workspaceSyncEngineTransfers.js +8 -3
  212. package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.js +2 -0
  213. package/dist/sync/syncApplyHandlers.d.ts +3 -1
  214. package/dist/sync/syncApplyHandlers.js +29 -0
  215. package/dist/sync/syncService.d.ts +2 -0
  216. package/dist/sync/syncService.js +13 -1
  217. package/dist/sync/taskSyncPayload.d.ts +1 -0
  218. package/dist/sync/taskSyncPayload.js +6 -0
  219. package/dist/sync/v3/combinedFeedCapability.js +4 -0
  220. package/dist/sync/v3/durableTaskAttachmentLinksMutationRouter.d.ts +3 -0
  221. package/dist/sync/v3/durableTaskAttachmentLinksMutationRouter.js +31 -3
  222. package/dist/sync/v3/durableTaskChecklistMutationRouter.d.ts +2 -0
  223. package/dist/sync/v3/durableTaskChecklistMutationRouter.js +4 -0
  224. package/dist/sync/v3/durableTaskHttpBulkMutationRouter.d.ts +1 -0
  225. package/dist/sync/v3/durableTaskHttpBulkMutationRouter.js +47 -12
  226. package/dist/sync/v3/durableTaskHttpRootMutationRouter.d.ts +5 -3
  227. package/dist/sync/v3/durableTaskHttpRootMutationRouter.js +27 -2
  228. package/dist/sync/v3/localInitiativeOutboxService.js +4 -2
  229. package/dist/sync/v3/localOutboxDispatcher.js +5 -1
  230. package/dist/sync/v3/localTaskAttachmentLinksOutboxHandler.js +12 -2
  231. package/dist/sync/v3/localTaskAttachmentLinksOutboxService.d.ts +3 -0
  232. package/dist/sync/v3/localTaskAttachmentLinksOutboxService.js +62 -10
  233. package/dist/sync/v3/localTaskCreateOutboxService.js +15 -6
  234. package/dist/sync/v3/localTaskMetadataClient.d.ts +1 -0
  235. package/dist/sync/v3/localTaskMetadataClient.js +1 -0
  236. package/dist/sync/v3/localTaskMetadataOutboxHandler.js +5 -1
  237. package/dist/sync/v3/localTaskMetadataOutboxService.d.ts +2 -0
  238. package/dist/sync/v3/localTaskMetadataOutboxService.js +7 -0
  239. package/dist/sync/v3/localTaskRestoreOutboxService.js +14 -6
  240. package/dist/sync/v3/localTaskStatusClient.d.ts +1 -0
  241. package/dist/sync/v3/localTaskStatusClient.js +6 -1
  242. package/dist/sync/v3/localTaskStatusOutboxService.d.ts +2 -0
  243. package/dist/sync/v3/localTaskStatusOutboxService.js +54 -13
  244. package/dist/sync/v3/localWorkstreamOutboxService.js +4 -2
  245. package/dist/sync/v3/syncDurabilityStore.d.ts +15 -0
  246. package/dist/sync/v3/syncDurabilityStore.js +201 -43
  247. package/dist/sync/v3/taskAttachmentLinksMutationService.d.ts +7 -4
  248. package/dist/sync/v3/taskAttachmentLinksMutationService.js +37 -12
  249. package/dist/sync/v3/taskChecklistMutationService.d.ts +4 -2
  250. package/dist/sync/v3/taskChecklistMutationService.js +4 -0
  251. package/dist/sync/v3/taskCreateMutationService.d.ts +2 -2
  252. package/dist/sync/v3/taskCreateMutationService.js +7 -4
  253. package/dist/sync/v3/taskMetadataCoexistence.js +4 -0
  254. package/dist/sync/v3/taskMetadataMutationService.d.ts +3 -0
  255. package/dist/sync/v3/taskMetadataMutationService.js +4 -0
  256. package/dist/sync/v3/taskRestoreMutationService.d.ts +2 -2
  257. package/dist/sync/v3/taskRestoreMutationService.js +7 -4
  258. package/dist/sync/v3/taskStatusMutationService.d.ts +2 -0
  259. package/dist/sync/v3/taskStatusMutationService.js +4 -0
  260. package/dist/sync/v3/workflowAssignmentSync.d.ts +1 -0
  261. package/dist/sync/v3/workflowAssignmentSync.js +3 -0
  262. package/dist/sync/v3/workspaceSyncV2ProjectionExclusions.d.ts +1 -1
  263. package/dist/sync/v3/workspaceSyncV2ProjectionExclusions.js +14 -12
  264. package/dist/sync/v3/workspaceSyncV3AttachmentApplyObligationStore.d.ts +11 -0
  265. package/dist/sync/v3/workspaceSyncV3AttachmentApplyObligationStore.js +27 -10
  266. package/dist/sync/v3/workspaceSyncV3AttachmentAssetHydration.d.ts +2 -1
  267. package/dist/sync/v3/workspaceSyncV3AttachmentAssetHydration.js +52 -10
  268. package/dist/sync/v3/workspaceSyncV3CloudOperationHandler.js +10 -1
  269. package/dist/sync/v3/workspaceSyncV3CombinedFeedOrchestrator.js +15 -4
  270. package/dist/sync/v3/workspaceSyncV3CombinedLocalApply.js +66 -13
  271. package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.d.ts +11 -0
  272. package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.js +57 -22
  273. package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.d.ts +10 -4
  274. package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.js +124 -51
  275. package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.d.ts +10 -0
  276. package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.js +120 -28
  277. package/dist/sync/v3/workspaceSyncV3CombinedWireContract.d.ts +3 -1
  278. package/dist/sync/v3/workspaceSyncV3CombinedWireContract.js +18 -0
  279. package/dist/sync/v3/workspaceSyncV3CoverageRegistry.js +6 -0
  280. package/dist/sync/v3/workspaceSyncV3FeedProfile.d.ts +1 -1
  281. package/dist/sync/v3/workspaceSyncV3LegacyBoundaryAttestation.d.ts +1 -0
  282. package/dist/sync/v3/workspaceSyncV3LegacyBoundaryAttestation.js +23 -10
  283. package/dist/sync/v3/workspaceSyncV3NestedTaskApply.d.ts +3 -0
  284. package/dist/sync/v3/workspaceSyncV3NestedTaskApply.js +64 -13
  285. package/dist/sync/v3/workspaceSyncV3NestedTaskCodecs.d.ts +9 -0
  286. package/dist/sync/v3/workspaceSyncV3NestedTaskCodecs.js +26 -0
  287. package/dist/sync/v3/workspaceSyncV3NestedTaskProjection.d.ts +15 -5
  288. package/dist/sync/v3/workspaceSyncV3NestedTaskProjection.js +50 -14
  289. package/dist/sync/v3/workspaceSyncV3NestedTaskRepairSnapshot.d.ts +2 -1
  290. package/dist/sync/v3/workspaceSyncV3NestedTaskRepairSnapshot.js +11 -3
  291. package/dist/sync/v3/workspaceSyncV3OperationProtocol.d.ts +3 -0
  292. package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.d.ts +2 -0
  293. package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.js +19 -7
  294. package/dist/sync/v3/workspaceSyncV3RepairSqlBatching.d.ts +2 -0
  295. package/dist/sync/v3/workspaceSyncV3RepairSqlBatching.js +10 -0
  296. package/dist/sync/v3/workspaceSyncV3TaskCommentAudit.js +9 -2
  297. package/dist/sync/v3/workspaceSyncV3TaskCoverCoverage.d.ts +7 -0
  298. package/dist/sync/v3/workspaceSyncV3TaskCoverCoverage.js +37 -0
  299. package/dist/sync/v3/workspaceSyncV3TaskCoverWireContract.d.ts +6 -0
  300. package/dist/sync/v3/workspaceSyncV3TaskCoverWireContract.js +9 -0
  301. package/dist/sync/v3/workspaceSyncV3TaskRootProjection.d.ts +1 -1
  302. package/dist/sync/v3/workspaceSyncV3TaskRootProjection.js +1 -1
  303. package/dist/sync/workspacePullFeed.d.ts +6 -1
  304. package/dist/sync/workspacePullFeed.js +174 -162
  305. package/dist/sync/workspaceRepair.d.ts +3 -0
  306. package/dist/sync/workspaceRepair.js +67 -6
  307. package/dist/sync/workspaceSyncModel.d.ts +11 -0
  308. package/dist/sync/workspaceSyncModel.js +27 -2
  309. package/dist/types.d.ts +55 -1
  310. package/dist/types.js +6 -0
  311. package/dist/ui/assets/{AiIdentityRosterCard-DB1BLO_j.js → AiIdentityRosterCard-BZM4aQnM.js} +1 -1
  312. package/dist/ui/assets/AiProfilesModule-BbAEWtHH.js +1 -0
  313. package/dist/ui/assets/AnnotatedAttachmentWorkspace-B68Wg-RV.js +3 -0
  314. package/dist/ui/assets/AnnotatedAttachmentWorkspace-TzYu7pkG.css +1 -0
  315. package/dist/ui/assets/AssetTraySortControl-C8Rztyal.js +1 -0
  316. package/dist/ui/assets/ContextAttachmentManager-Cj3c7X9y.js +3 -0
  317. package/dist/ui/assets/{DocumentWorkspace-BC7sy5TG.js → DocumentWorkspace-B5uvzems.js} +4 -4
  318. package/dist/ui/assets/EntityActivityTimeline-BVFvCB5R.js +1 -0
  319. package/dist/ui/assets/PlanningModule-B5DWQOGz.js +1 -0
  320. package/dist/ui/assets/PlanningModule-CoIR9hbV.css +1 -0
  321. package/dist/ui/assets/PlansPage-AY4cGWco.js +1 -0
  322. package/dist/ui/assets/TaskContextUpload-DZxTVesW.js +1 -0
  323. package/dist/ui/assets/TaskContextUpload-qmBeUw3u.css +1 -0
  324. package/dist/ui/assets/TaskSettings-BeWAuyZj.js +12 -0
  325. package/dist/ui/assets/{TaskforceAgentsModule-CkAxW19K.js → TaskforceAgentsModule-BifCYtjR.js} +6 -6
  326. package/dist/ui/assets/WorkflowManagerModule-DEr5di_r.js +1 -0
  327. package/dist/ui/assets/index-I5zhdtgt.js +7 -0
  328. package/dist/ui/assets/index-VRFsx3wz.css +1 -0
  329. package/dist/ui/assets/{vendor-icons-B8ZNsH1g.js → vendor-icons-D9Lpw-j4.js} +1 -1
  330. package/dist/ui/index.html +3 -3
  331. package/dist/utils/constants.d.ts +2 -2
  332. package/dist/utils/constants.js +1 -1
  333. package/dist/utils/contextAttachmentUpload.d.ts +2 -0
  334. package/dist/utils/contextAttachmentUpload.js +7 -0
  335. package/dist/utils/contextFiles.d.ts +1 -1
  336. package/dist/utils/contextFiles.js +4 -4
  337. package/dist/utils/taskActivity.d.ts +3 -2
  338. package/dist/utils/taskActivity.js +19 -2
  339. package/dist/utils/taskEditorReconciliation.d.ts +40 -0
  340. package/dist/utils/taskEditorReconciliation.js +217 -0
  341. package/dist/utils/taskNormalization.d.ts +1 -0
  342. package/dist/utils/taskNormalization.js +39 -0
  343. package/dist/utils/taskSearch.js +2 -2
  344. package/dist/utils/uiNotice.d.ts +4 -0
  345. package/package.json +21 -4
  346. package/dist/ui/assets/AiProfilesModule-DPxQeF9N.js +0 -1
  347. package/dist/ui/assets/AnnotatedAttachmentWorkspace-CBRZ8rca.css +0 -1
  348. package/dist/ui/assets/AnnotatedAttachmentWorkspace-DHNYaNg6.js +0 -3
  349. package/dist/ui/assets/AssetTraySortControl-DphbyHVc.js +0 -1
  350. package/dist/ui/assets/ContextAttachmentManager-CMxSzHqc.js +0 -3
  351. package/dist/ui/assets/EntityActivityTimeline-pJ2ZjZ-k.js +0 -1
  352. package/dist/ui/assets/PlanningModule-CeTqXMMz.css +0 -1
  353. package/dist/ui/assets/PlanningModule-t5GbvVR9.js +0 -1
  354. package/dist/ui/assets/PlansPage-BVH_NfgT.js +0 -1
  355. package/dist/ui/assets/TaskContextUpload-Ds4LnDzV.css +0 -1
  356. package/dist/ui/assets/TaskContextUpload-bl4fOOUz.js +0 -1
  357. package/dist/ui/assets/TaskSettings-xVsxSa0g.js +0 -12
  358. package/dist/ui/assets/WorkflowManagerModule-BKqIGVnF.js +0 -1
  359. package/dist/ui/assets/index-BzJlVnNS.css +0 -1
  360. package/dist/ui/assets/index-Cx7vZJHL.js +0 -7
@@ -0,0 +1,7 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/EntityActivityTimeline-BVFvCB5R.js","assets/vendor-react-CKJs5o3c.js","assets/vendor-icons-D9Lpw-j4.js","assets/vendor-markdown-_lhNCyq-.js","assets/vendor-dnd-CJ-AjP-Y.js","assets/vendor-router-AqJMU8Lz.js","assets/EntityActivityTimeline-BfJbZRdl.css","assets/TaskContextUpload-DZxTVesW.js","assets/ContextAttachmentManager-Cj3c7X9y.js","assets/TaskContextUpload-qmBeUw3u.css","assets/TaskSettings-BeWAuyZj.js","assets/TaskSettings-CnIBL_Eb.css","assets/AnnotatedAttachmentWorkspace-B68Wg-RV.js","assets/AssetTraySortControl-C8Rztyal.js","assets/AssetTraySortControl-B9k5caQW.css","assets/AnnotatedAttachmentWorkspace-TzYu7pkG.css","assets/DocumentWorkspace-B5uvzems.js","assets/DocumentWorkspace-BIBGBfd7.css","assets/TaskforceAgentsModule-BifCYtjR.js","assets/AiIdentityRosterCard-BZM4aQnM.js","assets/TaskforceAgentsModule-D6IC0S7Q.css","assets/WorkflowManagerModule-DEr5di_r.js","assets/WorkflowManagerModule-DF10XENz.css","assets/AiProfilesModule-BbAEWtHH.js","assets/PlanningModule-B5DWQOGz.js","assets/PlanningModule-CoIR9hbV.css","assets/PlansPage-AY4cGWco.js","assets/PlansPage-C2nkK2Bp.css"])))=>i.map(i=>d[i]);
2
+ import{r as o,j as a,R as te,a as pc,b as i0}from"./vendor-react-CKJs5o3c.js";import{I as eo,C as Ld,a as Ud,S as Xh,F as c0,R as Ni,b as l0,c as d0,d as zA,U as dh,G as u0,H as p0,M as f0,e as m0,P as g0,B as h0,f as y0,W as k0,L as v0,g as w0,h as b0,i as S0,j as A0,k as Ah,l as lc,m as C0,n as I0,o as _0,p as T0,T as x0,q as Zf,r as um,s as R0,t as ci,u as ji,A as rw,v as HA,w as Hn,x as Od,y as P0,z as E0,D as N0,E as VA,J as Id,K as sp,N as GA,O as j0,X as di,Q as nw,V as Ff,Y as Ed,Z as Bd,_ as D0,$ as KA,a0 as Jf,a1 as M0,a2 as Rb,a3 as L0,a4 as Xf,a5 as O0,a6 as qA,a7 as YA,a8 as aw,a9 as ZA,aa as B0,ab as W0,ac as $0,ad as JA,ae as F0,af as U0,ag as z0,ah as XA,ai as H0,aj as sw,ak as bo,al as QA,am as V0,an as G0,ao as K0,ap as q0,aq as Pb,ar as Eb,as as Y0,at as Z0,au as J0,av as X0,aw as Q0,ax as eC,ay as ex,az as Nb,aA as tx,aB as rx,aC as nx}from"./vendor-icons-D9Lpw-j4.js";import{s as ax,M as sx,r as jb,a as ox}from"./vendor-markdown-_lhNCyq-.js";import{u as ow,a as Qf,P as iw,b as tC,D as cw,c as rC,S as lw,v as dw,d as uw,C as Qh,e as pw,s as nC,K as aC,f as ix,p as cx,g as Db,h as lx,i as sC,j as dx}from"./vendor-dnd-CJ-AjP-Y.js";import{u as oC,a as iC,b as ux,M as px,N as Mb,B as fx}from"./vendor-router-AqJMU8Lz.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))n(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const l of i.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&n(l)}).observe(document,{childList:!0,subtree:!0});function r(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(s){if(s.ep)return;s.ep=!0;const i=r(s);fetch(s.href,i)}})();const op="default",ey="General",So="task",mx=2,gx=[{value:op,label:ey,icon:"Inbox"}],cC=[{value:So,label:"Task",icon:"CheckSquare",color:"blue-500"}],hx=[{value:mx,label:"Medium",color:"blue-500",icon:"Minus"}];function yx(){return gx.map(e=>({...e}))}function kx(){return cC.map(e=>({...e}))}function vx(e){const t=String(e||"").trim().toLowerCase();return cC.find(r=>r.value===t)}function lC(){return hx.map(e=>({...e}))}const wx={categories:yx(),types:kx(),priorities:lC(),taxonomies:[],apiEndpoint:"/api/taskforce/task",apiBaseUrl:void 0,cloudAuthBaseUrl:void 0,cloudMcpBaseUrl:void 0,wsBaseUrl:void 0,appGates:void 0,position:"bottom-right",offsetY:70,theme:"dawn",shortcut:"Alt+T",manualComplexityEnabled:!1,checklistDropdownEnabled:!0,showTaskCardStatusLabel:!1,showTaskCardDescription:!0,showTaskCardAttachments:!0,showTaskCardChecklistProgress:!0,showTaskCardLatestActivity:!0,tintTaskCardActivityBackground:!1},bx=["light","dawn","dark","midnight"],Ch="dawn",Sx=[{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"}],Ax=new Set(bx),Cx=new Set(Sx.filter(e=>e.family==="light").map(e=>e.id));function Ix(e){return typeof e=="string"&&Ax.has(e)}function ep(e){if(typeof e!="string")return null;const t=e.trim().toLowerCase();return Ix(t)?t:null}function dC(e){const t=ep(e);return t!==null&&Cx.has(t)}function Ih(e){const t=typeof e=="number"?e:Number(e);if(!Number.isFinite(t))return null;const r=Math.floor(t);return r>0?r:null}const _x=new RegExp("(?<![\\w-])((?:IN|WS|D|I)-\\d+)(?![\\w-])","gi"),Tx={IN:"initiative",WS:"workstream",D:"document",I:"image"};function uC(e){const r=String(e||"").trim().toUpperCase().match(/^(IN|WS|D|I)-(\d+)$/);if(!r)return null;const n=Ih(r[2]);return n?{kind:Tx[r[1]],token:`${r[1]}-${n}`,referenceNumber:n}:null}function cp(e,t){const r=Ih(typeof t=="object"&&t!==null?t.referenceNumber:t);return r?`${e}${r}`:""}function ty(e,t){const r=String(e||"").trim(),n=String(t||"").trim();if(!r||!n)return null;const s=r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),i=n.match(new RegExp(`^${s}(\\d+)$`,"i"));return i?Ih(i[1]):null}function pm(e,t){return t?typeof t.referenceLabel=="string"&&t.referenceLabel.trim().length>0?t.referenceLabel.trim():cp(e,t.referenceNumber):""}const fw="T-",uv="LT-",xx=/^task-[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i,Rx=/^task-\d{10,}-[a-z0-9]+$/i,Px=new RegExp("(?<![\\w-])((?:LT|T)-\\d+|task-(?:[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}|\\d{10,}-[a-z0-9]+))(?![\\w-])","gi");function pC(e){const t=String(e||"").trim();return ry(t)!==null||mC(t)!==null||xx.test(t)||Rx.test(t)}function Ex(e,t){const r=String(t||"").trim();if(!r||!pC(r))return null;const n=r.toLowerCase(),s=ry(r),i=mC(r),l=e.filter(c=>c.id.toLowerCase()===n||s!==null&&c.referenceNumber===s||i!==null&&c.localReferenceNumber===i?!0:ys(c).toLowerCase()===n);return l.length===1?l[0].id:null}function Nx(e){const t=new Map,r=(s,i)=>{const l=String(s||"").trim().toLowerCase();if(l){if(!t.has(l)){t.set(l,i);return}t.get(l)!==i&&t.set(l,null)}};return e.forEach(s=>{r(s.id,s.id),s.referenceNumber&&r(fC(s.referenceNumber),s.id),s.localReferenceNumber&&r(mw(s.localReferenceNumber),s.id),r(ys(s),s.id)}),{revision:JSON.stringify(Array.from(t.entries()).sort(([s],[i])=>s.localeCompare(i))),resolve:s=>{const i=String(s||"").trim();return!i||!pC(i)?null:t.get(i.toLowerCase())??null}}}function fC(e){return cp(fw,e)}function mw(e){return typeof e=="number"||e===null||e===void 0?cp(uv,e):cp(uv,{referenceNumber:e.localReferenceNumber??null})}function ry(e){return ty(fw,e)}function mC(e){return ty(uv,e)}function ys(e){if(!e)return"";if(typeof e.referenceLabel=="string"&&e.referenceLabel.trim().length>0)return e.referenceLabel.trim();const t=pm(fw,e);return t||mw(e.localReferenceNumber)}function jx(e){return!e?.referenceNumber&&!!e?.localReferenceNumber}function gw(e){return{label:ys(e),isProvisional:jx(e)}}function Dx(e){return e==="taskId"?"Task":e==="title"?"Title":e==="description"?"Description":e==="ownerId"?"Owner":e==="status"?"Status":e==="scheduledDate"?"Scheduled date":e==="dueDate"?"Due date":e==="workstreamId"?"Workstream":e==="initiativeId"?"Initiative":e}function Tg(e){const t=String(e??"").trim().toLowerCase();return!t||t==="none"||t==="null"||t==="unassigned"||t==="user"}function Mx(e){return e==="task"?"Task":e.replace(/[-_]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,t=>t.toUpperCase())}function Ua(e,t,r){const n=r?.(t,e);if(typeof n=="string")return n;if(e==null||e==="")return"none";if(Array.isArray(e)){const s=e.map(i=>Ua(i,t,r)).filter(Boolean);return s.length>0?s.join(", "):"none"}return typeof e=="object"?"updated":t==="status"?Mx(String(e)):String(e)}function Lb(e){return Array.isArray(e)?e.map((t,r)=>{const n=t&&typeof t=="object"?t:{},s=Number(n.order);return{id:String(n.id||"").trim(),title:String(n.title||"").trim(),isCompleted:!!n.isCompleted,order:Number.isFinite(s)?s:r}}):[]}function Lx(e){const t=Lb(e?.from),r=Lb(e?.to),n=new Map(t.map(l=>[l.id||l.title,l])),s=new Map(r.map(l=>[l.id||l.title,l]));for(const[l,c]of s.entries()){const d=n.get(l);if(!d)return c.title?`Checklist item added: ${c.title}`:"Checklist item added";if(d.isCompleted!==c.isCompleted)return c.title?c.isCompleted?`Checklist item completed: ${c.title}`:`Checklist item reopened: ${c.title}`:c.isCompleted?"Checklist item completed":"Checklist item reopened"}for(const[l,c]of n.entries())if(!s.has(l))return c.title?`Checklist item removed: ${c.title}`:"Checklist item removed";return t.length===r.length&&t.every(l=>s.has(l.id||l.title))&&t.some((c,d)=>{const f=r[d];return(c.id||c.title)!==(f?.id||f?.title)})?"Checklist reordered":"Checklist updated"}function hw(e){return e.split(/[?#]/,1)[0]||e}function Ob(e){const t=hw(e).replace(/\\/g,"/"),r=t.split("/").filter(Boolean);return r[r.length-1]||t}function Ox(e){return/\.(png|jpe?g|webp|gif)$/i.test(hw(e))}function Bx(e){return e.includes("/api/taskforce/documents/")?!0:/\.(pdf|txt|md|markdown|csv|json|docx?|html?|js|jsx|ts|tsx|css|py|java|go|rs|sh)$/i.test(hw(e))}function Bb(e){return Array.isArray(e)?e.flatMap((t,r)=>{const n=t&&typeof t=="object"?t:null,s=typeof t=="string"?t:String(n?.path||"").trim(),i=String(n?.fsPath||"").trim(),l=String(n?.assetId||"").trim(),c=String(n?.referenceLabel||"").trim(),d=[n?.displayName,n?.originalFilename,n?.caption,c,i?Ob(i):"",s?Ob(s):""].map(h=>String(h||"").trim()).find(Boolean)||`Attachment ${r+1}`,f=l||i||s||`${d}:${r}`,p=[s,i,String(n?.originalFilename||"").trim(),String(n?.displayName||"").trim(),c].filter(Boolean),g=p.some(h=>Ox(h))?"image":c.startsWith("D-")||p.some(h=>Bx(h))?"document":"attachment";return[{key:f,label:d,kind:g}]}):[]}function Wx(e,t){return t===1?e:e==="image"?"images":e==="document"?"documents":"attachments"}function xg(e){if(e.length===0)return"attachments";const t=e.reduce((n,s)=>(n[s.kind]+=1,n),{image:0,document:0,attachment:0}),r=Object.entries(t).filter(([,n])=>n>0).map(([n,s])=>s===1?n:`${s} ${Wx(n,s)}`);return r.length===1?r[0]:e.length<=3&&r.length<=2?r.join(" and "):`${e.length} attachments`}function Sl(e){return e&&e.charAt(0).toUpperCase()+e.slice(1)}function _k(e){return Array.isArray(e)?e.map(t=>typeof t=="string"?t.trim():"").filter(Boolean):[]}function $x(e){if(Array.isArray(e.from)||Array.isArray(e.to)||!["fromCount","toCount","added","removed","updated"].some(c=>Object.prototype.hasOwnProperty.call(e,c)))return null;const r=_k(e.added),n=_k(e.removed),s=_k(e.updated);if(r.length===1&&n.length===0&&s.length===0)return`Attachment attached: ${r[0]}`;if(n.length===1&&r.length===0&&s.length===0)return`Attachment removed: ${n[0]}`;if(r.length===1&&n.length===1&&s.length===0)return`Attachment replaced: ${n[0]} -> ${r[0]}`;if(s.length===1&&r.length===0&&n.length===0)return`Attachment updated: ${s[0]}`;if(s.length>0&&r.length===0&&n.length===0)return`${s.length} attachments updated`;if(r.length>0||n.length>0){const c=[...r.length>0?[`${r.length} ${r.length===1?"attachment":"attachments"} attached`]:[],...n.length>0?[`${n.length} ${n.length===1?"attachment":"attachments"} removed`]:[],...s.length>0?[`${s.length} ${s.length===1?"attachment":"attachments"} updated`]:[]];return Sl(c.join(", "))}const i=Number(e.fromCount),l=Number(e.toCount);if(Number.isSafeInteger(i)&&i>=0&&Number.isSafeInteger(l)&&l>=0){const c=l-i;if(c===1)return"Attachment attached";if(c>1)return`${c} attachments attached`;if(c===-1)return"Attachment removed";if(c<-1)return`${Math.abs(c)} attachments removed`}return"Attachment details updated"}function Fx(e){const t=e?$x(e):null;if(t)return t;const r=Bb(e?.from),n=Bb(e?.to),s=new Map(r.map(f=>[f.key,f])),i=new Map(n.map(f=>[f.key,f])),l=n.filter(f=>!s.has(f.key)),c=r.filter(f=>!i.has(f.key));if(l.length===1&&c.length===0)return`${Sl(l[0].kind)} attached: ${l[0].label}`;if(c.length===1&&l.length===0)return`${Sl(c[0].kind)} removed: ${c[0].label}`;if(l.length>0&&c.length===0)return`${Sl(xg(l))} attached`;if(c.length>0&&l.length===0)return`${Sl(xg(c))} removed`;if(l.length===1&&c.length===1)return`${Sl(l[0].kind)} replaced: ${c[0].label} -> ${l[0].label}`;if(l.length>0||c.length>0)return`${Sl(xg(l))} attached, ${xg(c)} removed`;const d=n.filter(f=>{const p=s.get(f.key);return p&&p.label!==f.label});if(d.length===1&&r.length===1&&n.length===1){const f=s.get(d[0].key);return`${Sl(d[0].kind)} renamed: ${f?.label||"Attachment"} -> ${d[0].label}`}return"Attachment details updated"}function _h(e,t,r){if(e==="checklistItems")return Lx(t);if(e==="attachments")return Fx(t);if(e==="assignee"){const s=Ua(t?.from,e,r),i=Ua(t?.to,e,r);return Tg(t?.from)&&!Tg(t?.to)?`Assigned to ${i}`:!Tg(t?.from)&&Tg(t?.to)?`Unassigned from ${s}`:`Reassigned: ${s} → ${i}`}const n=Dx(e);if(e==="title")return`${n}: updated`;if(e==="description"){const s=Ua(t?.from,e,r)!=="none",i=Ua(t?.to,e,r)!=="none";return!s&&i?`${n}: added`:s&&!i?`${n}: cleared`:`${n}: updated`}return`${n}: ${Ua(t?.from,e,r)} -> ${Ua(t?.to,e,r)}`}function gC(e,t){const r=e.details?.changes||{},n=Object.keys(r);if(e.action==="task-created")return"Task created";if(e.action==="task-comment-added")return"Comment added";if(e.action==="task-archived")return"Task marked done";if(e.action==="task-cancelled")return"Task cancelled";if(e.action==="task-unarchived")return"Task restored";if(e.action==="task-status-changed"&&r.status)return`Status changed: ${Ua(r.status.from,"status",t)} -> ${Ua(r.status.to,"status",t)}`;if(e.action==="task-schedule-changed")return r.scheduledDate?`Scheduled date changed: ${Ua(r.scheduledDate.from,"scheduledDate",t)} -> ${Ua(r.scheduledDate.to,"scheduledDate",t)}`:r.dueDate?`Due date changed: ${Ua(r.dueDate.from,"dueDate",t)} -> ${Ua(r.dueDate.to,"dueDate",t)}`:"Schedule updated";if(e.action==="task-relationship-changed"&&r.workstreamId)return`Workstream changed: ${Ua(r.workstreamId.from,"workstreamId",t)} -> ${Ua(r.workstreamId.to,"workstreamId",t)}`;if(e.action==="task-relationship-changed"&&r.initiativeId)return`Initiative changed: ${Ua(r.initiativeId.from,"initiativeId",t)} -> ${Ua(r.initiativeId.to,"initiativeId",t)}`;if(e.action==="task-attachments-changed")return r.attachments?_h("attachments",r.attachments,t):"Attachments updated";if(n.length===1){const s=n[0],i=r[s];return _h(s,i,t)}return n.length>1?`${n.length} fields updated`:"Task updated"}function are(e,t){if(e.taskId||e.entityType==="task")return gC(e,t);const r=e.details?.changes||{},n=Object.keys(r),s=e.entityType==="initiative"?"Initiative":"Workstream",i=typeof e.details?.taskTitle=="string"&&e.details.taskTitle.trim().length>0?e.details.taskTitle.trim():null;return e.action==="initiative-created"?"Initiative created":e.action==="initiative-archived"?"Initiative archived":e.action==="initiative-unarchived"?"Initiative restored":e.action==="workstream-created"?"Workstream created":e.action==="workstream-archived"?"Workstream archived":e.action==="workstream-unarchived"?"Workstream restored":e.action==="workstream-task-added"?i?`Task added: ${i}`:"Task added":e.action==="workstream-task-removed"?i?`Task removed: ${i}`:"Task removed":e.action==="workstream-relationship-changed"&&r.initiativeId?`Initiative changed: ${Ua(r.initiativeId.from,"initiativeId",t)} -> ${Ua(r.initiativeId.to,"initiativeId",t)}`:(e.action==="initiative-attachments-changed"||e.action==="workstream-attachments-changed")&&r.attachments?_h("attachments",r.attachments,t):n.length===1?_h(n[0],r[n[0]],t):n.length>1?`${n.length} fields updated`:e.action==="initiative-updated"||e.action==="workstream-updated"?`${s} updated`:`${s} activity updated`}function Th(e){const t=Date.parse(String(e.timestamp||""));return Number.isFinite(t)?t:null}function Ux(e){const t=e.details?.changes||{},r=Object.keys(t);if(e.action==="task-status-changed"&&t.status)return"status";if(e.action==="task-schedule-changed"){if(t.scheduledDate)return"scheduledDate";if(t.dueDate)return"dueDate"}if(e.action==="task-relationship-changed"){if(t.workstreamId)return"workstreamId";if(t.initiativeId)return"initiativeId"}return e.action==="task-attachments-changed"&&t.attachments?"attachments":r.length===1?r[0]:null}function sre(e){if(e.taskId||e.entityType==="task")return Ux(e);const t=e.details?.changes||{},r=Object.keys(t);return(e.action==="workstream-task-added"||e.action==="workstream-task-removed")&&e.details?.taskId?"taskId":e.action==="workstream-relationship-changed"&&t.initiativeId?"initiativeId":(e.action==="initiative-attachments-changed"||e.action==="workstream-attachments-changed")&&t.attachments?"attachments":r.length===1?r[0]:null}function hC(e){const t=new Map,r=new Set,n=s=>{if(s.type==="event"&&s.event.action==="task-comment-added"||s.type==="event"&&s.event.action==="task-updated"&&s.event.details?.saveSource==="autosave"&&Object.keys(s.event.details?.changes||{}).length===0)return;const i=s.type==="comment"?`comment:${String(s.comment.id||s.id).replace(/^comment:/,"")}`:`event:${String(s.event.id||s.id).replace(/^event:/,"")}`;t.set(i,{...s,id:i}),s.type==="comment"&&r.add(String(s.comment.id||s.id).replace(/^comment:/,""))};return Array.isArray(e.activity)&&e.activity.forEach(n),Array.isArray(e.comments)&&e.comments.forEach(s=>{const i=String(s.id||"").trim();!i||r.has(i)||n({id:`comment:${i}`,type:"comment",timestamp:s.timestamp,comment:s})}),[...t.values()].sort((s,i)=>{const l=Th(s),c=Th(i);return l!==null&&c!==null&&l!==c?l-c:l!==null&&c===null?-1:l===null&&c!==null?1:String(s.id||"").localeCompare(String(i.id||""))})}function yw(e){return hC(e)}function yC(e){const t=yw(e);return t.length===0?null:[...t].sort((r,n)=>{const s=Th(r),i=Th(n);return s!==null&&i!==null&&s!==i?i-s:s!==null&&i===null?-1:s===null&&i!==null?1:String(n.id||"").localeCompare(String(r.id||""))})[0]||null}function zx(e,t){return e?e.type==="comment"?e.comment.text:gC(e.event,t):""}lC();const Hx={low:1,medium:2,high:3,critical:4,"on-hold":1};function Vx(e){const t=String(e||"").trim().toLowerCase();return t==="blocked"||t==="on hold"||t==="on-hold"?"on-hold":t==="task"||t==="on-hold"||t==="in-progress"||t==="review"||t==="done"||t==="cancelled"?t:"task"}function xh(e){if(typeof e=="number"&&Number.isFinite(e))return Math.max(1,Math.round(e));const t=Number(e);return Number.isFinite(t)?Math.max(1,Math.round(t)):Hx[String(e||"").trim().toLowerCase()]??2}function to(e){const t=typeof e.referenceNumber=="number"?e.referenceNumber:Number.isFinite(Number(e.referenceNumber))?Number(e.referenceNumber):null,r=typeof e.localReferenceNumber=="number"?e.localReferenceNumber:Number.isFinite(Number(e.localReferenceNumber))?Number(e.localReferenceNumber):null;return{...e,referenceNumber:t&&t>0?Math.floor(t):null,localReferenceNumber:r&&r>0?Math.floor(r):null,referenceLabel:typeof e.referenceLabel=="string"&&e.referenceLabel.trim().length>0?e.referenceLabel.trim():t?fC(t):mw(r),assignee:(()=>{const n=String(e.assignee||"").trim(),s=n.toLowerCase();return s==="agent"||s==="ai"?"agent":!n||s==="user"||s==="human"||s==="unassigned"||s==="none"||s==="null"?"unassigned":n})(),category:typeof e.category=="string"?e.category:e.category?.value||"default",type:(typeof e.type=="string"?e.type:e.type?.label||"task").toLowerCase(),priority:xh(e.priority),complexity:typeof e.complexity=="number"?e.complexity:3,status:Vx(e.status)}}function Wb(e){const{description:t,comments:r,activity:n,taskEvents:s,attachments:i,checklistItems:l,createdByActor:c,assigneeActor:d,...f}=e,p=b=>b.reduce((v,T)=>String(T||"")>v?String(T||""):v,""),g=e.commentCount??r?.length??0,h=e.checklistCount??l?.length??0,y=e.completedChecklistCount??l?.filter(b=>b.isCompleted).length??0,k=e.attachmentCount??i?.length??0,w=e.relationshipCount??0,S=e.latestActivity??yC(e);return{...f,cardCoverAttachment:e.cardCoverAttachment??(e.cardCoverAssetId&&i?.find(b=>typeof b!="string"&&b.assetId===e.cardCoverAssetId)||null),isSummary:!0,commentCount:g,checklistCount:h,completedChecklistCount:y,attachmentCount:k,relationshipCount:w,latestActivity:S,detailRevision:e.detailRevision||JSON.stringify([String(e.updatedAt||e.createdAt||""),g,p(r?.map(b=>b.timestamp)||[]),h,y,p(l?.map(b=>b.updatedAt||b.createdAt)||[]),k,p(i?.map(b=>typeof b=="string"?"":b.timestamp)||[]),w,S?.timestamp||"",S?.id||""])}}function em(e){return JSON.stringify(e)}function $b(e,t){if(e.length===0)return t.length===0?e:t;const r=new Map(e.map(i=>[i.id,i]));let n=e.length!==t.length;const s=t.map((i,l)=>{const c=r.get(i.id),d=c&&em(c)===em(i)?c:i;return d!==e[l]&&(n=!0),d});return n?s:e}function Gx(e,t,r){if(!e||typeof e!="object")return{tasks:t,archivedTasks:r};const n=to(e),s=String(n.id||"").trim();if(!s)return{tasks:t,archivedTasks:r};const i=!!n.isArchived,l=i?{...n,isArchived:!0}:{...n,isArchived:!1},c=(i?r:t).find(h=>h.id===s),d=(i?t:r).some(h=>h.id===s);if(c&&!d&&em(c)===em(l))return{tasks:t,archivedTasks:r};const f=h=>[...h].sort((y,k)=>{const w=Date.parse(String(y.updatedAt||y.createdAt||"")),S=Date.parse(String(k.updatedAt||k.createdAt||""));if(Number.isFinite(w)&&Number.isFinite(S)&&w!==S)return S-w;if(Number.isFinite(w)!==Number.isFinite(S))return Number.isFinite(S)?1:-1;const b=Date.parse(String(k.createdAt||""))-Date.parse(String(y.createdAt||""));return Number.isFinite(b)&&b!==0?b:String(y.id).localeCompare(String(k.id))}),p=t.some(h=>h.id===s)?t.filter(h=>h.id!==s):t,g=r.some(h=>h.id===s)?r.filter(h=>h.id!==s):r;return i?{tasks:p,archivedTasks:f([...g,l])}:{tasks:f([...p,l]),archivedTasks:g}}function Kx(e,t){if(!t.length||!e.length)return[];const r=new Set(t.map(s=>Number(s.value))),n=Array.from(new Set(e.map(s=>Number(s)).filter(s=>Number.isFinite(s)&&r.has(s))));return n.length>0?n:t.map(s=>Number(s.value))}function Tk(e,t){return t.some(r=>String(r)===String(e))}function qx(e,t){if(!e.length||!t.length)return e;const r=new Set(t.map(s=>s.value)),n=Array.from(new Set(e.filter(s=>r.has(s))));return n.length>0?n:t.map(s=>s.value)}const Yx={taskForm:{commentsSectionTitle:"Activity & Comments",noComments:"No comments yet. Start the conversation!",noActivity:"No activity yet.",you:"You",commentPlaceholder:"Type a comment...",newActivity:"New activity",newActivityAriaLabel:"New activity. Scroll to latest.",scheduledLabel:"Scheduled:",dueLabel:"Due:",createdLabel:"Created:",updatedLabel:"Updated:",completedLabel:"Completed:",emptyValue:"—",dueBeforeScheduled:"Due date is before scheduled date.",overdue:"This task is overdue."},schedule:{},taskList:{searchPlaceholder:"Search tasks...",clearSearchTitle:"Clear search",categoryLabel:"Category",typeLabel:"Type",priorityLabel:"Priority",statusLabel:"Status",assigneeLabel:"Assignee",sortByLabel:"Sort By:",sortCreated:"Created",sortUpdated:"Updated",sortPriority:"Priority",sortDirectionDescTitle:"Sort: Last First",sortDirectionAscTitle:"Sort: First First",resetFiltersTitle:"Reset all filters",archiveAllTitle:"Archive all completed and cancelled tasks",noTasksToArchiveTitle:"No tasks to archive",archiveFinished:"Archive Finished",linksLabel:"Links",linksAll:"All",linksParents:"Parents",linksLinked:"Linked",linksUnlinked:"Unlinked",includeArchive:"Archived",noMatchingTasks:"No matching tasks",noActiveTasks:"No active tasks",addTaskToCategoryTitle:"Add task to {category}"},actionHeader:{saveChangesTitle:"Save Changes",update:"Update",copyTaskIdTitle:"Click to copy Task ID",startWorking:"Start Working",stopWorking:"Stop Working",unlockAndContinue:"Unlock & Continue Work",readyForReview:"Ready for Review",markComplete:"Mark Complete",unmarkComplete:"Unmark Complete",cancelTask:"Cancel Task",unmarkCancelled:"Unmark Cancelled",archiveNow:"Archive Now",completeTaskToArchive:"Complete task to archive",clearFormTitle:"Clear Form",clear:"Clear",addTaskTitle:"Add Task",addTask:"Add Task"},standalone:{searchPlaceholder:"Search tasks...",clearSearchTitle:"Clear search",sortLabel:"Sort:",sortCreated:"Created",sortUpdated:"Updated",sortPriority:"Priority",sortComplexity:"Complexity",sortDirectionDescTitle:"Sort: Last First",sortDirectionAscTitle:"Sort: First First",groupLabel:"Group:",groupCategory:"Category",groupType:"Type",groupPriority:"Priority",groupComplexity:"Complexity",groupAssignee:"Assignee",groupStatus:"Status",groupHierarchy:"Hierarchy",groupSchedule:"Schedule",showEmptyColumns:"Show Empty Columns",compressEmptyColumns:"Compress Empty Columns",hideEmptyColumns:"Hide Empty Columns",expandCards:"Expand Cards",compressCards:"Compress Cards",exitZenMode:"Exit Zen Mode",enterZenMode:"Enter Zen Mode",toggleFilters:"Toggle Filters",addTask:"Add Task",helpTutorial:"Help & Support",settings:"Settings",filtersCaps:"FILTERS:",categoryLabel:"Category",typeLabel:"Type",priorityLabel:"Priority",statusLabel:"Status",assigneeLabel:"Assignee",linksLabel:"Links:",chooseLinksTitle:"Choose which linked tasks are shown",linksAll:"All",linksParents:"Parents",linksLinked:"Linked",linksUnlinked:"Unlinked",includeArchiveTitle:"Include archived tasks",includeArchive:"Archived",clearFilters:"Clear Filters",noTasksMatchFilters:"No tasks match current filters.",showingWithLinksHint:"Showing: {parentFilterLabel}. Switch Links to All or clear filters.",visibleActiveTasksTitle:"Visible active tasks / total active tasks",totalActiveTasksTitle:"Total active tasks"},setup:{headingCheckFailed:"Setup Check Failed",headingGlobalRequired:"Global Setup Required",headingWorkspaceRequired:"Configure your new workspace.",subtitleUnreadable:"Taskforce could not read setup state. Retry to continue.",subtitleGlobalRequired:"Choose your default operating mode to continue.",subtitleWorkspaceRequired:"",runtimeLabel:"Runtime",workspaceTermProject:"Project",workspaceTermMission:"Mission",coreModeOption:"Core Mode: {workspaceLabel} planning defaults",operationsModeOption:"Operations Mode: Mission-first terminology and flows",workspaceNamePlaceholder:"{workspaceLabel} name",workspaceDescriptionPlaceholder:"{workspaceLabel} description (optional)",saving:"Saving...",saveGlobalSetup:"Save Global Setup",saveWorkspaceSetup:"Save {workspaceLabel} Setup",globalSetupSaved:"Global setup saved.",workspaceSetupSaved:"{workspaceLabel} setup saved.",saveFailedWithStatus:"Failed to save setup ({status})",saveFailed:"Failed to save setup.",saveWorkspaceFailed:"Failed to save workspace profile.",retrySetupCheck:"Retry Setup Check",signOut:"Sign Out"}},Zx={taskForm:{commentsSectionTitle:"Actividad y comentarios",noComments:"Aun no hay comentarios. Inicia la conversacion.",noActivity:"Aun no hay actividad.",you:"Tu",commentPlaceholder:"Escribe un comentario...",newActivity:"Nueva actividad",newActivityAriaLabel:"Nueva actividad. Ir a la mas reciente.",scheduledLabel:"Programado:",dueLabel:"Vence:",createdLabel:"Creado:",updatedLabel:"Actualizado:",completedLabel:"Completado:",emptyValue:"—",dueBeforeScheduled:"La fecha de vencimiento es anterior a la fecha programada.",overdue:"Esta tarea esta vencida."},schedule:{},taskList:{searchPlaceholder:"Buscar tareas...",clearSearchTitle:"Limpiar busqueda",categoryLabel:"Categoria",typeLabel:"Tipo",priorityLabel:"Prioridad",statusLabel:"Estado",assigneeLabel:"Asignado a",sortByLabel:"Ordenar por:",sortCreated:"Creado",sortUpdated:"Actualizado",sortPriority:"Prioridad",sortDirectionDescTitle:"Orden: mas reciente primero",sortDirectionAscTitle:"Orden: mas antiguo primero",resetFiltersTitle:"Restablecer todos los filtros",archiveAllTitle:"Archivar todas las tareas completadas y canceladas",noTasksToArchiveTitle:"No hay tareas para archivar",archiveFinished:"Archivar finalizadas",linksLabel:"Vinculos",linksAll:"Todas",linksParents:"Padres",linksLinked:"Vinculadas",linksUnlinked:"Sin vinculo",includeArchive:"Incluir archivo",noMatchingTasks:"No hay tareas coincidentes",noActiveTasks:"No hay tareas activas",addTaskToCategoryTitle:"Agregar tarea a {category}"},actionHeader:{saveChangesTitle:"Guardar cambios",update:"Actualizar",copyTaskIdTitle:"Haz clic para copiar el ID de la tarea",startWorking:"Comenzar trabajo",stopWorking:"Detener trabajo",unlockAndContinue:"Desbloquear y continuar",readyForReview:"Lista para revision",markComplete:"Marcar como completada",unmarkComplete:"Quitar completada",cancelTask:"Cancelar tarea",unmarkCancelled:"Quitar cancelada",archiveNow:"Archivar ahora",completeTaskToArchive:"Completa la tarea para archivar",clearFormTitle:"Limpiar formulario",clear:"Limpiar",addTaskTitle:"Agregar tarea",addTask:"Agregar tarea"},standalone:{searchPlaceholder:"Buscar tareas...",clearSearchTitle:"Limpiar busqueda",sortLabel:"Orden:",sortCreated:"Creado",sortUpdated:"Actualizado",sortPriority:"Prioridad",sortComplexity:"Complejidad",sortDirectionDescTitle:"Orden: mas reciente primero",sortDirectionAscTitle:"Orden: mas antiguo primero",groupLabel:"Agrupar:",groupCategory:"Categoria",groupType:"Tipo",groupPriority:"Prioridad",groupComplexity:"Complejidad",groupAssignee:"Asignado a",groupStatus:"Estado",groupHierarchy:"Jerarquia",groupSchedule:"Calendario",showEmptyColumns:"Mostrar columnas vacias",compressEmptyColumns:"Comprimir columnas vacias",hideEmptyColumns:"Ocultar columnas vacias",expandCards:"Expandir tarjetas",compressCards:"Comprimir tarjetas",exitZenMode:"Salir del modo zen",enterZenMode:"Entrar en modo zen",toggleFilters:"Alternar filtros",addTask:"Agregar tarea",helpTutorial:"Ayuda y soporte",settings:"Configuracion",filtersCaps:"FILTROS:",categoryLabel:"Categoria",typeLabel:"Tipo",priorityLabel:"Prioridad",statusLabel:"Estado",assigneeLabel:"Asignado a",linksLabel:"Vinculos:",chooseLinksTitle:"Elige que tareas vinculadas se muestran",linksAll:"Todas",linksParents:"Padres",linksLinked:"Vinculadas",linksUnlinked:"Sin vinculo",includeArchiveTitle:"Incluir tareas archivadas",includeArchive:"Incluir archivo",clearFilters:"Limpiar filtros",noTasksMatchFilters:"Ninguna tarea coincide con los filtros actuales.",showingWithLinksHint:"Mostrando: {parentFilterLabel}. Cambia Vinculos a Todas o limpia filtros.",visibleActiveTasksTitle:"Tareas activas visibles / total de tareas activas",totalActiveTasksTitle:"Total de tareas activas"},setup:{headingCheckFailed:"Fallo en verificacion de configuracion",headingGlobalRequired:"Configuracion global requerida",headingWorkspaceRequired:"Configuracion del espacio requerida",subtitleUnreadable:"Taskforce no pudo leer el estado de configuracion. Reintenta para continuar.",subtitleGlobalRequired:"Elige tu modo operativo predeterminado para continuar.",subtitleWorkspaceRequired:"Configura el perfil de tu espacio para continuar.",runtimeLabel:"Entorno",workspaceTermProject:"Proyecto",workspaceTermMission:"Mision",coreModeOption:"Modo Core: valores predeterminados de planificacion para {workspaceLabel}",operationsModeOption:"Modo Operaciones: terminologia y flujos orientados a Mision",workspaceNamePlaceholder:"Nombre de {workspaceLabel}",workspaceDescriptionPlaceholder:"Descripcion de {workspaceLabel} (opcional)",saving:"Guardando...",saveGlobalSetup:"Guardar configuracion global",saveWorkspaceSetup:"Guardar configuracion de {workspaceLabel}",globalSetupSaved:"Configuracion global guardada.",workspaceSetupSaved:"Configuracion de {workspaceLabel} guardada.",saveFailedWithStatus:"Error al guardar la configuracion ({status})",saveFailed:"Error al guardar la configuracion.",saveWorkspaceFailed:"Error al guardar el perfil del espacio.",retrySetupCheck:"Reintentar verificacion",signOut:"Cerrar sesion"}},Jx={taskForm:{commentsSectionTitle:"Atividade e comentarios",noComments:"Ainda nao ha comentarios. Inicie a conversa.",noActivity:"Ainda nao ha atividade.",you:"Voce",commentPlaceholder:"Digite um comentario...",newActivity:"Nova atividade",newActivityAriaLabel:"Nova atividade. Ir para a mais recente.",scheduledLabel:"Agendado:",dueLabel:"Vencimento:",createdLabel:"Criado:",updatedLabel:"Atualizado:",completedLabel:"Concluido:",emptyValue:"—",dueBeforeScheduled:"A data de vencimento e anterior a data agendada.",overdue:"Esta tarefa esta atrasada."},schedule:{},taskList:{searchPlaceholder:"Buscar tarefas...",clearSearchTitle:"Limpar busca",categoryLabel:"Categoria",typeLabel:"Tipo",priorityLabel:"Prioridade",statusLabel:"Status",assigneeLabel:"Atribuido para",sortByLabel:"Ordenar por:",sortCreated:"Criado",sortUpdated:"Atualizado",sortPriority:"Prioridade",sortDirectionDescTitle:"Ordem: mais recente primeiro",sortDirectionAscTitle:"Ordem: mais antigo primeiro",resetFiltersTitle:"Redefinir todos os filtros",archiveAllTitle:"Arquivar todas as tarefas concluidas e canceladas",noTasksToArchiveTitle:"Nao ha tarefas para arquivar",archiveFinished:"Arquivar finalizadas",linksLabel:"Vinculos",linksAll:"Todas",linksParents:"Pais",linksLinked:"Vinculadas",linksUnlinked:"Sem vinculo",includeArchive:"Incluir arquivo",noMatchingTasks:"Nenhuma tarefa correspondente",noActiveTasks:"Nenhuma tarefa ativa",addTaskToCategoryTitle:"Adicionar tarefa a {category}"},actionHeader:{saveChangesTitle:"Salvar alteracoes",update:"Atualizar",copyTaskIdTitle:"Clique para copiar o ID da tarefa",startWorking:"Iniciar trabalho",stopWorking:"Parar trabalho",unlockAndContinue:"Desbloquear e continuar",readyForReview:"Pronto para revisao",markComplete:"Marcar como concluida",unmarkComplete:"Desmarcar concluida",cancelTask:"Cancelar tarefa",unmarkCancelled:"Desmarcar cancelada",archiveNow:"Arquivar agora",completeTaskToArchive:"Conclua a tarefa para arquivar",clearFormTitle:"Limpar formulario",clear:"Limpar",addTaskTitle:"Adicionar tarefa",addTask:"Adicionar tarefa"},standalone:{searchPlaceholder:"Buscar tarefas...",clearSearchTitle:"Limpar busca",sortLabel:"Ordenar:",sortCreated:"Criado",sortUpdated:"Atualizado",sortPriority:"Prioridade",sortComplexity:"Complexidade",sortDirectionDescTitle:"Ordem: mais recente primeiro",sortDirectionAscTitle:"Ordem: mais antigo primeiro",groupLabel:"Agrupar:",groupCategory:"Categoria",groupType:"Tipo",groupPriority:"Prioridade",groupComplexity:"Complexidade",groupAssignee:"Atribuido para",groupStatus:"Status",groupHierarchy:"Hierarquia",groupSchedule:"Agenda",showEmptyColumns:"Mostrar colunas vazias",compressEmptyColumns:"Comprimir colunas vazias",hideEmptyColumns:"Ocultar colunas vazias",expandCards:"Expandir cards",compressCards:"Comprimir cards",exitZenMode:"Sair do modo zen",enterZenMode:"Entrar no modo zen",toggleFilters:"Alternar filtros",addTask:"Adicionar tarefa",helpTutorial:"Ajuda e suporte",settings:"Configuracoes",filtersCaps:"FILTROS:",categoryLabel:"Categoria",typeLabel:"Tipo",priorityLabel:"Prioridade",statusLabel:"Status",assigneeLabel:"Atribuido para",linksLabel:"Vinculos:",chooseLinksTitle:"Escolha quais tarefas vinculadas sao exibidas",linksAll:"Todas",linksParents:"Pais",linksLinked:"Vinculadas",linksUnlinked:"Sem vinculo",includeArchiveTitle:"Incluir tarefas arquivadas",includeArchive:"Incluir arquivo",clearFilters:"Limpar filtros",noTasksMatchFilters:"Nenhuma tarefa corresponde aos filtros atuais.",showingWithLinksHint:"Mostrando: {parentFilterLabel}. Mude Vinculos para Todas ou limpe os filtros.",visibleActiveTasksTitle:"Tarefas ativas visiveis / total de tarefas ativas",totalActiveTasksTitle:"Total de tarefas ativas"},setup:{headingCheckFailed:"Falha na verificacao da configuracao",headingGlobalRequired:"Configuracao global obrigatoria",headingWorkspaceRequired:"Configuracao do espaco obrigatoria",subtitleUnreadable:"Taskforce nao conseguiu ler o estado da configuracao. Tente novamente para continuar.",subtitleGlobalRequired:"Escolha seu modo operacional padrao para continuar.",subtitleWorkspaceRequired:"Configure o perfil do seu espaco para continuar.",runtimeLabel:"Ambiente",workspaceTermProject:"Projeto",workspaceTermMission:"Missao",coreModeOption:"Modo Core: padroes de planejamento para {workspaceLabel}",operationsModeOption:"Modo Operacoes: terminologia e fluxos orientados por Missao",workspaceNamePlaceholder:"Nome de {workspaceLabel}",workspaceDescriptionPlaceholder:"Descricao de {workspaceLabel} (opcional)",saving:"Salvando...",saveGlobalSetup:"Salvar configuracao global",saveWorkspaceSetup:"Salvar configuracao de {workspaceLabel}",globalSetupSaved:"Configuracao global salva.",workspaceSetupSaved:"Configuracao de {workspaceLabel} salva.",saveFailedWithStatus:"Falha ao salvar configuracao ({status})",saveFailed:"Falha ao salvar configuracao.",saveWorkspaceFailed:"Falha ao salvar perfil do espaco.",retrySetupCheck:"Tentar verificacao novamente",signOut:"Sair"}},kC=["en-US","es-419","pt-BR"],Rh="en-US",xk={"en-US":Yx,"es-419":Zx,"pt-BR":Jx},vC={en:"en-US",es:"es-419",pt:"pt-BR"};let Nd=Rh;function Xx(e){return e.split(".").filter(Boolean)}function Rk(e,t){let r=e;for(const n of t){if(!r||typeof r!="object")return;r=r[n]}return typeof r=="string"?r:void 0}function wC(e){if(!e)return Rh;const t=kC.find(n=>n.toLowerCase()===e.toLowerCase());if(t)return t;const r=e.split("-")[0]?.toLowerCase()||"";return vC[r]||Rh}function Pk(e,t){return t?e.replace(/\{([^}]+)\}/g,(r,n)=>{const s=t[n];return s==null?"":String(s)}):e}function bC(){return Nd}function Qx(){return[...kC]}function SC(e){const t=wC(e);return Nd=t,t}function eR(e){const t=typeof navigator<"u"?navigator.language:null;return Nd=wC(t),Nd}function _t(e,t){const r=Xx(e),n=Rk(xk[Nd],r);if(n)return Pk(n,t);const s=Nd.split("-")[0]?.toLowerCase()||"",i=vC[s];if(i&&i!==Nd){const c=Rk(xk[i],r);if(c)return Pk(c,t)}const l=Rk(xk[Rh],r);return l?Pk(l,t):e}const tR="default",Wd="bootstrap";function rR(e){let t=2166136261;for(let r=0;r<e.length;r+=1)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}function ny(e){const t=String(e||"").trim().toLowerCase();return t?`${(t.replace(/[^a-z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")||"project").slice(0,56)}-${rR(t)}`:Wd}function kw(e){const t=String(e||"").trim().toLowerCase();if(!t)return Wd;const r=t.replace(/[^a-z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"");return r?r.slice(0,96):Wd}function AC(e){const t=String(e||"").trim();return t?ny(t):Wd}function nR(e){return(e.runtimeMode==="cloud"?"cloud":"local")==="cloud"?Wd:AC(e.projectRoot)}function aR(e){if((e.runtimeMode==="cloud"?"cloud":"local")==="cloud"){const r=String(e.workspaceId||"").trim();return r&&!vw(r)?ny(`cloud-workspace:${r}`):Wd}return AC(e.projectRoot)}function vw(e){return String(e||"").trim().toLowerCase()===tR}const sR={local:{runtimeMode:"local",authSource:"cloud",workspaceMode:"single-local",workspaceSwitchingEnabled:!1},cloud:{runtimeMode:"cloud",authSource:"cloud",workspaceMode:"multi-cloud",workspaceSwitchingEnabled:!0}};function oR(e){return String(e||"").trim().toLowerCase()==="cloud"?"cloud":"local"}function iR(e){return sR[oR(e)]}const tm={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 ay(e){const t=String(e||"").trim().toLowerCase();return t==="production"||t==="staging"||t==="performance"?t:null}function cR(e){return ay(e)||"production"}function Fb(e){return tm[cR(String(e||""))]}function lR(e){const t=String(e||"").trim().toLowerCase();if(!t)return null;for(const[r,n]of Object.entries(tm))if(new URL(n.appBaseUrl).hostname.toLowerCase()===t||new URL(n.mcpBaseUrl).hostname.toLowerCase()===t)return r;return null}function ww(e){const t=String(e||"").trim();if(!t)return null;try{return lR(new URL(t).hostname)}catch{return null}}function dR(e){const t=ww(e);return t?tm[t].mcpBaseUrl:null}function gd(e,t){return String(e[t]||"").trim()}function Ub(e,t,r){e.push(t),r?.(t)}function uR(e,t){const r=[],n=gd(e,"ENV"),s=ay(n);if(s)return Ub(r,`[Taskforce compat] ENV=${n} is deprecated; set TASKFORCE_CLOUD_ENVIRONMENT=${s} instead.`,t),{cloudEnvironment:s,warnings:r};const i=[{key:"TASKFORCE_CLOUD_PROXY_BASE_URL",value:gd(e,"TASKFORCE_CLOUD_PROXY_BASE_URL")},{key:"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL",value:gd(e,"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL")},{key:"VITE_TASKFORCE_CLOUD_MCP_BASE_URL",value:gd(e,"VITE_TASKFORCE_CLOUD_MCP_BASE_URL")},{key:"VITE_TASKFORCE_API_BASE_URL",value:gd(e,"VITE_TASKFORCE_API_BASE_URL")},{key:"VITE_TASKFORCE_BASE_URL",value:gd(e,"VITE_TASKFORCE_BASE_URL")},{key:"TASKFORCE_BASE_URL",value:gd(e,"TASKFORCE_BASE_URL")}];for(const l of i){if(!l.value)continue;const c=ww(l.value);if(c)return Ub(r,`[Taskforce compat] ${l.key} is being used to infer TASKFORCE_CLOUD_ENVIRONMENT=${c}. Set TASKFORCE_CLOUD_ENVIRONMENT explicitly.`,t),{cloudEnvironment:c,warnings:r}}return{cloudEnvironment:null,warnings:r}}function sc(e,t){return String(e[t]||"").trim()}function pR(e){return e.toLowerCase()==="cloud"?"cloud":"local"}function Hu(e){return String(e||"").trim().replace(/\/+$/,"")}function fR(e){return String(e||"").trim().replace(/\/+$/,"")}function Vc(...e){for(const t of e)if(String(t||"").trim())return String(t||"").trim();return""}function mR(e,t={}){const r=[],n=I=>{r.push(I),t.onWarning?.(I)},s=pR(sc(e,"TASKFORCE_RUNTIME_MODE")),i=ay(sc(e,"TASKFORCE_CLOUD_ENVIRONMENT")),l=i?{cloudEnvironment:i}:uR(e,n),c=i||l.cloudEnvironment,d=Hu(String(t.requestBaseUrl||"")),f=Hu(Vc(sc(e,"VITE_TASKFORCE_BASE_URL"),sc(e,"TASKFORCE_BASE_URL"))),p=Hu(sc(e,"VITE_TASKFORCE_API_BASE_URL")),g=Hu(sc(e,"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL")),h=Hu(Vc(sc(e,"VITE_TASKFORCE_CLOUD_MCP_BASE_URL"),sc(e,"TASKFORCE_CLOUD_MCP_BASE_URL"))),y=Hu(sc(e,"TASKFORCE_CLOUD_PROXY_BASE_URL")),k=fR(sc(e,"VITE_TASKFORCE_WS_BASE_URL")),w=c?tm[c].appBaseUrl:"",S=c?tm[c].mcpBaseUrl:"",b=Vc(y,g,p,f,w),v=Vc(h,S,b),T=Vc(d,f,p,g,b),R=Vc(d,p,f,b),P=Vc(g,f,p,b),N=s==="local"?Vc(k,d,p,f,y,g,w,b):Vc(d,k,R,T,b);return{runtimeMode:s,cloudEnvironment:c,cloudBaseUrl:b,cloudMcpBaseUrl:v,baseUrl:T,apiBaseUrl:R,cloudAuthBaseUrl:P,wsBaseUrl:N,cloudAuthViaLocalProxy:s==="local"||!!y,warnings:r}}function bw(e){return mR({TASKFORCE_CLOUD_ENVIRONMENT:"",VITE_TASKFORCE_BASE_URL:e.VITE_TASKFORCE_BASE_URL,VITE_TASKFORCE_API_BASE_URL:e.VITE_TASKFORCE_API_BASE_URL,VITE_TASKFORCE_CLOUD_AUTH_BASE_URL:e.VITE_TASKFORCE_CLOUD_AUTH_BASE_URL,VITE_TASKFORCE_CLOUD_MCP_BASE_URL:e.VITE_TASKFORCE_CLOUD_MCP_BASE_URL,VITE_TASKFORCE_WS_BASE_URL:e.VITE_TASKFORCE_WS_BASE_URL})}function pv(e){if(e===null||typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number"){if(!Number.isFinite(e))throw new Error("Canonical JSON cannot contain non-finite numbers.");return e}if(Array.isArray(e))return e.map(pv);if(typeof e=="object"){const t={};for(const r of Object.keys(e).sort()){const n=e[r];n!==void 0&&(t[r]=pv(n))}return t}throw new Error(`Canonical JSON cannot contain ${typeof e}.`)}function bn(e){return JSON.stringify(pv(e))}const gR=["title","description","category","type","priority","complexity","status","assignee","scheduledDate","dueDate","workstreamId"];function Ek(e){return{title:e.title||"",description:e.description||"",category:e.category||"",type:e.type||"",priority:e.priority,complexity:Number(e.complexity)||3,status:e.status||"task",assignee:e.assignee||"unassigned",scheduledDate:e.scheduledDate||"",dueDate:e.dueDate||"",workstreamId:e.workstreamId||"",taxonomies:{...e.taxonomies||{}},checklistItems:[...e.checklistItems||[]],attachments:[...e.attachments||[]]}}function Nk(e,t){return{...e,title:t.title,description:t.description||null,category:t.category,type:t.type,priority:t.priority,complexity:t.complexity,status:t.status,assignee:t.assignee,scheduledDate:t.scheduledDate||null,dueDate:t.dueDate||null,workstreamId:t.workstreamId||null,taxonomies:t.taxonomies,checklistItems:t.checklistItems,attachments:t.attachments}}function Il(e,t){return bn(e??null)===bn(t??null)}function fv(e,t,r){const n=!Il(t,e),s=!Il(r,e);return n?!s||Il(t,r)?{value:t,conflict:!1,remoteChanged:s}:{value:t,conflict:!0,remoteChanged:s}:{value:r,conflict:!1,remoteChanged:s}}function Ph(e){return typeof e=="string"?`path:${e}`:e.assetId?`asset:${e.assetId}`:e.referenceLabel?`reference:${e.referenceLabel}`:e.referenceNumber!=null?`number:${e.referenceNumber}`:`path:${e.path||e.fsPath||bn(e)}`}function zb(e,t,r,n){const s=new Map(e.map(g=>[n(g),g])),i=new Map(t.map(g=>[n(g),g])),l=new Map(r.map(g=>[n(g),g])),c=new Set([...s.keys(),...l.keys(),...i.keys()]),d=new Map,f=[];for(const g of c){const h=s.get(g),y=i.get(g),k=l.get(g),w=fv(h,y,k);w.value!==void 0&&d.set(g,w.value),w.conflict&&f.push(g)}return{items:[...r.map(n),...t.map(n).filter(g=>!l.has(g))].filter((g,h,y)=>y.indexOf(g)===h&&d.has(g)).map(g=>d.get(g)),conflictKeys:f,remoteChanged:!Il(e,r)}}function hR(e,t,r){const n={...r},s=[],i=new Set;for(const p of gR){const g=fv(e[p],t[p],r[p]);n[p]=g.value,g.conflict&&s.push({field:p}),g.remoteChanged&&i.add(p)}const l=new Set([...Object.keys(e.taxonomies),...Object.keys(t.taxonomies),...Object.keys(r.taxonomies)]),c={};for(const p of l){const g=fv(e.taxonomies[p],t.taxonomies[p],r.taxonomies[p]);g.value!==void 0&&(c[p]=g.value),g.conflict&&s.push({field:"taxonomies",key:p}),g.remoteChanged&&i.add(`taxonomies.${p}`)}n.taxonomies=c;const d=zb(e.checklistItems,t.checklistItems,r.checklistItems,p=>p.id);n.checklistItems=d.items,d.conflictKeys.forEach(p=>s.push({field:"checklistItems",key:p})),d.remoteChanged&&i.add("checklistItems");const f=zb(e.attachments,t.attachments,r.attachments,Ph);return n.attachments=f.items,f.conflictKeys.forEach(p=>s.push({field:"attachments",key:p})),f.remoteChanged&&i.add("attachments"),{merged:n,conflicts:s,remoteChangedFields:[...i]}}function yR(e,t,r,n=e.merged){if(r==="local")return n;const s={...n,taxonomies:{...n.taxonomies},checklistItems:[...n.checklistItems],attachments:[...n.attachments]};for(const i of e.conflicts){if(i.field==="taxonomies"){const l=t.taxonomies[i.key];l===void 0?delete s.taxonomies[i.key]:s.taxonomies[i.key]=l;continue}if(i.field==="checklistItems"||i.field==="attachments"){const l=i.field==="checklistItems"?g=>g.id:g=>Ph(g),c=s[i.field],f=t[i.field].find(g=>l(g)===i.key),p=c.filter(g=>l(g)!==i.key);s[i.field]=f?[...p,f]:p;continue}s[i.field]=t[i.field]}return s}function kR(e,t,r){return e.field==="taxonomies"?Il(t.taxonomies[e.key],r.taxonomies[e.key]):e.field==="checklistItems"?Il(t.checklistItems.find(n=>n.id===e.key),r.checklistItems.find(n=>n.id===e.key)):e.field==="attachments"?Il(t.attachments.find(n=>Ph(n)===e.key),r.attachments.find(n=>Ph(n)===e.key)):Il(t[e.field],r[e.field])}function vR(e){return"key"in e?`${e.field}:${e.key}`:e.field}function wR(e,t,r,n){return[...new Map([...e.filter(i=>!kR(i,r,n)),...t].map(i=>[vR(i),i])).values()]}function bR(e){const t={title:"title",description:"description",category:"category",type:"type",priority:"priority",complexity:"complexity",status:"status",assignee:"assignee",scheduledDate:"scheduled date",dueDate:"due date",workstreamId:"workstream",taxonomies:"taxonomy",checklistItems:"checklist",attachments:"attachments"};return[...new Set(e.map(r=>t[r.field]||String(r.field)))]}const SR={"annotated_attachments.workspace_access":{enabledByEnvironment:{performance:!0,staging:!0,production:!0},description:"Annotated Attachment workspace readiness gate.",owner:"taskforce",removalMilestone:"Annotated Attachment GA"},"documents.workspace_access":{enabledByEnvironment:{performance:!0,staging:!0,production:!0},description:"Document Manager/editor workspace readiness gate.",owner:"taskforce",removalMilestone:"Document Manager GA"},"workflow_manager.workspace_access":{enabledByEnvironment:{performance:!0,staging:!0,production:!1},description:"Workflow Manager workspace readiness gate.",owner:"taskforce",removalMilestone:"Workflow Manager GA"},"taskforce_agents.workspace_access":{enabledByEnvironment:{performance:!0,staging:!0,production:!1},description:"Taskforce Agents workspace readiness gate.",owner:"taskforce",removalMilestone:"Taskforce Agents workspace GA"},"ai_profiles.workspace_access":{enabledByEnvironment:{performance:!0,staging:!0,production:!0},description:"AI Profiles workspace readiness gate.",owner:"taskforce",removalMilestone:"AI Profiles workspace GA"},"planning.workspace_access":{enabledByEnvironment:{performance:!1,staging:!1,production:!1},description:"Planning workspace readiness gate.",owner:"taskforce",removalMilestone:"Planning workspace GA"}},mv="annotated_attachments.workspace_access",gv="documents.workspace_access",Hb="workflow_manager.workspace_access",Uf="taskforce_agents.workspace_access",Vb="ai_profiles.workspace_access",Gb="planning.workspace_access",AR=Object.fromEntries(Object.entries(SR).map(([e,t])=>[e,Object.freeze({key:e,enabledByEnvironment:Object.freeze({...t.enabledByEnvironment}),description:t.description,owner:t.owner,removalMilestone:t.removalMilestone})])),CC=Object.freeze(AR);function IC(){return Object.values(CC)}function CR(e){const t=String(e||"").trim();return t&&CC[t]||null}function IR(e,t){const r=CR(e);return r?r.enabledByEnvironment[t]?{featureKey:e,allowed:!0,source:"app_gate",code:"OK"}:{featureKey:e,allowed:!1,source:"app_gate",code:"APP_GATE_DISABLED"}:{featureKey:e,allowed:!0,source:"none",code:"OK"}}function _R(e){return Object.fromEntries(IC().map(({key:t})=>[t,IR(t,e)]))}function TR(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=e;return IC().every(({key:r})=>{const n=t[r];if(!n||typeof n!="object"||Array.isArray(n))return!1;const s=n;return s.featureKey===r&&typeof s.allowed=="boolean"&&(s.source==="app_gate"||s.source==="cloud_entitlement"||s.source==="none")&&typeof s.code=="string"})}function Kb(e){const t=String(e.workspaceId||"default").trim().replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"default",r=Number.isFinite(Number(e.epoch))?Math.max(0,Math.floor(Number(e.epoch))):0,n=String(e.seed||"session").trim().replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"session",s=String(e.phase||"bootstrap").trim().replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"bootstrap";return`tfb-${n}-${t}-e${r}-${s}`}function jk(e,t){const r=String(t||"").trim();if(!r)return e;const n=new Headers(e?.headers||void 0);return n.has("x-taskforce-bootstrap-trace-id")||n.set("x-taskforce-bootstrap-trace-id",r),{...e||{},headers:n}}function xR(e){const t=String(e.activeWorkspaceId||"").trim();return{email:e.email,password:e.password,...t&&t!=="default"?{workspaceId:t}:{}}}const Eh="unassigned",_C="agent",fm="UserRound",sy="color-mix(in srgb, var(--text-helper) 68%, transparent)",RR="user",PR=/^[0-9a-f]{8,}$/i,jd={value:Eh,label:"Unassigned",icon:fm,color:sy,kind:"unassigned"};function TC(e){const t=String(e||"").trim().toLowerCase();return t===_C||t==="ai"||t.startsWith("ai-profile-")}function Sw(e){const t=String(e||"").trim().toLowerCase();return!t||t===Eh||t==="none"||t==="null"||t===RR}function hv(e){return TC(e)?"agent":Sw(e)?"unassigned":"member"}function ER(e){const t=String(e.displayName||"").trim(),r=String(e.email||"").trim().toLowerCase();return t||r||String(e.userId||"").trim()||"Workspace member"}function xl(){return[{...jd}]}function NR(e){const t=new Map;for(const r of e){const n=String(r.userId||"").trim();n&&t.set(n,{value:n,label:ER(r),icon:"User",color:"#22c55e",kind:"member",avatarUrl:typeof r.avatarUrl=="string"&&r.avatarUrl.trim().length>0?r.avatarUrl.trim():null})}return lp(Array.from(t.values()))}function lp(e){const t=new Map;for(const n of xl())t.set(n.value,n);for(const n of Array.isArray(e)?e:[]){const s=String(n?.value||"").trim(),i=typeof n?.archivedAt=="string"?n.archivedAt.trim():"";!s||i||s===Eh||s===_C||t.set(s,{value:s,label:String(n.label||s).trim()||s,icon:String(n.icon||(n.kind==="agent"?"Bot":"User")),color:String(n.color||(n.kind==="agent"?"#8b5cf6":"#22c55e")),kind:n.kind==="agent"?"agent":"member",avatarUrl:typeof n.avatarUrl=="string"&&n.avatarUrl.trim().length>0?n.avatarUrl.trim():null,avatarRevision:Number.isFinite(Number(n.avatarRevision))?Math.max(0,Math.floor(Number(n.avatarRevision))):null,avatarUpdatedAt:typeof n.avatarUpdatedAt=="string"&&n.avatarUpdatedAt.trim().length>0?n.avatarUpdatedAt.trim():null,username:typeof n.username=="string"&&n.username.trim().length>0?n.username.trim():null,surfaceType:typeof n.surfaceType=="string"&&n.surfaceType.trim().length>0?n.surfaceType.trim():null,providerMetadata:n.providerMetadata&&typeof n.providerMetadata=="object"&&!Array.isArray(n.providerMetadata)?n.providerMetadata:null,archivedAt:null,createdAt:typeof n.createdAt=="string"&&n.createdAt.trim().length>0?n.createdAt.trim():null,updatedAt:typeof n.updatedAt=="string"&&n.updatedAt.trim().length>0?n.updatedAt.trim():null})}const r=[Eh];return Array.from(t.values()).sort((n,s)=>{const i=r.indexOf(n.value),l=r.indexOf(s.value);return i>=0||l>=0?i<0?1:l<0?-1:i-l:n.label.localeCompare(s.label,void 0,{sensitivity:"base"})})}function xC(e,t){const r=String(t||"").trim();if(!r||e.some(i=>i.value===r))return e;const n=r.replace(/^ai-profile-/i,"").replace(/[-_]+/g," ").replace(/\s+/g," ").trim(),s=n?n.split(" ").map(i=>i.charAt(0).toUpperCase()+i.slice(1)).join(" "):r;if(hv(r)==="agent"){const i=String(r).toLowerCase().startsWith("ai-profile-")&&n.split(" ").every(l=>PR.test(l));return lp([...e,{value:r,label:i?"AI":s||"AI",icon:"Bot",color:"#8b5cf6",kind:"agent"}])}return hv(r)==="member"?lp([...e,{value:r,label:s||r,icon:"User",color:"#22c55e",kind:"member"}]):e}function RC(e){const t=Array.isArray(e)?e.filter(Boolean):[];return lp(t)}function rm(e,t){const r=String(e||"").trim(),s=RC(t).find(i=>i.value===r);return s?s.label:TC(r)?"AI":Sw(r)?"Unassigned":r||"Unassigned"}const yv=1,PC="taskforce.workspaceContext.v2",jR="taskforce.uiState.app.v1",DR="taskforce.bootstrapDebug.v1",qb=5e3,Rg=new Map;function Pg(e){return Array.from(new Set(e.map(t=>String(t??"").trim()).filter(t=>t.length>0))).sort()}function dp(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function _d(e){if(Array.isArray(e))return Array.from(new Set(e.filter(t=>typeof t=="string").map(t=>t.trim()).filter(Boolean)))}function kv(e){if(Array.isArray(e))return Array.from(new Set(e.filter(t=>typeof t=="string"&&t.trim().length>0||typeof t=="number")))}function MR(e){if(!dp(e))return;const t={};return Object.entries(e).forEach(([r,n])=>{const s=String(r||"").trim(),i=kv(n);!s||!i||(t[s]=i)}),t}function LR(e){if(!dp(e))return;const t={};return Object.entries(e).forEach(([r,n])=>{const s=String(r||"").trim();!s||typeof n!="boolean"||(t[s]=n)}),t}function OR(e){if(!dp(e))return;const t={};return Object.entries(e).forEach(([r,n])=>{const s=String(r||"").trim();if(!s||typeof n!="string")return;const i=n.trim();i&&(t[s]=i)}),t}function BR(e){if(!dp(e))return;const t=_d(e.categories),r=_d(e.types),n=_d(e.priorities);if(!t||!r||!n)return;const s={};return dp(e.taxonomies)&&Object.entries(e.taxonomies).forEach(([i,l])=>{const c=String(i||"").trim(),d=_d(l);!c||!d||(s[c]=d)}),{categories:t,types:r,priorities:n,taxonomies:s}}function EC(e){if(!dp(e))return null;const t={version:yv},r=["category","type","priority","assignee","status","complexity","schedule","docs"];e.groupBy==="approach"&&(t.groupBy="status"),typeof e.groupBy=="string"&&r.includes(e.groupBy)&&(t.groupBy=e.groupBy);const n=e.activeWorkspaceModule==="agents"?"aiProfiles":e.activeWorkspaceModule==="workflows"?"tasks":e.activeWorkspaceModule;typeof n=="string"&&["tasks","planning","docs","annotate","workflowManager","taskforceAgents","aiProfiles"].includes(n)&&(t.activeWorkspaceModule=n),(e.emptyColumnMode==="show"||e.emptyColumnMode==="collapse"||e.emptyColumnMode==="hide")&&(t.emptyColumnMode=e.emptyColumnMode),(e.taskScope==="open"||e.taskScope==="archived"||e.taskScope==="deleted")&&(t.taskScope=e.taskScope),typeof e.openTaskId=="string"?t.openTaskId=e.openTaskId.trim()||null:e.openTaskId===null&&(t.openTaskId=null),typeof e.compressedCards=="boolean"&&(t.compressedCards=e.compressedCards),typeof e.zenMode=="boolean"&&(t.zenMode=e.zenMode),typeof e.searchQuery=="string"&&(t.searchQuery=e.searchQuery);const i=LR(e.collapsedCategories);i&&(t.collapsedCategories=i);const l=_d(e.filterCategories);l&&(t.filterCategories=l);const c=kv(e.filterPriorities);c&&(t.filterPriorities=c);const d=_d(e.filterTypes);d&&(t.filterTypes=d);const f=kv(e.filterStatus);f&&(t.filterStatus=f);const p=_d(e.filterAssignees);p&&(t.filterAssignees=p),typeof e.filterAssigneesAllSelected=="boolean"&&(t.filterAssigneesAllSelected=e.filterAssigneesAllSelected);const g=MR(e.filterTaxonomies);g&&(t.filterTaxonomies=g);const h=BR(e.filterTaxonomySignature);if(h&&(t.filterTaxonomySignature=h),(e.sortBy==="created"||e.sortBy==="priority"||e.sortBy==="updated"||e.sortBy==="complexity")&&(t.sortBy=e.sortBy),(e.sortOrder==="asc"||e.sortOrder==="desc")&&(t.sortOrder=e.sortOrder),typeof e.hasInitedFilters=="boolean"&&(t.hasInitedFilters=e.hasInitedFilters),typeof e.lastCategory=="string"&&(t.lastCategory=e.lastCategory),typeof e.taskforceAgentId=="string"){const k=e.taskforceAgentId.trim();k&&(t.taskforceAgentId=k)}if(typeof e.taskforceAgentConversationId=="string"){const k=e.taskforceAgentConversationId.trim();k&&(t.taskforceAgentConversationId=k)}const y=OR(e.taskforceAgentConversationByAgentId);return y&&Object.keys(y).length>0&&(t.taskforceAgentConversationByAgentId=y),t}function WR(e){const t=Pg(e.categories.map(i=>i.value)),r=Pg(e.types.map(i=>i.value)),n=Pg(e.priorities.map(i=>i.value));if(t.length===0||r.length===0||n.length===0)return null;const s={};return(e.taxonomies||[]).forEach(i=>{const l=String(i.id??"").trim();l&&(s[l]=Pg((i.options||[]).map(c=>c.value)))}),{categories:t,types:r,priorities:n,taxonomies:s}}function kf(e,t){return e.length===t.length&&e.every((r,n)=>r===t[n])}function $R(e,t){if(!e||!t||!kf(e.categories||[],t.categories||[])||!kf(e.types||[],t.types||[])||!kf(e.priorities||[],t.priorities||[]))return!1;const r=Object.keys(e.taxonomies||{}).sort(),n=Object.keys(t.taxonomies||{}).sort();return kf(r,n)?r.every(s=>kf(e.taxonomies[s]||[],t.taxonomies[s]||[])):!1}function FR(){if(typeof window>"u")return!1;try{const e=String(window.localStorage.getItem(DR)||"").trim().toLowerCase();return e==="1"||e==="true"||e==="on"||e==="yes"}catch{return!1}}function _r(e,t){if(!FR())return;console.info("[Taskforce Bootstrap]",e,t&&typeof t=="object"?t:{})}function UR(e,t,r,n=!1){const s=String(e).trim()||"default",i=String(t).trim()||"default",l=String(r||"default").trim()||"default";return`${n?"cloud":"same-origin"}::${i}::${s}::${l}`}async function zf(e){const t=String(e.stateKey||"default").trim()||"default",r=String(e.workspaceId||"").trim(),n=e.patch&&typeof e.patch=="object"?e.patch:{},s=JSON.stringify(n),i=UR(t,r||"default",e.dedupeScope,e.useCloudProxy),l=Date.now(),c=Rg.get(i);if(c&&c.serializedPatch===s){if(c.status==="success"&&e.skipIfUnchanged!==!1)return _r("ui_state_persist_skipped",{stateKey:t,workspaceId:r||"default",reason:"unchanged"}),{skipped:!0,reason:"unchanged"};if(e.respectFailureCooldown!==!1&&c.retryAfter>l)return _r("ui_state_persist_skipped",{stateKey:t,workspaceId:r||"default",reason:"cooldown",retryAfterMs:c.retryAfter-l}),{skipped:!0,reason:"cooldown"}}try{const d=await fetch(`/api/taskforce/ui-state${e.useCloudProxy?"?taskforceCloud=1":""}`,{method:"POST",headers:{"Content-Type":"application/json",...e.headers||{}},credentials:"include",...e.keepalive?{keepalive:!0}:{},body:JSON.stringify({stateKey:t,...r?{workspaceId:r}:{},patch:n})}),f=await d.json().catch(()=>({}));if(d.ok&&f?.success!==!1)return Rg.set(i,{serializedPatch:s,status:"success",retryAfter:0}),{skipped:!1,response:d,payload:f};if(Rg.set(i,{serializedPatch:s,status:"failure",retryAfter:l+(e.failureRetryMs??qb)}),_r("ui_state_persist_failed",{stateKey:t,workspaceId:r||"default",status:d.status,error:String(f?.error||"")}),e.throwOnError)throw new Error(String(f?.error||`Failed to persist UI state (${d.status})`));return{skipped:!1,response:d,payload:f}}catch(d){if(Rg.set(i,{serializedPatch:s,status:"failure",retryAfter:l+(e.failureRetryMs??qb)}),_r("ui_state_persist_failed",{stateKey:t,workspaceId:r||"default",error:d instanceof Error?d.message:String(d)}),e.throwOnError)throw d;return{skipped:!1,payload:null}}}function Aw(e){const t=ny(e);return`${PC}.${t}`}function NC(e){const t=kw(e);return`${PC}.${t}`}function vv(e){if(typeof window>"u")return"";try{const t=Aw(e),r=String(window.localStorage.getItem(t)||"").trim();if(r&&r.length<=120&&!/\s/.test(r))return r;const n=NC(e),s=String(window.localStorage.getItem(n)||"").trim();return s&&s.length<=120&&!/\s/.test(s)?(window.localStorage.setItem(t,s),s):""}catch{return""}}function zR(e,t){if(typeof window>"u")return;const r=String(e||"").trim();try{if(!r||vw(r))return;const n=Aw(t),s=String(window.localStorage.getItem(n)||"").trim();if(!r&&s&&s.toLowerCase()!=="default")return;window.localStorage.setItem(n,r)}catch{}}function Yb(e){if(!(typeof window>"u"))try{window.localStorage.removeItem(Aw(e)),window.localStorage.removeItem(NC(e))}catch{}}function jC(e){const t=kw(e);return`${jR}.${t}`}function Zb(e){if(typeof window>"u")return null;try{const t=window.localStorage.getItem(jC(e));if(!t)return null;const r=JSON.parse(t);return EC(r)}catch{return null}}function HR(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(jC(t),JSON.stringify(e))}catch{}}const wv="taskforce.localMutationActorUserId.v1";function DC(e){return typeof e=="string"?e.trim().replace(/\/+$/,""):""}function VR(e){const t=String(e||"").trim().toLowerCase();return t==="localhost"||t==="127.0.0.1"||t==="::1"||t==="[::1]"}function Nf(e){if(!(typeof window>"u"))try{const t=String(e||"").trim();if(!t||t==="anonymous"){window.sessionStorage.removeItem(wv);return}window.sessionStorage.setItem(wv,t)}catch{}}function Cw(){if(typeof window>"u")return"";try{return String(window.sessionStorage.getItem(wv)||"").trim()}catch{return""}}function GR(e,t){if(typeof window>"u"||!e.startsWith("/api/taskforce/")||!VR(window.location.hostname))return!1;try{return new URL(t,window.location.origin).origin===window.location.origin}catch{return e.startsWith("/")}}function KR(e,t,r){if(!GR(e,t))return r;const n=Cw();if(!n)return r;const s=new Headers(r?.headers||void 0);return s.has("x-taskforce-user-id")||s.set("x-taskforce-user-id",n),{...r,headers:s}}function qR(e,t){if(!e.startsWith("/"))return e;const r=DC(t);return r?`${r}${e}`:e}async function YR(e,t,r){const n=qR(e,r),s=DC(r).length>0,i=KR(e,n,t),l=typeof performance<"u"?performance.now():Date.now();try{const c=await fetch(n,i);if(!(s&&n!==e&&e.startsWith("/api/taskforce/")&&(c.status===401||c.status===403)))return c;_r("taskforce_api_auth_fallback_retry",{path:e,primaryUrl:n,fallbackUrl:e,status:c.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-l)});try{const f=await fetch(e,i);return _r("taskforce_api_auth_fallback_completed",{path:e,primaryUrl:n,fallbackUrl:e,primaryStatus:c.status,fallbackStatus:f.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-l)}),f}catch{return _r("taskforce_api_auth_fallback_failed",{path:e,primaryUrl:n,fallbackUrl:e,status:c.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-l)}),c}}catch(c){if(!s||!e.startsWith("/"))throw c;_r("taskforce_api_network_fallback_retry",{path:e,primaryUrl:n,fallbackUrl:e,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-l),error:c instanceof Error?c.message:String(c)});const d=await fetch(e,i);return _r("taskforce_api_network_fallback_completed",{path:e,primaryUrl:n,fallbackUrl:e,fallbackStatus:d.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-l)}),d}}const jf=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:4,coverageDigest:"c622f33d62c9f9251559a5b3644ba617da31c1b53d4fd0927b529e76c89948d1"}),oy=Object.freeze(["task/root-v1","task-relationship/full-v1","taxonomy/full-v1","initiative/full-v1","workstream/full-v1","task-comments/full-v1","task-checklist/full-v1","task-attachment-links/full-v1","entity-event/full-v1"]),Df=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:5,coverageDigest:"1227152d1998809427f8560f85c8ef2da8780d3ea697390fbaa48c9e85a97be2"}),ZR=oy,Mf=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:6,coverageDigest:"0aa90b110c71cf37a1234617b098d055f1df1e8da389184c7b147833164e338d"}),JR=Object.freeze([...oy,"workstream-task-order/full-v1"]),Lf=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:7,coverageDigest:"84b0dee7ac0811234288c1b296357b2ddbcfe82d438ccf90b6bc6e8b5afea0b6"}),XR=Object.freeze(oy.map(e=>e==="task-attachment-links/full-v1"?"task-attachment-links/full-v2":e)),Aa=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:3,coverageDigest:"48544ecfcb72c44866cdd39d02d0ba83222bc5e236045880f7f62b979be46117"}),QR=1,e1=Object.freeze(["task/root-v1","task-relationship/full-v1","taxonomy/full-v1","initiative/full-v1","workstream/full-v1"]);function Rl(e){const t=String(e.coverageProfileId||"").trim(),r=Number(e.coverageVersion),n=String(e.coverageDigest||"").trim();return t===Aa.coverageProfileId&&r===Aa.coverageVersion&&n===Aa.coverageDigest?{coverage:Aa,excludedProjections:e1,nestedWriterPrerequisitesRequired:!1,workflowWriterPrerequisitesRequired:!1,planningOrderWriterPrerequisitesRequired:!1,taskCoverProjectionRequired:!1}:t===jf.coverageProfileId&&r===jf.coverageVersion&&n===jf.coverageDigest?{coverage:jf,excludedProjections:oy,nestedWriterPrerequisitesRequired:!0,workflowWriterPrerequisitesRequired:!1,planningOrderWriterPrerequisitesRequired:!1,taskCoverProjectionRequired:!1}:t===Df.coverageProfileId&&r===Df.coverageVersion&&n===Df.coverageDigest?{coverage:Df,excludedProjections:ZR,nestedWriterPrerequisitesRequired:!0,workflowWriterPrerequisitesRequired:!0,planningOrderWriterPrerequisitesRequired:!1,taskCoverProjectionRequired:!1}:t===Mf.coverageProfileId&&r===Mf.coverageVersion&&n===Mf.coverageDigest?{coverage:Mf,excludedProjections:JR,nestedWriterPrerequisitesRequired:!0,workflowWriterPrerequisitesRequired:!1,planningOrderWriterPrerequisitesRequired:!0,taskCoverProjectionRequired:!1}:t===Lf.coverageProfileId&&r===Lf.coverageVersion&&n===Lf.coverageDigest?{coverage:Lf,excludedProjections:XR,nestedWriterPrerequisitesRequired:!0,workflowWriterPrerequisitesRequired:!1,planningOrderWriterPrerequisitesRequired:!1,taskCoverProjectionRequired:!0}:null}function Iw(e){for(const t of[Aa,jf,Df,Mf,Lf]){const r=Rl(t);if(e.length===r.excludedProjections.length&&r.excludedProjections.every((n,s)=>e[s]===n))return t}return null}function _w(e,t=Aa){if(!e||typeof e!="object"||Array.isArray(e))return!1;const r=e,n=r.coverage;return r.capabilityVersion===QR&&r.runtimeMode==="cloud"&&r.routeAvailable===!0&&r.writerPrerequisitesReady===!0&&r.activationReady===!0&&Array.isArray(r.missingPrerequisites)&&r.missingPrerequisites.length===0&&!!n&&typeof n=="object"&&!Array.isArray(n)&&n.coverageProfileId===t.coverageProfileId&&n.coverageVersion===t.coverageVersion&&n.coverageDigest===t.coverageDigest}function Tw(e,t=Aa){if(!e||typeof e!="object"||Array.isArray(e))return!1;const r=e,n=r.excludedProjections,s=Rl(t);return s?r.cloudWritesFenced===!0&&Array.isArray(n)&&n.length===s.excludedProjections.length&&s.excludedProjections.every((i,l)=>n[l]===i):!1}function t1(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=e;return t.cloudWritesFenced===!1&&Array.isArray(t.excludedProjections)&&t.excludedProjections.length===0}const MC=Object.freeze(["task/root-v1","task-relationship/full-v1","taxonomy/full-v1","initiative/full-v1","workstream/full-v1","task-comments/full-v1","task-checklist/full-v1","task-attachment-links/full-v1","task-attachment-links/full-v2","entity-event/full-v1","workstream-task-order/full-v1"]),r1=new Set(MC);function Nh(e){const t=new Set;for(const r of e||[]){const n=String(r||"").trim();if(!n||!r1.has(n)||t.has(n))throw new Error("Workspace sync v2 projection exclusions are invalid.");t.add(n)}return MC.filter(r=>t.has(r))}function n1(e,t){try{const r=Nh(e),n=Nh(t);return r.length===n.length&&r.every((s,i)=>s===n[i])}catch{return!1}}function a1(e,t){const r=[],n={},s=i=>{n[i]=(n[i]||0)+1};for(const i of e){if(i.op==="upsert"){const l=t.has("task-comments/full-v1"),c=t.has("task-checklist/full-v1"),d=t.has("task-attachment-links/full-v2")?"task-attachment-links/full-v2":"task-attachment-links/full-v1",f=t.has(d);if(t.has("task/root-v1")&&s("task/root-v1"),l||c||f){const p={...i.task};l&&(delete p.comments,s("task-comments/full-v1")),c&&(delete p.checklistItems,s("task-checklist/full-v1")),f&&(delete p.attachments,d==="task-attachment-links/full-v2"&&delete p.cardCoverAssetId,s(d)),r.push({...i,task:p});continue}}if(t.has("task/root-v1")&&i.op==="delete"){s("task/root-v1");continue}if(t.has("task-relationship/full-v1")&&(i.op==="task-relationship-upsert"||i.op==="task-relationship-delete")){s("task-relationship/full-v1");continue}if(t.has("taxonomy/full-v1")&&i.op==="taxonomy-upsert"){s("taxonomy/full-v1");continue}if(t.has("initiative/full-v1")&&i.op==="initiative-upsert"){s("initiative/full-v1");continue}if(t.has("workstream/full-v1")&&i.op==="workstream-upsert"){s("workstream/full-v1");continue}if(t.has("entity-event/full-v1")&&(i.op==="task-event-upsert"||i.op==="entity-event-upsert")){s("entity-event/full-v1");continue}r.push(i)}return{changes:r,suppressedCounts:n}}const LC=1;function s1(e){if(e.version!==LC)throw new TypeError("The sync transfer completion group version is unsupported.");if(!e.workspaceId.trim())throw new TypeError("The sync transfer completion group workspace is required.");if(!Number.isSafeInteger(e.coordinatorGeneration)||e.coordinatorGeneration<0)throw new TypeError("The sync transfer completion group generation is invalid.");if(e.ownerMode!=="browser-gateway"&&e.ownerMode!=="server")throw new TypeError("The sync transfer completion group owner is invalid.");if(!e.serverInstanceId.trim())throw new TypeError("The sync transfer completion group server instance is required.");if(!Array.isArray(e.permitIds)||e.permitIds.length===0)throw new TypeError("The sync transfer completion group requires at least one permit.");const t=e.permitIds.map(r=>r.trim());if(t.some((r,n)=>!r||r!==e.permitIds[n]))throw new TypeError("The sync transfer completion group contains an invalid permit ID.");if(new Set(t).size!==t.length)throw new TypeError("The sync transfer completion group contains duplicate permit IDs.");bn(e.previousBoundary),bn(e.expectedBoundary)}const Ao=45e3,xw=18e4;function iy(e,t){const r=t?.completionGroup;if(!r)return{};if(s1(r),r.workspaceId!==e)throw new TypeError("The local sync apply completion group workspace does not match the request.");if(r.ownerMode!=="browser-gateway")throw new TypeError("The local sync browser apply requires a browser-gateway completion group.");return{coordinatorGeneration:r.coordinatorGeneration,permitIds:[...r.permitIds]}}async function OC(e,t=100){const r=new URLSearchParams({workspaceId:e,limit:String(Math.max(1,Math.min(100,Math.floor(t))))});return Qn(fetch(`/api/taskforce/sync/workspace/content-obligations?${r.toString()}`,{credentials:"include",headers:{"x-taskforce-workspace-id":e}}))}async function BC(e,t,r){return Qn(fetch("/api/taskforce/sync/workspace/content-obligations/failures",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e},body:JSON.stringify({workspaceId:e,obligationIds:t,error:r})}))}async function o1(e,t,r=[],n=[],s=XC){const i=await s(e);if(!i.ok)return i;const l=new Set(Array.from(t,I=>String(I||"").trim()).filter(Boolean)),c=new Set(Array.from(r,I=>String(I||"").trim()).filter(Boolean)),d=new Set(Array.from(n,I=>String(I||"").trim()).filter(Boolean)),f=i.data;if(f.success!==!0||f.contractVersion!==3||f.workspaceId!==e||!Array.isArray(f.tasks)||!Array.isArray(f.activeTaskRelationshipIds)||!Array.isArray(f.initiatives)||!Array.isArray(f.workstreams)||!f.initiativeProjection||typeof f.initiativeProjection!="object"||f.initiativeProjection.owner!=="v2"&&f.initiativeProjection.owner!=="v3"||typeof f.initiativeProjection.epoch!="string"||!/^\d+$/.test(f.initiativeProjection.epoch)||f.activeTaskRelationshipIds.some(I=>typeof I!="string"||!I.trim())||!f.taxonomy||typeof f.taxonomy!="object"||Array.isArray(f.taxonomy)||typeof f.taxonomy.activeOperation!="boolean"||typeof f.taxonomy.owned!="boolean"||typeof f.taxonomy.entityRevision!="string"||!/^\d+$/.test(f.taxonomy.entityRevision)||typeof f.taxonomy.lifecycleRevision!="string"||!/^\d+$/.test(f.taxonomy.lifecycleRevision)||f.taxonomy.lastSequence!==null&&(typeof f.taxonomy.lastSequence!="string"||!/^\d+$/.test(f.taxonomy.lastSequence)))return{ok:!1,status:502,data:{activeMetadataTaskIds:[],activeCreateTaskIds:[],activeDeleteTaskIds:[],activeLifecycleTaskIds:[],activeReopenTaskIds:[],activeTaskRelationshipIds:[],activeInitiativeIds:[],protectedInitiativeIds:[],protectedWorkstreamIds:[],taxonomyProtected:!0,initiativeProjectionOwner:"v3",initiativeProjectionEpoch:"0",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0"}};const p=f.combinedProjection;if(p!==void 0&&(!p||typeof p!="object"||Array.isArray(p)||p.owner!=="v2"&&p.owner!=="v3"||typeof p.epoch!="string"||!/^\d+$/.test(p.epoch)))return{ok:!1,status:502,data:{activeMetadataTaskIds:[],activeCreateTaskIds:[],activeDeleteTaskIds:[],activeLifecycleTaskIds:[],activeReopenTaskIds:[],activeTaskRelationshipIds:[],activeInitiativeIds:[],protectedInitiativeIds:[],protectedWorkstreamIds:[],taxonomyProtected:!0,initiativeProjectionOwner:"v3",initiativeProjectionEpoch:"0",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0"}};const g=p?Rl({coverageProfileId:p.coverageProfileId,coverageVersion:p.coverageVersion,coverageDigest:p.coverageDigest}):null;if(p?.owner==="v3"&&!g)return{ok:!1,status:502,data:{activeMetadataTaskIds:[],activeCreateTaskIds:[],activeDeleteTaskIds:[],activeLifecycleTaskIds:[],activeReopenTaskIds:[],activeTaskRelationshipIds:[],activeInitiativeIds:[],protectedInitiativeIds:[],protectedWorkstreamIds:[],taxonomyProtected:!0,initiativeProjectionOwner:"v3",initiativeProjectionEpoch:"0",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0",combinedExcludedProjections:[]}};const h=[];for(const I of f.tasks){const $=String(I?.taskId||"").trim();if(!I||typeof I!="object"||Array.isArray(I)||!$||typeof I.activeOperation!="boolean"||typeof I.activeCreateOperation!="boolean"||I.activeDeleteOperation!==void 0&&typeof I.activeDeleteOperation!="boolean"||I.deleteOwned!==void 0&&typeof I.deleteOwned!="boolean"||typeof I.activeLifecycleOperation!="boolean"||typeof I.activeReopenOperation!="boolean"||typeof I.reopenAssigneeOwned!="boolean")return{ok:!1,status:502,data:{activeMetadataTaskIds:[],activeCreateTaskIds:[],activeDeleteTaskIds:[],activeLifecycleTaskIds:[],activeReopenTaskIds:[],activeTaskRelationshipIds:[],activeInitiativeIds:[],protectedInitiativeIds:[],protectedWorkstreamIds:[],taxonomyProtected:!0,initiativeProjectionOwner:"v3",initiativeProjectionEpoch:"0",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0"}};h.push({entry:I,taskId:$})}const y=h.filter(({taskId:I})=>I.length>0&&l.has(I)),k=Array.from(new Set(y.filter(({entry:I})=>I?.activeOperation===!0).map(({taskId:I})=>I))).sort(),w=Array.from(new Set(y.filter(({entry:I})=>I?.activeCreateOperation===!0).map(({taskId:I})=>I))).sort(),S=Array.from(new Set(y.filter(({entry:I})=>I?.activeDeleteOperation===!0||I?.deleteOwned===!0).map(({taskId:I})=>I))).sort(),b=Array.from(new Set(y.filter(({entry:I})=>I?.activeLifecycleOperation===!0).map(({taskId:I})=>I))).sort(),v=Array.from(new Set(y.filter(({entry:I})=>I?.activeReopenOperation===!0).map(({taskId:I})=>I))).sort(),T=Array.from(new Set(f.activeTaskRelationshipIds.map(I=>String(I).trim()))).sort(),R=[],P=[];for(const I of f.initiatives){const $=String(I?.entityId||"").trim();if(!(I&&typeof I=="object"&&!Array.isArray(I)&&I.domain==="initiative"&&$.length>0&&typeof I.activeOperation=="boolean"&&typeof I.owned=="boolean"&&typeof I.entityRevision=="string"&&/^\d+$/.test(I.entityRevision)&&typeof I.lifecycleRevision=="string"&&/^\d+$/.test(I.lifecycleRevision)&&(I.lastSequence===null||typeof I.lastSequence=="string"&&/^\d+$/.test(I.lastSequence))&&(I.canonicalFingerprint===null||typeof I.canonicalFingerprint=="string"&&/^[a-f0-9]{64}$/.test(I.canonicalFingerprint))))return{ok:!1,status:502,data:{activeMetadataTaskIds:[],activeCreateTaskIds:[],activeDeleteTaskIds:[],activeLifecycleTaskIds:[],activeReopenTaskIds:[],activeTaskRelationshipIds:[],activeInitiativeIds:[],protectedInitiativeIds:[],protectedWorkstreamIds:[],taxonomyProtected:!0,initiativeProjectionOwner:"v3",initiativeProjectionEpoch:"0",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0"}};c.has($)&&(I.activeOperation===!0&&R.push($),(I.activeOperation===!0||I.owned===!0)&&P.push($))}const N=[];for(const I of f.workstreams){const $=String(I?.entityId||"").trim();if(!(I&&typeof I=="object"&&!Array.isArray(I)&&I.domain==="workstream"&&$.length>0&&typeof I.activeOperation=="boolean"&&typeof I.owned=="boolean"&&typeof I.entityRevision=="string"&&/^\d+$/.test(I.entityRevision)&&typeof I.lifecycleRevision=="string"&&/^\d+$/.test(I.lifecycleRevision)&&(I.lastSequence===null||typeof I.lastSequence=="string"&&/^\d+$/.test(I.lastSequence))&&(I.canonicalFingerprint===null||typeof I.canonicalFingerprint=="string"&&/^[a-f0-9]{64}$/.test(I.canonicalFingerprint))))return{ok:!1,status:502,data:{activeMetadataTaskIds:[],activeCreateTaskIds:[],activeDeleteTaskIds:[],activeLifecycleTaskIds:[],activeReopenTaskIds:[],activeTaskRelationshipIds:[],activeInitiativeIds:[],protectedInitiativeIds:[],protectedWorkstreamIds:[],taxonomyProtected:!0,initiativeProjectionOwner:"v3",initiativeProjectionEpoch:"0",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0"}};d.has($)&&(I.activeOperation===!0||I.owned===!0)&&N.push($)}return{ok:!0,status:i.status,data:{activeMetadataTaskIds:k,activeCreateTaskIds:w,activeDeleteTaskIds:S,activeLifecycleTaskIds:b,activeReopenTaskIds:v,activeTaskRelationshipIds:T,activeInitiativeIds:Array.from(new Set(R)).sort(),protectedInitiativeIds:Array.from(new Set(P)).sort(),protectedWorkstreamIds:Array.from(new Set(N)).sort(),taxonomyProtected:f.taxonomy.activeOperation===!0||f.taxonomy.owned===!0,initiativeProjectionOwner:f.initiativeProjection.owner,initiativeProjectionEpoch:f.initiativeProjection.epoch,combinedProjectionOwner:p?.owner==="v3"?"v3":"v2",combinedProjectionEpoch:p&&typeof p.epoch=="string"?p.epoch:"0",combinedCoverage:p?.owner==="v3"&&g?g.coverage:void 0,combinedExcludedProjections:p?.owner==="v3"&&g?[...g.excludedProjections]:[]}}}function i1(e){const t=Number(e?.status);return Number.isFinite(t)&&t>0?Math.floor(t):0}async function Qn(e){try{const t=await e,r=await t.text().catch(()=>"");let n={};if(r)try{n=JSON.parse(r)}catch{n={error:!t.ok&&t.statusText?`${t.status} ${t.statusText}`:r.slice(0,400)}}else!t.ok&&t.statusText&&(n={error:`${t.status} ${t.statusText}`});const s=t.headers.get("retry-after");let i;if(s){const l=Number.parseInt(s,10);if(Number.isFinite(l)&&l>0)i=l*1e3;else{const c=Date.parse(s);if(Number.isFinite(c)){const d=c-Date.now();d>0&&(i=d)}}}return{ok:t.ok,status:t.status,data:n,retryAfterMs:i}}catch(t){const n=String(t?.name||"").trim()==="AbortError"?{error:"Workspace sync pull request timed out."}:{};return{ok:!1,status:i1(t),data:n}}}function Ds(e,t,r){const n=typeof AbortController=="function"?new AbortController:null,s=n?globalThis.setTimeout(()=>n.abort(),Math.max(1,Math.floor(r))):null;return fetch(e,{...t,...n?{signal:n.signal}:{}}).finally(()=>{s!==null&&globalThis.clearTimeout(s)})}async function c1(e){return Qn(fetch(e("/api/taskforce/sync/user-settings"),{method:"GET",credentials:"include"}))}async function l1(e,t){return Qn(fetch(e("/api/taskforce/sync/user-settings"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(t)}))}async function d1(e,t){return Qn(fetch(e("/api/taskforce/sync/workspace/handshake"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:t})}))}async function u1(e,t){return Qn(fetch(e("/api/taskforce/sync/workspace/provision"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(t)}))}async function p1(e,t){const r=new URLSearchParams({limit:String(t.limit),workspaceId:t.workspaceId});if(t.cursor&&r.set("cursor",t.cursor),t.repairMode===!0&&r.set("repair","1"),t.contentMode==="manifest"&&r.set("content","manifest"),t.excludeInitiatives===!0&&r.set("excludeInitiatives","1"),t.excludedProjections?.length){r.set("excludeProjections",t.excludedProjections.join(","));const i=Iw(t.excludedProjections);i&&(r.set("coverageProfileId",i.coverageProfileId),r.set("coverageVersion",String(i.coverageVersion)),r.set("coverageDigest",i.coverageDigest))}const n=e("/api/taskforce/sync/workspace/pull"),s=n.includes("?")?"&":"?";return Qn(Ds(`${n}${s}${r.toString()}`,{method:"GET",credentials:"include"},Ao))}async function WC(e,t){const r=new URLSearchParams({workspaceId:t.workspaceId,limit:String(t.limit||100)});t.cursor&&r.set("cursor",t.cursor),t.repairCursor&&r.set("repairCursor",t.repairCursor);const n=e("/api/taskforce/sync/v3/workspace/feed"),s=n.includes("?")?"&":"?";return Qn(Ds(`${n}${s}${r.toString()}`,{method:"GET",credentials:"include"},Ao))}async function $C(e,t){const r=t.coverage||Aa,n=new URLSearchParams({workspaceId:t.workspaceId,limit:String(t.limit||100),coverageProfileId:r.coverageProfileId,coverageVersion:String(r.coverageVersion),coverageDigest:r.coverageDigest});t.cursor&&n.set("cursor",t.cursor),t.repairCursor&&n.set("repairCursor",t.repairCursor),t.forceRepair===!0&&n.set("forceRepair","1");const s=e("/api/taskforce/sync/v3/workspace/feed"),i=s.includes("?")?"&":"?",l=t.forceRepair===!0||t.repairCursor?xw:Ao;return Qn(Ds(`${s}${i}${n.toString()}`,{method:"GET",credentials:"include"},l))}async function FC(e){const t=new URLSearchParams({workspaceId:e});return Qn(Ds(`/api/taskforce/sync/v3/local/feed?${t.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},Ao))}async function UC(e,t,r){return Qn(Ds("/api/taskforce/sync/v3/local/feed",{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e},credentials:"include",body:JSON.stringify({workspaceId:e,...t,...iy(e,r)})},Ao))}async function zC(e,t=Aa){const r=new URLSearchParams({workspaceId:e,coverageProfileId:t.coverageProfileId,coverageVersion:String(t.coverageVersion),coverageDigest:t.coverageDigest});return Qn(Ds(`/api/taskforce/sync/v3/local/feed?${r.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},Ao))}async function HC(e,t,r=Aa,n){return Qn(Ds("/api/taskforce/sync/v3/local/feed",{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e},credentials:"include",body:JSON.stringify({workspaceId:e,...t,...r,...iy(e,n)})},Ao))}async function VC(e){const t=new URLSearchParams({workspaceId:e});return Qn(Ds(`/api/taskforce/sync/v3/local/task-comment-audit?${t.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},Ao))}async function GC(e,t){const r=new URLSearchParams({workspaceId:t.workspaceId,limit:String(t.limit||50)});t.cursor&&r.set("cursor",t.cursor);const n=e("/api/taskforce/sync/v3/workspace/task-comment-audit"),s=n.includes("?")?"&":"?";return Qn(Ds(`${n}${s}${r.toString()}`,{method:"GET",credentials:"include"},Ao))}async function KC(e,t,r){return Qn(Ds("/api/taskforce/sync/v3/local/task-comment-audit",{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e},credentials:"include",body:JSON.stringify({workspaceId:e,page:t,...iy(e,r)})},Ao))}async function f1(e){return Qn(Ds("/api/taskforce/sync/v3/local/coordinator/recovery/authoritative-repair-complete",{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e.workspaceId},credentials:"include",body:JSON.stringify(e)},Ao))}async function qC(e,t){const r=new URLSearchParams({workspaceId:t.workspaceId,limit:String(t.limit||100)});t.cursor&&r.set("cursor",t.cursor);const n=e("/api/taskforce/sync/workspace/initiative-repair"),s=n.includes("?")?"&":"?";return Qn(Ds(`${n}${s}${r.toString()}`,{method:"GET",credentials:"include"},xw))}async function YC(e,t){const r=t.coverage||Aa,n=new URLSearchParams({workspaceId:t.workspaceId,limit:String(t.limit||100),coverageProfileId:r.coverageProfileId,coverageVersion:String(r.coverageVersion),coverageDigest:r.coverageDigest});t.cursor&&n.set("cursor",t.cursor);const s=e("/api/taskforce/sync/workspace/combined-repair"),i=s.includes("?")?"&":"?";return Qn(Ds(`${s}${i}${n.toString()}`,{method:"GET",credentials:"include"},xw))}async function ZC(e){const t=new URLSearchParams({workspaceId:e});return Qn(Ds(`/api/taskforce/sync/workspace/content-manifest?${t.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},Ao))}async function m1(e,t){return Qn(Ds(e("/api/taskforce/sync/workspace/content"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(t)},Ao))}async function JC(e,t={}){const r=e.changes.filter(j=>j.op==="upsert").map(j=>String(j.task?.id||"").trim()).filter(Boolean),n=e.changes.filter(j=>j.op==="delete").map(j=>String(j.taskId||"").trim()).filter(Boolean),s=new Set(r),i=e.changes.filter(j=>j.op==="initiative-upsert").map(j=>String(j.initiative?.id||"").trim()).filter(Boolean),l=e.changes.filter(j=>j.op==="workstream-upsert").map(j=>String(j.workstream?.id||"").trim()).filter(Boolean);let c=[],d=[],f=[],p=new Set,g=new Set,h=new Set,y=!1,k=[],w=new Set,S=new Set,b="v2",v="v2",T="0",R=null,P=[];if(e.changes.length>0){const j=await o1(e.workspaceId,[...r,...n],i,l,t.readOwnership);if(!j.ok)return{ok:!1,status:j.status,data:j.data,retryAfterMs:j.retryAfterMs};p=new Set(j.data.activeCreateTaskIds),g=new Set(j.data.activeDeleteTaskIds),h=new Set(j.data.activeTaskRelationshipIds),y=j.data.taxonomyProtected,k=j.data.activeInitiativeIds,w=new Set(j.data.protectedInitiativeIds),S=new Set(j.data.protectedWorkstreamIds),b=j.data.initiativeProjectionOwner,v=j.data.combinedProjectionOwner,T=j.data.combinedProjectionEpoch,R=j.data.combinedCoverage||null,P=j.data.combinedExcludedProjections||[],c=j.data.activeMetadataTaskIds.filter(x=>s.has(x)&&!p.has(x)),d=j.data.activeLifecycleTaskIds.filter(x=>s.has(x)&&!p.has(x)),f=j.data.activeReopenTaskIds.filter(x=>s.has(x)&&!p.has(x))}const N=e.changes.filter(j=>j.op==="upsert"?!p.has(String(j.task?.id||"").trim()):j.op==="delete"?!g.has(String(j.taskId||"").trim()):j.op==="task-relationship-upsert"||j.op==="task-relationship-delete"?!h.has(String(j.relationship?.id||"").trim()):j.op==="taxonomy-upsert"?!y:j.op==="initiative-upsert"?b!=="v3"&&!w.has(String(j.initiative?.id||"").trim()):j.op==="workstream-upsert"?!S.has(String(j.workstream?.id||"").trim()):!0),I=a1(N,new Set(P)).changes,$=v==="v3"?e.changes.length-I.length:0;return{ok:!0,status:200,data:{changes:I,ownership:{activeV3TaskMetadataIds:c,activeV3TaskLifecycleIds:d,activeV3TaskReopenAssigneeIds:f,activeV3InitiativeIds:k,initiativeProjectionOwner:b,combinedProjectionOwner:v,combinedProjectionEpoch:T,combinedCoverage:R,combinedExcludedProjections:P,combinedV3SuppressedChangeCount:$}}}}async function g1(e,t){const r=await JC({workspaceId:t.workspaceId,changes:t.changes});if(!r.ok)return r;const{changes:n,ownership:s}=r.data;return n.length===0?{ok:!0,status:204,data:{success:!0,skipped:!0}}:Qn(fetch(e("/api/taskforce/sync/workspace/push"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({...t,changes:n,...s.activeV3TaskMetadataIds.length>0?{activeV3TaskMetadataIds:s.activeV3TaskMetadataIds}:{},...s.activeV3TaskLifecycleIds.length>0?{activeV3TaskLifecycleIds:s.activeV3TaskLifecycleIds}:{},...s.activeV3TaskReopenAssigneeIds.length>0?{activeV3TaskReopenAssigneeIds:s.activeV3TaskReopenAssigneeIds}:{},...s.activeV3InitiativeIds.length>0?{activeV3InitiativeIds:s.activeV3InitiativeIds}:{},...s.initiativeProjectionOwner==="v3"?{v3InitiativeProjectionOwned:!0}:{},...s.combinedCoverage?{combinedCoverage:s.combinedCoverage,excludedProjections:s.combinedExcludedProjections||[]}:{},...t.repairMode===!0?{repair:!0}:{}})}))}async function XC(e){const t=new URLSearchParams({workspaceId:e});return Qn(Ds(`/api/taskforce/sync/v3/local/metadata-ownership?${t.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},Ao))}async function QC(e,t,r){const n=Nh(r?.excludedProjections||[]),s=n.length?Iw(n):null,i=JSON.stringify({workspaceId:e,changes:t,workspaceMembers:Array.isArray(r?.workspaceMembers)?r.workspaceMembers:void 0,...r?.repairMode===!0?{repair:!0}:{},excludedProjections:n,...s?{combinedCoverage:s}:{},contentPullObligations:r?.contentPullObligations,contentPullResolutionClaims:r?.contentPullResolutionClaims,...iy(e,r),bootstrapSnapshot:r?.bootstrapSnapshot?{currentAnnotatedAttachmentSessionIds:Array.isArray(r.bootstrapSnapshot.currentAnnotatedAttachmentSessionIds)?r.bootstrapSnapshot.currentAnnotatedAttachmentSessionIds:[]}:void 0}),l="/api/taskforce/sync/workspace/apply-local",c=[];try{const d=await fetch(l,{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e},credentials:"include",body:i});if(d.ok){const g=await d.json().catch(()=>({}));return{ok:!0,status:d.status,data:g,failures:c}}const f=await d.text().catch(()=>"");let p={};if(f)try{p=JSON.parse(f)}catch{p={error:f.slice(0,400)}}else d.statusText&&(p={error:`${d.status} ${d.statusText}`});return c.push(`${l}:${d.status}`),{ok:!1,status:d.status,data:p,failures:c}}catch{c.push(`${l}:network`)}return{ok:!1,status:0,data:{},failures:c}}function Gc(e){return`${e.kind}:${e.path}`}const Jb="WORKSPACE_SYNC_V3_APPLY_NOT_COMMITTED";function Rw(e){return{handshakeWorkspace:t=>d1(e,t),provisionWorkspace:t=>u1(e,t),pushWorkspaceChanges:({ownership:t,pushBoundary:r,...n})=>g1(e,n),pullWorkspaceChanges:t=>p1(e,t),pullWorkspaceContent:({previousCursor:t,independentCompletionIdentity:r,...n})=>m1(e,n),pullInitiativeFeed:t=>WC(e,t),pullInitiativeRepair:t=>qC(e,t),pullCombinedFeed:t=>$C(e,t),pullCombinedRepair:t=>YC(e,t),pullTaskCommentAudit:t=>GC(e,t),abandonTransferReceipts:()=>{},acknowledgeNonApplyingTransferReceipts:()=>{},buildV2ApplyCompletionGroup:()=>{},buildIndependentContentApplyCompletionGroup:()=>{},buildV2PushApplyCompletionGroup:()=>{},buildV3ApplyCompletionGroup:()=>{}}}const eI=1;function tI(e){if(!Array.isArray(e)||e.length===0||e.some(t=>typeof t!="string"||t.trim().length===0||t!==t.trim())||new Set(e).size!==e.length)throw new TypeError("A V2 push boundary requires nonempty, unique, trimmed batch operation identities.");return Object.freeze({version:eI,projection:"v2-push",batchOperationIdentities:Object.freeze([...e])})}function Eg(e){if(!e||typeof e!="object"||Array.isArray(e)||e.version!==eI||e.projection!=="v2-push"||!Array.isArray(e.batchOperationIdentities))throw new TypeError("The V2 push boundary is invalid.");return tI(e.batchOperationIdentities)}function uh(e){const t=e.filter(r=>r?.op==="upsert").map(r=>String(r.task?.id||"").trim()).filter(Boolean);return Array.from(new Set(t))}function rI(e,t){if(!Array.isArray(t)||t.some(i=>typeof i!="string"||i.trim().length===0||i!==i.trim())||new Set(t).size!==t.length)throw new TypeError("The expected V2 push task echo identities are invalid.");if(!e||typeof e!="object"||Array.isArray(e))throw new TypeError("The V2 push authoritative echo response is invalid.");const r=e;if(!Array.isArray(r.appliedTaskUpserts))throw new TypeError("The V2 push authoritative echo response is missing appliedTaskUpserts.");const n=r.appliedTaskUpserts.map(i=>{const l=i&&typeof i=="object"&&!Array.isArray(i)?i:null;if(!l||typeof l.archived!="boolean")return null;const c=l.task&&typeof l.task=="object"&&!Array.isArray(l.task)?l.task:null,d=String(c?.id||"").trim();return!c||!d?null:{archived:l.archived===!0,task:c,...l.durableRevision&&typeof l.durableRevision=="object"&&!Array.isArray(l.durableRevision)?{durableRevision:l.durableRevision}:{}}}).filter(i=>!!i),s=n.map(i=>String(i.task.id).trim());if(n.length!==r.appliedTaskUpserts.length||s.length!==t.length||new Set(s).size!==s.length||s.some((i,l)=>i!==t[l]))throw new TypeError("The V2 push authoritative task echo contract is incomplete or malformed.");return n}const bv="V1:AESGCM:",Pw="AES-GCM",h1=12;async function nI(e){const t=Buffer.from(e,"base64");if(t.length!==32)throw new Error("Encryption key must be exactly 32 bytes (256-bit).");return crypto.subtle.importKey("raw",t,{name:Pw},!1,["encrypt","decrypt"])}async function Xb(e,t){if(!e)return e;const r=crypto.getRandomValues(new Uint8Array(h1)),n=await nI(t),i=new TextEncoder().encode(e),l=await crypto.subtle.encrypt({name:Pw,iv:r},n,i),c=Buffer.from(l).toString("base64"),d=Buffer.from(r).toString("base64");return`${bv}${d}:${c}`}async function Qb(e,t){if(!e||!e.startsWith(bv))return e;const r=e.slice(bv.length),[n,s]=r.split(":");if(!n||!s)throw new Error("Malformed encrypted document payload.");const i=Buffer.from(n,"base64"),l=Buffer.from(s,"base64"),c=await nI(t);try{const d=await crypto.subtle.decrypt({name:Pw,iv:i},c,l);return new TextDecoder("utf-8").decode(d)}catch(d){throw new Error(`Failed to decrypt document: ${d.message}`)}}async function ph(e,t){t&&(e.op==="document-upsert"&&typeof e.content=="string"&&(e.content=await Qb(e.content,t)),e.op==="asset-upsert"&&typeof e.contentBase64=="string"&&(e.contentBase64=await Qb(e.contentBase64,t)))}async function jh(e,t){const r=e==="document"?new TextEncoder().encode(t):Uint8Array.from(atob(t),s=>s.charCodeAt(0)),n=await crypto.subtle.digest("SHA-256",r);return{sha256:Array.from(new Uint8Array(n),s=>s.toString(16).padStart(2,"0")).join(""),sizeBytes:r.byteLength}}function eS(e){return String(e||"").trim().toLowerCase()}function tS(e){return/^[a-f0-9]{64}$/.test(e)}function rS(e){return Number.isSafeInteger(e)&&e>=0}function y1(e,t){if(!t||!t.existsLocally||t.kind!==e.kind||t.path!==e.path||t.manifestVersion!==e.manifestVersion)return{shouldFetch:!0,reasons:["missing"]};const r=[],n=eS(e.sha256),s=eS(t.sha256);return!tS(n)||!tS(s)?r.push("unknown-hash"):n!==s&&r.push("hash-mismatch"),(!rS(e.sizeBytes)||!rS(t.sizeBytes)||e.sizeBytes!==t.sizeBytes)&&r.push("size-mismatch"),(!e.metadataFingerprint||!t.metadataFingerprint||e.metadataFingerprint!==t.metadataFingerprint)&&r.push("metadata-mismatch"),{shouldFetch:r.length>0,reasons:r}}const nS=1;var Al={};function Sa(e){return e&&typeof e=="object"?e:{}}const k1=3e4,v1=60*6e4;function w1(e,t=Date.now()){const r=Math.max(0,Math.floor(Number(e.attempts)||0));if(r===0)return!0;const n=Date.parse(String(e.updatedAt||""));if(!Number.isFinite(n))return!0;const s=Math.min(v1,k1*2**Math.min(r-1,7));return n+s<=t}function ii(e){const t=Number(e||0);return t===0||t===429||t>=500}function aS(e,t){const r=String(e.code||"").trim().toUpperCase(),n=String(e.error||"").trim();return r==="WORKSPACE_ID_ALREADY_EXISTS"||n.toLowerCase()==="workspace id already exists"?"This workspace is already linked to another cloud account. Sign in with the original account, ask the workspace owner to grant you access, or keep this workspace local-only.":n||`Workspace provisioning failed (${t})`}function b1(e,t){if(t!==400)return!1;const r=String(e.code||"").trim().toUpperCase(),n=String(e.error||"").trim().toLowerCase();return r==="WORKSPACE_ID_REQUIRED"&&n.includes("no cloud workspace is selected")}async function S1(e){if(!e.cloudAuthConfigured)return{success:!1,error:"Cloud auth endpoint is not configured."};if(e.runtimeMode!=="local")return{success:!1,error:"Workspace sync is only available in local runtime."};if(!e.isAuthenticated)return{success:!1,error:"Authentication required."};try{const t=e.remoteServices||Rw(e.resolveCloudAuthUrl);let r=await t.handshakeWorkspace(e.workspaceId);if(r.ok)return{success:!0,provisioned:!1};const n=Sa(r.data);if(r.status===401)return{success:!1,statusCode:401,transient:!1,error:String(n.error||"Authentication required for workspace sync.")};if(r.status===429)return{success:!1,statusCode:429,retryAfterMs:r.retryAfterMs,transient:!0,error:String(n.error||"Workspace sync rate limited. Please retry later.")};if(b1(n,r.status)){const s=await t.provisionWorkspace({workspaceId:e.workspaceId,name:e.workspaceName||e.workspaceId});if(!s.ok){const i=Sa(s.data);return{success:!1,statusCode:s.status,transient:ii(s.status),retryAfterMs:s.retryAfterMs,error:aS(i,s.status)}}if(r=await t.handshakeWorkspace(e.workspaceId),!r.ok){const i=Sa(r.data);return r.status===401?{success:!1,statusCode:401,transient:!1,error:String(i.error||"Authentication required for workspace sync.")}:r.status===429?{success:!1,statusCode:429,retryAfterMs:r.retryAfterMs,transient:!0,error:String(i.error||"Workspace sync rate limited. Please retry later.")}:{success:!1,statusCode:r.status,transient:ii(r.status),error:String(i.error||`Workspace sync handshake failed (${r.status})`)}}return{success:!0,provisioned:!0}}if(r.status===409&&n.code==="WORKSPACE_ID_MISMATCH"){if(e.allowProvisionOnMismatch===!1)return{success:!1,statusCode:409,transient:!1,error:String(n.error||"Selected cloud workspace could not be attached to this local workspace.")};const s=await t.provisionWorkspace({workspaceId:e.workspaceId,name:e.workspaceName||e.workspaceId});if(!s.ok){const i=Sa(s.data);return{success:!1,statusCode:s.status,error:aS(i,s.status)}}if(r=await t.handshakeWorkspace(e.workspaceId),!r.ok){const i=Sa(r.data);return r.status===401?{success:!1,statusCode:401,transient:!1,error:String(i.error||"Authentication required for workspace sync.")}:r.status===429?{success:!1,statusCode:429,retryAfterMs:r.retryAfterMs,transient:!0,error:String(i.error||"Workspace sync rate limited. Please retry later.")}:{success:!1,statusCode:r.status,transient:ii(r.status),error:String(i.error||`Workspace sync handshake failed (${r.status})`)}}return{success:!0,provisioned:!0}}return{success:!1,statusCode:r.status,transient:ii(r.status),error:String(n.error||`Workspace sync handshake failed (${r.status})`)}}catch{return{success:!1,statusCode:0,transient:!0,error:"Failed to validate workspace sync access."}}}function A1(e,t,r){if(!e)return;const n={};for(const i of t)n[i.op]=(n[i.op]||0)+1;const s=(i,l)=>i&&{...i,changeCount:l};return{...e,totalChanges:t.length,byOp:n,domains:{...e.domains,tasks:s(e.domains.tasks,(n.upsert||0)+(n.delete||0)),taskRelationships:s(e.domains.taskRelationships,(n["task-relationship-upsert"]||0)+(n["task-relationship-delete"]||0)),initiatives:s(e.domains.initiatives,n["initiative-upsert"]||0),workstreams:s(e.domains.workstreams,n["workstream-upsert"]||0),taxonomy:s(e.domains.taxonomy,n["taxonomy-upsert"]||0)},...r?.combinedV3SuppressedChangeCount?{combinedV3SuppressedChangeCount:r.combinedV3SuppressedChangeCount}:{}}}async function C1(e,t,r){const n=bn({contractVersion:1,workspaceId:e,repairMode:r,changes:t});try{const s=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(n));return Array.from(new Uint8Array(s)).map(i=>i.toString(16).padStart(2,"0")).join("")}catch{let s=2166136261;for(let l=0;l<n.length;l+=1)s^=n.charCodeAt(l),s=Math.imul(s,16777619);const i=(s>>>0).toString(16).padStart(8,"0");return`${e}:fallback:${i}`}}const I1=64,sS=4*1024*1024,_1=45*1024*1024,T1=64*1024;function oS(e){switch(e.op){case"upsert":return`${e.op}:${e.task.id}`;case"delete":return`${e.op}:${e.taskId}`;case"task-relationship-upsert":case"task-relationship-delete":return`${e.op}:${e.relationship.id}`;case"initiative-upsert":return`${e.op}:${e.initiative.id}`;case"workstream-upsert":return`${e.op}:${e.workstream.id}`;case"planning-identity-upsert":return`${e.op}:${e.identity.entityType}:${e.identity.entityId}`;case"taxonomy-upsert":return e.op;case"ai-profile-upsert":return`${e.op}:${e.profile.id}`;case"document-upsert":case"document-delete":return`${e.op}:${e.path}`;case"document-manifest":return`${e.op}:${e.manifest.path}`;case"asset-upsert":case"asset-delete":return`${e.op}:${e.path}`;case"asset-manifest":return`${e.op}:${e.manifest.path}`;case"document-review-session-upsert":return`${e.op}:${e.session.id}`;case"document-review-session-delete":return`${e.op}:${e.sessionId}`;case"document-review-comment-upsert":return`${e.op}:${e.comment.id}`;case"document-review-comment-delete":return`${e.op}:${e.commentId}`;case"annotated-attachment-session-upsert":return`${e.op}:${e.session.id}`;case"annotated-attachment-session-delete":return`${e.op}:${e.sessionId}`;case"taskforce-agent-upsert":return`${e.op}:${e.agent.id}`;case"agent-role-upsert":return`${e.op}:${e.role.id}`;case"taskforce-agent-skill-upsert":return`${e.op}:${e.skill.id}`;case"agent-conversation-upsert":return`${e.op}:${e.conversation.id}`;case"entity-event-upsert":return`${e.op}:${e.event.id}`;case"task-event-upsert":return`${e.op}:${e.event.id}`}}function x1(e,t){const r=new Map;for(const[s,i]of e.entries()){const l=oS(i),c=r.get(l)||[];c.push(s),r.set(l,c)}const n=new Map;return t.map(s=>{const i=oS(s),l=r.get(i)||[],c=n.get(i)||0,d=l[c];if(d===void 0)throw new Error(`Prepared V2 push change is not present in the frozen payload: ${i}.`);n.set(i,c+1);const f=e[d];return JSON.stringify(f)===JSON.stringify(s)?{sourceChangeIndex:d}:{sourceChangeIndex:d,preparedChange:s}})}function R1(e,t){const r=new Set;return t.batches.map(n=>n.map(s=>{const i=s.sourceChangeIndex;if(!Number.isSafeInteger(i)||i<0||i>=e.length||r.has(i))throw new Error("Persisted V2 push prepared plan contains an invalid source change index.");return r.add(i),s.preparedChange||e[i]}))}function aI(e){switch(e.op){case"taxonomy-upsert":case"ai-profile-upsert":case"initiative-upsert":case"taskforce-agent-upsert":case"taskforce-agent-skill-upsert":return 0;case"workstream-upsert":return 1;case"planning-identity-upsert":return 2;case"upsert":return 2;case"document-upsert":case"document-manifest":case"asset-upsert":case"asset-manifest":return 3;case"document-review-session-upsert":case"annotated-attachment-session-upsert":case"agent-conversation-upsert":case"task-relationship-upsert":return 4;case"document-review-comment-upsert":case"task-event-upsert":case"entity-event-upsert":return 5;case"document-review-comment-delete":case"annotated-attachment-session-delete":case"task-relationship-delete":return 6;case"document-review-session-delete":case"document-delete":case"asset-delete":return 7;case"delete":return 8;default:return 4}}function P1(e){return e.op==="document-upsert"||e.op==="document-manifest"||e.op==="asset-upsert"||e.op==="asset-manifest"||e.op==="document-delete"||e.op==="asset-delete"}function iS(e,t){return T1+new TextEncoder().encode(JSON.stringify({workspaceId:e.workspaceId,idempotencyKey:"0".repeat(64),changes:t,repairMode:e.repairMode===!0,repair:e.repairMode===!0})).byteLength}function E1(e,t,r){const n=t.map((l,c)=>({plain:l,safe:r[c],phase:aI(l),preparedIndex:c})).sort((l,c)=>l.phase-c.phase||l.preparedIndex-c.preparedIndex);if(n.length===0)return{batches:[[]],oversizedChangeIndex:null};const s=[];let i=[];for(const l of n){const c=iS(e,[l.safe]);if(c>_1)return{batches:[],oversizedChangeIndex:l.preparedIndex};const d=i.length>0&&i[0].phase!==l.phase,f=[...i,l],p=i.length>0&&iS(e,f.map(g=>g.safe))>sS;(d||i.length>=I1||p)&&(s.push(i),i=[]),i.push(l),c>sS&&(s.push(i),i=[])}return i.length>0&&s.push(i),{batches:s,oversizedChangeIndex:null}}async function N1(e){const t=e.remoteServices||Rw(e.resolveCloudAuthUrl);let r={activeV3TaskMetadataIds:[],activeV3TaskLifecycleIds:[],activeV3TaskReopenAssigneeIds:[],activeV3InitiativeIds:[],initiativeProjectionOwner:"v2",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0",combinedV3SuppressedChangeCount:0},n,s=e.preparedPlan||null,i=null;if(s){if(s.contractVersion!==nS)throw new Error("Persisted V2 push prepared plan version is unsupported.");i=R1(e.payload.changes,s),n=i.flat(),r=s.ownership}else n=e.payload.changes;if(!s&&n.length>0){const x=await JC({workspaceId:e.workspaceId,changes:n},{readOwnership:e.localServices?.readPushOwnership});if(!x.ok){const V=Sa(x.data);return{success:!1,status:x.status,error:typeof V.error=="string"?V.error:"Local workspace sync ownership could not be verified.",code:typeof V.code=="string"?V.code:void 0,retryAfterMs:x.retryAfterMs,transient:ii(x.status),requestMs:0,changeCount:e.payload.changes.length,deleteCount:e.payload.deleteTaskIds.size,currentTaskIds:e.payload.currentTaskIds,currentTaskWatermarks:e.payload.currentTaskWatermarks??new Map,currentTaskChangeKeys:e.payload.currentTaskChangeKeys??new Map,currentTaskRelationshipChangeKeys:e.payload.currentTaskRelationshipChangeKeys??new Map,currentTaxonomyChangeKey:e.payload.currentTaxonomyChangeKey??"",deleteTaskIds:e.payload.deleteTaskIds,currentInitiativeIds:e.payload.currentInitiativeIds,currentInitiativeWatermarks:e.payload.currentInitiativeWatermarks,currentWorkstreamIds:e.payload.currentWorkstreamIds,currentWorkstreamWatermarks:e.payload.currentWorkstreamWatermarks,currentAiProfileIds:e.payload.currentAiProfileIds,currentAiProfileWatermarks:e.payload.currentAiProfileWatermarks,currentAiProfileChangeKeys:e.payload.currentAiProfileChangeKeys??new Map,currentDocumentPaths:e.payload.currentDocumentPaths,deleteDocumentPaths:e.payload.deleteDocumentPaths,currentDocumentWatermarks:e.payload.currentDocumentWatermarks,currentAssetPaths:e.payload.currentAssetPaths,deleteAssetPaths:e.payload.deleteAssetPaths,currentAssetWatermarks:e.payload.currentAssetWatermarks,currentDocumentReviewSessionIds:e.payload.currentDocumentReviewSessionIds,deleteDocumentReviewSessionIds:e.payload.deleteDocumentReviewSessionIds,currentDocumentReviewSessionWatermarks:e.payload.currentDocumentReviewSessionWatermarks,currentDocumentReviewCommentIds:e.payload.currentDocumentReviewCommentIds,deleteDocumentReviewCommentIds:e.payload.deleteDocumentReviewCommentIds,currentDocumentReviewCommentWatermarks:e.payload.currentDocumentReviewCommentWatermarks,currentAnnotatedAttachmentSessionIds:e.payload.currentAnnotatedAttachmentSessionIds,deleteAnnotatedAttachmentSessionIds:e.payload.deleteAnnotatedAttachmentSessionIds,currentAnnotatedAttachmentSessionWatermarks:e.payload.currentAnnotatedAttachmentSessionWatermarks,currentTaskforceAgentIds:e.payload.currentTaskforceAgentIds??new Set,currentTaskforceAgentWatermarks:e.payload.currentTaskforceAgentWatermarks??new Map,currentTaskforceAgentSkillIds:e.payload.currentTaskforceAgentSkillIds??new Set,currentTaskforceAgentSkillWatermarks:e.payload.currentTaskforceAgentSkillWatermarks??new Map,currentAgentConversationIds:e.payload.currentAgentConversationIds??new Set,currentAgentConversationWatermarks:e.payload.currentAgentConversationWatermarks??new Map,currentTaskEventWatermarks:e.payload.currentTaskEventWatermarks,pushedWatermarks:new Map,pushedTaskChangeKeys:new Map,emittedEventIds:[],appliedTaskUpserts:[]}}n=x.data.changes,r=x.data.ownership}const l=n.length,c=A1(e.payload.deltaDiagnostics,n,r),d=Nh(r.combinedExcludedProjections||[]),f=e.payload.deleteTaskIds.size;let p=0;if(l===0&&e.repairMode!==!0&&(r?.combinedProjectionOwner==="v3"||!!e.payload.deltaDiagnostics&&e.payload.deltaDiagnostics?.baselineResetReason!=="missing-baseline"))return{success:!0,syncedAt:new Date().toISOString(),requestMs:0,changeCount:0,effectiveDeltaDiagnostics:c,effectiveV2ExcludedProjections:d,deleteCount:f,currentTaskIds:e.payload.currentTaskIds,currentTaskWatermarks:e.payload.currentTaskWatermarks??new Map,currentTaskChangeKeys:e.payload.currentTaskChangeKeys??new Map,currentTaskRelationshipChangeKeys:e.payload.currentTaskRelationshipChangeKeys??new Map,currentTaxonomyChangeKey:e.payload.currentTaxonomyChangeKey??"",deleteTaskIds:e.payload.deleteTaskIds,currentInitiativeIds:e.payload.currentInitiativeIds,currentInitiativeWatermarks:e.payload.currentInitiativeWatermarks,currentWorkstreamIds:e.payload.currentWorkstreamIds,currentWorkstreamWatermarks:e.payload.currentWorkstreamWatermarks,currentAiProfileIds:e.payload.currentAiProfileIds,currentAiProfileWatermarks:e.payload.currentAiProfileWatermarks,currentAiProfileChangeKeys:e.payload.currentAiProfileChangeKeys??new Map,currentDocumentPaths:e.payload.currentDocumentPaths,deleteDocumentPaths:e.payload.deleteDocumentPaths,currentDocumentWatermarks:e.payload.currentDocumentWatermarks,currentAssetPaths:e.payload.currentAssetPaths,deleteAssetPaths:e.payload.deleteAssetPaths,currentAssetWatermarks:e.payload.currentAssetWatermarks,currentDocumentReviewSessionIds:e.payload.currentDocumentReviewSessionIds,deleteDocumentReviewSessionIds:e.payload.deleteDocumentReviewSessionIds,currentDocumentReviewSessionWatermarks:e.payload.currentDocumentReviewSessionWatermarks,currentDocumentReviewCommentIds:e.payload.currentDocumentReviewCommentIds,deleteDocumentReviewCommentIds:e.payload.deleteDocumentReviewCommentIds,currentDocumentReviewCommentWatermarks:e.payload.currentDocumentReviewCommentWatermarks,currentAnnotatedAttachmentSessionIds:e.payload.currentAnnotatedAttachmentSessionIds,deleteAnnotatedAttachmentSessionIds:e.payload.deleteAnnotatedAttachmentSessionIds,currentAnnotatedAttachmentSessionWatermarks:e.payload.currentAnnotatedAttachmentSessionWatermarks,currentTaskforceAgentIds:e.payload.currentTaskforceAgentIds??new Set,currentTaskforceAgentWatermarks:e.payload.currentTaskforceAgentWatermarks??new Map,currentTaskforceAgentSkillIds:e.payload.currentTaskforceAgentSkillIds??new Set,currentTaskforceAgentSkillWatermarks:e.payload.currentTaskforceAgentSkillWatermarks??new Map,currentAgentConversationIds:e.payload.currentAgentConversationIds??new Set,currentAgentConversationWatermarks:e.payload.currentAgentConversationWatermarks??new Map,currentTaskEventWatermarks:e.payload.currentTaskEventWatermarks,pushedWatermarks:new Map,pushedTaskChangeKeys:new Map,emittedEventIds:[],appliedTaskUpserts:[]};let h=n;if(typeof process<"u"&&Al?.TASKFORCE_SYNC_KEY){const x=Al.TASKFORCE_SYNC_KEY,V=[];for(const U of h)U.op==="document-upsert"&&typeof U.content=="string"?V.push({...U,content:await Xb(U.content,x)}):U.op==="asset-upsert"&&typeof U.contentBase64=="string"&&U.contentBase64.length>0?V.push({...U,contentBase64:await Xb(U.contentBase64,x)}):V.push(U);h=V}let y=E1(e,n,h);if(i){let x=0;y={oversizedChangeIndex:null,batches:i.map(V=>V.map(U=>{const ne={plain:U,safe:h[x],phase:aI(U),preparedIndex:x};return x+=1,ne}))}}if(y.oversizedChangeIndex!==null){const x=n[y.oversizedChangeIndex];return{success:!1,status:413,error:`Workspace sync change ${y.oversizedChangeIndex+1} (${x.op}) exceeds the single-change transfer limit.`,transient:!1,requestMs:p,changeCount:l,deleteCount:f,currentTaskIds:e.payload.currentTaskIds,currentTaskWatermarks:e.payload.currentTaskWatermarks??new Map,currentTaskChangeKeys:e.payload.currentTaskChangeKeys??new Map,currentTaskRelationshipChangeKeys:e.payload.currentTaskRelationshipChangeKeys??new Map,currentTaxonomyChangeKey:e.payload.currentTaxonomyChangeKey??"",deleteTaskIds:e.payload.deleteTaskIds,currentInitiativeIds:e.payload.currentInitiativeIds,currentInitiativeWatermarks:e.payload.currentInitiativeWatermarks,currentWorkstreamIds:e.payload.currentWorkstreamIds,currentWorkstreamWatermarks:e.payload.currentWorkstreamWatermarks,currentAiProfileIds:e.payload.currentAiProfileIds,currentAiProfileWatermarks:e.payload.currentAiProfileWatermarks,currentAiProfileChangeKeys:e.payload.currentAiProfileChangeKeys??new Map,currentDocumentPaths:e.payload.currentDocumentPaths,deleteDocumentPaths:e.payload.deleteDocumentPaths,currentDocumentWatermarks:e.payload.currentDocumentWatermarks,currentAssetPaths:e.payload.currentAssetPaths,deleteAssetPaths:e.payload.deleteAssetPaths,currentAssetWatermarks:e.payload.currentAssetWatermarks,currentDocumentReviewSessionIds:e.payload.currentDocumentReviewSessionIds,deleteDocumentReviewSessionIds:e.payload.deleteDocumentReviewSessionIds,currentDocumentReviewSessionWatermarks:e.payload.currentDocumentReviewSessionWatermarks,currentDocumentReviewCommentIds:e.payload.currentDocumentReviewCommentIds,deleteDocumentReviewCommentIds:e.payload.deleteDocumentReviewCommentIds,currentDocumentReviewCommentWatermarks:e.payload.currentDocumentReviewCommentWatermarks,currentAnnotatedAttachmentSessionIds:e.payload.currentAnnotatedAttachmentSessionIds,deleteAnnotatedAttachmentSessionIds:e.payload.deleteAnnotatedAttachmentSessionIds,currentAnnotatedAttachmentSessionWatermarks:e.payload.currentAnnotatedAttachmentSessionWatermarks,currentTaskforceAgentIds:e.payload.currentTaskforceAgentIds??new Set,currentTaskforceAgentWatermarks:e.payload.currentTaskforceAgentWatermarks??new Map,currentTaskforceAgentSkillIds:e.payload.currentTaskforceAgentSkillIds??new Set,currentTaskforceAgentSkillWatermarks:e.payload.currentTaskforceAgentSkillWatermarks??new Map,currentAgentConversationIds:e.payload.currentAgentConversationIds??new Set,currentAgentConversationWatermarks:e.payload.currentAgentConversationWatermarks??new Map,currentTaskEventWatermarks:e.payload.currentTaskEventWatermarks,pushedWatermarks:new Map,pushedTaskChangeKeys:new Map,emittedEventIds:[],appliedTaskUpserts:[]}}const k=new Set,w=[];let S;if(s){if(S=[...s.batchOperationIdentities],S.length!==y.batches.length||new Set(S).size!==S.length||S.some(x=>!/^[a-f0-9]{64}$/.test(x)))throw new Error("Persisted V2 push prepared plan fingerprint does not match its frozen batches.")}else{S=await Promise.all(y.batches.map(V=>C1(e.workspaceId,V.map(U=>U.plain),e.repairMode===!0)));const x=x1(e.payload.changes,n);s={contractVersion:nS,ownership:r,batches:y.batches.map(V=>V.map(U=>x[U.preparedIndex])),batchOperationIdentities:[...S]}}const b=tI(S),v=e.acknowledgedNonApplyingBatchOperationIdentities||[];if(new Set(v).size!==v.length)throw new Error("Persisted V2 push batch acknowledgement state does not match the frozen push plan.");for(const x of v){const V=S.indexOf(x);if(V>=0&&uh(y.batches[V].map(U=>U.plain)).length>0)throw new Error("Persisted V2 push batch acknowledgement state does not match the frozen push plan.")}const T=v.filter(x=>{const V=S.indexOf(x);return V>=0&&uh(y.batches[V].map(U=>U.plain)).length===0}),R=e.preparedPlan?[]:v.filter(x=>!T.includes(x));s&&!e.preparedPlan&&await e.onPreparedPlan?.({plan:s,acknowledgedOperationIdentities:T,replayedLegacyAcknowledgementIdentities:R});const P=new Set(T);if(e.preparedPlan&&P.size!==v.length)throw new Error("Persisted V2 push batch acknowledgement state does not match the frozen push plan.");let N=0,I=0;const $=[],j=async x=>{if($.length===0)return;const V=$.splice(0);await t.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:V,errorCode:x})};try{for(const[x,V]of y.batches.entries()){const U=V.map(Ye=>Ye.plain),ne=V.map(Ye=>Ye.safe),L=uh(U),ie=S[x];if(P.has(ie)){N+=1,I+=U.length;continue}$.length>0&&await t.retainTransferReceipts?.({workspaceId:e.workspaceId,receipts:$});const J=async()=>{const Ye=Date.now(),he=await t.pushWorkspaceChanges({workspaceId:e.workspaceId,idempotencyKey:ie,pushBoundary:b,changes:ne,ownership:r,repairMode:e.repairMode===!0});return p+=Date.now()-Ye,he};let ue=await J(),oe=Sa(ue.data),ge=ue.status===409&&oe.code==="SYNC_PUSH_IN_PROGRESS";if(!ue.ok&&!ge&&(ue.status===403||ue.status===409)&&(await e.ensureCloudWorkspaceReadyForSync()).success&&(ue=await J(),oe=Sa(ue.data),ge=ue.status===409&&oe.code==="SYNC_PUSH_IN_PROGRESS"),ue.transferReceipt&&$.push(ue.transferReceipt),!ue.ok){await j("WORKSPACE_SYNC_V2_PUSH_ATTEMPT_FAILED");const Ye=Sa(ue.data),he=Array.from(new Set(U.map(B=>B.op))),ce=U.filter(P1).length;return{success:!1,status:ue.status,error:typeof Ye.error=="string"?Ye.error:void 0,code:typeof Ye.code=="string"?Ye.code:void 0,batchProgress:{totalBatches:y.batches.length,completedBatches:N,completedChanges:I,failedBatchIndex:x,failedChangeCount:U.length,failedOperations:he,failureDomain:ce===U.length?"content":ce===0?"metadata":"mixed"},retryAfterMs:ue.retryAfterMs,transient:ge||ii(ue.status),requestMs:p,changeCount:l,deleteCount:f,currentTaskIds:e.payload.currentTaskIds,currentTaskWatermarks:e.payload.currentTaskWatermarks??new Map,currentTaskChangeKeys:e.payload.currentTaskChangeKeys??new Map,currentTaskRelationshipChangeKeys:e.payload.currentTaskRelationshipChangeKeys??new Map,currentTaxonomyChangeKey:e.payload.currentTaxonomyChangeKey??"",deleteTaskIds:e.payload.deleteTaskIds,currentInitiativeIds:e.payload.currentInitiativeIds,currentInitiativeWatermarks:e.payload.currentInitiativeWatermarks,currentWorkstreamIds:e.payload.currentWorkstreamIds,currentWorkstreamWatermarks:e.payload.currentWorkstreamWatermarks,currentAiProfileIds:e.payload.currentAiProfileIds,currentAiProfileWatermarks:e.payload.currentAiProfileWatermarks,currentAiProfileChangeKeys:e.payload.currentAiProfileChangeKeys??new Map,currentDocumentPaths:e.payload.currentDocumentPaths,deleteDocumentPaths:e.payload.deleteDocumentPaths,currentDocumentWatermarks:e.payload.currentDocumentWatermarks,currentAssetPaths:e.payload.currentAssetPaths,deleteAssetPaths:e.payload.deleteAssetPaths,currentAssetWatermarks:e.payload.currentAssetWatermarks,currentDocumentReviewSessionIds:e.payload.currentDocumentReviewSessionIds,deleteDocumentReviewSessionIds:e.payload.deleteDocumentReviewSessionIds,currentDocumentReviewSessionWatermarks:e.payload.currentDocumentReviewSessionWatermarks,currentDocumentReviewCommentIds:e.payload.currentDocumentReviewCommentIds,deleteDocumentReviewCommentIds:e.payload.deleteDocumentReviewCommentIds,currentDocumentReviewCommentWatermarks:e.payload.currentDocumentReviewCommentWatermarks,currentAnnotatedAttachmentSessionIds:e.payload.currentAnnotatedAttachmentSessionIds,deleteAnnotatedAttachmentSessionIds:e.payload.deleteAnnotatedAttachmentSessionIds,currentAnnotatedAttachmentSessionWatermarks:e.payload.currentAnnotatedAttachmentSessionWatermarks,currentTaskforceAgentIds:e.payload.currentTaskforceAgentIds??new Set,currentTaskforceAgentWatermarks:e.payload.currentTaskforceAgentWatermarks??new Map,currentTaskforceAgentSkillIds:e.payload.currentTaskforceAgentSkillIds??new Set,currentTaskforceAgentSkillWatermarks:e.payload.currentTaskforceAgentSkillWatermarks??new Map,currentAgentConversationIds:e.payload.currentAgentConversationIds??new Set,currentAgentConversationWatermarks:e.payload.currentAgentConversationWatermarks??new Map,currentTaskEventWatermarks:e.payload.currentTaskEventWatermarks,pushedWatermarks:new Map,pushedTaskChangeKeys:new Map,emittedEventIds:[],appliedTaskUpserts:[]}}const je=Sa(ue.data);if(Array.isArray(je.emittedEventIds))for(const Ye of je.emittedEventIds.map(he=>String(he||"").trim()).filter(Boolean))k.add(Ye);const qe=rI(je,L);if(w.push(...qe),ue.transferReceipt&&qe.length===0){await t.acknowledgeNonApplyingTransferReceipts({workspaceId:e.workspaceId,receipts:[ue.transferReceipt]});const Ye=$.indexOf(ue.transferReceipt);Ye>=0&&$.splice(Ye,1),P.add(ie),await e.onNonApplyingBatchAcknowledged?.({operationIdentity:ie,acknowledgedOperationIdentities:S.filter(he=>P.has(he))})}N+=1,I+=U.length}}catch(x){throw await j("WORKSPACE_SYNC_V2_PUSH_ATTEMPT_FAILED"),x}return{success:!0,syncedAt:new Date().toISOString(),requestMs:p,changeCount:l,batchProgress:{totalBatches:y.batches.length,completedBatches:N,completedChanges:I,failedBatchIndex:null,failedChangeCount:0,failedOperations:[],failureDomain:null},effectiveDeltaDiagnostics:c,effectiveV2ExcludedProjections:d,deleteCount:f,currentTaskIds:e.payload.currentTaskIds,currentTaskWatermarks:e.payload.currentTaskWatermarks??new Map,currentTaskChangeKeys:e.payload.currentTaskChangeKeys??new Map,currentTaskRelationshipChangeKeys:e.payload.currentTaskRelationshipChangeKeys??new Map,currentTaxonomyChangeKey:e.payload.currentTaxonomyChangeKey??"",deleteTaskIds:e.payload.deleteTaskIds,currentInitiativeIds:e.payload.currentInitiativeIds,currentInitiativeWatermarks:e.payload.currentInitiativeWatermarks,currentWorkstreamIds:e.payload.currentWorkstreamIds,currentWorkstreamWatermarks:e.payload.currentWorkstreamWatermarks,currentAiProfileIds:e.payload.currentAiProfileIds,currentAiProfileWatermarks:e.payload.currentAiProfileWatermarks,currentAiProfileChangeKeys:e.payload.currentAiProfileChangeKeys??new Map,currentDocumentPaths:e.payload.currentDocumentPaths,deleteDocumentPaths:e.payload.deleteDocumentPaths,currentDocumentWatermarks:e.payload.currentDocumentWatermarks,currentAssetPaths:e.payload.currentAssetPaths,deleteAssetPaths:e.payload.deleteAssetPaths,currentAssetWatermarks:e.payload.currentAssetWatermarks,currentDocumentReviewSessionIds:e.payload.currentDocumentReviewSessionIds,deleteDocumentReviewSessionIds:e.payload.deleteDocumentReviewSessionIds,currentDocumentReviewSessionWatermarks:e.payload.currentDocumentReviewSessionWatermarks,currentDocumentReviewCommentIds:e.payload.currentDocumentReviewCommentIds,deleteDocumentReviewCommentIds:e.payload.deleteDocumentReviewCommentIds,currentDocumentReviewCommentWatermarks:e.payload.currentDocumentReviewCommentWatermarks,currentAnnotatedAttachmentSessionIds:e.payload.currentAnnotatedAttachmentSessionIds,deleteAnnotatedAttachmentSessionIds:e.payload.deleteAnnotatedAttachmentSessionIds,currentAnnotatedAttachmentSessionWatermarks:e.payload.currentAnnotatedAttachmentSessionWatermarks,currentTaskforceAgentIds:e.payload.currentTaskforceAgentIds??new Set,currentTaskforceAgentWatermarks:e.payload.currentTaskforceAgentWatermarks??new Map,currentTaskforceAgentSkillIds:e.payload.currentTaskforceAgentSkillIds??new Set,currentTaskforceAgentSkillWatermarks:e.payload.currentTaskforceAgentSkillWatermarks??new Map,currentAgentConversationIds:e.payload.currentAgentConversationIds??new Set,currentAgentConversationWatermarks:e.payload.currentAgentConversationWatermarks??new Map,currentTaskEventWatermarks:e.payload.currentTaskEventWatermarks,pushedWatermarks:e.payload.pushedWatermarks,pushedTaskChangeKeys:e.payload.pushedTaskChangeKeys??new Map,emittedEventIds:Array.from(k),appliedTaskUpserts:w,pushBoundary:b,pushTransferReceipts:$}}async function j1(e){const t=e.remoteServices||Rw(e.resolveCloudAuthUrl);let r=[];const n=ue=>{ue.transferReceipt&&r.push(ue.transferReceipt)},s=async ue=>{if(r.length===0)return;const oe=r;await t.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:oe,errorCode:ue}),r=[]},i=e.localServices?.readContentManifest||ZC,l=e.localServices?.applyV2Batch||QC,c=e.localServices?.listContentPullObligations||OC,d=e.localServices?.recordContentPullObligationFailures||BC,f=async(ue,oe)=>{const ge=await d(e.workspaceId,ue,oe);if(!ge.ok)throw new Error(String(ge.data?.error||"Failed to persist content-pull retry state."))};let p=e.cursor,g=!0,h=0,y=0,k=0,w=0;const S=new Set;let b=!1,v=!1,T=!1,R=!1,P=!1,N=!1,I=!1,$=!1;const j=new Set,x=new Set,V=new Set;let U=null;const ne={manifestEntries:0,bodiesRequested:0,bodiesTransferred:0,contentBytesTransferred:0,contentBytesAvoided:0,obligationsAttempted:0,obligationsResolved:0,obligationsRemaining:0},L=Number.isFinite(Number(e.maxPages))?Math.max(1,Math.floor(Number(e.maxPages))):20;let ie=new Map;const J=new Set;try{{const ue=await c(e.workspaceId,100);if(!ue.ok)throw new Error(String(ue.data?.error||`Local content-pull obligation read failed (${ue.status}).`));const oe=Array.isArray(ue.data?.obligations)?ue.data.obligations:[];oe.forEach(je=>{J.add(Gc(je))});const ge=oe.filter(je=>w1(je));if(ne.obligationsAttempted=ge.length,ge.length>0){const je=await t.pullWorkspaceContent({workspaceId:e.workspaceId,requests:ge.map(({kind:qe,path:Ye})=>({kind:qe,path:Ye})),previousCursor:p});if(n(je),je.ok){const qe=je.data||{},Ye=Array.isArray(qe.changes)?qe.changes:[],he=Array.isArray(qe.contentMetadata)?qe.contentMetadata:[],ce=new Map(he.map(re=>[`${re.kind}:${re.path}`,re])),B=new Map(ge.map(re=>[Gc(re),re]));if(ce.size!==he.length||he.some(re=>!B.has(`${re.kind}:${re.path}`)))throw await f(ge.map(Gc),"Content response contained duplicate or unexpected authoritative metadata."),new Error("Workspace content obligation response contained invalid authoritative metadata.");const K=[],Ae=[];for(const re of Ye){if(re.op!=="document-upsert"&&re.op!=="asset-upsert")throw await f(ge.map(Gc),`Content response contained invalid operation ${re.op}.`),new Error(`Workspace content obligation returned invalid operation: ${re.op}.`);const F=re.op==="document-upsert"?"document":"asset",D=`${F}:${re.path}`;if(!B.has(D))throw await f(ge.map(Gc),`Content response contained unexpected body ${D}.`),new Error(`Workspace content obligation returned an unexpected body: ${D}.`);const z=ce.get(D);if(!z)throw await f([D],"Content response omitted authoritative metadata."),new Error(`Workspace content obligation omitted authoritative metadata: ${D}.`);if(K.includes(D))throw await f([D],"Content response contained a duplicate body."),new Error(`Workspace content obligation returned a duplicate body: ${D}.`);if(typeof process<"u"&&Al?.TASKFORCE_SYNC_KEY)try{await ph(re,Al.TASKFORCE_SYNC_KEY)}catch(ee){throw await f([D],String(ee?.message||"Content decryption failed.")),ee}const we=await jh(F,re.op==="document-upsert"?re.content:re.contentBase64);if(we.sha256!==String(z.sha256||"").toLowerCase()||we.sizeBytes!==Number(z.sizeBytes)||String(z.updatedAt||"")<String(B.get(D)?.sourceWatermark||"")||String(re.updatedAt||"")<String(B.get(D)?.sourceWatermark||""))throw await f([D],"Authoritative content response was stale or failed verification."),new Error(`Workspace content obligation verification failed: ${D}.`);K.push(D);const ke=B.get(D);Ae.push({kind:F,path:re.path,resolution:"exact-version",sourceWatermark:ke.sourceWatermark,metadataFingerprint:ke.metadataFingerprint})}if(Ye.length>0){const re=r.length>0?t.buildV2ApplyCompletionGroup({workspaceId:e.workspaceId,previousCursor:p,nextCursor:p,receipts:r}):void 0;if(r.length>0&&!re)throw new Error("Content-obligation receipts did not produce an apply completion group.");let F;try{F=await l(e.workspaceId,Ye,{repairMode:e.repairMode===!0,excludedProjections:e.excludedProjections,contentPullResolutionClaims:Ae,...re?{completionGroup:re}:{}})}catch(z){throw await f(K,String(z?.message||"Content obligation apply failed.")),z}if(!F.ok||Sa(F.data).success===!1)throw await f(K,String(Sa(F.data).error||"Workspace content obligation apply failed.")),new Error(String(Sa(F.data).error||"Workspace content obligation apply failed."));r=[],ne.obligationsResolved=K.length;const D=ge.map(Gc).filter(z=>!K.includes(z));D.length>0&&await f(D,"Authoritative content body remains unavailable.")}else{if(r.length>0){const re=t.buildV2ApplyCompletionGroup({workspaceId:e.workspaceId,previousCursor:p,nextCursor:p,receipts:r});if(!re)throw new Error("Unavailable content receipts did not produce an apply completion group.");const F=await l(e.workspaceId,[],{repairMode:e.repairMode===!0,excludedProjections:e.excludedProjections,completionGroup:re});if(!F.ok||Sa(F.data).success===!1)throw new Error(String(Sa(F.data).error||"Unavailable content receipt settlement failed."));r=[]}await f(ge.map(Gc),"Authoritative content body remains unavailable.")}}else await s("WORKSPACE_SYNC_CONTENT_OBLIGATION_RETRY"),await f(ge.map(Gc),String(Sa(je.data).error||`Content pull failed (${je.status}).`))}ne.obligationsRemaining=Math.max(0,oe.length-ne.obligationsResolved)}if(e.contentMode==="manifest"){const ue=await i(e.workspaceId);if(!ue.ok)throw new Error(`Local workspace content manifest failed (${ue.status||0}).`);const oe=Array.isArray(ue.data?.entries)?ue.data.entries:[];ie=new Map(oe.map(ge=>[`${ge.kind}:${ge.path}`,ge]))}for(;g&&h<L;){const ue=async()=>{const D=Date.now(),z=await t.pullWorkspaceChanges({workspaceId:e.workspaceId,cursor:p,limit:e.bootstrap?500:200,repairMode:e.repairMode===!0,contentMode:e.contentMode,excludeInitiatives:e.excludeInitiatives,excludedProjections:e.excludedProjections});return k+=Date.now()-D,z};let oe=await ue();if(n(oe),!oe.ok&&oe.status===403&&e.ensureCloudWorkspaceReadyForSync&&(await e.ensureCloudWorkspaceReadyForSync()).success&&(await s("WORKSPACE_SYNC_V2_PULL_RETRY"),oe=await ue(),n(oe)),!oe.ok){await s("WORKSPACE_SYNC_V2_PULL_REJECTED");const D=Sa(oe.data);return{success:!1,kind:"pull_http",status:oe.status,errorCode:typeof D.code=="string"?D.code:void 0,error:typeof D.error=="string"?D.error:void 0,retryAfterMs:oe.retryAfterMs,transient:ii(oe.status),cursor:p,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:w,pulledDeleteTaskIds:S,pulledActiveUpserts:b,pulledArchivedUpserts:v,pulledTaskEventUpserts:T,pulledPlanningUpserts:R,pulledTaskforceAgentUpserts:P,pulledTaskforceAgentSkillUpserts:I,pulledAgentConversationUpserts:$,documentDecryptFailures:Array.from(j),serverDiagnostics:null}}const ge=oe.data||{};if(!n1(ge.excludedProjections,e.excludedProjections))return await s("SYNC_V2_PROJECTION_EXCLUSIONS_MISMATCH"),{success:!1,kind:"pull_http",status:502,errorCode:"SYNC_V2_PROJECTION_EXCLUSIONS_MISMATCH",error:"Cloud pull did not attest the requested v2 projection exclusions.",transient:!1,cursor:p,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:w,pulledDeleteTaskIds:S,pulledActiveUpserts:b,pulledArchivedUpserts:v,pulledTaskEventUpserts:T,pulledPlanningUpserts:R,pulledTaskforceAgentUpserts:P,pulledTaskforceAgentSkillUpserts:I,pulledAgentConversationUpserts:$,documentDecryptFailures:Array.from(j),serverDiagnostics:null};let je=Array.isArray(ge?.changes)?ge.changes:[];const qe=new Map,Ye=[];if(e.contentMode==="manifest"){const D=[],z=[];for(const ke of je){if(ke.op!=="document-manifest"&&ke.op!=="asset-manifest"){z.push(ke);continue}const ee=ke.manifest;if(ne.manifestEntries+=1,!ee.existsLocally){Ye.push({manifest:ee,sourceWatermark:ee.updatedAt}),J.add(`${ee.kind}:${ee.path}`);continue}const Z=`${ee.kind}:${ee.path}`,H=y1(ee,ie.get(Z));H.shouldFetch?H.reasons.every(ae=>ae==="metadata-mismatch")?(z.push(ke),ne.contentBytesAvoided+=Math.max(0,ee.sizeBytes)):(D.push({kind:ee.kind,path:ee.path}),qe.set(Z,ee),ne.bodiesRequested+=1):ne.contentBytesAvoided+=Math.max(0,ee.sizeBytes)}const we=[...D];for(;we.length>0;){let ke=we.splice(0,100);for(;ke.length>0;){const ee=await t.pullWorkspaceContent({workspaceId:e.workspaceId,requests:ke,previousCursor:p});if(!ee.ok)throw n(ee),new Error(`Workspace content pull failed (${ee.status||0}).`);n(ee);const Z=ee.data||{},H=Array.isArray(Z.changes)?Z.changes:[],ae=Array.isArray(Z.missing)?Z.missing:[];if(ae.length>0){const Le="path"in ae[0]?ae[0].path:ae[0].assetId;throw new Error(`Workspace content changed or disappeared during reconciliation: ${ae[0].kind}:${Le}`)}z.push(...H);const Te=Array.isArray(Z.remaining)?Z.remaining:[];if(H.length===0&&Te.length>=ke.length)throw new Error("Workspace content pull made no progress.");ke=Te}}je=z}else{const D=[];for(const z of je){if(z.op!=="document-manifest"&&z.op!=="asset-manifest"){D.push(z);continue}Ye.push({manifest:z.manifest,sourceWatermark:z.manifest.updatedAt}),J.add(`${z.manifest.kind}:${z.manifest.path}`)}je=D}const he=ge?.diagnostics&&typeof ge.diagnostics=="object"?ge.diagnostics:null;U=he;const ce=Array.isArray(ge?.workspaceMembers),B=ce?ge.workspaceMembers:void 0;for(const D of je){if(D.op==="upsert"){D?.archived===!0||D?.task?.isArchived===!0?v=!0:b=!0;continue}if(D.op==="annotated-attachment-session-upsert"){const we=String(D?.session?.id||"").trim();we&&V.add(we);continue}if(D.op==="task-event-upsert"||D.op==="entity-event-upsert"){T=!0;continue}if(D.op==="initiative-upsert"||D.op==="workstream-upsert"){R=!0;continue}if(D.op==="taskforce-agent-upsert"){P=!0;continue}if(D.op==="agent-role-upsert"){N=!0;continue}if(D.op==="taskforce-agent-skill-upsert"){I=!0;continue}if(D.op==="agent-conversation-upsert"){$=!0;continue}if(D.op==="document-upsert"){if(typeof D.content=="string"&&typeof process<"u"&&Al?.TASKFORCE_SYNC_KEY)try{await ph(D,Al.TASKFORCE_SYNC_KEY)}catch{const we=String(D.path||"").trim();we&&j.add(we)}continue}if(D.op==="asset-upsert"){if(typeof D.contentBase64=="string"&&typeof process<"u"&&Al?.TASKFORCE_SYNC_KEY)try{await ph(D,Al.TASKFORCE_SYNC_KEY)}catch{const we=String(D.path||"").trim();we&&j.add(we)}continue}if(D.op!=="delete")continue;const z=String(D.taskId||"").trim();z&&S.add(z)}if(e.contentMode==="manifest"&&qe.size>0){const D=new Set;for(const z of je){if(z.op!=="document-upsert"&&z.op!=="asset-upsert")continue;const we=z.op==="document-upsert"?"document":"asset",ke=qe.get(`${we}:${z.path}`);if(!ke)continue;const ee=await jh(we,z.op==="document-upsert"?z.content:z.contentBase64);if(ke.sha256&&ee.sha256!==ke.sha256.toLowerCase()||ee.sizeBytes!==ke.sizeBytes)throw new Error(`Workspace content verification failed for ${we}:${z.path}.`);D.add(`${we}:${z.path}`),ne.bodiesTransferred+=1,ne.contentBytesTransferred+=ee.sizeBytes}if(D.size!==qe.size)throw new Error("Workspace content pull did not return every requested body.")}e.onPagePulled&&e.onPagePulled();const K=ge&&"nextCursor"in ge&&(ge.nextCursor===null||typeof ge.nextCursor=="string")?ge.nextCursor:p,Ae=je.flatMap(D=>D.op!=="document-delete"&&D.op!=="asset-delete"?[]:D.deletedAt?[{kind:D.op==="document-delete"?"document":"asset",path:D.path,resolution:"at-or-before-watermark",sourceWatermark:D.deletedAt}]:[]),re=e.bootstrap&&!ge?.hasMore,F=r.length>0?t.buildV2ApplyCompletionGroup({workspaceId:e.workspaceId,previousCursor:p,nextCursor:K,receipts:r}):void 0;if(r.length>0&&!F)throw new Error("V2 sync transfer receipts did not produce an apply completion group.");if(je.length>0||Ye.length>0||ce||F||re){const D=Date.now(),z=await l(e.workspaceId,je,{...ce?{workspaceMembers:B}:{},repairMode:e.repairMode===!0,excludedProjections:e.excludedProjections,...re?{bootstrapSnapshot:{currentAnnotatedAttachmentSessionIds:Array.from(V)}}:{},...F?{completionGroup:F}:{},...Ye.length>0?{contentPullObligations:Ye}:{},...Ae.length>0?{contentPullResolutionClaims:Ae}:{}}),we=z.failures;if(!z.ok){w+=Date.now()-D,await s("WORKSPACE_SYNC_V2_APPLY_NOT_COMMITTED");const ee=Sa(z.data);if(we.some(ae=>ae.endsWith(":401")))return{success:!1,kind:"apply_auth",status:401,transient:!1,failures:we,cursor:p,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:w,pulledDeleteTaskIds:S,pulledActiveUpserts:b,pulledArchivedUpserts:v,pulledTaskEventUpserts:T,pulledPlanningUpserts:R,pulledTaskforceAgentUpserts:P,pulledTaskforceAgentSkillUpserts:I,pulledAgentConversationUpserts:$,documentDecryptFailures:Array.from(j),serverDiagnostics:he};const H=we.some(ae=>{if(ae.endsWith(":network"))return!0;const Te=ae.split(":").pop()||"",Le=Number.parseInt(Te,10);return Number.isFinite(Le)&&(Le===429||Le>=500)});return{success:!1,kind:"apply_all_candidates",status:z.status||void 0,transient:H,error:String(ee.error||"").trim()||void 0,failures:we,hasTransientApplyFailure:H,cursor:p,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:w,pulledDeleteTaskIds:S,pulledActiveUpserts:b,pulledArchivedUpserts:v,pulledTaskEventUpserts:T,pulledPlanningUpserts:R,pulledTaskforceAgentUpserts:P,pulledTaskforceAgentSkillUpserts:I,pulledAgentConversationUpserts:$,documentDecryptFailures:Array.from(j),emittedEventIds:Array.from(x),serverDiagnostics:U}}const ke=Sa(z.data);if(ke.success===!1)return w+=Date.now()-D,await s("WORKSPACE_SYNC_V2_APPLY_NOT_COMMITTED"),{success:!1,kind:"apply_payload",transient:!1,error:String(ke.error||"Workspace sync apply failed."),cursor:p,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:w,pulledDeleteTaskIds:S,pulledActiveUpserts:b,pulledArchivedUpserts:v,pulledTaskEventUpserts:T,pulledPlanningUpserts:R,pulledTaskforceAgentUpserts:P,pulledTaskforceAgentSkillUpserts:I,pulledAgentConversationUpserts:$,documentDecryptFailures:Array.from(j),emittedEventIds:Array.from(x),serverDiagnostics:U};if(w+=Date.now()-D,y+=je.length,Array.isArray(ke.emittedEventIds))for(const ee of ke.emittedEventIds)x.add(String(ee));je.some(ee=>ee.op==="ai-profile-upsert")&&e.onAiProfilesApplied?.(),e.onChangesApplied&&e.onChangesApplied(je.length),Ae.forEach(ee=>{J.delete(Gc(ee))})}r=[],ge&&"nextCursor"in ge&&(ge.nextCursor===null||typeof ge.nextCursor=="string")&&(p=ge.nextCursor),g=!!ge?.hasMore,h+=1}return{success:!0,hasMore:g,syncedAt:new Date().toISOString(),cursor:p||null,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:w,pulledDeleteTaskIds:S,pulledActiveUpserts:b,pulledArchivedUpserts:v,pulledTaskEventUpserts:T,pulledPlanningUpserts:R,pulledTaskforceAgentUpserts:P,pulledAgentRoleUpserts:N,pulledTaskforceAgentSkillUpserts:I,pulledAgentConversationUpserts:$,documentDecryptFailures:Array.from(j),emittedEventIds:Array.from(x),serverDiagnostics:e.contentMode==="manifest"?{...U||{},contentReconciliation:ne}:U}}catch(ue){let oe=ue;try{await s("WORKSPACE_SYNC_V2_APPLY_NOT_COMMITTED")}catch(ge){oe=ge}return{success:!1,kind:"exception",status:0,transient:!0,error:String(oe?.message||oe||"Workspace sync pull failed unexpectedly."),cursor:p||null,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:w,pulledDeleteTaskIds:S,pulledActiveUpserts:b,pulledArchivedUpserts:v,pulledTaskEventUpserts:T,pulledPlanningUpserts:R,pulledTaskforceAgentUpserts:P,pulledTaskforceAgentSkillUpserts:I,pulledAgentConversationUpserts:$,documentDecryptFailures:Array.from(j),emittedEventIds:Array.from(x),serverDiagnostics:e.contentMode==="manifest"?{...U||{},contentReconciliation:ne}:U}}}async function D1(e){const t=await c1(e.resolveCloudAuthUrl);if(!t.ok){const h=Number(t.status||0);return{success:!1,error:`Sync pull failed (${t.status})`,statusCode:t.status,retryAfterMs:t.retryAfterMs,transient:ii(h)}}const r=Sa(t.data),n=r.settings&&typeof r.settings=="object"?r.settings:{},s=typeof r.updatedAt=="string"&&r.updatedAt.trim().length>0?r.updatedAt.trim():null,i=e.getLocalUpdatedAt(e.userId),l=i?Date.parse(i):NaN,c=s?Date.parse(s):NaN;if(!i&&e.preferCloudOnFirstSync&&Number.isFinite(c))return await e.applyRemoteSettings(n),{success:!0,mode:"pulled",updatedAt:s};if(Number.isFinite(c)&&(!Number.isFinite(l)||c>l))return await e.applyRemoteSettings(n),{success:!0,mode:"pulled",updatedAt:s};const d=i||new Date().toISOString(),f=await l1(e.resolveCloudAuthUrl,{settings:e.buildLocalSettings(),updatedAt:d});if(!f.ok){const h=Number(f.status||0);return{success:!1,error:`Sync push failed (${f.status})`,statusCode:f.status,retryAfterMs:f.retryAfterMs,transient:ii(h)}}const p=Sa(f.data);return{success:!0,mode:"pushed",updatedAt:typeof p.updatedAt=="string"&&p.updatedAt.trim().length>0?p.updatedAt.trim():d}}function M1(e){const t=Math.max(1,Math.floor(Number(e)||1)),r=Math.min(12e4,1500*2**Math.max(0,t-1)),n=Math.floor(r*(.15*Math.random()));return r+n}function L1(e){const t=String(e||"").trim().replace(/\\/g,"/");if(!t||t.startsWith("/"))return null;const r=t.split("/").filter(Boolean);return r.length===0||r.some(n=>n==="."||n==="..")?null:r.join("/")}function O1(e){const t=L1(e);return!t||!["users/","workspaces/","system/","tmp/","quarantine/"].some(n=>t.startsWith(n))?null:t}function B1(e){return String(e||"").trim()}function W1(e,t){return B1(e).replace(/[^a-zA-Z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")||t}function $1(e,t){const r=W1(t,"default"),n=String(e||"").replace(/\\/g,"/");return(n.startsWith(`workspaces/${r}/assets/ai-profiles/`)||n.startsWith(`workspaces/${r}/assets/images/ai-profiles/`))&&n.includes("/avatar/")}function F1(e,t){const r=String(e||"").trim();if(!r.startsWith("/api/taskforce/context/"))return null;const n=r.slice(23).split(/[?#]/,1)[0]||"";if(!n)return null;try{return t(decodeURIComponent(n))}catch{return null}}function U1(e,t){return $1(e,t)}function z1(e){const t=e.split("/").pop()||"",r=t.lastIndexOf("."),n=r>=0?t.slice(r).toLowerCase():"";return n===".png"?"image/png":n===".jpg"||n===".jpeg"?"image/jpeg":n===".webp"?"image/webp":n===".gif"?"image/gif":"application/octet-stream"}function H1(e){return String(e||"").match(/(^|\/)(asset-[a-f0-9]{32})(?=[^/]*$)/i)?.[2]}function V1(e,t,r){const n=new Map;for(const s of Array.isArray(e)?e:[]){const i=String(s?.updatedAt||s?.createdAt||"").trim();for(const l of[s?.avatarUrl,s?.avatarSourceUrl]){const c=F1(l,r);!c||!U1(c,t)||n.has(c)||n.set(c,{updatedAt:i,assetId:H1(c),originalFilename:c.split("/").pop()||c,mimeType:z1(c)})}}return n}const G1=new Set(["assetId","path","caption","displayName","originalFilename","referenceNumber","referenceLabel","linkRole"]);[...G1];function Sv(e,t){return e<t?-1:e>t?1:0}function oi(e){return typeof e!="string"?void 0:e.trim()||void 0}function nm(e){if(e!==void 0){if(!Array.isArray(e))throw new Error("Planning comments must be an array.");return e.map((t,r)=>{if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`Planning comment ${r} must be an object.`);const n=t,s=oi(n.id),i=oi(n.author),l=Date.parse(String(n.timestamp||"").trim());if(!s||!i||!Number.isFinite(l))throw new Error(`Planning comment ${r} has invalid identity, author, or timestamp.`);const c=oi(n.submittedAuthor);return{id:s,author:i,...c?{submittedAuthor:c}:{},text:String(n.text||""),timestamp:new Date(l).toISOString()}}).sort((t,r)=>Sv(t.timestamp,r.timestamp)||Sv(t.id,r.id))}}function am(e){if(e!==void 0){if(!Array.isArray(e))throw new Error("Planning attachments must be an array.");return e.map((t,r)=>{if(typeof t=="string"){const h=t.trim();if(!h)throw new Error(`Planning attachment ${r} path is required.`);return h}if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`Planning attachment ${r} must be a path or object.`);const n=t,s=oi(n.path);if(!s)throw new Error(`Planning attachment ${r} path is required.`);const i=oi(n.fsPath),l=oi(n.timestamp),c=n.assetId===null?null:oi(n.assetId),d=n.referenceNumber===null?null:Number.isFinite(Number(n.referenceNumber))?Math.max(1,Math.floor(Number(n.referenceNumber))):void 0,f=n.referenceLabel===null?null:oi(n.referenceLabel),p=n.taskId===null?null:oi(n.taskId),g=n.linkRole==="attachment"||n.linkRole==="image"||n.linkRole==="reference"?n.linkRole:void 0;return{path:s,...i?{fsPath:i}:{},...typeof n.caption=="string"?{caption:n.caption}:{},...typeof n.displayName=="string"?{displayName:n.displayName}:{},...typeof n.originalFilename=="string"?{originalFilename:n.originalFilename}:{},...l?{timestamp:l}:{},...c!==void 0?{assetId:c}:{},...d!==void 0?{referenceNumber:d}:{},...f!==void 0?{referenceLabel:f}:{},...p!==void 0?{taskId:p}:{},...g?{linkRole:g}:{}}})}}function K1(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("Planning attachments must be an array.");return e.map((t,r)=>{if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`Durable planning attachment ${r} must be a canonical asset link.`);const n=t,s=oi(n.assetId),i=oi(n.path);if(!s||!i)throw new Error(`Durable planning attachment ${r} requires assetId and path.`);const l=n.referenceNumber===null?null:Number.isInteger(n.referenceNumber)&&Number(n.referenceNumber)>0?Number(n.referenceNumber):void 0,c=n.referenceLabel===null?null:oi(n.referenceLabel),d=n.linkRole==="attachment"||n.linkRole==="image"||n.linkRole==="reference"?n.linkRole:void 0;return{assetId:s,path:i,...typeof n.caption=="string"?{caption:n.caption}:{},...typeof n.displayName=="string"?{displayName:n.displayName}:{},...typeof n.originalFilename=="string"?{originalFilename:n.originalFilename}:{},...l!==void 0?{referenceNumber:l}:{},...c!==void 0?{referenceLabel:c}:{},...d?{linkRole:d}:{}}}).sort((t,r)=>Sv(`${t.assetId}\0${t.linkRole||""}\0${t.path}\0${JSON.stringify(t)}`,`${r.assetId}\0${r.linkRole||""}\0${r.path}\0${JSON.stringify(r)}`))}function q1(e){return Array.isArray(e)?e.slice(0,24).flatMap(t=>{if(!t||typeof t!="object"||Array.isArray(t))return[];const r=t,n=String(r.name||"").trim();if(!n)return[];const s=String(r.resultText||"").trim().slice(0,4e3);return[{name:n.slice(0,120),...r.arguments&&typeof r.arguments=="object"&&!Array.isArray(r.arguments)?{arguments:r.arguments}:{},ok:r.ok!==!1,...s?{resultText:s}:{}}]}):[]}function Y1(e){return Array.isArray(e)?e.flatMap(t=>{if(!t||typeof t!="object"||Array.isArray(t))return[];const r=t,n=r.role==="assistant"?"assistant":r.role==="user"?"user":null,s=String(r.content||"").trim();if(!n||!s)return[];const i={role:n,content:s};for(const c of["agentId","agentName","providerKey","providerLabel","modelKey","modelLabel","modelId"]){const d=String(r[c]||"").trim();d&&(i[c]=d)}const l=q1(r.toolActivity);return n==="assistant"&&l.length>0&&(i.toolActivity=l),[i]}):[]}const Z1=["chat_app","ide","cli","coding_tool","agent"],J1={chat_app:"Chat App",ide:"IDE",cli:"CLI",coding_tool:"Coding Tool",agent:"Agent"},X1={chat_app:"Chat Apps",ide:"IDEs",cli:"CLI",coding_tool:"Coding Tools",agent:"Agents",unclassified:"Unclassified"};function Q1(e){return typeof e=="string"&&Z1.includes(e)}function sI(e){if(typeof e!="string")return null;const t=e.trim();return t==="other"?"agent":Q1(t)?t:null}function ore(e){return J1[e]}function ire(e){return e??"unclassified"}function cre(e){return X1[e]}const eP=["cloud_metered","local_unmetered"],tP={cloud_metered:"Cloud MCP",local_unmetered:"Local MCP"};function rP(e){return typeof e=="string"&&eP.includes(e)}function oI(e){if(typeof e!="string")return null;const t=e.trim();return rP(t)?t:null}function lre(e){return tP[e]}function _l(e){if(e==null)return;const t=String(e).trim();return t.length>0?t:void 0}function Vn(e){if(e==null)return null;const t=String(e).trim();return t.length>0?t:null}function sm(e){return _l(e)}function Xc(e){return Vn(e)}function hs(e){return Vn(e)}function up(e){const t=Vn(e);return t&&t.startsWith("/api/taskforce/context/")?t:null}function Dk(e){return _l(e)}function vf(e){if(e!==void 0)return Vn(e)}function nP(e){return typeof e=="boolean"?e:void 0}function Ng(e,t){if(e===void 0)return;if(e===null||e==="")return t?.nullable?null:void 0;const r=typeof e=="number"?e:Number(e);if(!Number.isFinite(r))return t?.nullable?null:void 0;const n=Math.floor(r);return Number.isFinite(t?.min)&&n<Number(t?.min)?t?.nullable?null:void 0:n}function aP(e){if(!e||typeof e!="object"||Array.isArray(e))return;const r=Object.entries(e).reduce((n,[s,i])=>s==="approach"?n:Array.isArray(i)?(n[s]=i.map(l=>String(l??"")),n):(i==null||(n[s]=String(i)),n),{});return Object.keys(r).length>0?r:{}}function sP(e){if(Array.isArray(e))return e.map(t=>{const r=t;return{id:r.id,author:r.author,...r.submittedAuthor===void 0?{}:{submittedAuthor:r.submittedAuthor},text:r.text,timestamp:r.timestamp}})}function oP(e){return Array.isArray(e)?e:void 0}function iP(e){return Array.isArray(e)?e:void 0}function iI(e){const t=e&&typeof e=="object"?e:{},r=Object.prototype.hasOwnProperty.call(t,"cardCoverAssetId");return{id:String(t.id||"").trim(),title:String(t.title||"").trim(),description:t.description===void 0?void 0:t.description||null,status:String(t.status||"task").trim()||"task",priority:Ng(t.priority,{min:1})??void 0,complexity:Ng(t.complexity,{min:1,nullable:!0}),type:String(t.type||"").trim(),category:String(t.category||"").trim(),canceledReason:t.canceledReason===void 0?void 0:t.canceledReason||null,createdAt:String(t.createdAt||"").trim(),updatedAt:Dk(t.updatedAt),completedAt:t.completedAt===void 0?void 0:t.completedAt||null,isArchived:nP(t.isArchived),taxonomies:aP(t.taxonomies),createdBy:Dk(t.createdBy),assignee:Dk(t.assignee),scheduledDate:vf(t.scheduledDate),dueDate:vf(t.dueDate),scheduledWeekKey:vf(t.scheduledWeekKey),orderInDay:Ng(t.orderInDay,{min:0,nullable:!0}),workstreamId:vf(t.workstreamId),referenceNumber:Ng(t.referenceNumber,{min:1,nullable:!0}),comments:sP(t.comments),attachments:oP(t.attachments),...r?{cardCoverAssetId:vf(t.cardCoverAssetId)}:{},checklistItems:iP(t.checklistItems)}}function cP(e){if(!e||typeof e!="object"||Array.isArray(e))return{};const t=Object.entries(e).filter(([n])=>String(n||"").trim().length>0).sort(([n],[s])=>n.localeCompare(s)),r={};for(const[n,s]of t){if(Array.isArray(s)){r[n]=s.map(i=>String(i??"")).sort((i,l)=>i.localeCompare(l));continue}s!=null&&(r[n]=String(s))}return r}function lP(e){return Array.isArray(e)?e.map(t=>{const r=t&&typeof t=="object"?t:{};return{id:String(r.id||"").trim(),title:String(r.title||"").trim(),isCompleted:!!r.isCompleted,order:r.order===void 0||r.order===null?"":String(r.order)}}).sort((t,r)=>{const n=Number.parseInt(t.order,10),s=Number.parseInt(r.order,10);return Number.isFinite(n)&&Number.isFinite(s)&&n!==s?n-s:t.title!==r.title?t.title.localeCompare(r.title):t.id.localeCompare(r.id)}):[]}function dP(e){return Array.isArray(e)?e.map(t=>{const r=t&&typeof t=="object"?t:null;return{id:String(r?.id||"").trim(),author:String(r?.author||"").trim(),submittedAuthor:_l(r?.submittedAuthor)||"",text:String(r?.text||""),timestamp:hs(r?.timestamp)||"",actor:r?.actor??null}}).sort((t,r)=>t.timestamp!==r.timestamp?t.timestamp.localeCompare(r.timestamp):t.id!==r.id?t.id.localeCompare(r.id):t.author!==r.author?t.author.localeCompare(r.author):t.text.localeCompare(r.text)):[]}function uP(e){return Array.isArray(e)?e.map(t=>{if(typeof t=="string")return{path:t.trim(),fsPath:"",caption:"",displayName:"",originalFilename:"",assetId:"",referenceNumber:"",taskId:"",timestamp:""};const r=t&&typeof t=="object"?t:null;return{path:String(r?.path||"").trim(),fsPath:_l(r?.fsPath)||"",caption:_l(r?.caption)||"",displayName:_l(r?.displayName)||"",originalFilename:_l(r?.originalFilename)||"",assetId:sm(r?.assetId)||"",referenceNumber:r?.referenceNumber===void 0||r.referenceNumber===null?"":String(r.referenceNumber),taskId:Xc(r?.taskId)||"",timestamp:hs(r?.timestamp)||""}}).sort((t,r)=>t.path!==r.path?t.path.localeCompare(r.path):t.assetId!==r.assetId?t.assetId.localeCompare(r.assetId):t.timestamp!==r.timestamp?t.timestamp.localeCompare(r.timestamp):JSON.stringify(t).localeCompare(JSON.stringify(r))):[]}function pP(e,t){const r=iI(e);return JSON.stringify({id:r.id,title:r.title,description:Vn(r.description)||"",category:r.category,type:r.type,priority:r.priority===void 0||r.priority===null?"":String(r.priority),complexity:r.complexity===void 0||r.complexity===null?"":String(r.complexity),status:r.status,canceledReason:Vn(r.canceledReason)||"",createdAt:r.createdAt,completedAt:hs(r.completedAt)||"",taxonomies:cP(r.taxonomies),createdBy:sm(r.createdBy)||"",assignee:sm(r.assignee)||"",scheduledDate:Vn(r.scheduledDate)||"",dueDate:Vn(r.dueDate)||"",scheduledWeekKey:Vn(r.scheduledWeekKey)||"",orderInDay:r.orderInDay===void 0||r.orderInDay===null?"":String(r.orderInDay),workstreamId:Xc(r.workstreamId)||"",referenceNumber:r.referenceNumber===void 0||r.referenceNumber===null?"":String(r.referenceNumber),comments:dP(r.comments),attachments:uP(r.attachments),checklistItems:lP(r.checklistItems),isArchived:t?"1":"0"})}function fP(...e){return e.reduce((t,r)=>{const n=hs(r)||"";return t?n&&n>t?n:t:n},"")}function mP(e){const t=e||{};return fP(t.createdAt,t.updatedAt,t.lastActiveAt,t.colorUpdatedAt,t.archivedAt,t.rosterStateUpdatedAt)}function cI(e){const t=e||{};return JSON.stringify({id:String(t.id||"").trim(),workspaceId:String(t.workspaceId||"").trim(),profileToken:String(t.profileToken||"").trim(),name:String(t.name||"").trim(),username:String(t.username||"").trim(),icon:String(t.icon||"Bot").trim()||"Bot",color:String(t.color||"#8b5cf6").trim()||"#8b5cf6",colorSource:Vn(t.colorSource)||"",colorUpdatedAt:hs(t.colorUpdatedAt)||"",avatarUrl:up(t.avatarUrl)||"",avatarSourceUrl:up(t.avatarSourceUrl)||"",avatarRevision:Number.isFinite(Number(t.avatarRevision))?Math.max(0,Math.floor(Number(t.avatarRevision))):0,avatarUpdatedAt:hs(t.avatarUpdatedAt)||"",description:Vn(t.description)||"",role:Vn(t.role)||"",provider:Vn(t.provider)||"",model:Vn(t.model)||"",surfaceType:Vn(t.surfaceType)||"",seatScope:Vn(t.seatScope)||"",providerMetadata:t.providerMetadata&&typeof t.providerMetadata=="object"&&!Array.isArray(t.providerMetadata)?t.providerMetadata:null,archivedAt:hs(t.archivedAt)||"",archivedBy:sm(t.archivedBy)||"",archivedReason:Vn(t.archivedReason)||"",mergedIntoProfileId:sm(t.mergedIntoProfileId)||"",rosterStateUpdatedAt:hs(t.rosterStateUpdatedAt)||"",createdAt:hs(t.createdAt)||"",updatedAt:hs(t.updatedAt)||"",lastActiveAt:hs(t.lastActiveAt)||""})}function gP(e){return JSON.stringify(e.map(t=>cI(t)).sort())}function Ew(e){return bn(e||null)}function lI(e){return e.taxonomyState&&typeof e.taxonomyState=="object"?bn({taxonomyState:e.taxonomyState}):Array.isArray(e.taxonomies)?bn({taxonomies:e.taxonomies}):""}const si={kind:"task",getId:e=>String(e?.id||"").trim(),getWatermark:e=>String(e?.updatedAt||e?.createdAt||"").trim(),getChangeKey:e=>pP(e,!!e?.isArchived)},Hf={kind:"ai-profile",getId:e=>String(e?.id||"").trim(),getWatermark:e=>mP(e),getChangeKey:e=>cI(e)};function cS(e,t,r){const n=e.getId(t);if(!n)return!1;const s=e.getChangeKey(t),i=r?.watermarks;if(!i||i.size===0||!i.has(n))return!0;const c=r?.changeKeys?.get(n);return typeof c=="string"?c!==s:(i.get(n)||"")!==s}function lS(e){return iI(e)}function dS(e,t){const r=e??t;return new Set(Array.from(r).map(n=>String(n||"").trim()).filter(n=>n.length>0))}function hP(e){return[...e].sort((t,r)=>{const n=String(t?.createdAt||"").trim(),s=String(r?.createdAt||"").trim(),i=n.localeCompare(s);return i!==0?i:String(t?.id||"").trim().localeCompare(String(r?.id||"").trim())})}function uS(e){return[...e].sort((t,r)=>{const n=String(t?.id||"").trim(),s=String(r?.id||"").trim();return n.localeCompare(s)})}function yP(e){const t=new Date().toISOString(),r=new Set(Array.from(e.pendingDeletedTaskIds).map(u=>String(u||"").trim()).filter(u=>u.length>0)),n=new Map(Array.from(e.pendingDeletedTaskWatermarks||new Map).map(([u,Rt])=>[String(u||"").trim(),String(Rt||"").trim()]).filter(([u,Rt])=>u.length>0&&Number.isFinite(Date.parse(Rt)))),s=new Map((e.deletedTasks||[]).map(u=>[String(u.taskId||"").trim(),u])),i=u=>{const Rt=s.get(u);return{op:"delete",taskId:u,deletedAt:Rt?.deletedAt||n.get(u)||t,...Rt?{actor:Rt.actor,actorType:Rt.actorType,source:Rt.source,details:Rt.details}:{}}},l=e.lastPushedWatermarks,c=e.lastPushedTaskChangeKeys,d=(u,Rt)=>(u?.referenceNumber===void 0||u?.referenceNumber===null)&&Number.isFinite(Number(u?.localReferenceNumber))?!0:cS(si,{...u,isArchived:Rt},{watermarks:l,changeKeys:c}),f=uS(e.tasks||[]),p=uS(e.archivedTasks||[]),g=new Map,h=new Map,y=new Map,k=new Map,w=f.filter(u=>!r.has(String(u?.id||"").trim())&&d(u,!1)).map(u=>{const Rt=String(u?.id||"").trim(),pr=si.getWatermark(u),nr=si.getChangeKey({...u,isArchived:!1});return Rt&&(y.set(Rt,pr),k.set(Rt,nr)),{op:"upsert",archived:!1,task:lS(u)}}),S=p.filter(u=>!r.has(String(u?.id||"").trim())&&d(u,!0)).map(u=>{const Rt=String(u?.id||"").trim(),pr=si.getWatermark(u),nr=si.getChangeKey({...u,isArchived:!0});return Rt&&(y.set(Rt,pr),k.set(Rt,nr)),{op:"upsert",archived:!0,task:lS(u)}}),b=new Set;for(const u of e.tasks||[]){const Rt=String(u?.id||"").trim();Rt&&(b.add(Rt),g.set(Rt,si.getWatermark(u)),h.set(Rt,si.getChangeKey({...u,isArchived:!1})))}for(const u of e.archivedTasks||[]){const Rt=String(u?.id||"").trim();Rt&&(b.add(Rt),g.set(Rt,si.getWatermark(u)),h.set(Rt,si.getChangeKey({...u,isArchived:!0})))}const v=Array.from(e.lastPushedTaskIds).filter(u=>!b.has(u)).map(u=>i(u)),T=Array.from(r).map(u=>i(u)),R=new Set([...v.map(u=>String(u.taskId)),...T.map(u=>String(u.taskId))]),P=e.lastPushedTaskRelationshipChangeKeys,N=new Map,I=(Array.isArray(e.taskRelationships)?e.taskRelationships:[]).filter(u=>u?.id&&Number.isFinite(Date.parse(String(u.updatedAt||"")))).map(u=>{const Rt=String(u.id||"").trim(),pr=Ew(u);return N.set(Rt,pr),{op:u.deletedAt?"task-relationship-delete":"task-relationship-upsert",relationship:u,relationshipId:Rt,changeKey:pr}}).filter(u=>P?.get(u.relationshipId)!==u.changeKey).map(({relationshipId:u,changeKey:Rt,...pr})=>pr),$=new Set((Array.isArray(e.initiatives)?e.initiatives:[]).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),j=new Map((Array.isArray(e.initiatives)?e.initiatives:[]).map(u=>[String(u?.id||"").trim(),String(u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),x=e.lastPushedInitiativeWatermarks,V=!x||x.size===0,U=(Array.isArray(e.initiatives)?e.initiatives:[]).map(u=>({op:"initiative-upsert",initiative:{id:String(u?.id||"").trim(),referenceNumber:Number.isFinite(Number(u?.referenceNumber))?Math.max(1,Math.floor(Number(u.referenceNumber))):null,referenceLabel:typeof u?.referenceLabel=="string"&&u.referenceLabel.trim().length>0?u.referenceLabel.trim():void 0,title:String(u?.title||"").trim(),description:typeof u?.description=="string"?u.description:null,ownerId:typeof u?.ownerId=="string"&&u.ownerId.trim().length>0?u.ownerId.trim():null,comments:nm(u?.comments),createdAt:String(u?.createdAt||"").trim(),updatedAt:String(u?.updatedAt||u?.createdAt||"").trim(),order:Number.isFinite(Number(u?.order))?Math.floor(Number(u.order)):null,attachments:am(u?.attachments),isArchived:!!u?.isArchived}})).filter(u=>u.initiative.id.length>0).filter(u=>V?!0:x.get(u.initiative.id)!==u.initiative.updatedAt),ne=new Set((Array.isArray(e.workstreams)?e.workstreams:[]).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),L=new Map((Array.isArray(e.workstreams)?e.workstreams:[]).map(u=>[String(u?.id||"").trim(),String(u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),ie=e.lastPushedWorkstreamWatermarks,J=!ie||ie.size===0,ue=(Array.isArray(e.workstreams)?e.workstreams:[]).map(u=>({op:"workstream-upsert",workstream:{id:String(u?.id||"").trim(),referenceNumber:Number.isFinite(Number(u?.referenceNumber))?Math.max(1,Math.floor(Number(u.referenceNumber))):null,referenceLabel:typeof u?.referenceLabel=="string"&&u.referenceLabel.trim().length>0?u.referenceLabel.trim():void 0,initiativeId:typeof u?.initiativeId=="string"&&u.initiativeId.trim().length>0?u.initiativeId.trim():null,title:String(u?.title||"").trim(),description:typeof u?.description=="string"?u.description:null,ownerId:typeof u?.ownerId=="string"&&u.ownerId.trim().length>0?u.ownerId.trim():null,comments:nm(u?.comments),createdAt:String(u?.createdAt||"").trim(),updatedAt:String(u?.updatedAt||u?.createdAt||"").trim(),order:Number.isFinite(Number(u?.order))?Math.floor(Number(u.order)):null,attachments:am(u?.attachments),isArchived:!!u?.isArchived}})).filter(u=>u.workstream.id.length>0).filter(u=>J?!0:ie.get(u.workstream.id)!==u.workstream.updatedAt),oe=[...(Array.isArray(e.initiatives)?e.initiatives:[]).map(u=>({entityType:"initiative",entityId:String(u?.id||"").trim(),icon:u?.icon??null,color:u?.color??null,updatedAt:String(u?.identityUpdatedAt||"").trim()})),...(Array.isArray(e.workstreams)?e.workstreams:[]).map(u=>({entityType:"workstream",entityId:String(u?.id||"").trim(),icon:u?.icon??null,color:u?.color??null,updatedAt:String(u?.identityUpdatedAt||"").trim()}))].filter(u=>u.entityId.length>0&&Number.isFinite(Date.parse(u.updatedAt))).map(u=>({op:"planning-identity-upsert",identity:u})),ge=new Set((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),je=new Map((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(u=>[String(u?.id||"").trim(),Hf.getWatermark(u)]).filter(([u])=>u.length>0)),qe=new Map((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(u=>[String(u?.id||"").trim(),Hf.getChangeKey(u)]).filter(([u])=>u.length>0)),Ye=e.lastPushedAiProfileWatermarks,he=e.lastPushedAiProfileChangeKeys,ce=!Ye||Ye.size===0,B=(Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(u=>({op:"ai-profile-upsert",profile:{id:String(u.id||"").trim(),workspaceId:String(u.workspaceId||"").trim(),profileToken:String(u.profileToken||"").trim(),name:String(u.name||"").trim(),username:String(u.username||"").trim(),icon:String(u.icon||"Bot").trim()||"Bot",color:String(u.color||"#8b5cf6").trim()||"#8b5cf6",colorSource:typeof u.colorSource=="string"?u.colorSource:null,colorUpdatedAt:typeof u.colorUpdatedAt=="string"?u.colorUpdatedAt:null,avatarUrl:up(u.avatarUrl),avatarSourceUrl:up(u.avatarSourceUrl),avatarRevision:Number.isFinite(Number(u.avatarRevision))?Math.max(0,Math.floor(Number(u.avatarRevision))):0,avatarUpdatedAt:typeof u.avatarUpdatedAt=="string"&&u.avatarUpdatedAt.trim().length>0?u.avatarUpdatedAt.trim():null,description:typeof u.description=="string"&&u.description.trim()||null,role:typeof u.role=="string"&&u.role.trim()||null,provider:typeof u.provider=="string"&&u.provider.trim()||null,model:typeof u.model=="string"&&u.model.trim()||null,surfaceType:sI(u.surfaceType),seatScope:oI(u.seatScope),providerMetadata:u.providerMetadata&&typeof u.providerMetadata=="object"&&!Array.isArray(u.providerMetadata)?u.providerMetadata:null,archivedAt:typeof u.archivedAt=="string"&&u.archivedAt.trim().length>0?u.archivedAt.trim():null,archivedBy:typeof u.archivedBy=="string"&&u.archivedBy.trim().length>0?u.archivedBy.trim():null,archivedReason:typeof u.archivedReason=="string"&&u.archivedReason.trim()||null,mergedIntoProfileId:typeof u.mergedIntoProfileId=="string"&&u.mergedIntoProfileId.trim().length>0?u.mergedIntoProfileId.trim():null,rosterStateUpdatedAt:typeof u.rosterStateUpdatedAt=="string"&&u.rosterStateUpdatedAt.trim().length>0?u.rosterStateUpdatedAt.trim():null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),lastActiveAt:typeof u.lastActiveAt=="string"&&u.lastActiveAt.trim().length>0?u.lastActiveAt.trim():null}})).filter(u=>u.profile.id.length>0&&u.profile.workspaceId.length>0).filter(u=>ce?!0:cS(Hf,u.profile,{watermarks:Ye,changeKeys:he})),K=dS(e.currentDocumentPaths,(Array.isArray(e.documents)?e.documents:[]).map(u=>String(u?.path||"").trim())),Ae=new Set(Array.from(e.lastPushedDocumentPaths||new Set).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!K.has(u))),re=new Map((Array.isArray(e.documents)?e.documents:[]).map(u=>[String(u?.path||"").trim(),String(u?.updatedAt||"").trim()]).filter(([u])=>u.length>0)),F=e.lastPushedDocumentWatermarks,D=!F||F.size===0,z=(Array.isArray(e.documents)?e.documents:[]).map(u=>({op:"document-upsert",path:String(u.path||"").trim(),updatedAt:String(u.updatedAt||"").trim(),content:typeof u.content=="string"?u.content:"",assetId:typeof u.assetId=="string"&&u.assetId.trim().length>0?u.assetId.trim():void 0,documentId:typeof u.documentId=="string"&&u.documentId.trim().length>0?u.documentId.trim():null,referenceNumber:Number.isFinite(Number(u.referenceNumber))?Math.max(1,Math.floor(Number(u.referenceNumber))):null,version:Number.isFinite(Number(u.version))?Math.max(1,Math.floor(Number(u.version))):null,taskId:typeof u.taskId=="string"&&u.taskId.trim().length>0?u.taskId.trim():null,linkTargetType:u.linkTargetType==="initiative"||u.linkTargetType==="workstream"||u.linkTargetType==="task"?u.linkTargetType:null,linkTargetId:typeof u.linkTargetId=="string"&&u.linkTargetId.trim().length>0?u.linkTargetId.trim():null,logicalName:typeof u.logicalName=="string"&&u.logicalName.trim().length>0?u.logicalName.trim():null,caption:typeof u.caption=="string"&&u.caption.trim().length>0?u.caption.trim():null,originalFilename:typeof u.originalFilename=="string"&&u.originalFilename.trim().length>0?u.originalFilename.trim():null,linkRole:u.linkRole==="reference"?"reference":"attachment",...u.links?{links:u.links}:{}})).filter(u=>u.path.length>0).filter(u=>D?!0:F.get(u.path)!==u.updatedAt),we=dS(e.currentAssetPaths,(Array.isArray(e.assets)?e.assets:[]).map(u=>String(u?.path||"").trim())),ke=new Set(Array.from(e.lastPushedAssetPaths||new Set).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!we.has(u))),ee=new Map((Array.isArray(e.assets)?e.assets:[]).map(u=>[String(u?.path||"").trim(),String(u?.updatedAt||"").trim()]).filter(([u])=>u.length>0)),Z=e.lastPushedAssetWatermarks,H=!Z||Z.size===0,ae=(Array.isArray(e.assets)?e.assets:[]).map(u=>({op:"asset-upsert",path:String(u.path||"").trim(),updatedAt:String(u.updatedAt||"").trim(),contentBase64:typeof u.contentBase64=="string"?u.contentBase64:"",assetId:typeof u.assetId=="string"&&u.assetId.trim().length>0?u.assetId.trim():void 0,kind:u.kind==="image"?"image":"file",mimeType:typeof u.mimeType=="string"&&u.mimeType.trim().length>0?u.mimeType.trim():"application/octet-stream",referenceNumber:Number.isFinite(Number(u.referenceNumber))?Math.max(1,Math.floor(Number(u.referenceNumber))):null,taskId:typeof u.taskId=="string"&&u.taskId.trim().length>0?u.taskId.trim():null,linkTargetType:u.linkTargetType==="initiative"||u.linkTargetType==="workstream"||u.linkTargetType==="task"?u.linkTargetType:null,linkTargetId:typeof u.linkTargetId=="string"&&u.linkTargetId.trim().length>0?u.linkTargetId.trim():null,logicalName:typeof u.logicalName=="string"&&u.logicalName.trim().length>0?u.logicalName.trim():null,caption:typeof u.caption=="string"&&u.caption.trim().length>0?u.caption.trim():null,originalFilename:typeof u.originalFilename=="string"&&u.originalFilename.trim().length>0?u.originalFilename.trim():null,linkRole:u.linkRole==="reference"?"reference":u.linkRole==="image"?"image":"attachment",...u.links?{links:u.links}:{}})).filter(u=>u.path.length>0&&u.contentBase64.length>0).filter(u=>H?!0:Z.get(u.path)!==u.updatedAt),Te=Array.isArray(e.documentReviewSessions)?e.documentReviewSessions:[],Le=new Set(Te.map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),Ue=new Set(Te.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),ft=e.lastPushedDocumentReviewSessionIds||new Set,He=new Map(Te.map(u=>[String(u?.id||"").trim(),String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),Fe=e.lastPushedDocumentReviewSessionWatermarks,me=!Fe||Fe.size===0,ve=Te.map(u=>({op:"document-review-session-upsert",session:{id:String(u.id||"").trim(),assetId:String(u.assetId||"").trim(),documentId:typeof u.documentId=="string"&&u.documentId.trim().length>0?u.documentId.trim():null,documentVersion:Number.isFinite(Number(u.documentVersion))?Math.max(1,Math.floor(Number(u.documentVersion))):null,title:typeof u.title=="string"&&u.title.trim().length>0?u.title.trim():null,status:u.status==="resolved"?"resolved":"open",comments:[],createdByActorId:typeof u.createdByActorId=="string"&&u.createdByActorId.trim().length>0?u.createdByActorId.trim():null,updatedByActorId:typeof u.updatedByActorId=="string"&&u.updatedByActorId.trim().length>0?u.updatedByActorId.trim():null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),deletedAt:typeof u.deletedAt=="string"&&u.deletedAt.trim().length>0?u.deletedAt.trim():null}})).filter(u=>u.session.id.length>0&&u.session.assetId.length>0&&!u.session.deletedAt).filter(u=>me?!0:Fe.get(u.session.id)!==u.session.updatedAt),ot=Te.filter(u=>String(u?.deletedAt||"").trim().length>0).map(u=>({sessionId:String(u?.id||"").trim(),deletedAt:String(u?.deletedAt||u?.updatedAt||u?.createdAt||t).trim()||t})).filter(u=>u.sessionId.length>0).filter(u=>me?!0:Fe.get(u.sessionId)!==u.deletedAt),Oe=Array.from(ft).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!Le.has(u)),A=[...Oe.map(u=>({sessionId:u,deletedAt:t})),...ot],G=new Set([...Oe,...ot.map(u=>u.sessionId)]),_e=Array.isArray(e.documentReviewComments)?e.documentReviewComments:[],Ne=new Set(_e.map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),Ee=new Set(_e.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),fe=e.lastPushedDocumentReviewCommentIds||new Set,nt=new Map(_e.map(u=>[String(u?.id||"").trim(),[u?.deletedAt,u?.threadStatusUpdatedAt,u?.updatedAt,u?.createdAt].map(Rt=>String(Rt||"").trim()).filter(Rt=>Number.isFinite(Date.parse(Rt))).sort().at(-1)||""]).filter(([u])=>u.length>0)),q=e.lastPushedDocumentReviewCommentWatermarks,be=!q||q.size===0,Ve=_e.map(u=>({op:"document-review-comment-upsert",comment:{id:String(u.id||"").trim(),sessionId:String(u.sessionId||"").trim(),body:String(u.body||"").trim(),anchor:u.anchor??null,order:Number.isFinite(Number(u.order))?Math.max(0,Math.floor(Number(u.order))):0,authorActorId:typeof u.authorActorId=="string"&&u.authorActorId.trim().length>0?u.authorActorId.trim():null,updatedByActorId:typeof u.updatedByActorId=="string"&&u.updatedByActorId.trim().length>0?u.updatedByActorId.trim():null,deletedByActorId:typeof u.deletedByActorId=="string"&&u.deletedByActorId.trim().length>0?u.deletedByActorId.trim():null,parentCommentId:typeof u.parentCommentId=="string"&&u.parentCommentId.trim().length>0?u.parentCommentId.trim():null,threadStatus:u.parentCommentId?null:u.threadStatus==="resolved"?"resolved":"open",threadStatusUpdatedAt:typeof u.threadStatusUpdatedAt=="string"&&u.threadStatusUpdatedAt.trim().length>0?u.threadStatusUpdatedAt.trim():null,resolvedAt:typeof u.resolvedAt=="string"&&u.resolvedAt.trim().length>0?u.resolvedAt.trim():null,resolvedByActorId:typeof u.resolvedByActorId=="string"&&u.resolvedByActorId.trim().length>0?u.resolvedByActorId.trim():null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),deletedAt:typeof u.deletedAt=="string"&&u.deletedAt.trim().length>0?u.deletedAt.trim():null}})).filter(u=>u.comment.id.length>0&&u.comment.sessionId.length>0&&!u.comment.deletedAt).filter(u=>be?!0:q.get(u.comment.id)!==([u.comment.threadStatusUpdatedAt,u.comment.updatedAt].filter(Rt=>typeof Rt=="string"&&Number.isFinite(Date.parse(Rt))).sort().at(-1)||u.comment.updatedAt)),Ce=_e.filter(u=>String(u?.deletedAt||"").trim().length>0).map(u=>({commentId:String(u?.id||"").trim(),deletedAt:String(u?.deletedAt||u?.updatedAt||u?.createdAt||t).trim()||t,deletedByActorId:typeof u?.deletedByActorId=="string"&&u.deletedByActorId.trim().length>0?u.deletedByActorId.trim():null})).filter(u=>u.commentId.length>0).filter(u=>be?!0:q.get(u.commentId)!==u.deletedAt),xe=Array.from(fe).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!Ne.has(u)),Ie=[...xe.map(u=>({commentId:u,deletedAt:t,deletedByActorId:null})),...Ce],de=new Set([...xe,...Ce.map(u=>u.commentId)]),Be=Array.isArray(e.annotatedAttachmentSessions)?e.annotatedAttachmentSessions:[],at=new Set(Be.map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),Qe=new Set(Be.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),Ze=e.lastPushedAnnotatedAttachmentSessionIds||new Set,Pe=new Map(Be.map(u=>[String(u?.id||"").trim(),String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),gt=e.lastPushedAnnotatedAttachmentSessionWatermarks,it=!gt||gt.size===0,De=Be.map(u=>({op:"annotated-attachment-session-upsert",session:{id:String(u.id||"").trim(),workspaceId:String(u.workspaceId||"").trim(),taskId:String(u.taskId||"").trim(),baseImageAssetId:String(u.baseImageAssetId||"").trim(),title:typeof u.title=="string"&&u.title.trim().length>0?u.title.trim():null,globalInstruction:typeof u.globalInstruction=="string"&&u.globalInstruction.trim().length>0?u.globalInstruction.trim():null,annotations:Array.isArray(u.annotations)?u.annotations:[],createdByActorId:typeof u.createdByActorId=="string"&&u.createdByActorId.trim().length>0?u.createdByActorId.trim():null,updatedByActorId:typeof u.updatedByActorId=="string"&&u.updatedByActorId.trim().length>0?u.updatedByActorId.trim():null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),deletedAt:typeof u.deletedAt=="string"&&u.deletedAt.trim().length>0?u.deletedAt.trim():null}})).filter(u=>u.session.id.length>0&&u.session.workspaceId.length>0&&u.session.baseImageAssetId.length>0&&!u.session.deletedAt).filter(u=>it?!0:gt.get(u.session.id)!==u.session.updatedAt),bt=Be.filter(u=>String(u?.deletedAt||"").trim().length>0).map(u=>({sessionId:String(u?.id||"").trim(),deletedAt:String(u?.deletedAt||u?.updatedAt||u?.createdAt||t).trim()||t})).filter(u=>u.sessionId.length>0).filter(u=>it?!0:gt.get(u.sessionId)!==u.deletedAt),Et=Array.from(Ze).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!at.has(u)),mt=[...Et.map(u=>({sessionId:u,deletedAt:t})),...bt],qt=new Set([...Et,...bt.map(u=>u.sessionId)]),et=Array.isArray(e.taskforceAgents)?e.taskforceAgents:[],Y=new Set(et.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),le=new Map(et.map(u=>[String(u?.id||"").trim(),String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),Ke=e.lastPushedTaskforceAgentWatermarks,It=!Ke||Ke.size===0,vt=et.map(u=>({op:"taskforce-agent-upsert",agent:{id:String(u.id||"").trim(),tenantId:String(u.tenantId||"").trim()||void 0,workspaceId:String(u.workspaceId||"").trim(),...Object.prototype.hasOwnProperty.call(u,"definition")?{definition:u.definition,definitionRevision:Number(u.definitionRevision)||0,definitionHash:String(u.definitionHash||"").trim(),lifecycleStatus:String(u.lifecycleStatus||"").trim(),managedProfileId:typeof u.managedProfileId=="string"&&u.managedProfileId.trim()||null,configurationState:u.configurationState,configurationIssues:Array.isArray(u.configurationIssues)?u.configurationIssues:[]}:{},name:String(u.name||"").trim()||"Agent",modelProvider:"taskforce_hq",providerKey:String(u.providerKey||"").trim(),modelKey:String(u.modelKey||"").trim(),modelTier:String(u.modelTier||"").trim(),systemPrompt:typeof u.systemPrompt=="string"?u.systemPrompt:"",enabled:u.enabled!==!1,createdByUserId:typeof u.createdByUserId=="string"&&u.createdByUserId.trim().length>0?u.createdByUserId.trim():null,updatedByUserId:typeof u.updatedByUserId=="string"&&u.updatedByUserId.trim().length>0?u.updatedByUserId.trim():null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),deletedAt:typeof u.deletedAt=="string"&&u.deletedAt.trim().length>0?u.deletedAt.trim():null}})).filter(u=>u.agent.id.length>0&&u.agent.workspaceId.length>0).filter(u=>It?!0:Ke.get(u.agent.id)!==(u.agent.deletedAt||u.agent.updatedAt)),Mt=Array.isArray(e.agentRoles)?e.agentRoles:[];Mt.forEach(u=>{const Rt=String(u?.id||"").trim();if(!Rt)return;const pr=`agent-role:${Rt}`;String(u?.deletedAt||"").trim()||Y.add(pr),le.set(pr,String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim())});const gr=Mt.map(u=>({op:"agent-role-upsert",role:{id:String(u.id||"").trim(),tenantId:String(u.tenantId||"").trim()||void 0,workspaceId:String(u.workspaceId||"").trim(),lifecycleStatus:u.lifecycleStatus==="retired"?"retired":"active",currentRevision:Number(u.currentRevision)||0,currentContentHash:String(u.currentContentHash||"").trim(),definition:u.definition,revisions:Array.isArray(u.revisions)?u.revisions:[],createdByActorId:typeof u.createdByActorId=="string"&&u.createdByActorId.trim()||null,updatedByActorId:typeof u.updatedByActorId=="string"&&u.updatedByActorId.trim()||null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),retiredAt:typeof u.retiredAt=="string"&&u.retiredAt.trim()||null,deletedAt:typeof u.deletedAt=="string"&&u.deletedAt.trim()||null}})).filter(u=>u.role.id.length>0&&u.role.workspaceId.length>0&&u.role.currentRevision>0&&u.role.currentContentHash.length>0).filter(u=>{if(It)return!0;const Rt=`agent-role:${u.role.id}`;return Ke.get(Rt)!==(u.role.deletedAt||u.role.updatedAt)}),Zt=Array.isArray(e.taskforceAgentSkills)?e.taskforceAgentSkills:[],or=new Set(Zt.map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),Dt=new Map(Zt.map(u=>[String(u?.id||"").trim(),String(u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),lr=e.lastPushedTaskforceAgentSkillWatermarks,Rr=!lr||lr.size===0,Lr=Zt.map(u=>({op:"taskforce-agent-skill-upsert",skill:{...u,id:String(u.id||"").trim(),tenantId:String(u.tenantId||"").trim()||void 0,workspaceId:String(u.workspaceId||"").trim(),revision:Number(u.revision),contentHash:String(u.contentHash||"").trim(),createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim()}})).filter(u=>u.skill.id.length>0&&u.skill.workspaceId.length>0&&Number.isInteger(u.skill.revision)&&u.skill.revision>0).filter(u=>Rr?!0:lr.get(u.skill.id)!==u.skill.updatedAt),Dr=Array.isArray(e.agentConversations)?e.agentConversations:[],Me=new Set(Dr.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),rt=new Map(Dr.map(u=>[String(u?.id||"").trim(),String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),pt=e.lastPushedAgentConversationWatermarks,ht=!pt||pt.size===0,At=Dr.map(u=>({op:"agent-conversation-upsert",conversation:{id:String(u.id||"").trim(),tenantId:String(u.tenantId||"").trim()||void 0,workspaceId:String(u.workspaceId||"").trim(),agentId:String(u.agentId||"").trim(),taskId:typeof u.taskId=="string"&&u.taskId.trim().length>0?u.taskId.trim():null,title:String(u.title||"Agent chat").trim()||"Agent chat",messages:Y1(u.messages),modelProvider:typeof u.modelProvider=="string"&&u.modelProvider.trim().length>0?u.modelProvider.trim():null,modelId:typeof u.modelId=="string"&&u.modelId.trim().length>0?u.modelId.trim():null,usage:u.usage&&typeof u.usage=="object"?u.usage:null,latencyMs:Number.isFinite(Number(u.latencyMs))?Number(u.latencyMs):null,createdByUserId:typeof u.createdByUserId=="string"&&u.createdByUserId.trim().length>0?u.createdByUserId.trim():null,updatedByUserId:typeof u.updatedByUserId=="string"&&u.updatedByUserId.trim().length>0?u.updatedByUserId.trim():null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),deletedAt:typeof u.deletedAt=="string"&&u.deletedAt.trim().length>0?u.deletedAt.trim():null}})).filter(u=>u.conversation.id.length>0&&u.conversation.workspaceId.length>0&&u.conversation.agentId.length>0).filter(u=>ht?!0:pt.get(u.conversation.id)!==(u.conversation.deletedAt||u.conversation.updatedAt)),Ft=hP(Array.isArray(e.taskEvents)?e.taskEvents:[]),Tt=new Map(Ft.map(u=>[String(u?.id||"").trim(),String(u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),$t=e.lastPushedTaskEventWatermarks,Ct=!$t||$t.size===0,Wt=Ft.map(u=>{const Rt=u.entityType==="initiative"||u.entityType==="workstream"?u.entityType:"task",pr=String(u.entityId||u.taskId||"").trim(),nr={id:String(u.id||"").trim(),workspaceId:String(u.workspaceId||"").trim(),entityType:Rt,entityId:pr,taskId:Rt==="task"?String(u.taskId||pr).trim():void 0,action:String(u.action||"").trim(),actor:String(u.actor||"system").trim()||"system",actorType:u.actorType==="ai"||u.actorType==="human"||u.actorType==="system"?u.actorType:"system",details:u.details&&typeof u.details=="object"&&!Array.isArray(u.details)?u.details:{},createdAt:String(u.createdAt||"").trim()};return Rt==="task"?{op:"task-event-upsert",event:{...nr,entityType:"task",taskId:String(nr.taskId||pr).trim()}}:{op:"entity-event-upsert",event:{...nr,entityType:Rt,taskId:void 0}}}).filter(u=>u.event.id.length>0&&u.event.entityId.length>0&&u.event.workspaceId.length>0&&u.event.action.length>0&&Number.isFinite(Date.parse(u.event.createdAt))).filter(u=>Ct?!0:$t.get(u.event.id)!==u.event.createdAt),Ot=lI({taxonomyState:e.taxonomyState,taxonomies:e.taxonomies}),vr=Ot.length>0&&e.lastPushedTaxonomyChangeKey!==Ot,xt=[...U,...ue,...oe,...vr&&e.taxonomyState&&typeof e.taxonomyState=="object"?[{op:"taxonomy-upsert",taxonomyState:e.taxonomyState,updatedAt:t}]:vr&&Array.isArray(e.taxonomies)?[{op:"taxonomy-upsert",taxonomies:e.taxonomies,updatedAt:t}]:[],...B,...z,...Array.from(Ae).map(u=>({op:"document-delete",path:u,deletedAt:t})),...ae,...Array.from(ke).map(u=>({op:"asset-delete",path:u,deletedAt:t})),...ve,...A.map(u=>({op:"document-review-session-delete",sessionId:u.sessionId,deletedAt:u.deletedAt})),...Ve,...Ie.map(u=>({op:"document-review-comment-delete",commentId:u.commentId,deletedAt:u.deletedAt,deletedByActorId:u.deletedByActorId})),...De,...mt.map(u=>({op:"annotated-attachment-session-delete",sessionId:u.sessionId,deletedAt:u.deletedAt})),...vt,...gr,...Lr,...At,...Wt,...w,...S,...I.filter(u=>!u.relationship.deletedAt),...I.filter(u=>!!u.relationship.deletedAt),...Array.from(R).map(u=>i(u))],ct=e.baselineResetReason??null,tr=u=>{const Rt=u.upsertCount+(u.deleteCount||0);if(u.currentCount===0&&Rt===0)return{mode:"none",reason:null,currentCount:0,baselineCount:u.baselineCount,changeCount:Rt};if(u.alwaysFull)return{mode:Rt>0?"send-all":"none",reason:Rt>0?"full-state-domain":null,currentCount:u.currentCount,baselineCount:u.baselineCount,changeCount:Rt};const pr=u.baselineCount===0&&u.currentCount>0&&u.upsertCount>=u.currentCount;return{mode:pr?"send-all":"delta",reason:pr?ct||"missing-baseline":null,currentCount:u.currentCount,baselineCount:u.baselineCount,changeCount:Rt}},$r=xt.reduce((u,Rt)=>{const pr=String(Rt.op||"").trim();return u[pr]=(u[pr]||0)+1,u},{});return{changes:xt,currentTaskIds:new Set(Array.from(b).filter(u=>!r.has(u))),currentTaskWatermarks:new Map(Array.from(g.entries()).filter(([u])=>!r.has(u))),currentTaskChangeKeys:new Map(Array.from(h.entries()).filter(([u])=>!r.has(u))),currentTaskRelationshipChangeKeys:N,currentTaxonomyChangeKey:Ot,deleteTaskIds:R,currentInitiativeIds:$,currentInitiativeWatermarks:j,currentWorkstreamIds:ne,currentWorkstreamWatermarks:L,currentAiProfileIds:ge,currentAiProfileWatermarks:je,currentAiProfileChangeKeys:qe,currentDocumentPaths:K,deleteDocumentPaths:Ae,currentDocumentWatermarks:re,currentAssetPaths:we,deleteAssetPaths:ke,currentAssetWatermarks:ee,currentDocumentReviewSessionIds:Ue,deleteDocumentReviewSessionIds:G,currentDocumentReviewSessionWatermarks:He,currentDocumentReviewCommentIds:Ee,deleteDocumentReviewCommentIds:de,currentDocumentReviewCommentWatermarks:nt,currentAnnotatedAttachmentSessionIds:Qe,deleteAnnotatedAttachmentSessionIds:qt,currentAnnotatedAttachmentSessionWatermarks:Pe,currentTaskforceAgentIds:Y,currentTaskforceAgentWatermarks:le,currentTaskforceAgentSkillIds:or,currentTaskforceAgentSkillWatermarks:Dt,currentAgentConversationIds:Me,currentAgentConversationWatermarks:rt,currentTaskEventWatermarks:Tt,pushedWatermarks:y,pushedTaskChangeKeys:k,deltaDiagnostics:{totalChanges:xt.length,byOp:$r,baselineResetReason:ct,domains:{tasks:tr({currentCount:b.size,baselineCount:l?.size||0,upsertCount:w.length+S.length,deleteCount:R.size}),taskRelationships:tr({currentCount:N.size,baselineCount:P?.size||0,upsertCount:$r["task-relationship-upsert"]||0,deleteCount:$r["task-relationship-delete"]||0}),initiatives:tr({currentCount:$.size,baselineCount:x?.size||0,upsertCount:U.length}),workstreams:tr({currentCount:ne.size,baselineCount:ie?.size||0,upsertCount:ue.length}),aiProfiles:tr({currentCount:ge.size,baselineCount:Ye?.size||0,upsertCount:B.length}),documents:tr({currentCount:K.size,baselineCount:F?.size||0,upsertCount:z.length,deleteCount:Ae.size}),assets:tr({currentCount:we.size,baselineCount:Z?.size||0,upsertCount:ae.length,deleteCount:ke.size}),documentReviewSessions:tr({currentCount:Ue.size,baselineCount:Fe?.size||0,upsertCount:ve.length,deleteCount:G.size}),documentReviewComments:tr({currentCount:Ee.size,baselineCount:q?.size||0,upsertCount:Ve.length,deleteCount:de.size}),annotatedAttachmentSessions:tr({currentCount:Qe.size,baselineCount:gt?.size||0,upsertCount:De.length,deleteCount:qt.size}),taskforceAgents:tr({currentCount:Y.size,baselineCount:Ke?.size||0,upsertCount:vt.length+gr.length}),taskforceAgentSkills:tr({currentCount:or.size,baselineCount:lr?.size||0,upsertCount:Lr.length}),agentConversations:tr({currentCount:Me.size,baselineCount:pt?.size||0,upsertCount:At.length}),taskEvents:tr({currentCount:Tt.size,baselineCount:$t?.size||0,upsertCount:Wt.length}),taxonomy:tr({currentCount:e.taxonomyState&&typeof e.taxonomyState=="object"||Array.isArray(e.taxonomies)?1:0,baselineCount:e.lastPushedTaxonomyChangeKey?1:0,upsertCount:$r["taxonomy-upsert"]||0})}}}}function kP(e){const t=(e.tasks||[]).map(c=>`${c.id}:${c.updatedAt||c.createdAt||""}:${c.status}`).sort(),r=(e.archivedTasks||[]).map(c=>`${c.id}:${c.updatedAt||c.createdAt||""}:${c.status}`).sort(),n=e.pendingDeletedTaskIds?Array.from(e.pendingDeletedTaskIds).sort():[],s=(e.taskRelationships||[]).filter(c=>String(c?.id||"").trim().length>0&&Number.isFinite(Date.parse(String(c?.updatedAt||"")))).map(c=>({id:String(c.id||"").trim(),changeKey:Ew(c)})).sort((c,d)=>c.id.localeCompare(d.id)||c.changeKey.localeCompare(d.changeKey)),i=(e.initiatives||[]).map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),title:String(c.title||"").trim(),ownerId:typeof c.ownerId=="string"?c.ownerId.trim():"",comments:nm(c.comments)||[],attachments:am(c.attachments)||[],isArchived:!!c.isArchived,icon:c.icon??null,color:c.color??null,identityUpdatedAt:String(c.identityUpdatedAt||"").trim()})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)),l=(e.workstreams||[]).map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),initiativeId:typeof c.initiativeId=="string"?c.initiativeId.trim():"",title:String(c.title||"").trim(),ownerId:typeof c.ownerId=="string"?c.ownerId.trim():"",comments:nm(c.comments)||[],attachments:am(c.attachments)||[],isArchived:!!c.isArchived,icon:c.icon??null,color:c.color??null,identityUpdatedAt:String(c.identityUpdatedAt||"").trim()})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id));return JSON.stringify({workspaceId:e.workspaceId,initiatives:i,workstreams:l,taskRelationships:s,taxonomyState:e.taxonomyState&&typeof e.taxonomyState=="object"?e.taxonomyState:null,taxonomies:Array.isArray(e.taxonomies)?e.taxonomies:[],aiProfiles:Array.isArray(e.aiProfiles)?e.aiProfiles.map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),name:String(c.name||"").trim(),username:String(c.username||"").trim(),archivedAt:String(c.archivedAt||"").trim(),archivedReason:String(c.archivedReason||"").trim(),mergedIntoProfileId:String(c.mergedIntoProfileId||"").trim(),rosterStateUpdatedAt:String(c.rosterStateUpdatedAt||"").trim()})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],taskEvents:Array.isArray(e.taskEvents)?e.taskEvents.map(c=>({id:String(c.id||"").trim(),taskId:String(c.taskId||"").trim(),action:String(c.action||"").trim(),actor:String(c.actor||"").trim(),actorType:c.actorType==="ai"||c.actorType==="human"||c.actorType==="system"?c.actorType:"system",createdAt:String(c.createdAt||"").trim()})).filter(c=>c.id.length>0&&c.taskId.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],documents:Array.isArray(e.documents)?e.documents.map(c=>({path:String(c.path||"").trim(),updatedAt:String(c.updatedAt||"").trim(),length:typeof c.content=="string"?c.content.length:0})).filter(c=>c.path.length>0).sort((c,d)=>c.path.localeCompare(d.path)):[],assets:Array.isArray(e.assets)?e.assets.map(c=>({path:String(c.path||"").trim(),updatedAt:String(c.updatedAt||"").trim(),length:typeof c.contentBase64=="string"?c.contentBase64.length:0,kind:c.kind==="image"?"image":"file"})).filter(c=>c.path.length>0).sort((c,d)=>c.path.localeCompare(d.path)):[],documentReviewSessions:Array.isArray(e.documentReviewSessions)?e.documentReviewSessions.map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),assetId:String(c.assetId||"").trim(),status:c.status==="resolved"?"resolved":"open",deletedAt:String(c.deletedAt||"").trim(),commentCount:Array.isArray(c.comments)?c.comments.length:0})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],documentReviewComments:Array.isArray(e.documentReviewComments)?e.documentReviewComments.map(c=>({id:String(c.id||"").trim(),sessionId:String(c.sessionId||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),deletedAt:String(c.deletedAt||"").trim(),bodyLength:String(c.body||"").length})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],annotatedAttachmentSessions:Array.isArray(e.annotatedAttachmentSessions)?e.annotatedAttachmentSessions.map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),taskId:String(c.taskId||"").trim(),baseImageAssetId:String(c.baseImageAssetId||"").trim(),deletedAt:String(c.deletedAt||"").trim(),annotationCount:Array.isArray(c.annotations)?c.annotations.length:0})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],taskforceAgents:Array.isArray(e.taskforceAgents)?e.taskforceAgents.map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),deletedAt:String(c.deletedAt||"").trim(),definitionRevision:Number(c.definitionRevision)||0,definitionHash:String(c.definitionHash||"").trim(),lifecycleStatus:String(c.lifecycleStatus||"").trim(),managedProfileId:String(c.managedProfileId||"").trim(),name:String(c.name||"").trim(),modelTier:String(c.modelTier||"").trim(),providerKey:String(c.providerKey||"").trim(),modelKey:String(c.modelKey||"").trim(),enabled:c.enabled!==!1})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],agentRoles:Array.isArray(e.agentRoles)?e.agentRoles.map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),deletedAt:String(c.deletedAt||"").trim(),lifecycleStatus:c.lifecycleStatus,currentRevision:Number(c.currentRevision)||0,currentContentHash:String(c.currentContentHash||"").trim(),revisionCount:Array.isArray(c.revisions)?c.revisions.length:0})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],taskforceAgentSkills:Array.isArray(e.taskforceAgentSkills)?e.taskforceAgentSkills.map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),revision:Number(c.revision)||0,contentHash:String(c.contentHash||"").trim(),lifecycleStatus:String(c.lifecycleStatus||"").trim(),revisionCount:Array.isArray(c.revisions)?c.revisions.length:0})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],agentConversations:Array.isArray(e.agentConversations)?e.agentConversations.map(c=>({id:String(c.id||"").trim(),agentId:String(c.agentId||"").trim(),taskId:String(c.taskId||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),deletedAt:String(c.deletedAt||"").trim(),messageCount:Array.isArray(c.messages)?c.messages.length:0,modelId:String(c.modelId||"").trim()})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],active:t,archived:r,pendingDeletes:n})}function Av(e,t,r=[],n=[]){const s=new Map;for(const i of[...e||[],...t||[]]){const l=Array.isArray(i?.taskEvents)?i.taskEvents:[];for(const c of l){const d=String(c?.id||"").trim(),f=String(c?.taskId||i?.id||"").trim(),p=String(c?.workspaceId||"").trim(),g=String(c?.createdAt||"").trim();if(!d||!f||!p||!g)continue;const h={id:d,workspaceId:p,entityType:"task",entityId:f,taskId:f,action:String(c?.action||"").trim(),actor:String(c?.actor||"system").trim()||"system",actorType:c?.actorType==="ai"||c?.actorType==="human"||c?.actorType==="system"?c.actorType:"system",details:c?.details,createdAt:g},y=s.get(d);(!y||h.createdAt>y.createdAt)&&s.set(d,h)}}for(const i of r||[]){const l=Array.isArray(i?.entityEvents)?i.entityEvents:[];for(const c of l){const d=String(c?.id||"").trim(),f=String(c?.entityId||i?.id||"").trim(),p=String(c?.workspaceId||"").trim(),g=String(c?.createdAt||"").trim();if(!d||!f||!p||!g)continue;const h={id:d,workspaceId:p,entityType:"initiative",entityId:f,action:String(c?.action||"").trim(),actor:String(c?.actor||"system").trim()||"system",actorType:c?.actorType==="ai"||c?.actorType==="human"||c?.actorType==="system"?c.actorType:"system",details:c?.details,createdAt:g},y=s.get(d);(!y||h.createdAt>y.createdAt)&&s.set(d,h)}}for(const i of n||[]){const l=Array.isArray(i?.entityEvents)?i.entityEvents:[];for(const c of l){const d=String(c?.id||"").trim(),f=String(c?.entityId||i?.id||"").trim(),p=String(c?.workspaceId||"").trim(),g=String(c?.createdAt||"").trim();if(!d||!f||!p||!g)continue;const h={id:d,workspaceId:p,entityType:"workstream",entityId:f,action:String(c?.action||"").trim(),actor:String(c?.actor||"system").trim()||"system",actorType:c?.actorType==="ai"||c?.actorType==="human"||c?.actorType==="system"?c.actorType:"system",details:c?.details,createdAt:g},y=s.get(d);(!y||h.createdAt>y.createdAt)&&s.set(d,h)}}return Array.from(s.values()).sort((i,l)=>i.createdAt!==l.createdAt?i.createdAt.localeCompare(l.createdAt):i.id.localeCompare(l.id))}function Qa(e){return Object.freeze(structuredClone(Array.from(e||[])))}function pS(e,t){return new Set(e?Array.from(e):t)}function vP(e){const t=Qa(e.tasks),r=Qa(e.archivedTasks),n=Qa(e.deletedTasks),s=Qa(e.initiatives),i=Qa(e.workstreams),l=Qa(e.documents),c=Qa(e.assets),d=e.pendingDeletedTaskIds?new Set(e.pendingDeletedTaskIds):new Set,f=e.pendingDeletedTaskWatermarks?new Map(e.pendingDeletedTaskWatermarks):new Map;if(!e.pendingDeletedTaskIds&&!e.pendingDeletedTaskWatermarks)for(const g of n){const h=String(g?.taskId||"").trim(),y=String(g?.deletedAt||"").trim();h&&(d.add(h),Number.isFinite(Date.parse(y))&&f.set(h,y))}const p=e.taskEvents?Qa(e.taskEvents):Object.freeze(Av(t,r,s,i));return Object.freeze({workspaceId:String(e.workspaceId||"").trim(),tasks:t,archivedTasks:r,deletedTasks:n,pendingDeletedTaskIds:d,pendingDeletedTaskWatermarks:f,taskRelationships:Qa(e.taskRelationships),initiatives:s,workstreams:i,taxonomies:Qa(e.taxonomies),taxonomyState:e.taxonomyState?structuredClone(e.taxonomyState):void 0,aiProfiles:Qa(e.aiProfiles),documents:l,assets:c,currentDocumentPaths:pS(e.currentDocumentPaths,l.map(g=>g.path)),currentAssetPaths:pS(e.currentAssetPaths,c.map(g=>g.path)),documentReviewSessions:Qa(e.documentReviewSessions),documentReviewComments:Qa(e.documentReviewComments),annotatedAttachmentSessions:Qa(e.annotatedAttachmentSessions),taskforceAgents:Qa(e.taskforceAgents),agentRoles:Qa(e.agentRoles),taskforceAgentSkills:Qa(e.taskforceAgentSkills),agentConversations:Qa(e.agentConversations),taskEvents:p})}function vo(e){return new Set(e)}function fs(e){return new Map(e)}function wP(e,t){return new Set(V1(Array.from(e),t,r=>O1(String(r||"").trim())).keys())}function bP(e){const{snapshot:t,baseline:r}=e,n=e.forceAllAiProfiles===!0,s=n?wP(t.aiProfiles,t.workspaceId):new Set,i=vo(r.lastPushedAssetPaths),l=fs(r.lastPushedAssetWatermarks),c=vo(r.lastPushedDocumentPaths),d=fs(r.lastPushedDocumentWatermarks);for(const g of[...s,...e.forceAssetPaths||[]])i.delete(g),l.delete(g);for(const g of e.forceDocumentPaths||[])c.delete(g),d.delete(g);const f=structuredClone(yP({tasks:Array.from(t.tasks),archivedTasks:Array.from(t.archivedTasks),taskRelationships:Array.from(t.taskRelationships),taskEvents:Array.from(t.taskEvents),lastPushedTaskIds:vo(r.lastPushedTaskIds),pendingDeletedTaskIds:vo(t.pendingDeletedTaskIds),pendingDeletedTaskWatermarks:fs(t.pendingDeletedTaskWatermarks),deletedTasks:Array.from(t.deletedTasks),initiatives:Array.from(t.initiatives),workstreams:Array.from(t.workstreams),taxonomies:Array.from(t.taxonomies),taxonomyState:t.taxonomyState,lastPushedInitiativeIds:vo(r.lastPushedInitiativeIds),lastPushedInitiativeWatermarks:fs(r.lastPushedInitiativeWatermarks),lastPushedWorkstreamIds:vo(r.lastPushedWorkstreamIds),lastPushedWorkstreamWatermarks:fs(r.lastPushedWorkstreamWatermarks),aiProfiles:Array.from(t.aiProfiles),lastPushedAiProfileIds:n?new Set:vo(r.lastPushedAiProfileIds),lastPushedAiProfileWatermarks:n?new Map:fs(r.lastPushedAiProfileWatermarks),lastPushedAiProfileChangeKeys:n?new Map:fs(r.lastPushedAiProfileChangeKeys),documents:Array.from(t.documents),assets:Array.from(t.assets),currentDocumentPaths:t.currentDocumentPaths,currentAssetPaths:t.currentAssetPaths,documentReviewSessions:Array.from(t.documentReviewSessions),documentReviewComments:Array.from(t.documentReviewComments),annotatedAttachmentSessions:Array.from(t.annotatedAttachmentSessions),taskforceAgents:Array.from(t.taskforceAgents),agentRoles:Array.from(t.agentRoles),taskforceAgentSkills:Array.from(t.taskforceAgentSkills),agentConversations:Array.from(t.agentConversations),lastPushedDocumentPaths:c,lastPushedDocumentWatermarks:d,lastPushedAssetPaths:i,lastPushedAssetWatermarks:l,lastPushedDocumentReviewSessionIds:vo(r.lastPushedDocumentReviewSessionIds),lastPushedDocumentReviewSessionWatermarks:fs(r.lastPushedDocumentReviewSessionWatermarks),lastPushedDocumentReviewCommentIds:vo(r.lastPushedDocumentReviewCommentIds),lastPushedDocumentReviewCommentWatermarks:fs(r.lastPushedDocumentReviewCommentWatermarks),lastPushedAnnotatedAttachmentSessionIds:vo(r.lastPushedAnnotatedAttachmentSessionIds),lastPushedAnnotatedAttachmentSessionWatermarks:fs(r.lastPushedAnnotatedAttachmentSessionWatermarks),lastPushedTaskforceAgentIds:n?new Set:vo(r.lastPushedTaskforceAgentIds),lastPushedTaskforceAgentWatermarks:n?new Map:fs(r.lastPushedTaskforceAgentWatermarks),lastPushedTaskforceAgentSkillIds:n?new Set:vo(r.lastPushedTaskforceAgentSkillIds),lastPushedTaskforceAgentSkillWatermarks:n?new Map:fs(r.lastPushedTaskforceAgentSkillWatermarks),lastPushedAgentConversationIds:vo(r.lastPushedAgentConversationIds),lastPushedAgentConversationWatermarks:fs(r.lastPushedAgentConversationWatermarks),lastPushedTaskEventWatermarks:fs(r.lastPushedTaskEventWatermarks),baselineResetReason:r.baselineResetReason,lastPushedWatermarks:fs(r.lastPushedWatermarks),lastPushedTaskChangeKeys:fs(r.lastPushedTaskChangeKeys),lastPushedTaskRelationshipChangeKeys:fs(r.lastPushedTaskRelationshipChangeKeys),lastPushedTaxonomyChangeKey:r.lastPushedTaxonomyChangeKey})),p=dI(t);return Object.freeze({snapshot:t,signature:p,payload:f})}function dI(e){return kP({workspaceId:e.workspaceId,tasks:Array.from(e.tasks),archivedTasks:Array.from(e.archivedTasks),taskRelationships:Array.from(e.taskRelationships),taskEvents:Array.from(e.taskEvents),pendingDeletedTaskIds:vo(e.pendingDeletedTaskIds),initiatives:Array.from(e.initiatives),workstreams:Array.from(e.workstreams),taxonomies:Array.from(e.taxonomies),taxonomyState:e.taxonomyState,aiProfiles:Array.from(e.aiProfiles),documents:Array.from(e.documents),assets:Array.from(e.assets),documentReviewSessions:Array.from(e.documentReviewSessions),documentReviewComments:Array.from(e.documentReviewComments),annotatedAttachmentSessions:Array.from(e.annotatedAttachmentSessions),taskforceAgents:Array.from(e.taskforceAgents),agentRoles:Array.from(e.agentRoles),taskforceAgentSkills:Array.from(e.taskforceAgentSkills),agentConversations:Array.from(e.agentConversations)})}function uI(e){return _l(e)}function dc(e){return Vn(e)}function SP(e,t,r){if(!e||typeof e!="object"||Array.isArray(e))return null;const n=e,s=String(n.id||"").trim(),i=String(n.workspaceId||t||"").trim(),l=Number(n.currentRevision),c=Number.isInteger(l)&&l>0?l:0,d=String(n.currentContentHash||"").trim(),f=n.lifecycleStatus;return!s||!i||!c||!d||f!=="active"&&f!=="retired"||t&&i!==t?null:{id:s,tenantId:uI(n.tenantId),workspaceId:i,lifecycleStatus:f,currentRevision:c,currentContentHash:d,definition:n.definition,revisions:Array.isArray(n.revisions)?n.revisions.map(p=>({roleId:String(p?.roleId||s).trim()||s,revision:Number.isInteger(Number(p?.revision))&&Number(p?.revision)>0?Number(p.revision):0,definition:p?.definition,contentHash:String(p?.contentHash||"").trim(),createdByActorId:dc(p?.createdByActorId),createdAt:String(p?.createdAt||r||"").trim()})):[],createdByActorId:dc(n.createdByActorId),updatedByActorId:dc(n.updatedByActorId),createdAt:String(n.createdAt||r||"").trim(),updatedAt:String(n.updatedAt||r||n.createdAt||"").trim(),retiredAt:dc(n.retiredAt),deletedAt:dc(n.deletedAt)}}function AP(e,t,r){if(!e||typeof e!="object"||Array.isArray(e))return null;const n=e,s=String(n.id||"").trim(),i=String(n.workspaceId||t||"").trim(),l=String(n.lifecycleStatus||"").trim(),c=Number(n.revision);return!s||!i||!Number.isInteger(c)||c<1||t&&i!==t||l!=="active"&&l!=="retired"||!Array.isArray(n.revisions)?null:{id:s,tenantId:uI(n.tenantId),workspaceId:i,lifecycleStatus:l,definition:n.definition,revision:c,contentHash:String(n.contentHash||"").trim(),revisions:n.revisions.map(d=>{if(!d||typeof d!="object"||Array.isArray(d))return null;const f=d,p=Number(f.revision);return!Number.isInteger(p)||p<1?null:{revision:p,contentHash:String(f.contentHash||"").trim(),definition:f.definition,createdByActorId:dc(f.createdByActorId),createdAt:String(f.createdAt||r||"").trim()}}).filter(d=>d!==null),createdByActorId:dc(n.createdByActorId),updatedByActorId:dc(n.updatedByActorId),createdAt:String(n.createdAt||r||"").trim(),updatedAt:String(n.updatedAt||r||n.createdAt||"").trim(),retiredAt:dc(n.retiredAt),retiredByActorId:dc(n.retiredByActorId)}}function fS(e){if(!Array.isArray(e))return;const t=e.filter(r=>typeof r=="string"&&r.trim().length>0).map(r=>r.trim());return t.length>0?t:void 0}function pI(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=e;return Array.isArray(t.categories)||Array.isArray(t.types)||Array.isArray(t.priorities)||Array.isArray(t.taxonomies)||!!t.displayLabels&&typeof t.displayLabels=="object"&&!Array.isArray(t.displayLabels)}function CP(e){const t=e||{};return{categories:Array.isArray(t.categories)?t.categories.map(n=>typeof n=="string"?{value:n.toLowerCase().replace(/\s+/g,"-"),label:n}:n):[],types:Array.isArray(t.types)?t.types.map(n=>({...vx(n.value),...n,aliases:Array.isArray(n.aliases)?n.aliases.filter(i=>typeof i=="string"&&i.trim().length>0).map(i=>i.trim()):void 0,status:n.status==="retired"?"retired":"active"})):[],priorities:Array.isArray(t.priorities)?t.priorities:[],taxonomies:Array.isArray(t.taxonomies)?t.taxonomies.map(n=>({...n,aliases:fS(n.aliases),options:Array.isArray(n.options)?n.options.map(s=>({...s,aliases:fS(s.aliases),status:s.status==="retired"?"retired":"active"})):[],status:n.status==="retired"?"retired":"active",formEnabled:n.formEnabled!==!1,filterEnabled:n.filterEnabled!==!1,sortEnabled:n.sortEnabled===!0})):[],displayLabels:{category:typeof t.displayLabels?.category=="string"&&t.displayLabels.category.trim().length>0?t.displayLabels.category.trim():void 0,type:typeof t.displayLabels?.type=="string"&&t.displayLabels.type.trim().length>0?t.displayLabels.type.trim():void 0,priority:typeof t.displayLabels?.priority=="string"&&t.displayLabels.priority.trim().length>0?t.displayLabels.priority.trim():void 0}}}function fh(){return{version:2,revision:null,enabled:!1,phase:"idle",setupIntent:null,startupFullReconcileCompletedAt:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null,lastErrorMessage:null,pushBaseline:null}}function mS(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,r=t.counter,n=typeof t.writerId=="string"?t.writerId.trim():"";return!Number.isSafeInteger(r)||Number(r)<1||!n||n.length>200?null:{counter:Number(r),writerId:n}}function IP(e,t){return e?t?e.counter!==t.counter?e.counter<t.counter?-1:1:e.writerId===t.writerId?0:e.writerId<t.writerId?-1:1:1:t?-1:0}function _P(e,t){const r=String(t||"").trim();if(!r)throw new Error("Workspace sync state revision writer is required");if(r.length>200)throw new Error("Workspace sync state revision writer is too long");if(e?.counter===Number.MAX_SAFE_INTEGER)throw new Error("Workspace sync state revision counter is exhausted");return{counter:(e?.counter||0)+1,writerId:r}}function oc(e){const t=String(e||"").trim();return t.length>0?t:null}function gS(e){return String(e||"").trim().toLowerCase()==="attach-cloud-import"?"attach-cloud-import":null}function TP(e){if(!Array.isArray(e)||e.length<2)return null;const t=String(e[0]||"").trim(),r=String(e[1]||"").trim();return!t||!r?null:[t,r]}function xP(e){return Array.isArray(e)?e.map(t=>String(t||"").trim()).filter(t=>t.length>0):[]}function hS(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,r=n=>Array.isArray(t[n])?t[n].map(s=>TP(s)).filter(s=>Array.isArray(s)):[];return{taskIds:xP(t.taskIds),taskWatermarks:r("taskWatermarks"),taskChangeKeys:r("taskChangeKeys"),taskRelationshipChangeKeys:r("taskRelationshipChangeKeys"),initiativeWatermarks:r("initiativeWatermarks"),workstreamWatermarks:r("workstreamWatermarks"),aiProfileWatermarks:r("aiProfileWatermarks"),aiProfileChangeKeys:r("aiProfileChangeKeys"),documentWatermarks:r("documentWatermarks"),assetWatermarks:r("assetWatermarks"),documentReviewSessionWatermarks:r("documentReviewSessionWatermarks"),documentReviewCommentWatermarks:r("documentReviewCommentWatermarks"),annotatedAttachmentSessionWatermarks:r("annotatedAttachmentSessionWatermarks"),taskEventWatermarks:r("taskEventWatermarks"),taxonomyStateFingerprint:String(t.taxonomyStateFingerprint||"").trim(),taxonomyChangeKey:String(t.taxonomyChangeKey||"")}}function RP(e,t){if(!!!(e.enabled??e.cloudSyncEnabled))return"idle";const n=String(e.phase||"").trim().toLowerCase();if(n==="idle"||n==="provision-local"||n==="attach-cloud"||n==="active"||n==="error")return n;const s=String(e.bootstrapMode||"").trim().toLowerCase();if(s==="provision-local"||s==="attach-cloud")return s;const i=String(e.sourceOfTruth||"").trim().toLowerCase();return e.onboardingCompleted?"active":i==="cloud"?t.lastPullAt?"active":"attach-cloud":i==="local"?t.lastPullAt||t.lastPushAt?"active":"provision-local":(t.lastPullAt||t.lastPushAt,"active")}function Mk(e){const t=fh();if(!e||typeof e!="object")return{state:t,changed:!1};const r=e,n=r.lastErrorMessage,s=typeof n=="string"&&n.trim().length>0?n:null,i={version:2,revision:mS(r.revision),enabled:!!(r.enabled??r.cloudSyncEnabled),phase:"idle",setupIntent:gS(r.setupIntent),startupFullReconcileCompletedAt:oc(r.startupFullReconcileCompletedAt),pullCursor:oc(r.pullCursor),lastPullAt:oc(r.lastPullAt),lastPushAt:oc(r.lastPushAt),lastSyncedAt:oc(r.lastSyncedAt),lastErrorMessage:s,pushBaseline:hS(r.pushBaseline)};i.phase=RP(r,i),i.enabled||(i.phase="idle",i.pullCursor=null);const c=Number(r.version||0)!==2||JSON.stringify(mS(r.revision))!==JSON.stringify(i.revision)||!!(r.enabled??r.cloudSyncEnabled)!==i.enabled||String(r.phase||"").trim()!==i.phase||gS(r.setupIntent)!==i.setupIntent||oc(r.startupFullReconcileCompletedAt)!==i.startupFullReconcileCompletedAt||oc(r.pullCursor)!==i.pullCursor||oc(r.lastPullAt)!==i.lastPullAt||oc(r.lastPushAt)!==i.lastPushAt||oc(r.lastSyncedAt)!==i.lastSyncedAt||s!==i.lastErrorMessage||JSON.stringify(hS(r.pushBaseline))!==JSON.stringify(i.pushBaseline);return{state:i,changed:c}}const PP="taskforce.sync.lease.v1",EP="taskforce.sync.completed.v1",NP="taskforce.sync.lease.v1",jP=2500,DP=9e3,MP=()=>!0;function bl(e){const t=String(e||"").trim();return t.length>0&&t.toLowerCase()!=="default"}function wf(e){const t=String(e||"").trim();return t.length>0?t:null}function Lk(e){return`${PP}.${e}`}function yS(e,t){return`${EP}.${e}.${t}`}function LP(e){if(!e)return null;try{const t=JSON.parse(e),r=String(t?.workspaceId||"").trim(),n=String(t?.operation||"").trim(),s=String(t?.completedAt||"").trim();return!r||!Number.isFinite(Date.parse(s))||n!=="pull"&&n!=="push"&&n!=="repair"?null:{workspaceId:r,operation:n,completedAt:s}}catch{return null}}function OP(e){if(!e)return null;try{const t=JSON.parse(e),r=String(t?.ownerId||"").trim(),n=String(t?.workspaceId||"").trim(),s=String(t?.operation||"").trim(),i=String(t?.heartbeatAt||"").trim(),l=String(t?.expiresAt||"").trim();return!r||!n||!i||!l||s!=="pull"&&s!=="push"&&s!=="repair"?null:{ownerId:r,workspaceId:n,operation:s,heartbeatAt:i,expiresAt:l}}catch{return null}}function BP(e,t,r,n){return{ownerId:e,workspaceId:t,operation:r,heartbeatAt:new Date(n).toISOString(),expiresAt:new Date(n+DP).toISOString()}}function WP(e,t=Date.now()){if(!e)return!0;const r=Date.parse(e.expiresAt);return!Number.isFinite(r)||r<=t}function Ok(e,t){const r={...e,...t,version:2,phase:t.phase||e.phase,setupIntent:t.setupIntent===void 0?e.setupIntent??null:t.setupIntent??null,startupFullReconcileCompletedAt:t.startupFullReconcileCompletedAt===void 0?e.startupFullReconcileCompletedAt??null:wf(t.startupFullReconcileCompletedAt),pullCursor:t.pullCursor===void 0?e.pullCursor:wf(t.pullCursor),lastPullAt:t.lastPullAt===void 0?e.lastPullAt:wf(t.lastPullAt),lastPushAt:t.lastPushAt===void 0?e.lastPushAt:wf(t.lastPushAt),lastSyncedAt:t.lastSyncedAt===void 0?e.lastSyncedAt:wf(t.lastSyncedAt),lastErrorMessage:t.lastErrorMessage===void 0?e.lastErrorMessage:t.lastErrorMessage??null,pushBaseline:t.pushBaseline===void 0?e.pushBaseline??null:t.pushBaseline??null};return r.enabled||(r.phase="idle",r.setupIntent=null,r.pullCursor=null),r}function kS(e){return{...e,pushBaseline:null}}function $P(e){const{currentWorkspaceId:t,setWorkspaceCloudSyncEnabled:r,setWorkspaceSyncPhase:n,setWorkspaceSyncSetupIntent:s,setWorkspaceLastPullAt:i,setWorkspaceLastPushAt:l,setWorkspaceLastErrorMessage:c,isWorkspaceOperationAuthorized:d=MP}=e,[f,p]=o.useState(null),g=o.useRef(null),h=o.useRef(null),y=o.useRef(0),k=o.useRef(!1),w=o.useRef(!1),S=o.useRef(""),b=o.useRef(""),v=o.useRef(new Set),T=o.useRef(new Set),R=o.useRef(new Map),P=o.useRef(null),N=o.useRef(fh()),I=o.useRef(""),$=o.useRef(null),j=o.useRef(null),x=o.useRef(null),V=o.useRef(null);if(!I.current){const ee=Date.now().toString(36),Z=Math.random().toString(36).slice(2,10);I.current=`sync-lease-${ee}-${Z}`}const U=o.useCallback(()=>{y.current=0,h.current=null,g.current!==null&&typeof window<"u"&&(window.clearTimeout(g.current),g.current=null),p(null)},[]),ne=o.useCallback((ee,Z)=>{if(typeof window>"u"||!d())return;const H=Math.max(1,y.current+1);y.current=H;const ae=M1(H),Te=Number(Z?.minDelayMs),Le=Number.isFinite(Te)&&Te>0?Math.max(ae,Math.floor(Te)):ae,Ue=Date.now()+Le;h.current=Ue,p(new Date(Ue).toISOString()),g.current!==null&&window.clearTimeout(g.current),g.current=window.setTimeout(()=>{g.current=null,h.current=null,p(null),d()&&ee()},Le)},[d]),L=o.useCallback(()=>{const ee=h.current;return typeof ee=="number"&&Number.isFinite(ee)&&ee>Date.now()},[]),ie=o.useCallback(ee=>{if(typeof window>"u")return null;const Z=String(ee||"").trim();return bl(Z)?OP(window.localStorage.getItem(Lk(Z))):null},[]),J=o.useCallback((ee,Z)=>{if(typeof window>"u")return null;const H=String(ee||"").trim();if(!bl(H))return null;try{const ae=LP(window.localStorage.getItem(yS(H,Z)));return ae?.workspaceId===H&&ae.operation===Z?ae:null}catch{return null}},[]),ue=o.useCallback(ee=>{const Z=String(ee||"").trim();if(Z)try{V.current?.postMessage({workspaceId:Z})}catch{}},[]),oe=o.useCallback((ee,Z)=>{const H=String(ee||"").trim();if(bl(H))try{V.current?.postMessage({kind:"state",workspaceId:H,state:kS(Z)})}catch{}},[]),ge=o.useCallback((ee,Z,H=new Date().toISOString())=>{if(typeof window>"u")return;const ae=String(ee||"").trim();if(!(!bl(ae)||!Number.isFinite(Date.parse(H))))try{window.localStorage.setItem(yS(ae,Z),JSON.stringify({workspaceId:ae,operation:Z,completedAt:new Date(H).toISOString()}))}catch{return}},[]),je=o.useCallback((ee,Z,H,ae=Date.now())=>{const Te=J(ee,Z),Le=Te?Date.parse(Te.completedAt):NaN,Ue=Number(H);return Number.isFinite(Le)&&Number.isFinite(Ue)&&Ue>0&&Le<=ae&&ae-Le<Ue},[J]),qe=o.useCallback((ee,Z)=>{if(typeof window>"u")return null;const H=String(ee||"").trim();if(!bl(H))return null;const ae=BP(I.current,H,Z,Date.now());try{window.localStorage.setItem(Lk(H),JSON.stringify(ae))}catch{return null}return ue(H),ae},[ue]),Ye=o.useCallback(()=>{x.current!==null&&typeof window<"u"&&(window.clearInterval(x.current),x.current=null)},[]),he=o.useCallback((ee,Z)=>{if(typeof window>"u")return;const H=String(ee||$.current||"").trim();if(!H)return;const ae=ie(H),Te=ae?.ownerId===I.current;if(!(!Z?.force&&ae&&!Te)){Ye();try{window.localStorage.removeItem(Lk(H))}catch{}$.current=null,j.current=null,ue(H)}},[ue,ie,Ye]),ce=o.useCallback((ee,Z)=>{typeof window>"u"||(Ye(),x.current=window.setInterval(()=>{if(!d()){Ye();return}const H=String($.current||"").trim(),ae=j.current;if(!H||!ae){Ye();return}if(ie(H)?.ownerId!==I.current){Ye(),$.current=null,j.current=null;return}qe(H,ae)},jP),$.current=ee,j.current=Z)},[d,ie,Ye,qe]),B=o.useCallback(async(ee,Z)=>{if(!d())return!1;if(typeof window>"u")return!0;const H=String(ee||"").trim();if(!bl(H))return!1;const ae=ie(H);if(ae?.ownerId===I.current)return qe(H,Z)?(ce(H,Z),!0):!1;if(ae&&!WP(ae)||!qe(H,Z))return!1;const Ue=ie(H);return!Ue||Ue.ownerId!==I.current?!1:(ce(H,Z),!0)},[d,ie,ce,qe]),K=o.useCallback(ee=>{he(ee,{force:!0})},[he]),Ae=o.useCallback(ee=>{const Z=N.current,H=Ok(Z,{enabled:!!ee.enabled,phase:ee.phase||Z.phase,setupIntent:ee.setupIntent,pullCursor:ee.pullCursor,lastPullAt:ee.lastPullAt,lastPushAt:ee.lastPushAt,lastSyncedAt:ee.lastSyncedAt,lastErrorMessage:ee.lastErrorMessage});N.current=H,P.current=H.pullCursor,r(H.enabled),n(H.phase),s(H.setupIntent??null),i(H.lastPullAt),l(H.lastPushAt),c(H.lastErrorMessage??null)},[r,n,s,i,l,c]),re=o.useCallback((ee,Z)=>{const H=N.current.revision,ae=ee.revision;if(ae){const Te=IP(ae,H);if(Te<0||Te===0&&!Z?.allowEqualRevision)return!1}else if(H||!Z?.allowUnversioned)return!1;return N.current=ee,Ae(ee),!0},[Ae]),F=o.useCallback(ee=>{const Z=Ok(N.current,ee);return Ae(Z),Z},[Ae]),D=o.useCallback(()=>N.current,[]),z=o.useCallback(async ee=>{const Z=Ok(N.current,{...ee,revision:_P(N.current.revision,I.current)});N.current=Z,P.current=Z.pullCursor;const H=await zf({workspaceId:t,stateKey:"workspace-sync",patch:kS(Z),throwOnError:!0,respectFailureCooldown:!1}),ae=H.response,Te=H.payload;if(H.skipped)return re(Z,{allowEqualRevision:!0})&&oe(t,Z),N.current;if(!ae)throw new Error("Failed to persist workspace sync state (missing response)");if(!ae.ok||Te?.success===!1)throw new Error(Te?.error||`Failed to persist workspace sync state (${ae.status})`);const Le=Te?.state&&typeof Te.state=="object"&&!Array.isArray(Te.state)?Mk(Te.state).state:Z;return re(Le,{allowEqualRevision:!0})&&oe(t,Le),N.current},[re,oe,t]),we=o.useCallback(async()=>{if(!bl(t)){const ee=fh();N.current=ee,Ae(ee);return}try{const ee=await fetch(`/api/taskforce/ui-state?key=workspace-sync&workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!ee.ok)return;const Z=await ee.json().catch(()=>({})),H=Mk(Z?.state&&typeof Z.state=="object"?Z.state:null);re(H.state,{allowEqualRevision:!0,allowUnversioned:!0})&&(H.changed||!H.state.revision)&&z(H.state)}catch{}},[re,t,z]),ke=o.useCallback(async(ee,Z)=>{if(!bl(t))return{success:!1,error:"Workspace setup is required before enabling sync."};try{if(!ee.enabled)return await z({enabled:!1,phase:"idle",setupIntent:null,pullCursor:null}),{success:!0};if(!Z.isAuthenticated)return{success:!1,error:"Sign in is required before enabling workspace sync."};if(!Z.cloudAuthConfigured)return{success:!1,error:"Cloud authentication endpoint is not configured."};const H=await Z.ensureCloudWorkspaceReadyForSync();return H.success?(await z({enabled:!0,phase:H.provisioned?"provision-local":"attach-cloud",setupIntent:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null}),{success:!0}):{success:!1,error:H.error||"Workspace sync handshake failed."}}catch{return{success:!1,error:"Failed to save workspace sync settings."}}},[t,z]);return o.useEffect(()=>{S.current="",b.current="",v.current=new Set,T.current=new Set,R.current=new Map,P.current=null,N.current=fh(),k.current=!1,w.current=!1,he(),U()},[U,t,he]),o.useEffect(()=>{if(typeof window>"u"||typeof BroadcastChannel>"u")return;const ee=new BroadcastChannel(NP);return V.current=ee,ee.onmessage=Z=>{const H=Z.data;if(H?.kind!=="state"||String(H.workspaceId||"").trim()!==t||!H.state||typeof H.state!="object"||Array.isArray(H.state))return;const ae=Mk(H.state);re(ae.state)},()=>{ee.onmessage=null,ee.close(),V.current===ee&&(V.current=null)}},[re,t]),o.useEffect(()=>()=>{g.current!==null&&typeof window<"u"&&(window.clearTimeout(g.current),g.current=null),he()},[he]),{workspaceRetryAt:f,isWorkspaceRetryPending:L,workspacePushInFlightRef:k,workspacePullInFlightRef:w,workspaceLastPushedSignatureRef:S,workspacePendingSignatureRef:b,workspaceLastPushedTaskIdsRef:v,workspaceDeletedTaskIdsRef:T,workspaceDeletedTaskWatermarksRef:R,workspacePullCursorRef:P,clearWorkspaceRetry:U,scheduleWorkspaceRetry:ne,persistWorkspaceSyncPatch:z,applyWorkspaceSyncPatchLocally:F,readWorkspaceSyncStateSnapshot:D,loadWorkspaceSyncState:we,applyWorkspaceSyncStateSnapshot:Ae,saveWorkspaceCloudSyncSettings:ke,acquireWorkspaceSyncLease:B,releaseWorkspaceSyncLease:he,forceClearWorkspaceSyncLease:K,readWorkspaceSyncLease:ie,readWorkspaceSyncCompletion:J,recordWorkspaceSyncCompletion:ge,wasWorkspaceSyncOperationCompletedRecently:je}}class FP{constructor(t=2048){this.maxSeenEventIds=t}seenEventIds=new Set;seenEventIdQueue=[];activeEpoch="";lastSeq=null;telemetry={accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0};process(t){const r=typeof t.eventId=="string"?t.eventId.trim():"";if(r&&this.seenEventIds.has(r))return this.telemetry.duplicateDiscarded+=1,{accepted:!1,reason:"duplicate",shouldRecover:!1};const n=typeof t.serverEpoch=="string"?t.serverEpoch.trim():"",s=Number(t.seq);if(!(n.length>0&&Number.isFinite(s)&&s>=0))return r?(this.rememberEventId(r),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1}):(this.telemetry.invalidDiscarded+=1,{accepted:!1,reason:"invalid",shouldRecover:!1});const l=Math.floor(s);if(this.activeEpoch&&this.activeEpoch!==n)return this.activeEpoch=n,this.lastSeq=l,r&&this.rememberEventId(r),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1};if(!this.activeEpoch)return this.activeEpoch=n,this.lastSeq=l,r&&this.rememberEventId(r),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1};const c=this.lastSeq;if(typeof c=="number"){if(l<=c){this.telemetry.outOfOrderDiscarded+=l===c?0:1,this.telemetry.duplicateDiscarded+=l===c?1:0;const d=l<c;return d&&(this.telemetry.recoveryTriggered+=1),{accepted:!1,reason:l===c?"duplicate":"out-of-order",shouldRecover:d}}if(l>c+1)return this.telemetry.outOfOrderDiscarded+=1,this.telemetry.recoveryTriggered+=1,{accepted:!1,reason:"out-of-order",shouldRecover:!0}}return this.lastSeq=l,r&&this.rememberEventId(r),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1}}getTelemetry(){return{...this.telemetry}}rememberEventId(t){for(this.seenEventIds.add(t),this.seenEventIdQueue.push(t);this.seenEventIdQueue.length>this.maxSeenEventIds;){const r=this.seenEventIdQueue.shift();r&&this.seenEventIds.delete(r)}}}function fI(e){const{enabled:t,workspaceId:r,websocketUrl:n,reconnectBaseMs:s=400,reconnectMaxMs:i=1e4,degradeAfterAttempts:l=5,replayLimit:c=200,onSignal:d,onTelemetry:f,userId:p}=e,[g,h]=o.useState("degraded-fallback"),y=o.useRef(null),k=o.useRef(null),w=o.useRef(0),S=o.useRef(""),b=o.useRef(!1),v=o.useRef(null),T=o.useRef(null),R=o.useRef(new FP),P=o.useRef(d),N=o.useRef(f);o.useEffect(()=>{P.current=d},[d]),o.useEffect(()=>{N.current=f},[f]);const[I,$]=o.useState({accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0}),j=o.useMemo(()=>String(r||"").trim(),[r]),x=o.useMemo(()=>String(n||"").trim(),[n]);return o.useEffect(()=>{let V=!1;const U=()=>{k.current!==null&&(window.clearTimeout(k.current),k.current=null)},ne=()=>{const he=y.current;if(y.current=null,he)try{he.close()}catch{}},L=he=>he==="taskforce:replay-gap"||he==="taskforce:replay-reset"?4:he==="taskforce:mutation"||he==="taskforce:replay"?3:1,ie=he=>{const ce=T.current;if(ce){const B=L(ce.type),K=L(he.type);if(K<B)return;K===B&&(he={...he,eventIds:Array.from(new Set([...ce.eventIds||[],...ce.eventId?[ce.eventId]:[],...he.eventIds||[],...he.eventId?[he.eventId]:[]])),invalidations:[...ce.invalidations||[],...he.invalidations||[]]})}T.current=he,v.current!==null&&window.clearTimeout(v.current),v.current=window.setTimeout(()=>{v.current=null;const B=P.current;if(!T.current||typeof B!="function")return;const K=T.current;T.current=null,B(K)},80)},J=he=>{try{const ce=JSON.parse(String(he.data||""));return!ce||typeof ce!="object"?null:ce}catch{return null}},ue=he=>{const ce=typeof he.serverEpoch=="string"?he.serverEpoch.trim():"",B=Number(he.seq);!ce||!Number.isFinite(B)||B<0||(S.current=`${ce}:${Math.floor(B)}`,b.current=!1)},oe=he=>{const ce=typeof he.entityType=="string"?he.entityType.trim():"";if(!ce)return null;const B=Array.isArray(he.affectedCollections)?he.affectedCollections.map(Ae=>typeof Ae=="string"?Ae.trim():"").filter(Boolean):void 0,K=Number(he.dataVersion);return{entityType:ce,changeType:typeof he.changeType=="string"?he.changeType.trim():void 0,entityIds:Array.isArray(he.entityIds)?he.entityIds.map(Ae=>typeof Ae=="string"?Ae.trim():"").filter(Boolean):[],affectedCollections:B,lifecycleTransition:typeof he.lifecycleTransition=="string"?he.lifecycleTransition.trim():void 0,dataVersion:Number.isFinite(K)?K:void 0}},ge=()=>{const he=R.current.getTelemetry();$(he);const ce=N.current;typeof ce=="function"&&ce(he)},je=he=>{const ce={type:"taskforce:replay",workspaceId:j,limit:c},B=S.current;B&&(ce.cursor=B),he.send(JSON.stringify(ce))},qe=()=>{if(!t||V)return;U(),w.current+=1;const he=w.current,ce=Math.max(50,Math.floor(s)),B=Math.max(ce,Math.floor(i)),K=Math.min(B,ce*Math.pow(2,Math.max(0,he-1)));h(he>=l?"degraded-fallback":"reconnecting"),k.current=window.setTimeout(()=>{V||(k.current=null,Ye())},K)},Ye=()=>{if(!t||V||!j||!x)return;ne();let he;try{he=new WebSocket(x)}catch{qe();return}y.current=he,he.addEventListener("open",()=>{w.current=0,h("connected"),he.send(JSON.stringify({type:"taskforce:subscribe",workspaceId:j,userId:p||void 0})),je(he)}),he.addEventListener("message",ce=>{const B=J(ce);if(!B||typeof B.type!="string")return;const K=typeof B.workspaceId=="string"?B.workspaceId.trim():j;if(!(!K||K!==j)){if(B.type==="taskforce:update"){ie({type:"taskforce:update",workspaceId:j,eventId:typeof B.eventId=="string"?B.eventId.trim():void 0});return}if(B.type==="taskforce:mutation"){const Ae=R.current.process({eventId:B.eventId,serverEpoch:B.serverEpoch,seq:B.seq});if(!Ae.accepted){ge(),Ae.shouldRecover&&(S.current="",b.current||(b.current=!0,ie({type:"taskforce:replay-gap",workspaceId:j})));return}ue(B),ge();const re=oe(B);ie({type:B.type,workspaceId:j,eventId:typeof B.eventId=="string"?B.eventId.trim():void 0,invalidations:re?[re]:void 0});return}if(B.type==="taskforce:replay"){const Ae=Array.isArray(B.events)?B.events:[];let re=0;const F=[],D=[];for(const z of Ae){if(!R.current.process({eventId:z.eventId,serverEpoch:z.serverEpoch,seq:z.seq}).accepted)continue;re+=1,ue(z);const ke=oe(z);ke&&F.push(ke),typeof z.eventId=="string"&&z.eventId.trim()&&D.push(z.eventId.trim())}b.current=!1,ge(),(re>0||B.truncated===!0)&&ie({type:"taskforce:replay",workspaceId:j,eventIds:D,invalidations:F}),B.truncated===!0&&je(he);return}if(B.type==="taskforce:replay-gap"||B.type==="taskforce:replay-reset"){if(S.current="",b.current)return;b.current=!0,ie({type:B.type,workspaceId:j})}}}),he.addEventListener("close",ce=>{if(y.current===he&&(y.current=null),!V&&t){const B=Number(ce?.code||0),K=String(ce?.reason||"").trim();console.warn(`[Taskforce] Realtime socket closed workspace=${j} user=${String(p||"anonymous").trim()||"anonymous"} code=${B}${K?` reason=${K}`:""}`)}qe()}),he.addEventListener("error",()=>{try{he.close()}catch{}})};return!t||!j||!x?(h("degraded-fallback"),U(),ne(),()=>{U(),ne()}):(h("reconnecting"),Ye(),()=>{V=!0,U(),v.current!==null&&(window.clearTimeout(v.current),v.current=null),T.current=null,ne()})},[t,j,x,s,i,l,c,p]),{connectionState:g,telemetry:I}}const Cv="taskforce:context-assets-mutated";function UP(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(Cv,{detail:e}))}const Iv="taskforce:ai-profiles-mutated";function mI(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(Iv,{detail:e}))}const _v="taskforce:agents-mutated";function gI(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(_v,{detail:e}))}const Tv="taskforce:agent-skills-mutated";function hI(e){typeof window>"u"||window.dispatchEvent(new CustomEvent(Tv,{detail:e}))}const zP=4,jg=100;function Of(e,t,r){if(e===null)return null;if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?e:String(e);if(typeof e=="bigint")return e.toString();if(e instanceof Date)return e.toISOString();if(t>=zP)return"[MaxDepth]";if(typeof e=="function"||typeof e=="symbol"||typeof e>"u")return String(e);if(Array.isArray(e))return e.slice(0,jg).map(n=>Of(n,t+1,r));if(e instanceof Set)return Array.from(e.values()).slice(0,jg).map(n=>Of(n,t+1,r));if(e instanceof Map){const n={};for(const[s,i]of Array.from(e.entries()).slice(0,jg))n[String(s)]=Of(i,t+1,r);return n}if(typeof e=="object"){if(r.has(e))return"[Circular]";r.add(e);const n={};for(const[s,i]of Object.entries(e).slice(0,jg))n[s]=Of(i,t+1,r);return r.delete(e),n}return String(e)}function cy(e){if(!(!e||typeof e!="object"||Array.isArray(e)))return Of(e,0,new WeakSet)}function yI(e){const t=cy(e);if(!t)return"null";try{return JSON.stringify(t)}catch{return"[UnserializableSyncEventDetails]"}}const kI="anthropic",HP="anthropic.claude-sonnet-4-6",vI=[{key:"anthropic",label:"Anthropic"},{key:"openai",label:"OpenAI"},{key:"google",label:"Google"},{key:"xai",label:"xAI"},{key:"deepseek",label:"DeepSeek"},{key:"meta",label:"Meta"},{key:"mistral",label:"Mistral AI"},{key:"amazon",label:"Amazon"}],Nw=[{key:HP,providerKey:"anthropic",label:"Claude Sonnet 4.6",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"us.anthropic.claude-sonnet-4-6",availability:"verified",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"anthropic.claude-haiku-4-5",providerKey:"anthropic",label:"Claude Haiku 4.5",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"fast",runtimeModelId:"us.anthropic.claude-haiku-4-5-20251001-v1:0",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"anthropic.claude-sonnet-5",providerKey:"anthropic",label:"Claude Sonnet 5",source:"bedrock",runtime:"bedrock-anthropic-messages",defaultTier:"balanced",runtimeModelId:"anthropic.claude-sonnet-5",availability:"account_unavailable",visible:!1,supportsTemperature:!1,defaultMaxTokens:1024},{key:"anthropic.claude-fable-5",providerKey:"anthropic",label:"Claude Fable 5",source:"bedrock",runtime:"bedrock-anthropic-messages",defaultTier:"advanced",runtimeModelId:"anthropic.claude-fable-5",availability:"account_unavailable",visible:!1,supportsTemperature:!1,defaultMaxTokens:1024},{key:"anthropic.claude-opus-4-8",providerKey:"anthropic",label:"Claude Opus 4.8",source:"bedrock",runtime:"bedrock-anthropic-messages",defaultTier:"advanced",runtimeModelId:"anthropic.claude-opus-4-8",availability:"account_unavailable",visible:!1,supportsTemperature:!1,defaultMaxTokens:1024},{key:"amazon.nova-lite",providerKey:"amazon",label:"Nova Lite",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"fast",runtimeModelId:"us.amazon.nova-lite-v1:0",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"amazon.nova-2-lite",providerKey:"amazon",label:"Nova 2 Lite",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"fast",runtimeModelId:"us.amazon.nova-2-lite-v1:0",availability:"verified",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"amazon.nova-pro",providerKey:"amazon",label:"Nova Pro",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"us.amazon.nova-pro-v1:0",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"deepseek.v3-2",providerKey:"deepseek",label:"DeepSeek V3.2",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"deepseek.v3.2",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"google.gemma-3-12b-it",providerKey:"google",label:"Gemma 3 12B IT",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"fast",runtimeModelId:"google.gemma-3-12b-it",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"meta.llama-3-3-70b-instruct",providerKey:"meta",label:"Llama 3.3 70B Instruct",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"us.meta.llama3-3-70b-instruct-v1:0",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"meta.llama-4-scout-17b-instruct",providerKey:"meta",label:"Llama 4 Scout 17B Instruct",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"us.meta.llama4-scout-17b-instruct-v1:0",availability:"verified",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"mistral.large-3",providerKey:"mistral",label:"Mistral Large 3",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"mistral.mistral-large-3-675b-instruct",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"xai.grok-4-3",providerKey:"xai",label:"Grok 4.3",source:"bedrock",runtime:"bedrock-mantle",defaultTier:"advanced",runtimeModelId:"xai.grok-4.3",availability:"verified",visible:!0,supportsTemperature:!1,defaultMaxTokens:1024},{key:"openai.gpt-oss-120b",providerKey:"openai",label:"gpt-oss-120b",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"openai.gpt-oss-120b-1:0",availability:"verified",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"openai.codex-gpt-5-6-sol",providerKey:"openai",label:"Codex GPT-5.6 Sol",source:"subscription_dev",runtime:"subscription-dev",defaultTier:"advanced",runtimeModelId:"gpt-5.6-sol",availability:"configured",visible:!0,supportsTemperature:!1,defaultMaxTokens:1024,devOnly:!0},{key:"openai.gpt-5-4",providerKey:"openai",label:"GPT-5.4",source:"bedrock",runtime:"bedrock-mantle",defaultTier:"advanced",runtimeModelId:"openai.gpt-5.4",availability:"account_unavailable",visible:!1,supportsTemperature:!1,defaultMaxTokens:1024}];function vS(e){const t=String(e||"").trim().toLowerCase();return t==="1"||t==="true"||t==="yes"||t==="on"}function VP(){const e=globalThis;return vS(e.__TASKFORCE_AGENT_SUBSCRIPTION_DEV_MODELS__)||vS(e.process?.env?.TASKFORCE_AGENT_SUBSCRIPTION_DEV_MODELS)}function GP(e){return e.visible&&e.availability!=="account_unavailable"&&(!e.devOnly||VP())}function dre(e){const t=String(e||"").trim();return Nw.find(r=>r.key===t)||null}function jw(e){const t=String(e||"").trim().toLowerCase();return vI.some(r=>r.key===t)?t:kI}function KP(e){const t=jw(e);return Nw.filter(r=>r.providerKey===t&&YP(r))}function qP(e,t){const r=String(e||"").trim(),n=KP(t??kI);return n.some(s=>s.key===r)?r:n[0]?.key||""}function YP(e){return GP(e)}function ure(e){const t=jw(e);return vI.find(r=>r.key===t)?.label||"Anthropic"}function pre(e){const t=String(e||"").trim();return Nw.find(r=>r.key===t)?.label||t||"No configured model"}const wI="taskforce.userGlobalSyncMeta.v1",ZP="taskforce.syncDebug.v1",JP=12e4,bI="taskforce.syncWatermarks.v3",XP=300*1e3,wS="Another local window is already syncing this workspace. Wait a few seconds, or press Repair in that window.";function qc(e){const t=String(e||"").trim();return t.length>0&&t.toLowerCase()!=="default"}function QP(){if(typeof window>"u")return!1;try{const e=String(window.localStorage.getItem(ZP)||"").trim().toLowerCase();return e==="1"||e==="true"||e==="on"||e==="yes"}catch{return!1}}function Es(e,t){if(!QP())return;console.info("[Taskforce Sync]",e,t&&typeof t=="object"?t:{})}function eE(e){const t=e?.providerMetadata??e?.provider_metadata??null;return{id:String(e?.id||"").trim(),workspaceId:String(e?.workspaceId||e?.workspace_id||"").trim(),profileToken:String(e?.profileToken||e?.profile_token||"").trim(),name:String(e?.name||"").trim(),username:String(e?.username||"").trim(),icon:String(e?.icon||"Bot").trim()||"Bot",color:String(e?.color||"#8b5cf6").trim()||"#8b5cf6",avatarUrl:up(e?.avatarUrl??e?.avatar_url),avatarSourceUrl:up(e?.avatarSourceUrl??e?.avatar_source_url),avatarRevision:Number.isFinite(Number(e?.avatarRevision??e?.avatar_revision))?Math.max(0,Math.floor(Number(e?.avatarRevision??e?.avatar_revision))):0,avatarUpdatedAt:hs(e?.avatarUpdatedAt??e?.avatar_updated_at),description:Vn(e?.description),role:Vn(e?.role),provider:Vn(e?.provider),model:Vn(e?.model),surfaceType:sI(e?.surfaceType??e?.surface_type),seatScope:oI(e?.seatScope??e?.seat_scope),providerMetadata:t&&typeof t=="object"&&!Array.isArray(t)?t:null,archivedAt:hs(e?.archivedAt??e?.archived_at),archivedBy:Xc(e?.archivedBy??e?.archived_by),archivedReason:Vn(e?.archivedReason??e?.archived_reason),mergedIntoProfileId:Xc(e?.mergedIntoProfileId??e?.merged_into_profile_id),rosterStateUpdatedAt:hs(e?.rosterStateUpdatedAt??e?.roster_state_updated_at),createdAt:String(e?.createdAt||e?.created_at||"").trim(),updatedAt:String(e?.updatedAt||e?.updated_at||e?.createdAt||e?.created_at||"").trim(),lastActiveAt:hs(e?.lastActiveAt??e?.last_active_at)}}function tE(e){const t=String(e?.modelTier||e?.model_tier||"").trim().toLowerCase();return{id:String(e?.id||"").trim(),tenantId:String(e?.tenantId||e?.tenant_id||"").trim()||void 0,workspaceId:String(e?.workspaceId||e?.workspace_id||"").trim(),name:String(e?.name||"Agent").trim()||"Agent",modelProvider:"taskforce_hq",providerKey:jw(e?.providerKey??e?.provider_key),modelKey:qP(e?.modelKey??e?.model_key,e?.providerKey??e?.provider_key),modelTier:t==="fast"||t==="advanced"?t:"balanced",systemPrompt:typeof(e?.systemPrompt??e?.system_prompt)=="string"?String(e?.systemPrompt??e?.system_prompt):"",enabled:(e?.enabled??!0)!==!1&&Number(e?.enabled??1)!==0,createdByUserId:Xc(e?.createdByUserId??e?.created_by_user_id),updatedByUserId:Xc(e?.updatedByUserId??e?.updated_by_user_id),createdAt:String(e?.createdAt||e?.created_at||"").trim(),updatedAt:String(e?.updatedAt||e?.updated_at||e?.createdAt||e?.created_at||"").trim(),deletedAt:hs(e?.deletedAt??e?.deleted_at)}}function rE(e){const t=Array.isArray(e?.messages)?e.messages.map(n=>({role:n?.role==="assistant"?"assistant":"user",content:String(n?.content||"").trim()})).filter(n=>n.content.length>0):[],r=(e?.usage??e?.usage_json)&&typeof(e?.usage??e?.usage_json)=="object"?e?.usage??e?.usage_json:null;return{id:String(e?.id||"").trim(),tenantId:String(e?.tenantId||e?.tenant_id||"").trim()||void 0,workspaceId:String(e?.workspaceId||e?.workspace_id||"").trim(),agentId:String(e?.agentId||e?.agent_id||"").trim(),taskId:Xc(e?.taskId??e?.task_id),title:String(e?.title||"Agent chat").trim()||"Agent chat",messages:t,modelProvider:Vn(e?.modelProvider??e?.model_provider),modelId:Vn(e?.modelId??e?.model_id),usage:r,latencyMs:Number.isFinite(Number(e?.latencyMs??e?.latency_ms))?Number(e?.latencyMs??e?.latency_ms):null,createdByUserId:Xc(e?.createdByUserId??e?.created_by_user_id),updatedByUserId:Xc(e?.updatedByUserId??e?.updated_by_user_id),createdAt:String(e?.createdAt||e?.created_at||"").trim(),updatedAt:String(e?.updatedAt||e?.updated_at||e?.createdAt||e?.created_at||"").trim(),deletedAt:hs(e?.deletedAt??e?.deleted_at)}}function bS(){if(typeof window>"u")return{};try{const e=window.localStorage.getItem(wI);if(!e)return{};const t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return{}}}function nE(e){if(!(typeof window>"u"))try{window.localStorage.setItem(wI,JSON.stringify(e))}catch{}}function aE(e){try{return JSON.stringify(e&&typeof e=="object"?e:null)}catch{return"null"}}function sE(e){return e.flatMap(t=>{const r=String(t?.id||"").trim();return!r||!Array.isArray(t?.comments)?[]:t.comments.map(n=>({id:String(n?.id||"").trim(),sessionId:r,body:String(n?.body||""),anchor:n?.anchor??null,order:Number.isFinite(Number(n?.order))?Math.max(0,Math.floor(Number(n.order))):0,authorActorId:typeof n?.authorActorId=="string"&&n.authorActorId.trim().length>0?n.authorActorId.trim():null,updatedByActorId:typeof n?.updatedByActorId=="string"&&n.updatedByActorId.trim().length>0?n.updatedByActorId.trim():null,deletedByActorId:typeof n?.deletedByActorId=="string"&&n.deletedByActorId.trim().length>0?n.deletedByActorId.trim():null,createdAt:String(n?.createdAt||"").trim(),updatedAt:String(n?.updatedAt||n?.createdAt||"").trim(),deletedAt:typeof n?.deletedAt=="string"&&n.deletedAt.trim().length>0?n.deletedAt.trim():null})).filter(n=>n.id.length>0&&n.sessionId.length>0)})}function SI(e){return{taskIds:Array.from(e.taskIds.values()),taskWatermarks:Array.from(e.taskWatermarks.entries()),taskChangeKeys:Array.from((e.taskChangeKeys||new Map).entries()),taskRelationshipChangeKeys:Array.from((e.taskRelationshipChangeKeys||new Map).entries()),initiativeWatermarks:Array.from(e.initiativeWatermarks.entries()),workstreamWatermarks:Array.from(e.workstreamWatermarks.entries()),aiProfileWatermarks:Array.from(e.aiProfileWatermarks.entries()),aiProfileChangeKeys:Array.from((e.aiProfileChangeKeys||new Map).entries()),taskforceAgentWatermarks:Array.from((e.taskforceAgentWatermarks||new Map).entries()),taskforceAgentSkillWatermarks:Array.from((e.taskforceAgentSkillWatermarks||new Map).entries()),agentConversationWatermarks:Array.from((e.agentConversationWatermarks||new Map).entries()),documentWatermarks:Array.from(e.documentWatermarks.entries()),assetWatermarks:Array.from(e.assetWatermarks.entries()),documentReviewSessionWatermarks:Array.from(e.documentReviewSessionWatermarks.entries()),documentReviewCommentWatermarks:Array.from(e.documentReviewCommentWatermarks.entries()),annotatedAttachmentSessionWatermarks:Array.from(e.annotatedAttachmentSessionWatermarks.entries()),taskEventWatermarks:Array.from(e.taskEventWatermarks.entries()),taxonomyStateFingerprint:typeof e.taxonomyStateFingerprint=="string"?e.taxonomyStateFingerprint:"",taxonomyChangeKey:typeof e.taxonomyChangeKey=="string"?e.taxonomyChangeKey:""}}function AI(e,t){if(!e||typeof e!="object")return null;const r=typeof e.taxonomyStateFingerprint=="string"?e.taxonomyStateFingerprint:"",n=!t||!r||r===t?new Map(Array.isArray(e.taskWatermarks)?e.taskWatermarks:[]):new Map;return{taskIds:new Set(Array.isArray(e.taskIds)?e.taskIds.map(i=>String(i||"").trim()).filter(i=>i.length>0):Array.from(n.keys())),taskWatermarks:n,taskChangeKeys:new Map(Array.isArray(e.taskChangeKeys)?e.taskChangeKeys:[]),taskRelationshipChangeKeys:new Map(Array.isArray(e.taskRelationshipChangeKeys)?e.taskRelationshipChangeKeys:[]),initiativeWatermarks:new Map(Array.isArray(e.initiativeWatermarks)?e.initiativeWatermarks:[]),workstreamWatermarks:new Map(Array.isArray(e.workstreamWatermarks)?e.workstreamWatermarks:[]),aiProfileWatermarks:new Map(Array.isArray(e.aiProfileWatermarks)?e.aiProfileWatermarks:[]),aiProfileChangeKeys:new Map(Array.isArray(e.aiProfileChangeKeys)?e.aiProfileChangeKeys:[]),taskforceAgentWatermarks:new Map(Array.isArray(e.taskforceAgentWatermarks)?e.taskforceAgentWatermarks:[]),taskforceAgentSkillWatermarks:new Map(Array.isArray(e.taskforceAgentSkillWatermarks)?e.taskforceAgentSkillWatermarks:[]),agentConversationWatermarks:new Map(Array.isArray(e.agentConversationWatermarks)?e.agentConversationWatermarks:[]),documentWatermarks:new Map(Array.isArray(e.documentWatermarks)?e.documentWatermarks:[]),assetWatermarks:new Map(Array.isArray(e.assetWatermarks)?e.assetWatermarks:[]),documentReviewSessionWatermarks:new Map(Array.isArray(e.documentReviewSessionWatermarks)?e.documentReviewSessionWatermarks:[]),documentReviewCommentWatermarks:new Map(Array.isArray(e.documentReviewCommentWatermarks)?e.documentReviewCommentWatermarks:[]),annotatedAttachmentSessionWatermarks:new Map(Array.isArray(e.annotatedAttachmentSessionWatermarks)?e.annotatedAttachmentSessionWatermarks:[]),taskEventWatermarks:new Map(Array.isArray(e.taskEventWatermarks)?e.taskEventWatermarks:[]),taxonomyChangeKey:typeof e.taxonomyChangeKey=="string"?e.taxonomyChangeKey:""}}function Bk(e,t){if(typeof window>"u")return null;try{const r=`${bI}.${e}`,n=window.localStorage.getItem(r);if(!n)return null;const s=JSON.parse(n);return!s||s.v!==2&&s.v!==3&&s.v!==4&&s.v!==5&&s.v!==6&&s.v!==7&&s.v!==8&&s.v!==9&&s.v!==10&&s.v!==11&&s.v!==12?null:AI(s,t)}catch{return null}}function SS(e,t){if(typeof window>"u")return!1;try{const r=`${bI}.${e}`;return window.localStorage.setItem(r,JSON.stringify({v:12,savedAt:new Date().toISOString(),...SI(t)})),!0}catch{return!1}}function oE({currentWorkspaceId:e,workspaceSyncPhase:t,clearWorkspaceRetry:r,setWorkspaceSyncBusy:n,setUserGlobalSyncStatus:s,setUserGlobalSyncError:i,setWorkspaceLastErrorMessage:l,setWorkspaceLastErrorAt:c,reportSyncEvent:d,setAuthBlocked:f,setIsAuthenticated:p,checkAuthSession:g,ensureCloudWorkspaceReadyForSync:h,scheduleWorkspaceSyncRetry:y,persistWorkspaceSyncPatchSafely:k}){const w=async(b,v)=>{r(),n(!1),s("error");const T="Session expired. Sign in again to resume cloud sync.";i(T),l(T),c(new Date().toISOString()),d(e,{eventType:b==="handshake"?"handshake":b,status:"error",statusCode:v,errorMessage:T}),f(!0),p(!1),await g()};return{handleSyncAuthFailure:w,ensureWorkspaceSyncReady:async()=>{if(!qc(e)){const T="Workspace sync blocked: local workspace ID is unresolved.";return l(T),c(new Date().toISOString()),i(T),s("error"),!1}const b=await h();if(b.success)return!0;if(b.statusCode===401)return await w("handshake",401),!1;const v=b.error||"Workspace sync handshake failed.";return l(v),c(new Date().toISOString()),i(v),s("error"),d(e,{eventType:"handshake",status:"error",statusCode:b.statusCode,errorMessage:v}),b.transient||ii(b.statusCode)?y(b.retryAfterMs):(t==="active"||t==="attach-cloud"||t==="provision-local")&&k({phase:"error",lastErrorMessage:v}),!1}}}const CI=5*6e4;function Wk(e){if(!e)return null;const t=Date.parse(e);return Number.isFinite(t)?t:null}function mm(e){return e.cloudAuthConfigured&&e.runtimeMode==="local"&&e.workspaceCloudSyncEnabled&&e.authSessionResolved}function iE({enabled:e,phase:t,busy:r,retryAt:n,lastErrorMessage:s,lastErrorAt:i,lastPullAt:l,lastPushAt:c,nowMs:d,pullLagToleranceMs:f=CI,pendingChanges:p=0,durableOutbox:g}){if(!e)return{status:"off",summary:"Sync is turned off for this workspace.",recommendedAction:"Turn on sync when you are ready to back up this workspace."};if(t==="provision-local")return{status:"syncing",summary:r?"Uploading this workspace to cloud for the first time.":"Preparing the first upload to cloud.",recommendedAction:"Keep this window open while the first upload finishes. If it seems stalled, press Sync."};if(t==="attach-cloud")return{status:"syncing",summary:r?"Pulling the cloud workspace into this device.":"Waiting for the first cloud pull into this device.",recommendedAction:"Keep this window open for the first cloud pull. If it does not move, press Repair."};if((g?.blocked||0)>0){const S=g?.blocked||0,b=g?.pending||0;return{status:"attention",summary:`${S} durable local change${S===1?"":"s"} could not sync${b>0?`; ${b} later change${b===1?" is":"s are"} waiting`:""}.`,recommendedAction:"Press Repair to reconcile and replay supported task changes. If Repair is blocked, copy the report for diagnosis."}}if(g?.recovery&&g.recovery.state!=="completed")return g.recovery.state==="awaiting_baseline"?{status:"attention",summary:"Durable local recovery is waiting for an authoritative cloud repair.",recommendedAction:"Press Repair to resume the verified cloud baseline and replay."}:g.recovery.replayBlocked>0?{status:"attention",summary:"A recovered local change is still blocked during replay.",recommendedAction:"Copy the Sync Manager report so the replay conflict can be diagnosed safely."}:{status:"syncing",summary:"Recovered local changes are replaying against the repaired cloud baseline.",recommendedAction:"No action needed unless the recovery state remains unchanged."};if(n)return{status:"attention",summary:"Sync hit a temporary problem and will retry automatically.",recommendedAction:"Wait for the automatic retry, or press Sync to retry now."};if(s||t==="error")return{status:"attention",summary:"Sync needs attention before it can continue.",recommendedAction:"Press Sync to retry. If the same error keeps returning, press Repair."};if(p>0||(g?.pending||0)>0||(g?.inFlight||0)>0)return{status:"syncing",summary:"Local changes are waiting to sync.",recommendedAction:"No action needed unless the queue remains unchanged."};if(r)return{status:"syncing",summary:"Sync is currently running.",recommendedAction:"No action needed."};const h=Wk(l),y=Wk(c),k=Wk(i);return h===null?{status:"attention",summary:y===null?"This device has not completed its first cloud pull.":"Cloud uploads are working, but this device has not completed a cloud pull.",recommendedAction:"Press Retry now. If the cloud check still does not complete, press Repair and copy the report."}:k!==null&&k>h?{status:"attention",summary:"A sync issue occurred after the last successful cloud pull.",recommendedAction:"Press Retry now to verify cloud changes can still be received. If the issue returns, copy the report."}:Number.isFinite(d)&&d-h>Math.max(0,f)?{status:"attention",summary:y!==null&&y>h?"Cloud uploads are succeeding, but this device has not received cloud changes recently.":"This device has not checked for cloud changes recently.",recommendedAction:"Press Retry now to check cloud changes. If Last cloud check does not advance, press Repair and copy the report."}:{status:"healthy",summary:"A recent cloud check succeeded and no local changes are waiting.",recommendedAction:"No action needed."}}function cE(e){return mm(e)&&e.workspaceSyncPhase!=="attach-cloud"&&e.workspaceSyncReferenceSnapshotsReady}function lE(e){return mm(e)&&e.workspaceSyncPhase==="active"&&e.workspaceSyncReferenceSnapshotsReady}function dE(e){return mm(e)?e.workspaceSyncPhase==="provision-local"||e.workspaceSyncPhase==="error"||e.retryPending?{shouldStart:!1,shouldKickOffImmediately:!1}:{shouldStart:!0,shouldKickOffImmediately:e.workspaceSyncPhase==="attach-cloud"||!e.lastPullAt}:{shouldStart:!1,shouldKickOffImmediately:!1}}function uE(e){return mm(e)&&e.isAuthenticated&&e.workspaceSyncPhase==="active"}function pE(e){return mm(e)&&e.isAuthenticated&&e.workspaceSyncPhase!=="provision-local"&&e.workspaceSyncPhase!=="attach-cloud"&&!e.alreadyRan}function fE(e){const{workspaceSyncPhase:t,lastBootstrapPhase:r,workspaceLastPullAt:n}=e;return t==="provision-local"?"provision-local":t==="attach-cloud"?"attach-cloud":t==="active"||r==="active"?"active":r==="provision-local"||r==="attach-cloud"?r:n?"attach-cloud":"provision-local"}function mE({workspaceSyncPhase:e,lastBootstrapPhaseRef:t,bootstrapPhaseStartedAtRef:r,bootstrapLastProgressAtRef:n}){if(e==="attach-cloud"||e==="provision-local"){t.current=e,r.current===null&&(r.current=Date.now()),n.current=null;return}r.current=null,n.current=null}function gE({currentWorkspaceId:e,workspaceCloudSyncEnabled:t,workspaceSyncPhase:r,workspacePullInFlightRef:n,workspacePushInFlightRef:s,bootstrapPhaseStartedAtRef:i,bootstrapLastProgressAtRef:l,isExecutionAuthorized:c=()=>!0,setWorkspaceLastErrorMessage:d,setWorkspaceLastErrorAt:f,setUserGlobalSyncStatus:p,setUserGlobalSyncError:g,setWorkspaceSyncBusy:h,persistWorkspaceSyncPatchSafely:y}){if(!c()||!t||r!=="attach-cloud"&&r!=="provision-local")return;const k=window.setInterval(()=>{if(!c()||r!=="attach-cloud"&&r!=="provision-local"||n.current||s.current)return;const w=Math.max(i.current??0,l.current??0);if(w>0&&Date.now()-w<JP)return;const b=`Workspace sync ${r==="attach-cloud"?"initial cloud pull":"initial cloud upload"} stalled. Press Repair to restart sync for this workspace.`;d(b),f(new Date().toISOString()),p("error"),g(b),h(!1),y({phase:"error",lastErrorMessage:b}),Es("workspace_sync_bootstrap_timeout",{workspaceId:e,phase:r})},1e4);return()=>window.clearInterval(k)}function hE(e){const t=String(e||"").trim();return t.length>0&&t.toLowerCase()!=="default"}const Dw={allowed:!0};function ks(e,t){return{allowed:!1,reason:e,retainPendingSignature:t?.retainPendingSignature===!0}}function Mw(e,t){return e.cloudAuthConfigured?e.runtimeMode!=="local"?ks("runtime-not-local"):e.workspaceCloudSyncEnabled?(t?.requireValidWorkspace??!0)&&!hE(e.currentWorkspaceId)?ks("invalid-workspace"):null:ks("sync-disabled"):ks("cloud-auth-unconfigured")}function xv(e){const t=Mw(e);return t||(e.repairModeActive&&!e.repairModeBypass?ks("repair-active",{retainPendingSignature:!0}):e.workspaceSyncPhase==="attach-cloud"&&!e.repairModeBypass?ks("attach-cloud",{retainPendingSignature:!0}):e.isAuthenticated?e.pushInFlight?ks("push-in-flight",{retainPendingSignature:!0}):e.pullInFlight?ks("pull-in-flight",{retainPendingSignature:!0}):Dw:ks("auth-required"))}function Rv(e){const t=Mw(e);return t||(e.repairModeActive&&!e.repairModeBypass?ks("repair-active"):e.workspaceSyncPhase==="provision-local"?ks("provision-local"):e.retryPending?ks("retry-pending"):e.isAuthenticated?e.pullInFlight?ks("pull-in-flight"):e.pushInFlight?ks("push-in-flight"):Dw:ks("auth-required"))}function Pv(e){const t=Mw(e,{requireValidWorkspace:!1});return t||(e.isAuthenticated?Dw:ks("auth-required"))}function yE(e){return ks("lease-held",{retainPendingSignature:e==="push"})}const kE=512;function vE({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:r,workspaceSyncPhase:n,workspacePullInFlightRef:s,realtimePullDebounceRef:i,realtimeSuppressedEventIdsRef:l,clearWorkspaceRetry:c,isWorkspaceRetryPending:d,isExecutionAuthorized:f=()=>!0,isServerOwned:p=()=>!1,signalServerWake:g,pullWorkspaceChangesFromCloud:h}){const y=new Set;let k=!1,w=!1,S=null,b=!1;const v=()=>{if(w||!p())return;const j=b?[]:S;j&&(b=!1,S=null,w=!0,g?.(j).catch(()=>{}).finally(()=>{w=!1,v()}))},T=j=>{if(!b){if(!w&&S===null){S=j,v();return}if(S===null){S=j;return}S=null,b=!0}},R=()=>{S=null,b=!0,v()},P=()=>{if(!k&&y.size===0)return;const j=k?[]:Array.from(y);y.clear(),k=!1,j.length===0?R():T(j)};return{handleRealtimeSignal:j=>{if(!e||t!=="local"||!r||n==="provision-local")return;const x=Array.from(new Set([...j?.eventIds||[],...j?.eventId?[j.eventId]:[]].map(U=>String(U||"").trim()).filter(Boolean)));let V=x.length===0;for(const U of x)l.current.delete(U)||(V=!0);if(V){if(p()){if(x.length===0)k=!0;else if(!k)for(const U of x)y.add(U),y.size>=kE&&(T(Array.from(y)),y.clear());i.current!==null&&window.clearTimeout(i.current),i.current=window.setTimeout(()=>{i.current=null,P()},180);return}f()&&(s.current||(d()&&c(),i.current!==null&&window.clearTimeout(i.current),i.current=window.setTimeout(()=>{i.current=null,f()&&h()},180)))}},recordSuppressedEventIds:(j,x)=>{const V=x?.queueRef,U=Number.isFinite(x?.maxQueueSize)?Math.max(1,Number(x?.maxQueueSize)):2048,ne=Number.isFinite(x?.ttlMs)?Math.max(0,Number(x?.ttlMs)):null;for(const L of j){const ie=String(L||"").trim();!ie||l.current.has(ie)||(l.current.add(ie),V&&V.current.push(ie),ne!==null&&window.setTimeout(()=>{l.current.delete(ie)},ne))}if(V)for(;V.current.length>U;){const L=V.current.shift();L&&l.current.delete(L)}},clearRealtimePullDebounce:()=>{i.current!==null&&(window.clearTimeout(i.current),i.current=null),y.clear(),k=!1,S=null,b=!1}}}function II(e){e.lastPushedTaskIds.current=new Set,e.lastPushedWatermarks.current=new Map,e.lastPushedTaskChangeKeys.current=new Map,e.lastPushedTaskRelationshipChangeKeys.current=new Map,e.lastPushedTaxonomyChangeKey.current="",e.lastPushedInitiativeIds.current=new Set,e.lastPushedInitiativeWatermarks.current=new Map,e.lastPushedWorkstreamIds.current=new Set,e.lastPushedWorkstreamWatermarks.current=new Map,e.lastPushedAiProfileIds.current=new Set,e.lastPushedAiProfileWatermarks.current=new Map,e.lastPushedAiProfileChangeKeys.current=new Map,e.lastPushedDocumentPaths.current=new Set,e.lastPushedDocumentWatermarks.current=new Map,e.lastPushedAssetPaths.current=new Set,e.lastPushedAssetWatermarks.current=new Map,e.baselineResetReason.current="repair-reset"}function wE(e){II(e),e.lastPushedDocumentReviewSessionIds.current=new Set,e.lastPushedDocumentReviewSessionWatermarks.current=new Map,e.lastPushedDocumentReviewCommentIds.current=new Set,e.lastPushedDocumentReviewCommentWatermarks.current=new Map,e.lastPushedAnnotatedAttachmentSessionIds.current=new Set,e.lastPushedAnnotatedAttachmentSessionWatermarks.current=new Map,e.lastPushedTaskEventWatermarks.current=new Map}async function bE(e){const t=await globalThis.crypto.subtle.digest("SHA-256",new TextEncoder().encode(e));return Array.from(new Uint8Array(t),r=>r.toString(16).padStart(2,"0")).join("")}function SE({currentWorkspaceId:e,workspaceCloudSyncEnabled:t,workspaceSyncPhase:r,workspaceLastPullAt:n,runtime:s,localServices:i,acquireWorkspaceSyncLease:l,releaseWorkspaceSyncLease:c,forceClearWorkspaceSyncLease:d,clearWorkspaceRetry:f,clearWorkspaceIssue:p,reportWorkspaceWindowContention:g,reportSyncEvent:h,persistWorkspaceSyncPatch:y,persistWorkspaceSyncWatermarksSnapshotBestEffort:k,buildWorkspaceSyncSignature:w,pullWorkspaceChangesFromCloud:S,pushWorkspaceChangesToCloud:b,cloudAuthConfigured:v,runtimeMode:T,isAuthenticated:R,checkAuthSession:P,isExecutionAuthorized:N=()=>!0,coordinatorGeneration:I=null}){const $=s.lastBootstrapPhase,j=s.repairMode,x=s.forceFullAiProfilePush,V=s.startupRepairRan,U=s.startupFullReconcileRan,ne=s.fullReconcileInFlight,L=s.pullCursor,ie=s.attachBootstrapBaselineSignature,J=s.captureAttachBootstrapBaseline,ue=s.pendingSignature,oe=s.pendingPushReplay,ge=s.lastPushedSignature;s.baselineResetReason;const je=s.bootstrapPhaseStartedAtMs,qe=s.bootstrapLastProgressAtMs,Ye=r==="provision-local"?"push":r==="attach-cloud"?"bootstrap":"pull";return{retryWorkspaceCloudSync:async()=>{if(!N())return!1;f();let B=Pv({cloudAuthConfigured:v,runtimeMode:T,workspaceCloudSyncEnabled:t,currentWorkspaceId:e,isAuthenticated:R});if(!B.allowed&&B.reason==="auth-required"){if(!await P())return h(e,{eventType:Ye,status:"error",errorMessage:"Manual sync retry blocked: sign in is required.",details:{source:"retry.blocked",reason:"auth-required",phase:r}}),!1;B=Pv({cloudAuthConfigured:v,runtimeMode:T,workspaceCloudSyncEnabled:t,currentWorkspaceId:e,isAuthenticated:!0})}if(!B.allowed)return h(e,{eventType:Ye,status:"error",errorMessage:`Manual sync retry blocked: ${B.reason}.`,details:{source:"retry.blocked",reason:B.reason,phase:r}}),!1;if(x.current=!0,r==="provision-local"){const F=w();return F?b(F,{forceAllAiProfiles:!0}):!1}const K=oe.current;if(r==="active"&&K)return ue.current=K.signature,b(K.signature,{forceAllAiProfiles:K.forceAllAiProfiles,repairMode:K.repairMode});const Ae=await S();if(r==="attach-cloud")return Ae;const re=w();if(re){ue.current=re;const F=await b(re,{forceAllAiProfiles:x.current===!0});return Ae||F}return Ae},resetWorkspaceSyncCursorAndPull:async()=>{if(!N())return;if(!await l(e,"repair")&&(d(e),!await l(e,"repair"))){g("repair"),h(e,{eventType:"bootstrap",status:"error",errorMessage:"Manual sync repair blocked because another window is already syncing this workspace.",details:{source:"repair.blocked",reason:"lease-held",phase:r}});return}const K=fE({workspaceSyncPhase:r,lastBootstrapPhase:$.current,workspaceLastPullAt:n}),Ae=K==="provision-local",re=K==="active"||K==="attach-cloud";f(),p();try{if(!t){h(e,{eventType:"bootstrap",status:"error",errorMessage:"Manual sync repair blocked because workspace sync is turned off.",details:{source:"repair.blocked",reason:"sync-disabled",phase:r}});return}let F=null;if(K!=="provision-local")try{F=await i.prepareOutboxRecovery(e)}catch(ke){h(e,{eventType:"bootstrap",status:"error",errorMessage:String(ke?.message||"Blocked local changes could not enter recovery."),details:{source:"repair.local-recovery-blocked",phase:r}});return}if(je.current=null,qe.current=null,L.current=null,ie.current="",J.current=!1,ue.current="",ge.current="",x.current=!1,V.current=!1,U.current=!1,ne.current=!1,Ae&&(wE(s),k()),j.current=!0,h(e,{eventType:"bootstrap",status:"success",errorMessage:"Manual sync repair started.",details:{source:"repair.started",phase:r,repairPhase:K,lastBootstrapPhase:$.current}}),await y({phase:K,pullCursor:null,startupFullReconcileCompletedAt:null,lastErrorMessage:null}),K==="provision-local"){const ke=w();if(!ke)return;await b(ke,{forceAllAiProfiles:!0,repairMode:!0});return}const D=await S({repairMode:!0,...F?.kind==="recovery"&&F.needsAuthoritativeRepair?{forceV3AuthoritativeRepair:!0,recoveryBatchId:F.recoveryBatchId}:{}});if(K!=="active"&&K!=="attach-cloud"||!D)return;re&&(II(s),k());const z=w();if(!z)return;if(ue.current=z,await b(z,{forceAllAiProfiles:!0,repairMode:!0})&&I!==null&&i.completeAuthoritativeRepair){const ke=await i.completeAuthoritativeRepair({workspaceId:e,coordinatorGeneration:I,repairId:`repair-${globalThis.crypto.randomUUID()}`,stateSignatureSha256:await bE(z)});(!ke.ok||ke.data?.success!==!0)&&h(e,{eventType:"bootstrap",status:"error",statusCode:ke.status,errorMessage:String(ke.data?.error||"Authoritative repair could not settle coordinator recovery."),details:{source:"repair.coordinator-recovery-settlement-failed",phase:r,code:ke.data?.code||null}})}}finally{j.current=!1,c(e)}}}}function AE({workspaceSyncPhase:e,forceCursorNull:t,currentCursor:r}){const n=e==="attach-cloud";return{bootstrap:n,cursor:n||t===!0?null:r,successEventType:n?"bootstrap":"pull"}}function CE({workspaceSyncPhase:e,forceCursorNull:t,repairMode:r,startupFullReconcileRan:n,pendingSignature:s,fallbackSignature:i,lastPushedSignature:l}){const c=e==="attach-cloud",d=c&&r===!0,f=s||i,p=!c&&f&&f!==l?f:null;return{successEventType:c?"bootstrap":"pull",shouldCaptureAttachBootstrapBaseline:c&&!d,shouldClearPendingSignature:c||p!==null,shouldRefreshReferenceSnapshots:c,shouldSeedWorkspaceSnapshotPushBaseline:c&&!d,shouldScheduleStartupFullReconcile:!t&&!c&&!n,deferredPushSignature:p}}function _I(e){if(typeof e!="string")return;const t=e.trim();return t.length>0?t:void 0}function IE(e){return _I(e)??null}function _E(e){if(e==null||e==="")return null;const t=typeof e=="number"?e:Number(e);return Number.isFinite(t)?Math.max(1,Math.floor(t)):null}function TE(e){if(e==null||e==="")return null;const t=typeof e=="number"?e:Number(e);return Number.isFinite(t)?Math.floor(t):null}function xE(e,t,r){if(e===void 0||!e||typeof e!="object"||Array.isArray(e))return;const n=e,s=["canonicalFingerprint","contractVersion","domain","entityId","entityRevision","lifecycleRevision","mutationKind","sequence"],i=Object.keys(n).sort(),l=new Set(["create","metadata-update","append-comment","archive","unarchive"]);if(!(i.length!==s.length||i.some((c,d)=>c!==s[d])||n.contractVersion!==3||n.domain!==t||n.entityId!==r||typeof n.mutationKind!="string"||!l.has(n.mutationKind)||typeof n.sequence!="string"||!/^[1-9]\d*$/.test(n.sequence)||typeof n.entityRevision!="string"||!/^\d+$/.test(n.entityRevision)||typeof n.lifecycleRevision!="string"||!/^\d+$/.test(n.lifecycleRevision)||n.entityRevision==="0"||n.mutationKind==="create"&&(n.entityRevision!=="1"||n.lifecycleRevision!=="0")||(n.mutationKind==="archive"||n.mutationKind==="unarchive")&&n.lifecycleRevision==="0"||typeof n.canonicalFingerprint!="string"||!/^[a-f0-9]{64}$/.test(n.canonicalFingerprint)))return n}function RE(e,t){if(!e||typeof e!="object"||Array.isArray(e))return null;const r=e,n=String(r.id||"").trim();if(!n)return null;const s=xE(r.durableRevision,"initiative",n);if(Object.prototype.hasOwnProperty.call(r,"durableRevision")&&!s)throw new Error("Initiative durable revision is invalid.");const i=nm(r.comments);return{id:n,referenceNumber:_E(r.referenceNumber),referenceLabel:_I(r.referenceLabel),title:String(r.title||"").trim(),description:typeof r.description=="string"?r.description:null,ownerId:IE(r.ownerId),...i?{comments:i}:{},createdAt:String(r.createdAt||t||"").trim(),updatedAt:String(r.updatedAt||t||r.createdAt||"").trim(),order:TE(r.order),attachments:am(r.attachments),isArchived:!!r.isArchived,...s?{durableRevision:s}:{}}}function PE(e){const t=RE(e);if(!t||!t.createdAt||!t.updatedAt)throw new Error("Initiative is missing canonical sync identity or watermarks.");return{...t,attachments:K1(e.attachments)}}const TI=["create","metadata-update","append-comment","archive","unarchive"],EE={coverageProfileId:"covered-metadata",coverageVersion:1,projections:[{projectionId:"initiative/full-v1",domain:"initiative",schemaVersion:1,mutationKinds:TI,fields:["id","referenceNumber","referenceLabel","title","description","ownerId","comments","attachments","order","createdAt","updatedAt","isArchived"],dependencies:[],operationAtomic:!0}]};function Ev(e){return Array.isArray(e)?e.every(Ev):!e||typeof e!="object"?!0:Object.entries(e).every(([t,r])=>t!=="content"&&t!=="contentBase64"&&Ev(r))}function xI(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=e;return typeof t.coverageDigest=="string"&&/^[a-f0-9]{64}$/.test(t.coverageDigest)&&bn({coverageProfileId:t.coverageProfileId,coverageVersion:t.coverageVersion,projections:t.projections})===bn(EE)}function RI(e){const t=n=>/^\d+$/.test(String(n??""));if(e.projection!=="initiative/full-v1"||e.domain!=="initiative"||!e.entityId||!TI.includes(e.mutationKind)||!t(e.sequence)||!t(e.entityRevision)||!t(e.lifecycleRevision)||!/^[a-f0-9]{64}$/.test(e.payloadFingerprint)||!Ev(e.payload)||e.contentSha256!==void 0||e.sizeBytes!==void 0)throw new Error("Workspace sync v3 initiative entry is invalid.");const r=PE(e.payload);if(r.id!==e.entityId||bn(r)!==bn(e.payload))throw new Error("Workspace sync v3 initiative payload is not canonical.")}const NE={getLocalProjection:FC,applyLocalProjection:UC,pullFeed:WC,pullInitiativeRepair:qC};function jE(e,t){const r=e.data?.projection;return!e.ok||e.data?.success!==!0||e.data?.contractVersion!==3||e.data?.workspaceId!==t||!r||r.owner!=="v2"&&r.owner!=="v3"||!/^\d+$/.test(r.epoch)?null:r}function Vf(e){return e.data?.result?.projection||e.data?.projection||null}function Cl(e,t,r){return{kind:"transient-failure",status:e.status,retryAfterMs:e.retryAfterMs,error:String(e.data?.error||r),excludeInitiativesFromV2:t==="v3"}}function Dg(e){return e===0||e===429||e>=500}function AS(e,t){const r=e.data,n=r.coverage,s=r?.repair;if(e.status!==409||r?.workspaceId!==t||r?.protocolVersion!==3||r.legacyInitiativePushDisabled!==!0||r.code!=="CURSOR_EXPIRED"&&r.code!=="COVERAGE_CHANGED"||!s||!xI(n)||s.mode!=="authoritative-covered-projection-snapshot"||!/^\d+$/.test(String(s.snapshotSequence||""))||!Array.isArray(s.entries)||typeof s.hasMore!="boolean"||s.hasMore!==!!s.nextRepairCursor||typeof s.resumeCursor!="string"||!s.resumeCursor)return null;try{s.entries.forEach(RI)}catch{return null}return s}function DE(e,t){const r=e.data;if(!e.ok||r?.protocolVersion!==3||r?.workspaceId!==t||r.legacyInitiativePushDisabled!==!0||!Array.isArray(r.entries)||typeof r.nextCursor!="string"||!r.nextCursor||typeof r.hasMore!="boolean"||!xI(r.coverage)||!/^\d+$/.test(String(r.cycleHighWatermark||""))||!/^\d+$/.test(String(r.lastScannedSequence||""))||!r.diagnostics||r.diagnostics.coveredCount!==r.entries.length||r.diagnostics.scannedCount<r.entries.length)return null;try{r.entries.forEach(RI)}catch{return null}return r}async function ME(e){let t=e.projection,r=t.repair?.cursor||null;const n=new Set;for(;;){const s=await e.dependencies.pullInitiativeRepair(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,cursor:r,limit:100});if(!s.ok)return s.status===401?{kind:"auth-failure",status:401,excludeInitiativesFromV2:!1}:Cl(s,"v2","Initiative fallback repair failed.");const i=s.data;if(i?.success!==!0||i.workspaceId!==e.workspaceId||!/^\d+$/.test(String(i.snapshotSequence||""))||!Array.isArray(i.entries)||typeof i.hasMore!="boolean"||i.hasMore!==!!i.nextRepairCursor)return{kind:"transient-failure",status:502,error:"Initiative fallback repair returned an invalid page.",excludeInitiativesFromV2:!1};const l=await e.dependencies.applyLocalProjection(e.workspaceId,{kind:"fallback-repair",epoch:t.epoch,previousCursor:r,page:{snapshotSequence:String(i.snapshotSequence),entries:i.entries,hasMore:i.hasMore,nextRepairCursor:i.nextRepairCursor||null}}),c=Vf(l);if(!l.ok||!c)return Cl(l,"v3","Initiative fallback repair could not be staged locally.");if(t=c,!i.hasMore)return t.owner==="v2"?{kind:"v2-fallback",excludeInitiativesFromV2:!1}:{kind:"transient-failure",status:502,error:"Initiative fallback repair did not switch ownership.",excludeInitiativesFromV2:!0};const d=String(i.nextRepairCursor||"");if(!d||d===r||n.has(d))return{kind:"transient-failure",status:502,error:"Initiative fallback repair made no progress.",excludeInitiativesFromV2:!1};n.add(d),r=d}}async function hd(e){return ME(e)}async function Mg(e){const t=await e.dependencies.applyLocalProjection(e.workspaceId,{kind:"rollback",epoch:e.projection.epoch}),r=Vf(t);return!t.ok||!r||r.owner!=="v2"?Cl(t,e.projection.owner,"Initiative activation rollback is not ready."):{kind:"transient-failure",status:409,error:"Local initiative changes must complete v2 synchronization before v3 activation can retry.",excludeInitiativesFromV2:!1}}async function Nv(e){const t={...NE,...e.dependencies},r={...t,applyLocalProjection:async(...l)=>{const c=await t.applyLocalProjection(...l);return c.ok&&c.data?.success!==!1&&"page"in l[1]&&e.onChangesApplied?.(l[1].page.entries.length),c}},n=await r.getLocalProjection(e.workspaceId),s=jE(n,e.workspaceId);if(!s)return Cl(n,"v2","Local initiative projection state is unavailable.");if(s.owner==="v3"&&s.repair?.resumeCursor.startsWith("v2-fallback:"))return hd({...e,projection:s,dependencies:r});if(!e.activationEnabled)return s.owner==="v3"?hd({...e,projection:s,dependencies:r}):s.repair?Mg({workspaceId:e.workspaceId,projection:s,dependencies:r}):{kind:"v2-fallback",excludeInitiativesFromV2:!1};let i=s;for(;i.owner==="v2"||i.repair;){const l=await r.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,repairCursor:i.repair?.cursor||null,limit:100});if(l.status===401)return{kind:"auth-failure",status:401,excludeInitiativesFromV2:!1};if(l.status===404||l.status!==409&&!Dg(l.status))return i.owner==="v3"?hd({...e,projection:i,dependencies:r}):Mg({workspaceId:e.workspaceId,projection:i,dependencies:r});if(Dg(l.status))return Cl(l,"v2","Workspace sync v3 feed is temporarily unavailable.");const c=AS(l,e.workspaceId);if(!c)return i.owner==="v3"?hd({...e,projection:i,dependencies:r}):Mg({workspaceId:e.workspaceId,projection:i,dependencies:r});const d=await r.applyLocalProjection(e.workspaceId,{kind:"repair",epoch:i.epoch,previousCursor:i.repair?.cursor||null,page:c}),f=Vf(d);if(!d.ok||!f)return Mg({workspaceId:e.workspaceId,projection:i,dependencies:r});const p=i.repair?.cursor||null;if(i=f,i.owner==="v2"&&i.repair?.cursor===p)return{kind:"transient-failure",status:502,error:"Initiative repair made no local progress.",excludeInitiativesFromV2:!1}}for(;i.owner==="v3";){const l=await r.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,cursor:i.opaqueCursor,limit:100});if(l.status===401)return{kind:"auth-failure",status:401,excludeInitiativesFromV2:!0};if(l.status===404||l.status!==409&&!l.ok&&!Dg(l.status))return hd({...e,projection:i,dependencies:r});if(Dg(l.status))return Cl(l,"v3","Workspace sync v3 feed is temporarily unavailable.");if(l.status===409){const p=AS(l,e.workspaceId);if(!p)return hd({...e,projection:i,dependencies:r});const g=await r.applyLocalProjection(e.workspaceId,{kind:"repair",epoch:i.epoch,previousCursor:null,page:p}),h=Vf(g);if(!g.ok||!h)return Cl(g,"v3","Initiative repair could not be applied locally.");if(i=h,i.repair)return Nv({...e,dependencies:t});continue}const c=DE(l,e.workspaceId);if(!c||!i.opaqueCursor)return hd({...e,projection:i,dependencies:r});const d=await r.applyLocalProjection(e.workspaceId,{kind:"delta",epoch:i.epoch,previousCursor:i.opaqueCursor,page:c}),f=Vf(d);if(!d.ok||!f)return Cl(d,"v3","Workspace sync v3 feed could not be applied locally.");if(f.owner!=="v3"||f.repair||f.opaqueCursor!==c.nextCursor)return{kind:"transient-failure",status:502,error:"Workspace sync v3 feed did not commit its exact cursor.",excludeInitiativesFromV2:!0};if(!c.hasMore)return{kind:"v3-active",excludeInitiativesFromV2:!0};if(f.opaqueCursor===i.opaqueCursor)return{kind:"transient-failure",status:502,error:"Workspace sync v3 feed made no local progress.",excludeInitiativesFromV2:!0};i=f}return{kind:"v2-fallback",excludeInitiativesFromV2:!1}}const Td=Object.freeze([]),LE=960*1e3,OE="coverage/task-planning-metadata-v1",BE={getLocalProjection:zC,applyLocalProjection:HC,pullFeed:$C,pullFallbackRepair:YC,getLocalTaskCommentAudit:VC,pullTaskCommentAudit:GC,applyLocalTaskCommentAudit:KC};function mh(e){return Rl(e)?.coverage||null}function Tl(e){return e.owner!=="v3"?Td:Rl(e)?.excludedProjections||Td}function Pi(e,t){return e.coverageProfileId===t.coverageProfileId&&e.coverageVersion===t.coverageVersion&&e.coverageDigest===t.coverageDigest}function WE(e,t){return Pi(t,Aa)?e:{...e,coverage:t}}function Yu(e,t,r,n){return Pi(n,Aa)?e.applyLocalProjection(t,r):e.applyLocalProjection(t,r,n)}function PI(e){return!!(e&&e.coverageId===OE&&(e.owner==="v2"||e.owner==="v3")&&Rl(e)&&typeof e.coverageRepairRequired=="boolean"&&/^\d+$/.test(e.epoch)&&(e.repair===null||typeof e.repair=="object"&&/^\d+$/.test(String(e.repair.epoch||""))&&e.repair.snapshotId&&/^\d+$/.test(String(e.repair.snapshotSequence||""))&&typeof e.repair.resumeCursor=="string"&&(e.repair.cursor===null||typeof e.repair.cursor=="string")))}function $E(e,t){const r=e.data?.projection;return!e.ok||e.data?.success!==!0||e.data?.contractVersion!==3||e.data?.workspaceId!==t||!PI(r)?null:r}function Zu(e,t){const r=e.data?.result?.projection||e.data?.projection;return e.ok&&e.data?.success===!0&&e.data?.contractVersion===3&&e.data?.workspaceId===t&&PI(r)?r:null}function bf(e){return e.ok&&e.data?.success===!0&&e.data?.result?.state==="invalidated"}function wo(e,t,r){return{kind:"transient-failure",status:e.status,retryAfterMs:e.retryAfterMs,error:String(e.data?.error||r),...e.data?.causeCode?{causeCode:String(e.data.causeCode)}:{},...e.data?.causeAssetId?{causeAssetId:String(e.data.causeAssetId)}:{},excludedProjections:Tl(t)}}function ms(e,t){return{kind:"transient-failure",status:502,error:t,excludedProjections:Tl(e)}}function FE(e,t,r){if(!e||typeof e!="object"||Array.isArray(e))return!1;const n=e;return n.success===!0&&n.contractVersion===3&&n.workspaceId===t&&n.previousCursor===r&&Array.isArray(n.entries)&&typeof n.hasMore=="boolean"&&n.hasMore===!!n.nextCursor}async function UE(e){const t=await e.dependencies.getLocalTaskCommentAudit(e.workspaceId),r=t.ok&&t.data?.success===!0&&t.data.contractVersion===3&&t.data.workspaceId===e.workspaceId&&(t.data.cursor===null||t.data.cursor===void 0||typeof t.data.cursor=="string")?t.data.cursor||null:void 0,n=t.data?.nextSweepAt==null?null:String(t.data.nextSweepAt);if(r===void 0)return wo(t,e.projection,"Local task comment audit state is unavailable.");const s=Date.now(),i=Date.parse(n||""),l=Number.isFinite(i)&&i>s&&i<=s+LE;if(r===null&&l)return null;const c=await e.dependencies.pullTaskCommentAudit(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,cursor:r,limit:50});if(c.status===401)return{kind:"auth-failure",status:401,excludedProjections:Tl(e.projection)};if(!c.ok||!FE(c.data,e.workspaceId,r))return wo(c,e.projection,"Cloud task comment audit is temporarily unavailable.");const d=await e.dependencies.applyLocalTaskCommentAudit(e.workspaceId,c.data),f=d.data?.result,p=f?.stale===!0&&f.previousCursor===c.data.nextCursor&&f.nextCursor===c.data.nextCursor;return!d.ok||d.data?.success!==!0||d.data.contractVersion!==3||d.data.workspaceId!==e.workspaceId||!p&&(f?.previousCursor!==r||f?.nextCursor!==c.data.nextCursor)?wo(d,e.projection,"Task comment audit could not be applied locally."):(p||e.onChangesApplied?.(Math.max(0,Number(f?.reconciliationsQueued)||0)+Math.max(0,Number(f?.activityEventsApplied)||0)),null)}function Sf(e){return e===0||e===429||e>=500}function ly(e,t){if(!e||typeof e!="object"||Array.isArray(e))return!1;const r=e;return r.coverageProfileId===t.coverageProfileId&&r.coverageVersion===t.coverageVersion&&r.coverageDigest===t.coverageDigest}function Lw(e,t,r){if(!e||typeof e!="object"||Array.isArray(e))return!1;const n=e;return n.success===!0&&n.protocolVersion===3&&n.workspaceId===t&&ly(n.coverage,r)&&!!n.snapshotId&&/^\d+$/.test(String(n.snapshotSequence||""))&&Number.isFinite(Date.parse(String(n.expiresAt||"")))&&Array.isArray(n.entries)&&typeof n.hasMore=="boolean"&&n.hasMore===!!n.nextRepairCursor&&!!n.resumeCursor&&!!n.diagnostics&&n.diagnostics.returnedEntries===n.entries.length}function EI(e,t,r){const n=e.data,s=String(n?.code||"unknown");let i="repair envelope is incompatible";n?.protocolVersion!==3||n?.workspaceId!==t?i="protocol or workspace scope is incompatible":["CURSOR_EXPIRED","COVERAGE_CHANGED","EXPLICIT_REPAIR"].includes(s)?ly(n.coverage,r)?n.repairMode!=="authoritative-covered-projection-snapshot"?i="repair mode is incompatible":_w(n.peerCapability,r)?Tw(n.legacyV2Boundary,r)?Lw(n.repair,t,r)||(i="repair page is incompatible"):i="legacy v2 boundary attestation is incompatible":i="peer capability attestation is incompatible":i="coverage attestation is incompatible":i="repair code is unsupported";const l=String(n?.error||"").trim();return`Cloud combined workspace sync returned an invalid repair response (${s}; ${i}).`+(l?` Cloud error: ${l}`:"")}function Lg(e,t,r){const n=e.data;return e.status===409&&n?.protocolVersion===3&&n.workspaceId===t&&(n.code==="CURSOR_EXPIRED"||n.code==="COVERAGE_CHANGED"||n.code==="EXPLICIT_REPAIR")&&ly(n.coverage,r)&&n.repairMode==="authoritative-covered-projection-snapshot"&&_w(n.peerCapability,r)&&Tw(n.legacyV2Boundary,r)&&Lw(n.repair,t,r)?n.repair:null}function zE(e,t,r){const n=e.data;return e.ok&&n?.success===!0&&n.protocolVersion===3&&n.workspaceId===t&&ly(n.coverage,r)&&_w(n.peerCapability,r)&&Tw(n.legacyV2Boundary,r)&&Array.isArray(n.entries)&&typeof n.nextCursor=="string"&&n.nextCursor&&typeof n.hasMore=="boolean"&&/^\d+$/.test(String(n.cycleHighWatermark||""))&&/^\d+$/.test(String(n.lastScannedSequence||""))&&n.diagnostics&&n.diagnostics.coveredCount===n.entries.length&&n.diagnostics.scannedCount>=n.entries.length?n:null}function HE(e){const t=e.data&&typeof e.data=="object"?e.data.peerCapability:void 0,r=Array.isArray(t?.missingPrerequisites)?String(t.missingPrerequisites[0]||"").trim():"";return r?`Cloud combined workspace sync prerequisite is not ready (${r}).`:"Cloud combined workspace sync capability attestation is missing or incompatible."}function VE(e,t,r){const n=String(e.data?.code||"").trim();return n&&!["CURSOR_EXPIRED","COVERAGE_CHANGED","EXPLICIT_REPAIR"].includes(n)?EI(e,t,r):HE(e)}function GE(e){return e.data?.success!==!1?!1:e.status===410&&e.data.code==="WORKSPACE_SYNC_V3_COMBINED_REPAIR_SNAPSHOT_UNAVAILABLE"||e.status===400&&e.data.code==="INVALID_SYNC_V3_REPAIR_CURSOR"}async function Og(e){let t=e.projection;const r=mh(t);if(!r)return ms(t,"Persisted combined workspace sync coverage is unsupported.");let n=t.repair?.resumeCursor.startsWith("v2-fallback:")?t.repair.cursor:null;const s=new Set;let i=!1;for(;;){const l=await e.dependencies.pullFallbackRepair(e.resolveCloudAuthUrl,WE({workspaceId:e.workspaceId,cursor:n,limit:100},r));if(l.status===401)return{kind:"auth-failure",status:401,excludedProjections:Tl(t)};if(l.status===410&&n&&!i&&l.data?.success===!1&&l.data.code==="WORKSPACE_SYNC_V3_COMBINED_REPAIR_SNAPSHOT_UNAVAILABLE"){i=!0,n=null,s.clear();continue}if(!l.ok)return wo(l,t,"Combined v2 fallback repair failed.");const c=Lw(l.data,e.workspaceId,r)&&t1(l.data.legacyV2Boundary)?l.data:null;if(!c)return ms(t,"Combined v2 fallback repair returned an invalid page.");const d=await Yu(e.dependencies,e.workspaceId,{kind:"fallback-repair",epoch:t.epoch,previousCursor:n,page:c},r),f=Zu(d,e.workspaceId);if(!d.ok||!f)return wo(d,t,"Combined v2 fallback repair could not be applied locally.");if(t=f,!c.hasMore)return t.owner==="v2"&&!t.repair?{kind:"v2-fallback",excludedProjections:Td}:ms(t,"Combined v2 fallback repair did not release v3 ownership.");const p=String(c.nextRepairCursor||"");if(!p||p===n||s.has(p)||t.owner!=="v3"||t.repair?.cursor!==p||!t.repair.resumeCursor.startsWith("v2-fallback:"))return ms(t,"Combined v2 fallback repair made no progress.");s.add(p),n=p}}function CS(e){return jv(e,!1)}async function jv(e,t){const r={...BE,...e.dependencies},n={...r,applyLocalProjection:async(...b)=>{const v=await r.applyLocalProjection(...b);return v.ok&&v.data?.success!==!1&&!bf(v)&&e.onChangesApplied?.(b[1].page.entries.length),v}},s=e.coverage||Aa,i=Rl(s);if(!i)return{kind:"transient-failure",status:502,error:"Requested combined workspace sync coverage is unsupported.",excludedProjections:Td};const l=await n.getLocalProjection(e.workspaceId,s),c=$E(l,e.workspaceId);if(!c)return{kind:"transient-failure",status:l.status,retryAfterMs:l.retryAfterMs,error:String(l.data?.error||"Local combined projection state is unavailable."),excludedProjections:Td};if(c.owner==="v3"&&c.repair?.resumeCursor.startsWith("v2-fallback:"))return Og({...e,projection:c,dependencies:n});if(!e.activationEnabled)return c.owner==="v3"?Og({...e,projection:c,dependencies:n}):{kind:"v2-fallback",excludedProjections:Td};let d=c,f=!1,p=!1,g=!1,h=t;const y=mh(d);if(!y)return ms(d,"Persisted combined workspace sync coverage is unsupported.");if(g=d.owner==="v3"&&d.repair!==null&&!Pi(y,s),d.coverageRepairRequired||d.owner==="v3"&&!d.repair&&!Pi(y,s)){const b=await n.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,...d.owner==="v3"&&d.opaqueCursor?{cursor:d.opaqueCursor}:{},limit:100,...Pi(s,Aa)?{}:{coverage:s}});if(b.status===401)return{kind:"auth-failure",status:401,excludedProjections:Tl(d)};if(Sf(b.status))return wo(b,d,"Combined workspace sync coverage upgrade is temporarily unavailable.");const v=Lg(b,e.workspaceId,s);if(!v)return ms(d,"Cloud combined workspace sync did not provide the required coverage upgrade repair.");const T=await Yu(n,e.workspaceId,{kind:"repair",epoch:d.epoch,previousCursor:null,page:v,...e.recoveryBatchId?{recoveryBatchId:e.recoveryBatchId}:{}},s),R=Zu(T,e.workspaceId),P=R?mh(R):null;if(R&&bf(T)){if(h)return ms(R,"A refreshed combined repair snapshot still predates authoritative local state.");d=R,p=!0,h=!0}else if(!T.ok||!R||!P||(v.hasMore?!R.repair||R.repair.cursor!==v.nextRepairCursor||!Pi(P,y):R.coverageRepairRequired||R.repair!==null||!Pi(P,s)))return wo(T,d,"Combined workspace sync coverage upgrade could not be applied locally.");d=R,f=!!(e.recoveryBatchId&&!d.repair)}if(e.forceAuthoritativeRepair&&!f&&d.owner==="v3"&&!d.repair){const b=await n.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,limit:100,forceRepair:!0,...Pi(s,Aa)?{}:{coverage:s}});if(b.status===401)return{kind:"auth-failure",status:401,excludedProjections:Tl(d)};if(Sf(b.status))return wo(b,d,"Combined workspace sync authoritative recovery is temporarily unavailable.");const v=Lg(b,e.workspaceId,s);if(!v)return ms(d,"Cloud combined workspace sync did not provide the requested authoritative repair.");const T=await Yu(n,e.workspaceId,{kind:"repair",epoch:d.epoch,previousCursor:null,page:v,...e.recoveryBatchId?{recoveryBatchId:e.recoveryBatchId}:{}},s),R=Zu(T,e.workspaceId);if(!T.ok||!R)return wo(T,d,"Combined workspace sync authoritative recovery could not be applied locally.");if(d=R,bf(T)){if(h)return ms(d,"A refreshed combined repair snapshot still predates authoritative local state.");p=!0,h=!0}}let k=!1,w=!1;for(;d.owner==="v2"||d.repair||p||g;){const b=k||p||g?null:d.repair?.cursor||null,v=await n.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,...k||p||g?{forceRepair:!0}:{repairCursor:b},limit:100,...Pi(s,Aa)?{}:{coverage:s}});if(v.status===401)return{kind:"auth-failure",status:401,excludedProjections:Tl(d)};if(b&&!w&&GE(v)){w=!0,k=!0;continue}if(Sf(v.status))return wo(v,d,"Combined workspace sync feed is temporarily unavailable.");const T=Lg(v,e.workspaceId,s);if(!T)return ms(d,VE(v,e.workspaceId,s));const R=await Yu(n,e.workspaceId,{kind:"repair",epoch:d.epoch,previousCursor:b,page:T,...e.recoveryBatchId?{recoveryBatchId:e.recoveryBatchId}:{}},s),P=Zu(R,e.workspaceId);if(!R.ok||!P)return wo(R,d,"Combined workspace sync repair could not be applied locally.");if(d=P,k=!1,p=!1,g=!1,bf(R)){if(h)return ms(d,"A refreshed combined repair snapshot still predates authoritative local state.");h=!0,p=!0;continue}if(d.repair?.cursor===b)return ms(d,"Combined workspace sync repair made no local progress.")}const S=mh(d);if(d.owner!=="v3"||!S||!Pi(S,s))return ms(d,"Combined workspace sync repair did not activate the requested coverage.");if(e.recoveryBatchId)return{kind:"v3-active",excludedProjections:i.excludedProjections};for(;d.owner==="v3";){const b=await n.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,cursor:d.opaqueCursor,limit:100,...Pi(s,Aa)?{}:{coverage:s}});if(b.status===401)return{kind:"auth-failure",status:401,excludedProjections:Tl(d)};if(b.status===404||b.status!==409&&!b.ok&&!Sf(b.status))return Og({...e,projection:d,dependencies:n});if(Sf(b.status))return wo(b,d,"Combined workspace sync feed is temporarily unavailable.");if(b.status===409){const P=Lg(b,e.workspaceId,s);if(!P)return ms(d,EI(b,e.workspaceId,s));const N=await Yu(n,e.workspaceId,{kind:"repair",epoch:d.epoch,previousCursor:null,page:P,...e.recoveryBatchId?{recoveryBatchId:e.recoveryBatchId}:{}},s),I=Zu(N,e.workspaceId);if(!N.ok||!I)return wo(N,d,"Combined workspace sync repair could not be applied locally.");if(d=I,bf(N))return h?ms(d,"A refreshed combined repair snapshot still predates authoritative local state."):jv({...e,forceAuthoritativeRepair:!0},!0);if(d.repair)return jv({...e,dependencies:r},h);continue}const v=zE(b,e.workspaceId,s);if(!v||!d.opaqueCursor)return Og({...e,projection:d,dependencies:n});const T=await Yu(n,e.workspaceId,{kind:"delta",epoch:d.epoch,previousCursor:d.opaqueCursor,page:v},s),R=Zu(T,e.workspaceId);if(!T.ok||!R)return wo(T,d,"Combined workspace sync page could not be applied locally.");if(R.owner!=="v3"||R.repair||R.opaqueCursor!==v.nextCursor)return ms(d,"Combined workspace sync feed did not commit its exact v3 cursor.");if(!v.hasMore)return await UE({resolveCloudAuthUrl:e.resolveCloudAuthUrl,workspaceId:e.workspaceId,projection:R,dependencies:n,onChangesApplied:e.onChangesApplied})||{kind:"v3-active",excludedProjections:i.excludedProjections};if(R.opaqueCursor===d.opaqueCursor)return ms(d,"Combined workspace sync feed made no local progress.");d=R}return{kind:"v2-fallback",excludedProjections:Td}}var KE={};async function NI(e){const t=e.remoteServices,r=e.localServices.applyV2Batch,n=`attachment-asset:${e.assetId}`,s=await t.pullWorkspaceContent({workspaceId:e.workspaceId,requests:[{kind:"asset",assetId:e.assetId}],previousCursor:null,independentCompletionIdentity:n}),i=s.transferReceipt;let l=!1,c=!1;try{if(!s.ok)return{success:!1,error:`Workspace attachment asset hydration failed (${s.status||0}).`};const d=s.data||{};if((d.remaining?.length||0)>0)return{success:!1,error:`Workspace attachment asset hydration is incomplete: ${e.assetId}`,disposition:"retryable"};const f=Array.isArray(d.missing)&&d.missing.find(P=>P?.kind==="asset"&&"assetId"in P&&String(P.assetId||"").trim()===e.assetId);if(f)return{success:!1,error:f.disposition==="terminal-unavailable"?`Workspace attachment asset is authoritatively unavailable in cloud metadata: ${e.assetId}`:`Workspace attachment asset body is temporarily unavailable in cloud content: ${e.assetId}`,disposition:f.disposition==="terminal-unavailable"?"terminal-unavailable":"retryable"};if((d.missing?.length||0)>0)return{success:!1,error:`Workspace attachment asset hydration returned an unexpected missing result: ${e.assetId}`,disposition:"retryable"};const p=Array.isArray(d.changes)?d.changes:[],g=p.filter(P=>(P.op==="document-upsert"||P.op==="asset-upsert")&&String(P.assetId||"").trim()===e.assetId);if(p.length!==1||g.length!==1)return{success:!1,error:`Workspace attachment asset hydration returned an unexpected payload: ${e.assetId}`};try{await ph(g[0],typeof process<"u"?KE?.TASKFORCE_SYNC_KEY:void 0)}catch{return{success:!1,error:`Workspace attachment asset hydration decryption failed: ${e.assetId}`}}const h=Array.isArray(d.contentMetadata)?d.contentMetadata:[],y=g[0].op==="document-upsert"?"document":"asset",k=h.filter(P=>P.kind===y&&P.assetId===e.assetId&&P.path===g[0].path);if(h.length!==1||k.length!==1)return{success:!1,error:`Workspace attachment asset hydration metadata is unavailable: ${e.assetId}`};const w=k[0],S=g[0].op==="document-upsert"?await jh("document",g[0].content):await jh("asset",g[0].contentBase64);if(S.sha256!==w.sha256.toLowerCase()||S.sizeBytes!==w.sizeBytes)return{success:!1,error:`Workspace attachment asset hydration verification failed: ${e.assetId}`};const b=i?t.buildIndependentContentApplyCompletionGroup({workspaceId:e.workspaceId,identity:n,receipts:[i]}):void 0;if(i&&!b)return{success:!1,error:"Workspace attachment asset hydration could not bind its transfer to local apply."};c=!0;const v=b?await r(e.workspaceId,g,{completionGroup:b}):await r(e.workspaceId,g);if(!v.ok)return{success:!1,error:`Workspace attachment asset hydration apply failed (${v.status||0}).`};l=!0;const T=v.data&&typeof v.data=="object"?v.data:{},R=Array.isArray(T.emittedEventIds)?T.emittedEventIds.map(P=>String(P||"").trim()).filter(Boolean):[];return{success:!0,appliedChanges:g.length,emittedEventIds:R}}finally{if(i&&!l){if(!c){const d=t.buildIndependentContentApplyCompletionGroup({workspaceId:e.workspaceId,identity:n,receipts:[i]});d&&(c=!0,l=(await r(e.workspaceId,[],{completionGroup:d})).ok)}l||await t.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:[i],errorCode:"WORKSPACE_SYNC_V3_ATTACHMENT_HYDRATION_NOT_COMMITTED"})}}}const qE="/api/taskforce/sync/v3/local/recovery";async function YE(e){const t=String(e.workspaceId||"").trim();if(!t)throw new Error("Workspace id is required to prepare local recovery.");const r=await(e.fetchImpl||fetch)(qE,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceId:t})}),n=await r.json().catch(()=>null);if(!r.ok||n?.success!==!0){const c=String(n?.error||`Local workspace sync recovery failed (${r.status}).`),d=typeof n?.code=="string"?n.code.trim():"";let f="unknown-origin";try{f=new URL(r.url).origin}catch{}throw new Error(`${c} [${d||"UNKNOWN_RECOVERY_ERROR"}; HTTP ${r.status}; ${f}]`)}if(n.kind==="none"&&n.needsAuthoritativeRepair===!1&&n.recovery===null)return{kind:"none",needsAuthoritativeRepair:!1,recoveryBatchId:null};if(n.kind!=="recovery"||typeof n.needsAuthoritativeRepair!="boolean"||!n.recovery||typeof n.recovery!="object"||Array.isArray(n.recovery))throw new Error("Local workspace sync recovery returned an invalid response.");const s=n.recovery,i=String(s.recoveryBatchId||"").trim(),l=String(s.state||"");if(!/^recovery-[A-Za-z0-9-]{1,200}$/.test(i)||!["awaiting_baseline","baseline_ready","replay_queued","completed"].includes(l)||n.needsAuthoritativeRepair===!0&&l!=="awaiting_baseline")throw new Error("Local workspace sync recovery returned an invalid state.");return{kind:"recovery",needsAuthoritativeRepair:n.needsAuthoritativeRepair,recoveryBatchId:i,state:l}}function ZE(e){const t=e.data&&typeof e.data=="object"&&!Array.isArray(e.data)?e.data:{},r=String(t.error||"").trim(),n=String(t.code||"").trim(),s=Number(e.status)||0;return r?`Authoritative V2 push echo apply failed (${s}): ${r}${n?` [${n}]`:""}`:`Authoritative V2 push echo apply failed (${s}).`}function JE(e={}){return{readPushOwnership:XC,readContentManifest:ZC,applyV2Batch:QC,listContentPullObligations:OC,recordContentPullObligationFailures:BC,readInitiativeProjection:FC,applyInitiativeProjection:UC,readCombinedProjection:zC,applyCombinedProjection:HC,readTaskCommentAuditCursor:VC,applyTaskCommentAuditPage:KC,prepareOutboxRecovery:t=>YE({workspaceId:t,...e.recoveryFetchImpl?{fetchImpl:e.recoveryFetchImpl}:{}}),completeAuthoritativeRepair:f1}}function XE(e){return e.causeCode==="TASK_ATTACHMENT_ASSET_NOT_READY"&&e.causeAssetId?e.causeAssetId:e.status!==409?null:/^Task attachment asset is unavailable because it has not reached this runtime: ([A-Za-z0-9._:-]+)$/.exec(String(e.error||""))?.[1]||null}function QE(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e.repair;return t&&typeof t=="object"&&!Array.isArray(t)?t:e}function IS(e){return e.kind==="delta"?String(e.page.nextCursor||"")||null:e.page.hasMore===!0?String(e.page.nextRepairCursor||"")||null:e.kind==="repair"&&String(e.page.resumeCursor||"")||null}function eN(e){const t=new WeakMap,r=new Set,n=f=>{const p=QE(f.data);return f.transferReceipt&&(r.add(f.transferReceipt),p&&t.set(p,f.transferReceipt)),f},s=(f,p)=>{const g=t.get(f);if(!g)return;const h=e.remoteServices.buildV3ApplyCompletionGroup({workspaceId:e.workspaceId,apply:p,receipts:[g]});if(!h)throw new Error("A v3 sync transfer receipt did not produce an apply completion group.");return h},i=async f=>{try{await e.remoteServices.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:f,errorCode:Jb})}catch{await e.remoteServices.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:f,errorCode:Jb})}},l=async f=>{const p=t.get(f);p&&(await i([p]),t.delete(f),r.delete(p))},c=async(f,p,g)=>{let h=!1;try{const y=s(f,p),k=await g(y);if(y&&(!k||typeof k!="object"||!("ok"in k)||k.ok!==!0))h=!0,await l(f);else if(y){const w=t.get(f);t.delete(f),w&&r.delete(w)}return k}catch(y){throw h||await l(f),y}};return{abandonPendingReceipts:async()=>{if(r.size===0)return;const f=Array.from(r);await i(f);for(const p of f)r.delete(p)},initiative:{getLocalProjection:e.localServices.readInitiativeProjection,applyLocalProjection:(f,p)=>{if(p.kind==="rollback")return e.localServices.applyInitiativeProjection(f,p);const g={projection:"initiative",kind:p.kind,epoch:p.epoch,previousCursor:p.previousCursor,nextCursor:IS({kind:p.kind,page:p.page})};return c(p.page,g,h=>e.localServices.applyInitiativeProjection(f,p,h?{completionGroup:h}:void 0))},pullFeed:async(f,p)=>n(await e.remoteServices.pullInitiativeFeed(p)),pullInitiativeRepair:async(f,p)=>n(await e.remoteServices.pullInitiativeRepair(p))},combined:{getLocalProjection:e.localServices.readCombinedProjection,applyLocalProjection:(f,p,g)=>{const h={projection:"combined",kind:p.kind,epoch:p.epoch,previousCursor:p.previousCursor,nextCursor:IS({kind:p.kind,page:p.page})};return c(p.page,h,y=>e.localServices.applyCombinedProjection(f,p,g,y?{completionGroup:y}:void 0))},getLocalTaskCommentAudit:e.localServices.readTaskCommentAuditCursor,applyLocalTaskCommentAudit:(f,p)=>{const g={projection:"task-comment-audit",kind:"audit",previousCursor:p.previousCursor,nextCursor:p.nextCursor};return c(p,g,h=>e.localServices.applyTaskCommentAuditPage(f,p,h?{completionGroup:h}:void 0))},pullFeed:async(f,p)=>n(await e.remoteServices.pullCombinedFeed(p)),pullFallbackRepair:async(f,p)=>n(await e.remoteServices.pullCombinedRepair(p)),pullTaskCommentAudit:async(f,p)=>n(await e.remoteServices.pullTaskCommentAudit(p))}}}function tN({cloudAuthConfigured:e,runtimeMode:t,initiativeFeedActivationEnabled:r,combinedFeedActivationEnabled:n,combinedFeedCoverage:s,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:d,checkAuthSession:f,resolveCloudAuthUrl:p,ensureCloudWorkspaceReadyForSync:g,ensureWorkspaceSyncReady:h,handleSyncAuthFailure:y,clearWorkspaceRetry:k,clearWorkspaceIssue:w,isWorkspaceRetryPending:S,isDurableRecoveryBlockingOrdinaryPush:b,isExecutionAuthorized:v=()=>!0,scheduleWorkspaceSyncRetry:T,persistWorkspaceSyncPatchSafely:R,persistWorkspaceSyncPatchBestEffort:P,persistWorkspaceSyncWatermarksSnapshotBestEffort:N,refreshWorkspaceAiProfilePushBaselineFromPersistence:I,reportSyncEvent:$,acquireWorkspaceSyncLease:j,releaseWorkspaceSyncLease:x,recordWorkspaceSyncCompletion:V,reportWorkspaceWindowContention:U,refreshWorkspaceSyncMarkdownDocumentsSnapshot:ne,refreshWorkspaceSyncAiProfilesSnapshot:L,refreshWorkspaceSyncAssetsSnapshot:ie,refreshWorkspaceSyncTaxonomySnapshot:J,refreshWorkspaceSyncPlanningEntitiesSnapshot:ue,refreshWorkspaceSyncDocumentReviewSessionsSnapshot:oe,refreshWorkspaceSyncAnnotatedAttachmentSessionsSnapshot:ge,refreshWorkspaceSyncTaskforceAgentsSnapshot:je,refreshLocalWorkspaceTaskCollections:qe,buildWorkspaceSyncPayload:Ye,buildWorkspaceSyncSignature:he,seedWorkspaceSnapshotPushBaseline:ce,shouldSuppressAttachBootstrapPush:B,recordSuppressedEventIds:K,runtime:Ae,localServices:re,remoteServices:F,setWorkspaceSyncBusy:D,setUserGlobalSyncStatus:z,setUserGlobalSyncError:we,setWorkspaceLastErrorMessage:ke,setWorkspaceLastErrorAt:ee,setWorkspaceLastPullAt:Z,setWorkspaceLastPushAt:H,setWorkspaceSyncPendingChanges:ae,setTasks:Te,setArchivedTasks:Le,now:Ue,scheduleTask:ft,logDebug:He=()=>{},notifyAiProfilesMutated:Fe=()=>{},notifyAgentsMutated:me=()=>{},notifyAgentSkillsMutated:ve=()=>{}}){const{repairMode:ot,forceFullAiProfilePush:Oe,pushInFlight:A,pullInFlight:G,pullAfterPushRequested:_e,pendingPushReplay:Ne,blockedPushSignature:Ee,lastPushedSignature:fe,pendingSignature:nt,lastPushedTaskIds:q,deletedTaskIds:be,deletedTaskWatermarks:Ve,pullCursor:Ce,lastPushedWatermarks:xe,lastPushedTaskChangeKeys:Ie,lastPushedTaskRelationshipChangeKeys:de,lastPushedTaxonomyChangeKey:Be,lastPushedInitiativeIds:at,lastPushedInitiativeWatermarks:Qe,lastPushedWorkstreamIds:Ze,lastPushedWorkstreamWatermarks:Pe,lastPushedAiProfileIds:gt,lastPushedAiProfileWatermarks:it,lastPushedAiProfileChangeKeys:De,lastPushedDocumentPaths:bt,lastPushedDocumentWatermarks:Et,lastPushedAssetPaths:mt,lastPushedAssetWatermarks:qt,lastPushedDocumentReviewSessionIds:et,lastPushedDocumentReviewSessionWatermarks:Y,lastPushedDocumentReviewCommentIds:le,lastPushedDocumentReviewCommentWatermarks:Ke,lastPushedAnnotatedAttachmentSessionIds:It,lastPushedAnnotatedAttachmentSessionWatermarks:vt,lastPushedTaskforceAgentIds:Mt,lastPushedTaskforceAgentWatermarks:gr,lastPushedTaskforceAgentSkillIds:Zt,lastPushedTaskforceAgentSkillWatermarks:or,lastPushedAgentConversationIds:Dt,lastPushedAgentConversationWatermarks:lr,lastPushedTaskEventWatermarks:Rr,baselineResetReason:Lr,captureAttachBootstrapBaseline:Dr,startupFullReconcileRan:Me,startupFullReconcileRequested:rt,fullReconcileInFlight:pt,bootstrapLastProgressAtMs:ht,realtimeSuppressedEventQueue:At}=Ae,Ft=new Map;let Tt=!1;const $t=(xt,ct,tr)=>{if(Tt||!v()||Ft.has(xt))return;let $r=null;$r=ft(()=>{Ft.delete(xt),!Tt&&v()&&ct()},tr),Ft.set(xt,$r)},Ct=()=>{if(!Tt){Tt=!0;for(const xt of Ft.values())xt.cancel();Ft.clear()}},Wt=async(xt,ct)=>{if(!v())return!1;if(ct?.repairMode!==!0&&b())return nt.current=xt,!1;let tr=xv({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:d,repairModeActive:ot.current===!0,repairModeBypass:ct?.repairMode===!0,pushInFlight:A.current,pullInFlight:G.current});if(!tr.allowed&&tr.reason==="auth-required"){if(!await f())return!1;tr=xv({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:!0,repairModeActive:ot.current===!0,repairModeBypass:ct?.repairMode===!0,pushInFlight:A.current,pullInFlight:G.current})}if(!tr.allowed)return tr.retainPendingSignature&&(nt.current=xt),!1;if(B(xt))return!1;if(!await j(l,"push")){const Qr=yE("push");return!Qr.allowed&&Qr.retainPendingSignature&&(nt.current=xt),U("push"),!1}A.current=!0,D(!0),z("syncing"),we(null);const u=Ue().getTime(),Rt=ct?.forceAllAiProfiles===!0||Oe.current===!0,pr=ct?.repairMode===!0||ot.current===!0;let nr=null,ar=!1,an=xt,Bt=!1;try{I?.();const Qr=[await ne(),await L(),await ie(),await J(),await ue(),await oe(),await ge(),await je?.()];if(pr&&Qr.some(wt=>wt===!1)){const wt="Workspace sync repair could not refresh the complete local snapshot. Press Repair to retry.";return k(),z("error"),we(wt),ke(wt),ee(Ue().toISOString()),await P({phase:"error",lastErrorMessage:wt}),$(l,{eventType:"push",status:"error",errorMessage:wt,details:{recovery:"repair-snapshot-refresh-failed"}}),!1}if(!await h()||!v())return!1;const Gt=he();if(Gt&&(an=Gt),B(an))return!1;const Fr=Ne.current,ln=Fr&&Fr.signature===an&&(!Rt||Fr.forceAllAiProfiles===!0)&&(!pr||Fr.repairMode===!0)?Fr:null,tn=ln?.payload||Ye({forceAllAiProfiles:Rt});nr=tn,ar=ln!==null,ae(tn.changes.length);const Ge=await N1({resolveCloudAuthUrl:p,workspaceId:l,payload:tn,ensureCloudWorkspaceReadyForSync:g,repairMode:ln?.repairMode??pr,remoteServices:F,localServices:re});if(!Ge.success){if(Ge.status===401)return Bt=!0,Ne.current=null,await y("push",401),!1;let wt=Ge.error?`Workspace sync push failed (${Ge.status||0}): ${Ge.error}`:`Workspace sync push failed (${Ge.status||0})`;return Ge.status===413&&(wt="Workspace sync failed because the payload is too large. This usually happens when one or more attachments exceed the project limit."),z("error"),we(wt),ke(wt),ee(Ue().toISOString()),$(l,{eventType:"push",status:"error",statusCode:Ge.status,errorMessage:wt,requestMs:Ge.requestMs,details:{payloadDiagnostics:tn.deltaDiagnostics||null,replayedPayload:ar,...Ge.batchProgress?{pushBatchProgress:Ge.batchProgress}:{}}}),nt.current=an,Ge.transient||ii(Ge.status)?(Ne.current={signature:an,payload:tn,forceAllAiProfiles:ln?.forceAllAiProfiles??Rt,repairMode:ln?.repairMode??pr},T(Ge.retryAfterMs)):(Bt=!0,Ee.current=an,Ne.current=null,c==="active"&&R({phase:"error",lastErrorMessage:wt})),!1}const yn=Ge.appliedTaskUpserts||[];if(yn.length>0){const wt=Ge.pushTransferReceipts||[],Gr=Ge.pushBoundary?F.buildV2PushApplyCompletionGroup({workspaceId:l,pushBoundary:Ge.pushBoundary,receipts:wt}):void 0;if(wt.length>0&&!Gr)throw await F.abandonTransferReceipts({workspaceId:l,receipts:wt,errorCode:"WORKSPACE_SYNC_V2_PUSH_APPLY_COMPLETION_INVALID"}),new Error("Accepted V2 push echoes are missing an atomic local apply completion group.");let Ut;try{const dr={repairMode:ln?.repairMode??pr,excludedProjections:Ge.effectiveV2ExcludedProjections},wr=yn.map(Ur=>({op:"upsert",archived:Ur.archived===!0,task:Ur.task,...Ur.durableRevision?{durableRevision:Ur.durableRevision}:{}}));Ut=Gr?await re.applyV2Batch(l,wr,{...dr,completionGroup:Gr}):await re.applyV2Batch(l,wr,dr)}catch(dr){throw wt.length>0&&await F.abandonTransferReceipts({workspaceId:l,receipts:wt,errorCode:"WORKSPACE_SYNC_V2_PUSH_AUTHORITATIVE_APPLY_FAILED"}),dr}if(!Ut.ok)throw wt.length>0&&await F.abandonTransferReceipts({workspaceId:l,receipts:wt,errorCode:"WORKSPACE_SYNC_V2_PUSH_AUTHORITATIVE_APPLY_FAILED"}),new Error(ZE(Ut));for(const dr of yn){const wr=String(dr.task.id||"").trim(),Ur=String(dr.task.updatedAt||dr.task.createdAt||"").trim();!wr||!Ur||(Ge.currentTaskWatermarks?.set(wr,Ur),Ge.pushedWatermarks.set(wr,Ur))}try{await qe()}catch{He("push_local_task_refresh_failed",{workspaceId:l,taskCount:yn.length})}}Ne.current=null,Ee.current="",fe.current=an,q.current=Ge.currentTaskIds,xe.current=Ge.currentTaskWatermarks?new Map(Ge.currentTaskWatermarks):new Map(xe.current),Ie.current=Ge.currentTaskChangeKeys?new Map(Ge.currentTaskChangeKeys):new Map(Ie.current),de&&(de.current=Ge.currentTaskRelationshipChangeKeys?new Map(Ge.currentTaskRelationshipChangeKeys):new Map(de.current)),Be&&(Be.current=Ge.currentTaxonomyChangeKey??Be.current),at.current=new Set(Ge.currentInitiativeIds),Qe.current=new Map(Ge.currentInitiativeWatermarks),Ze.current=new Set(Ge.currentWorkstreamIds),Pe.current=new Map(Ge.currentWorkstreamWatermarks),gt.current=new Set(Ge.currentAiProfileIds),it.current=new Map(Ge.currentAiProfileWatermarks),De.current=Ge.currentAiProfileChangeKeys?new Map(Ge.currentAiProfileChangeKeys):new Map(De.current),bt.current=new Set(Ge.currentDocumentPaths),Et.current=new Map(Ge.currentDocumentWatermarks),mt.current=new Set(Ge.currentAssetPaths),qt.current=new Map(Ge.currentAssetWatermarks),et.current=new Set(Ge.currentDocumentReviewSessionIds),Y.current=new Map(Ge.currentDocumentReviewSessionWatermarks),le.current=new Set(Ge.currentDocumentReviewCommentIds),Ke.current=new Map(Ge.currentDocumentReviewCommentWatermarks),It.current=new Set(Ge.currentAnnotatedAttachmentSessionIds),vt.current=new Map(Ge.currentAnnotatedAttachmentSessionWatermarks),Mt&&(Mt.current=new Set(Ge.currentTaskforceAgentIds)),gr&&(gr.current=new Map(Ge.currentTaskforceAgentWatermarks)),Zt&&(Zt.current=new Set(Ge.currentTaskforceAgentSkillIds)),or&&(or.current=new Map(Ge.currentTaskforceAgentSkillWatermarks)),Dt&&(Dt.current=new Set(Ge.currentAgentConversationIds)),lr&&(lr.current=new Map(Ge.currentAgentConversationWatermarks)),Rr.current=new Map(Ge.currentTaskEventWatermarks),Rt&&(Oe.current=!1);for(const[wt,Gr]of Ge.pushedWatermarks)xe.current.set(wt,Gr);for(const[wt,Gr]of Ge.pushedTaskChangeKeys||new Map)Ie.current.set(wt,Gr);if(Ge.deleteTaskIds.size>0)for(const wt of Ge.deleteTaskIds)be.current.delete(wt),Ve.current.delete(wt),xe.current.delete(wt),Ie.current.delete(wt);const Kr=await N();Lr.current=Kr?null:"storage-write-failed",Array.isArray(Ge.emittedEventIds)&&Ge.emittedEventIds.length>0&&K(Ge.emittedEventIds,{queueRef:At,maxQueueSize:2048}),k();const ir=Ge.syncedAt||Ue().toISOString();return fe.current=he(),H(ir),ae(0),z("idle"),R({phase:"active",lastPushAt:ir,lastSyncedAt:ir}),$(l,{eventType:c==="provision-local"?"bootstrap":"push",status:"success",changeCount:Ge.changeCount,requestMs:Ge.requestMs,details:{payloadDiagnostics:Ge.effectiveDeltaDiagnostics||tn.deltaDiagnostics||null,...Ge.batchProgress?{pushBatchProgress:Ge.batchProgress}:{},...Ge.effectiveDeltaDiagnostics&&tn.deltaDiagnostics&&Ge.effectiveDeltaDiagnostics.totalChanges!==tn.deltaDiagnostics.totalChanges?{candidatePayloadDiagnostics:tn.deltaDiagnostics}:{},replayedPayload:ar}}),!0}catch(Qr){const xr="Workspace sync push failed.";return z("error"),we(xr),ke(xr),ee(Ue().toISOString()),nt.current=an,nr&&(Ne.current={signature:an,payload:nr,forceAllAiProfiles:Rt,repairMode:pr}),T(),$(l,{eventType:"push",status:"error",errorMessage:`${xr} ${String(Qr?.message||"").trim()}`.trim(),details:{replayedPayload:ar}}),He("push_failed_exception",{workspaceId:l,elapsedMs:Ue().getTime()-u}),!1}finally{A.current=!1,D(G.current),x(l),_e.current&&!G.current&&!S()&&$t("pull-after-push",()=>{Ot()},0);const Qr=nt.current,xr=he();Qr&&xr&&xr!==fe.current&&!G.current&&!S()&&!Bt&&$t("pending-push",()=>{const Gt=nt.current||xr;nt.current="",Wt(Gt)},120)}},Ot=async xt=>{if(!v())return!1;const ct=xt?.repairMode===!0,tr=async nr=>{ct&&(k(),await P({phase:"error",lastErrorMessage:nr}))};let $r=Rv({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:d,repairModeActive:ot.current===!0,repairModeBypass:ct,retryPending:S(),pullInFlight:G.current,pushInFlight:A.current});if(!$r.allowed&&$r.reason==="auth-required"){if(!await f())return await tr("Session expired. Sign in again, then press Repair to resume cloud sync."),!1;$r=Rv({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:!0,repairModeActive:ot.current===!0,repairModeBypass:ct,retryPending:S(),pullInFlight:G.current,pushInFlight:A.current})}if(!$r.allowed)return $r.reason==="push-in-flight"&&!ct&&(_e.current=!0),!1;if(_e.current=!1,!await j(l,"pull"))return U("pull"),!1;G.current=!0,D(!0),z("syncing"),we(null);const Rt=Ue().getTime();let pr=!1;try{if(!await h())return await tr("Workspace sync repair could not validate cloud access. Resolve the reported error, then press Repair to retry."),!1;if(!v())return!1;const ar={authFailure:!1,failure:null};let an=!1,Bt=[],Qr=0;const xr=Ut=>{Qr+=Math.max(0,Number(Ut)||0)},Gt=eN({workspaceId:l,remoteServices:F,localServices:re});let Fr="",en="";const ln=(Ut,dr)=>Ut.kind==="auth-failure"?(ar.authFailure=!0,!1):Ut.kind==="transient-failure"?(ar.failure={status:Ut.status,retryAfterMs:Ut.retryAfterMs,error:String(Ut.error||"Workspace projection synchronization failed."),projectionCycle:dr},!1):!0;try{if(n===!0){const Ut=await Nv({activationEnabled:!1,resolveCloudAuthUrl:p,workspaceId:l,onChangesApplied:xr,dependencies:Gt.initiative});if(ln(Ut,"initiative")){const dr=await CS({activationEnabled:!0,coverage:s,resolveCloudAuthUrl:p,workspaceId:l,forceAuthoritativeRepair:xt?.forceV3AuthoritativeRepair===!0,...xt?.recoveryBatchId?{recoveryBatchId:xt.recoveryBatchId}:{},onChangesApplied:xr,dependencies:Gt.combined});Bt=dr.excludedProjections;const wr=dr.kind==="transient-failure"?XE(dr):null;wr?(Fr=wr,en=dr.kind==="transient-failure"?dr.error:""):ln(dr,"combined")}}else{if(n!==void 0){const Ut=await CS({activationEnabled:!1,coverage:s,resolveCloudAuthUrl:p,workspaceId:l,onChangesApplied:xr,dependencies:Gt.combined});ln(Ut,"combined")}if(!ar.authFailure&&!ar.failure&&r!==void 0){const Ut=await Nv({activationEnabled:r,resolveCloudAuthUrl:p,workspaceId:l,onChangesApplied:xr,dependencies:Gt.initiative});ln(Ut,"initiative")&&(an=Ut.excludeInitiativesFromV2)}}}finally{await Gt.abandonPendingReceipts()}if(ar.authFailure)return await y("pull",401),await tr("Session expired. Sign in again, then press Repair to resume cloud sync."),!1;if(ar.failure)return ke(ar.failure.error),ee(Ue().toISOString()),$(l,{eventType:"apply",status:"error",statusCode:ar.failure.status,errorMessage:ar.failure.error,details:{recovery:"projection-cycle-retry",projectionCycle:ar.failure.projectionCycle,...ar.failure.retryAfterMs!==void 0?{retryAfterMs:ar.failure.retryAfterMs}:{}}}),ct?await P({phase:"error",lastErrorMessage:ar.failure.error}):T(ar.failure.retryAfterMs),!1;if(Fr){const Ut=await NI({workspaceId:l,assetId:Fr,remoteServices:F,localServices:re}).catch(dr=>({success:!1,error:dr instanceof Error?dr.message:String(dr||"Unknown hydration failure.")}));return Ut.success&&Ut.emittedEventIds.length>0&&K(Ut.emittedEventIds,{ttlMs:6e4}),z("error"),we(en),ke(en),ee(Ue().toISOString()),$(l,{eventType:"apply",status:"error",errorMessage:en,changeCount:Ut.success?Ut.appliedChanges:0,details:{recovery:Ut.success?"combined-attachment-asset-hydrated-retry-pending":"combined-attachment-asset-hydration-failed",assetId:Fr,...Ut.success?{}:{hydrationError:Ut.error}}}),T(),!1}const tn=AE({workspaceSyncPhase:c,forceCursorNull:xt?.forceCursorNull===!0,currentCursor:Ce.current}),Ge=await j1({resolveCloudAuthUrl:p,workspaceId:l,cursor:ct?null:tn.cursor,bootstrap:tn.bootstrap,ensureCloudWorkspaceReadyForSync:g,maxPages:ct?200:20,repairMode:ct||ot.current===!0,contentMode:xt?.forceCursorNull===!0?"manifest":"full",excludeInitiatives:an,excludedProjections:Bt,onPagePulled:()=>{ht.current=Ue().getTime()},onAiProfilesApplied:()=>{Fe({workspaceId:l,reason:"sync-apply",origin:"sync-orchestrator"})},onChangesApplied:()=>{ht.current=Ue().getTime()},remoteServices:F,localServices:re});if(!Ge.success){if(Ge.kind==="pull_http"&&Ge.status===401)return await y("pull",401),await tr("Session expired. Sign in again, then press Repair to resume cloud sync."),!1;if(Ge.kind==="apply_auth")return await y("apply",401),await tr("Session expired. Sign in again, then press Repair to resume cloud sync."),!1;if(Ge.kind==="pull_http"&&Ge.errorCode==="INVALID_SYNC_CURSOR"){const dr="Saved sync cursor was invalid. Clearing it and retrying from the beginning.";return Ce.current=null,R({pullCursor:null}),z("error"),we(dr),ke(dr),ee(Ue().toISOString()),$(l,{eventType:"pull",status:"error",statusCode:Ge.status,errorMessage:dr,requestMs:Ge.pullRequestMs,details:{recovery:"cursor-reset",...Ge.serverDiagnostics?{serverPullDiagnostics:Ge.serverDiagnostics}:{}}}),ct?await P({phase:"error",lastErrorMessage:dr}):T(150),!1}let Ut=Ge.kind==="apply_payload"||Ge.kind==="apply_all_candidates"||Ge.kind==="exception"?String(Ge.error||"Workspace sync apply failed."):`Workspace sync pull failed (${Ge.status||0})`;return Ge.status===413&&(Ut="Local sync failed because the downloaded payload is too large. This usually happens when the workspace contains massive attachments."),z("error"),we(Ut),ke(Ut),ee(Ue().toISOString()),$(l,{eventType:Ge.kind?.startsWith("apply")?"apply":"pull",status:"error",statusCode:Ge.status,errorMessage:Ut,requestMs:Ge.pullRequestMs,details:{pages:Ge.pages,applyMs:Ge.applyMs,...Ge.serverDiagnostics?{serverPullDiagnostics:Ge.serverDiagnostics}:{}}}),ct?await P({phase:"error",lastErrorMessage:Ut}):Ge.transient||Ge.hasTransientApplyFailure||ii(Ge.status)?T(Ge.retryAfterMs):R({phase:"error",lastErrorMessage:Ut}),!1}if(ct&&Ge.hasMore===!0){const Ut="Workspace sync repair stopped before the full cloud snapshot was downloaded. Press Repair to retry.";return z("error"),we(Ut),ke(Ut),ee(Ue().toISOString()),await P({phase:"error",lastErrorMessage:Ut}),$(l,{eventType:"pull",status:"error",errorMessage:Ut,requestMs:Ge.pullRequestMs,details:{pages:Ge.pages,applyMs:Ge.applyMs,recovery:"repair-pull-incomplete"}}),!1}Array.isArray(Ge.emittedEventIds)&&K(Ge.emittedEventIds,{ttlMs:6e4}),(Ge.pulledTaskforceAgentUpserts||Ge.pulledAgentRoleUpserts||Ge.pulledTaskforceAgentSkillUpserts||Ge.pulledAgentConversationUpserts)&&await je?.(),(Ge.pulledTaskforceAgentUpserts||Ge.pulledAgentRoleUpserts||Ge.pulledAgentConversationUpserts)&&me({workspaceId:l,reason:"sync-apply"}),Ge.pulledTaskforceAgentSkillUpserts&&ve({workspaceId:l,reason:"sync-apply"}),Ge.pulledDeleteTaskIds.size>0&&(Te(Ut=>Ut.filter(dr=>!Ge.pulledDeleteTaskIds.has(String(dr.id||"")))),Le(Ut=>Ut.filter(dr=>!Ge.pulledDeleteTaskIds.has(String(dr.id||"")))));const Kr=Array.isArray(Ge.documentDecryptFailures)?Ge.documentDecryptFailures.filter(Ut=>String(Ut||"").trim().length>0):[];if(Kr.length>0&&He("pull_document_decrypt_failures",{workspaceId:l,failureCount:Kr.length}),Ce.current=Ge.cursor||null,Qr>0||Ge.appliedChanges>0&&(ct||Ge.pulledActiveUpserts||Ge.pulledArchivedUpserts||Ge.pulledTaskEventUpserts||Ge.pulledPlanningUpserts||Ge.pulledDeleteTaskIds.size>0))try{await qe()}catch{if(He("pull_local_refresh_failed",{workspaceId:l,appliedChanges:Ge.appliedChanges+Qr}),ct){const Ut="Workspace sync repair could not refresh tasks and relationships after the cloud pull. Press Repair to retry.";return k(),z("error"),we(Ut),ke(Ut),ee(Ue().toISOString()),await P({phase:"error",lastErrorMessage:Ut}),!1}}k(),w();const ir=Ge.syncedAt||Ue().toISOString();Z(ir),ae(0),z("idle");const wt=CE({workspaceSyncPhase:c,forceCursorNull:xt?.forceCursorNull===!0,repairMode:ct,startupFullReconcileRan:Me.current,pendingSignature:nt.current,fallbackSignature:he(),lastPushedSignature:fe.current});if(wt.shouldCaptureAttachBootstrapBaseline&&(Dr.current=!0),wt.shouldClearPendingSignature&&(nt.current=wt.deferredPushSignature||"",Ne.current=null),await P({phase:"active",pullCursor:Ce.current,lastPullAt:ir,lastSyncedAt:ir,...xt?.forceCursorNull===!0?{startupFullReconcileCompletedAt:ir}:{},lastErrorMessage:null}),$(l,{eventType:wt.successEventType,status:"success",changeCount:Ge.appliedChanges+Qr,requestMs:Ge.pullRequestMs,details:{pages:Ge.pages,applyMs:Ge.applyMs,...Ge.serverDiagnostics?{serverPullDiagnostics:Ge.serverDiagnostics}:{}}}),wt.shouldRefreshReferenceSnapshots&&(await ne(),await ie(),await oe(),await ge()),wt.shouldSeedWorkspaceSnapshotPushBaseline&&ce(),wt.shouldRefreshReferenceSnapshots||wt.shouldSeedWorkspaceSnapshotPushBaseline)return pr=!0,!0;if(wt.shouldScheduleStartupFullReconcile&&(rt.current=!0,$t("startup-full-reconcile",()=>{!rt.current||pt.current||(rt.current=!1,Me.current=!0,pt.current=!0,Ot({forceCursorNull:!0}).finally(()=>{pt.current=!1}))},250)),xt?.forceCursorNull===!0&&!ct&&c==="active"){const Ut=he();Ut&&(Oe.current=!0,nt.current=Ut,$t("pending-push",()=>{const dr=nt.current||Ut;nt.current="",Wt(dr,{forceAllAiProfiles:!0})},120))}else if(wt.deferredPushSignature){const Ut=wt.deferredPushSignature;$t("pending-push",()=>{const dr=nt.current||Ut;nt.current="",Wt(dr)},120)}return pr=!0,!0}catch(nr){const ar=String(nr?.message||"").trim(),an=ar?`Workspace sync pull failed. ${ar}`:"Workspace sync pull failed.";return z("error"),we(an),ke(an),ee(Ue().toISOString()),ct?await P({phase:"error",lastErrorMessage:an}):T(),$(l,{eventType:"pull",status:"error",errorMessage:an,requestMs:Ue().getTime()-Rt}),He("pull_failed_exception",{workspaceId:l,elapsedMs:Ue().getTime()-Rt,error:ar||null}),!1}finally{G.current=!1,D(A.current),pr&&V(l,"pull"),x(l)}};return{pushWorkspaceChangesToCloud:Wt,pullWorkspaceChangesFromCloud:Ot,resumeDeferredWork:()=>{v()&&(_e.current&&$t("pull-after-push",()=>{Ot()},0),nt.current&&$t("pending-push",()=>{const xt=nt.current;xt&&(nt.current="",Wt(xt,{forceAllAiProfiles:Oe.current}))},120),rt.current&&$t("startup-full-reconcile",()=>{!rt.current||pt.current||(rt.current=!1,Me.current=!0,pt.current=!0,Ot({forceCursorNull:!0}).finally(()=>{pt.current=!1}))},250))},dispose:Ct}}function rN(e){return tN({now:()=>new Date,scheduleTask:(t,r)=>{const n=window.setTimeout(t,r);return{cancel:()=>window.clearTimeout(n)}},logDebug:Es,notifyAiProfilesMutated:mI,notifyAgentsMutated:gI,notifyAgentSkillsMutated:hI,...e})}const nN="/api/taskforce/sync/v3/local/dispatch",aN=20,sN=1e5;function oN(e){if(e===void 0)return;if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Local outbox dispatch returned an invalid outbox status.");const t=e,r=w=>{const S=Number(t[w]);return Number.isInteger(S)&&S>=0?S:null},n=r("activeDepth"),s=r("pending"),i=r("inFlight"),l=r("blocked");let c;if(t.operationStates!==void 0){if(!t.operationStates||typeof t.operationStates!="object"||Array.isArray(t.operationStates))throw new Error("Local outbox dispatch returned invalid operation states.");const w=t.operationStates,S=v=>{const T=Number(w[v]);return Number.isInteger(T)&&T>=0?T:null},b={pending:S("pending"),retryScheduled:S("retryScheduled"),inFlight:S("inFlight"),stale:S("stale"),blocked:S("blocked")};if(Object.values(b).some(v=>v===null)||s===null||i===null||l===null||b.pending+b.retryScheduled!==s||b.inFlight+b.stale!==i||b.blocked!==l)throw new Error("Local outbox dispatch returned inconsistent operation states.");c={pending:b.pending,retryScheduled:b.retryScheduled,inFlight:b.inFlight,stale:b.stale,blocked:b.blocked}}const d=w=>t[w]===null||typeof t[w]=="string"?t[w]:void 0,f=d("oldestActiveCreatedAt"),p=d("oldestActionableAt"),g=d("blockedErrorCode"),h=t.recovery;let y=null;if(h!==null){if(!h||typeof h!="object"||Array.isArray(h))throw new Error("Local outbox dispatch returned an invalid recovery status.");const w=h,S=I=>{const $=Number(w[I]);return Number.isInteger($)&&$>=0?$:null},b=String(w.state||""),v=S("replayTotal"),T=S("replayPending"),R=S("replayInFlight"),P=S("replayBlocked"),N=S("replayAccepted");if(typeof w.recoveryBatchId!="string"||!["awaiting_baseline","baseline_ready","replay_queued","completed"].includes(b)||v===null||T===null||R===null||P===null||N===null||v<T+R+P+N||typeof w.createdAt!="string"||typeof w.updatedAt!="string"||w.completedAt!==null&&typeof w.completedAt!="string")throw new Error("Local outbox dispatch returned an invalid recovery status.");y={recoveryBatchId:w.recoveryBatchId,state:b,replayTotal:v,replayPending:T,replayInFlight:R,replayBlocked:P,replayAccepted:N,createdAt:w.createdAt,updatedAt:w.updatedAt,completedAt:w.completedAt}}let k;if(t.attachmentApplyObligations!==void 0){if(!t.attachmentApplyObligations||typeof t.attachmentApplyObligations!="object"||Array.isArray(t.attachmentApplyObligations))throw new Error("Local outbox dispatch returned invalid attachment apply obligations.");const w=t.attachmentApplyObligations,S=Number(w.open),b=Number(w.due),v=Number(w.totalAttempts);if(![S,b,v].every(T=>Number.isInteger(T)&&T>=0)||b>S||w.oldestOpenCreatedAt!==null&&typeof w.oldestOpenCreatedAt!="string"||w.nextAttemptAt!==null&&typeof w.nextAttemptAt!="string"||w.lastError!==null&&typeof w.lastError!="string")throw new Error("Local outbox dispatch returned invalid attachment apply obligations.");k={open:S,due:b,totalAttempts:v,oldestOpenCreatedAt:w.oldestOpenCreatedAt,nextAttemptAt:w.nextAttemptAt,lastError:w.lastError}}if(n===null||s===null||i===null||l===null||n!==s+i+l||f===void 0||g===void 0||!Object.prototype.hasOwnProperty.call(t,"recovery"))throw new Error("Local outbox dispatch returned an invalid outbox status.");return{activeDepth:n,pending:s,inFlight:i,blocked:l,...c?{operationStates:c}:{},oldestActiveCreatedAt:f,...p!==void 0?{oldestActionableAt:p}:{},blockedErrorCode:g,recovery:y,...k?{attachmentApplyObligations:k}:{}}}function iN(e){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Local outbox dispatch returned an invalid response.");const t=e,r=Number(t.claimed),n=Array.isArray(t.outcomes)?t.outcomes:[],s=i=>{if(i.retryDependency===void 0)return!0;if(i.disposition!=="retry"||!i.retryDependency||typeof i.retryDependency!="object"||Array.isArray(i.retryDependency))return!1;const l=i.retryDependency;return Object.keys(l).sort().join(",")==="assetId,kind"&&l.kind==="asset"&&typeof l.assetId=="string"&&/^[A-Za-z0-9._:-]+$/.test(l.assetId)};if(t.success!==!0||!Number.isInteger(r)||r<0||r>1||n.length!==r||n.some(i=>!i||typeof i!="object"||!["accepted","retry","blocked","lease-lost"].includes(String(i.disposition||""))))throw new Error("Local outbox dispatch returned an invalid response.");if(n.some(i=>!s(i)))throw new Error("Local outbox dispatch returned an invalid retry dependency.");return{success:!0,claimed:r,outcomes:n,outbox:oN(t.outbox)}}async function cN(e){const t=String(e.workspaceId||"").trim();if(!t)throw new Error("Workspace id is required to drain the local outbox.");const r=e.fetchImpl||fetch,n=Math.max(1,Math.min(100,Math.floor(e.operationBudget??aN))),s=Math.max(1,Math.floor(e.requestTimeoutMs??sN));let i=0;const l=new Set;let c;for(;i<n;){const d=new AbortController;let f,p;const g=new Promise((y,k)=>{p=k,f=setTimeout(()=>{d.abort(),k(new Error("Local outbox dispatch timed out."))},s)}),h=()=>{d.abort(e.signal?.reason),p?.(new DOMException("Local outbox dispatch aborted.","AbortError"))};e.signal?.aborted?h():e.signal?.addEventListener("abort",h,{once:!0});try{const y=(async()=>{const b=await r(nN,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceId:t,limit:1}),signal:d.signal});if(!b.ok)throw new Error(`Local outbox dispatch failed (${b.status}).`);return iN(await b.json())})(),k=await Promise.race([y,g]);if(c=k.outbox,k.claimed===0)return{processed:i,retryRecommended:!1,budgetExhausted:!1,...c?{outbox:c}:{}};i+=k.claimed;const w=k.outcomes[0],S=w?.disposition;if(S==="retry"&&w.retryDependency?.kind==="asset"){const b=`${w.retryDependency.kind}:${w.retryDependency.assetId}`;if(l.has(b))return{processed:i,retryRecommended:!0,budgetExhausted:!1,...c?{outbox:c}:{}};if(!e.hydrateAsset||!await e.hydrateAsset(w.retryDependency.assetId))return{processed:i,retryRecommended:!0,budgetExhausted:!1,...c?{outbox:c}:{}};l.add(b);continue}if(S==="retry"||S==="lease-lost")return{processed:i,retryRecommended:!0,budgetExhausted:!1,...c?{outbox:c}:{}}}finally{f!==void 0&&clearTimeout(f),e.signal?.removeEventListener("abort",h)}}return{processed:i,retryRecommended:!0,budgetExhausted:!0,...c?{outbox:c}:{}}}const lN=3e4,dN=1e3,uN=3e4;function pN(e){const t=o.useRef(null),r=o.useRef(""),n=o.useRef(null),s=o.useRef(null),i=o.useRef({enabled:e.enabled,workspaceId:e.workspaceId,authorityScope:e.authorityScope,remoteServices:e.remoteServices,localServices:e.localServices,isAuthorityCurrent:e.isAuthorityCurrent,onHydratedEventIds:e.onHydratedEventIds,onOutboxStatus:e.onOutboxStatus});i.current={enabled:e.enabled,workspaceId:e.workspaceId,authorityScope:e.authorityScope,remoteServices:e.remoteServices,localServices:e.localServices,isAuthorityCurrent:e.isAuthorityCurrent,onHydratedEventIds:e.onHydratedEventIds,onOutboxStatus:e.onOutboxStatus};const l=o.useCallback(()=>{n.current!==null&&(window.clearTimeout(n.current),n.current=null)},[]),c=o.useCallback(async()=>{const d=i.current;if(!d.enabled||!d.workspaceId||!d.remoteServices)return;const f=d.workspaceId,p=d.remoteServices,g=s.current;if(g?.key===f&&g.authorityScope===d.authorityScope&&g.at>Date.now()){n.current===null&&(n.current=window.setTimeout(()=>{n.current=null,c()},g.at-Date.now()));return}(g?.key!==f||g.authorityScope!==d.authorityScope||g.at<=Date.now())&&(s.current=null);const h=t.current;if(h?.key===f&&h.authorityScope===d.authorityScope){r.current=f;return}h&&h.controller.abort(),l();const y={key:f,authorityScope:d.authorityScope,controller:new AbortController};t.current=y;let k=0;try{const w=await cN({workspaceId:f,signal:y.controller.signal,hydrateAsset:async b=>{const v=i.current;if(y.controller.signal.aborted||!v.enabled||v.workspaceId!==f||v.authorityScope!==y.authorityScope||v.remoteServices!==p||v.isAuthorityCurrent?.(y.authorityScope)===!1)return!1;const T=await NI({workspaceId:f,assetId:b,remoteServices:p,localServices:d.localServices}).catch(()=>({success:!1,error:"Attachment hydration failed."})),R=i.current;return y.controller.signal.aborted||!R.enabled||R.workspaceId!==f||R.authorityScope!==y.authorityScope||R.remoteServices!==p||R.isAuthorityCurrent?.(y.authorityScope)===!1||!T.success?!1:(T.emittedEventIds.length>0&&d.onHydratedEventIds?.(T.emittedEventIds),!0)}}),S=i.current;if(!S.enabled||S.workspaceId!==f||S.authorityScope!==y.authorityScope)return;w.retryRecommended&&(k=w.budgetExhausted?dN:uN,s.current={key:f,authorityScope:y.authorityScope,at:Date.now()+k}),w.outbox&&d.onOutboxStatus?.(w.outbox)}catch{}finally{t.current===y&&(t.current=null)}if(!(!i.current.enabled||i.current.workspaceId!==f)){if(r.current===f){r.current="",c();return}k>0&&(n.current=window.setTimeout(()=>{n.current=null,c()},k))}},[l]);o.useEffect(()=>{e.onOutboxStatus?.(null)},[e.onOutboxStatus,e.workspaceId]),o.useEffect(()=>{if(!e.enabled){t.current?.controller.abort(),t.current=null,r.current="",s.current=null,i.current.onOutboxStatus?.(null),l();return}c()},[l,e.enabled,e.mutationFingerprint,e.authorityScope,e.remoteServices,e.workspaceId,c]),o.useEffect(()=>{if(!e.enabled)return;const d=()=>{c()},f=()=>{document.visibilityState==="visible"&&c()},p=window.setInterval(()=>{c()},lN);return window.addEventListener("online",d),document.addEventListener("visibilitychange",f),()=>{window.removeEventListener("online",d),document.removeEventListener("visibilitychange",f),window.clearInterval(p);const g=t.current;g?.key===e.workspaceId&&(g.controller.abort(),t.current=null),r.current===e.workspaceId&&(r.current=""),l()}},[l,e.authorityScope,e.enabled,e.remoteServices,e.workspaceId,c])}const ko="/api/taskforce/sync/v3/local/coordinator";class ns extends Error{constructor(t,r,n){super(t),this.code=r,this.status=n,this.name="LocalSyncCoordinatorBrowserClientError"}}class jI{fetchImpl;constructor(t){this.fetchImpl=t||globalThis.fetch.bind(globalThis)}attachWorkspace(t){return this.requestJson(`${ko}/attach`,Ri("POST",t))}readStatus(t){const r=Bg(t);return this.requestJson(`${ko}/status?${r.toString()}`,{method:"GET",credentials:"include"})}attachCredential(t){return this.requestJson(`${ko}/credential`,Ri("POST",t))}switchWorkspace(t){return this.requestJson(`${ko}/workspace-switch`,Ri("POST",t))}clearCredential(t){const r=Bg(t);return this.requestJson(`${ko}/credential?${r.toString()}`,{method:"DELETE",credentials:"include"})}issuePermit(t){return this.requestJson(`${ko}/permits`,Ri("POST",t))}issueCommand(t){return this.requestJson(`${ko}/commands`,Ri("POST",t))}signalWake(t){return this.requestJson(`${ko}/wake`,Ri("POST",t))}transferOwnership(t){return this.requestJson(`${ko}/ownership-transfer`,Ri("POST",t))}readCommand(t){const r=Bg(t);return t.rootCommandId&&r.set("rootCommandId",t.rootCommandId),this.requestJson(`${ko}/commands/${encodeURIComponent(t.commandId)}?${r.toString()}`,{method:"GET",credentials:"include"})}readPermit(t){const r=Bg(t);return this.requestJson(`${ko}/permits/${encodeURIComponent(t.permitId)}?${r.toString()}`,{method:"GET",credentials:"include"})}async executeGateway(t){return await this.fetchImpl(`${ko}/gateway`,Ri("POST",t))}applyCombinedFeed(t){const r=t.command.kind==="delta"?t.command:{...t.command,epoch:t.command.expectedEpoch,previousCursor:t.command.previousRepairCursor,expectedEpoch:void 0,previousRepairCursor:void 0};return this.requestJson("/api/taskforce/sync/v3/local/feed",Ri("POST",{workspaceId:t.workspaceId,executionPermitId:t.executionPermitId,coordinatorGeneration:t.coordinatorGeneration,...r,...t.coverage}))}releasePermit(t){return this.requestJson(`${ko}/permits/${encodeURIComponent(t.permitId)}/release`,Ri("POST",{workspaceId:t.workspaceId,coordinatorGeneration:t.coordinatorGeneration,...t.pushBoundary?{pushBoundary:t.pushBoundary}:{}}))}abandonPermit(t){return this.permitAction(t,"abandon")}permitAction(t,r){return this.requestJson(`${ko}/permits/${encodeURIComponent(t.permitId)}/${r}`,Ri("POST",{workspaceId:t.workspaceId,coordinatorGeneration:t.coordinatorGeneration,...t.errorCode?{errorCode:t.errorCode}:{}}))}async requestJson(t,r){const n=await this.fetchImpl(t,r);return n.ok||await fN(n),n.json()}}function Bg(e){return new URLSearchParams({workspaceId:e.workspaceId,coordinatorGeneration:String(e.coordinatorGeneration)})}function Ri(e,t){return{method:e,headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(t)}}async function fN(e){let t={};try{t=await e.json()}catch{}throw new ns(String(t.error||`Local sync coordinator request failed (${e.status}).`),String(t.code||"SYNC_COORDINATOR_REQUEST_FAILED"),e.status)}const _S="taskforce.local-sync-coordinator.command.v1",mN=500,gN=240,hN=8,yN=600*1e3;function Ow(e,t="default"){return t==="priority"?`${_S}.priority:${e}`:`${_S}:${e}`}function kN(e,t,r=()=>new Date,n="default"){e.setItem(Ow(t.workspaceId,n),JSON.stringify({storedAt:r().toISOString(),envelope:t}))}function TS(e,t,r=()=>new Date,n="default"){const s=Ow(t,n);try{const i=e.getItem(s);if(!i)return null;const l=JSON.parse(i),c=Date.parse(String(l.storedAt||"")),d=l.envelope;return!d||d.workspaceId!==t||!d.commandId||!Number.isInteger(d.coordinatorGeneration)||!Number.isFinite(c)||r().getTime()-c>yN?(tp(e,t,n),null):d}catch{return tp(e,t,n),null}}function vN(e,t,r="default"){e.removeItem(Ow(t,r))}async function $k(e){const{client:t,envelope:r,storage:n=null,pollIntervalMs:s=mN,maxPollAttempts:i=gN,delay:l=CN,recoverExisting:c=!1,storageLane:d="default"}=e;if(n&&!c)try{kN(n,r,void 0,d)}catch{}try{let f=c?await wN(t,r,{delay:l,pollIntervalMs:s,maxPollAttempts:i}):await bN(t,r,{delay:l,pollIntervalMs:s,maxPollAttempts:i});const p=new Set;for(let g=0;g<i;g+=1){if(p.has(f.commandId))throw new ns("The local sync coordinator command references contain a cycle.","SYNC_COORDINATOR_COMMAND_REFERENCE_CYCLE",409);if(p.add(f.commandId),f.status==="succeeded")return tp(n,r.workspaceId,d),f;if(f.status==="failed")throw tp(n,r.workspaceId,d),new ns(f.errorMessage||"The local sync coordinator command failed.",f.errorCode||"SYNC_COORDINATOR_COMMAND_FAILED",409);if(f.status==="superseded"){const h=SN(f);if(!h)return tp(n,r.workspaceId,d),f;if(p.size>=hN)throw new ns("The local sync coordinator command reference chain is too long.","SYNC_COORDINATOR_COMMAND_REFERENCE_LIMIT",409);f=await Dh(t,r,h);continue}await l(Math.max(1,s)),f=await Dh(t,r,f.commandId),p.delete(f.commandId)}throw new ns("The local sync coordinator command did not finish before the browser wait limit.","SYNC_COORDINATOR_COMMAND_WAIT_TIMEOUT",408)}catch(f){const p=Lh(f);throw n&&AN(p)&&tp(n,r.workspaceId,d),p}}function tp(e,t,r){if(e)try{vN(e,t,r)}catch{}}async function wN(e,t,r){for(let n=0;n<r.maxPollAttempts;n+=1)try{return await Dh(e,t,t.commandId)}catch(s){const i=Lh(s);if(i.code==="SYNC_COORDINATOR_COMMAND_NOT_FOUND")return(await e.issueCommand(t)).command;if(!Mh(i))throw i;await r.delay(Math.max(1,r.pollIntervalMs))}throw DI()}async function bN(e,t,r){try{return(await e.issueCommand(t)).command}catch(n){const s=Lh(n);if(!Mh(s))throw s;for(let i=0;i<r.maxPollAttempts;i+=1)try{return await Dh(e,t,t.commandId)}catch(l){const c=Lh(l);if(c.code==="SYNC_COORDINATOR_COMMAND_NOT_FOUND")return(await e.issueCommand(t)).command;if(!Mh(c))throw c;await r.delay(Math.max(1,r.pollIntervalMs))}throw DI()}}async function Dh(e,t,r){return(await e.readCommand({commandId:r,workspaceId:t.workspaceId,coordinatorGeneration:t.coordinatorGeneration,rootCommandId:t.commandId})).command}function SN(e){if(!e.result||typeof e.result!="object")return null;const t=e.result,r=t.leaderCommandId||t.supersedingCommandId;return typeof r=="string"&&r.trim()?r.trim():null}function Mh(e){return e.status===0||e.status===408||e.status===429||e.status>=500}function AN(e){return!Mh(e)&&e.code!=="SYNC_COORDINATOR_COMMAND_WAIT_TIMEOUT"}function DI(){return new ns("The local sync coordinator command did not finish before the browser wait limit.","SYNC_COORDINATOR_COMMAND_WAIT_TIMEOUT",408)}function Lh(e){return e instanceof ns?e:new ns(e instanceof Error&&e.message.trim()?e.message:"The local sync coordinator request failed.","SYNC_COORDINATOR_REQUEST_FAILED",0)}function CN(e){return new Promise(t=>{setTimeout(t,e)})}const Dv="taskforce:auth-session-changed";function xS(){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new Event(Dv))}const IN=new jI;function _N(e){const t=e.client||IN,r=Math.max(1e3,e.pollIntervalMs??3e3),[n,s]=o.useState({phase:"idle",snapshot:null,error:null}),i=o.useRef(0),l=o.useRef(0),c=o.useRef(null),d=o.useRef(null),f=o.useRef(null);f.current=n.snapshot;const p=o.useCallback(v=>{const T=c.current;if(T?.workspaceId===e.workspaceId)return T.promise;const R=Fk(),P=R?TS(R,e.workspaceId):null;if(!P)return null;const N=$k({client:t,envelope:P,storage:R,recoverExisting:!0}),I={workspaceId:e.workspaceId,scope:v,promise:N};return c.current=I,N.catch(()=>{}).finally(()=>{c.current===I&&(c.current=null)}),N},[t,e.workspaceId]),g=o.useCallback(v=>{const T=d.current;if(T?.workspaceId===e.workspaceId)return T.promise;const R=Fk(),P=R?TS(R,e.workspaceId,void 0,"priority"):null;if(!P)return null;const N=$k({client:t,envelope:P,storage:R,recoverExisting:!0,storageLane:"priority"}),I={workspaceId:e.workspaceId,scope:v,promise:N};return d.current=I,N.catch(()=>{}).finally(()=>{d.current===I&&(d.current=null)}),N},[t,e.workspaceId]),h=o.useCallback(async(v,T)=>{const R=await t.attachWorkspace({workspaceId:e.workspaceId});if(i.current!==v||l.current!==T)return null;if(R.runtimeResumePending===!0)throw new ns("The local sync runtime has not resumed yet.",R.runtimeResumeErrorCode||"SYNC_COORDINATOR_RUNTIME_RESUME_PENDING",503);const P=await t.readStatus({workspaceId:e.workspaceId,coordinatorGeneration:R.state.coordinatorGeneration});if(i.current!==v||l.current!==T)return null;if(P.credential.status!=="ready")throw new ns("The local sync coordinator credential is not ready after attach.","SYNC_COORDINATOR_CREDENTIAL_BLOCKED",409);return f.current=P,s({phase:"ready",snapshot:P,error:null}),p(v),g(v),P},[t,e.workspaceId,p,g]),y=o.useCallback(async()=>{if(!e.enabled||!e.workspaceId)return null;const v=i.current,T=l.current+1;l.current=T;try{const R=f.current;if(!R)return await h(v,T);const P=await t.readStatus({workspaceId:e.workspaceId,coordinatorGeneration:R.state.coordinatorGeneration});return i.current!==v||l.current!==T?null:P.credential.status!=="ready"||P.serverInstanceId!==R.serverInstanceId?await h(v,T):(f.current=P,s({phase:"ready",snapshot:P,error:null}),p(v),g(v),P)}catch(R){if(i.current!==v||l.current!==T)return null;const P=Uk(R);if(P.code==="SYNC_COORDINATOR_STALE_GENERATION"||P.code==="SYNC_COORDINATOR_INACTIVE_WORKSPACE")try{return await h(v,T)}catch(N){if(i.current!==v||l.current!==T)return null;const I=Uk(N);return s($=>({phase:"error",snapshot:$.snapshot,error:I})),null}return s(N=>({phase:"error",snapshot:N.snapshot,error:P})),null}},[h,t,e.enabled,e.workspaceId,p,g]);o.useEffect(()=>{const v=i.current+1;if(i.current=v,f.current=null,!e.enabled||!e.workspaceId||typeof window>"u"){s({phase:"idle",snapshot:null,error:null});return}let T=!1,R=null;s({phase:"attaching",snapshot:null,error:null});const P=()=>{T||(R=window.setTimeout(()=>{R=null,y().finally(P)},r))},N=()=>{document.visibilityState==="visible"&&y()},I=()=>{y()},$=()=>{f.current=null,y()},j=()=>{y().then(V=>{if(V?.state.ownershipMode==="server")return t.signalWake({workspaceId:e.workspaceId,coordinatorGeneration:V.state.coordinatorGeneration,source:"connectivity"}).catch(()=>{})})};document.addEventListener("visibilitychange",N),window.addEventListener("focus",I),window.addEventListener("online",j),window.addEventListener(Dv,$);const x=l.current+1;return l.current=x,h(v,x).catch(V=>{i.current!==v||l.current!==x||s({phase:"error",snapshot:null,error:Uk(V)})}).finally(P),()=>{T=!0,i.current+=1,R!==null&&window.clearTimeout(R),document.removeEventListener("visibilitychange",N),window.removeEventListener("focus",I),window.removeEventListener("online",j),window.removeEventListener(Dv,$)}},[h,t,e.enabled,e.workspaceId,r,y]);const k=o.useCallback(async(v,T=null)=>{const R=f.current;if(!R)throw new ns("The local sync coordinator is not attached.","SYNC_COORDINATOR_UNAVAILABLE",409);const P=v==="DisableSync";if(P){const U=d.current;if(U?.workspaceId===e.workspaceId)return U.promise;const ne=g(i.current);if(ne)return ne}const N=c.current;if(!P&&N?.workspaceId===e.workspaceId&&await N.promise,!P){const U=p(i.current);U&&await U}const I={commandId:crypto.randomUUID(),workspaceId:e.workspaceId,coordinatorGeneration:R.state.coordinatorGeneration,type:v,version:1,args:T},$=$k({client:t,envelope:I,storage:Fk(),storageLane:P?"priority":"default"}),j={workspaceId:e.workspaceId,scope:i.current,promise:$},x=P?d:c;x.current=j;const V=()=>{x.current===j&&(x.current=null),i.current===j.scope&&e.workspaceId===j.workspaceId&&y()};return $.then(V,V),$},[t,e.workspaceId,y,p,g]),w=o.useCallback(async(v,T=[])=>{const R=f.current;return!R||R.state.ownershipMode!=="server"?!1:(await t.signalWake({workspaceId:e.workspaceId,coordinatorGeneration:R.state.coordinatorGeneration,source:v,eventIds:T}),!0)},[t,e.workspaceId]),S=o.useCallback(async v=>{const T=f.current,R=String(T?.state.activeWorkspaceId||"").trim(),P=String(v||"").trim();if(!T||!R)throw new ns("The local sync coordinator is not attached to an active workspace.","SYNC_COORDINATOR_UNAVAILABLE",409);if(!P)throw new ns("The target workspace is required.","SYNC_COORDINATOR_COMMAND_INVALID",400);if(P===R)return T.state;const N=i.current,I=await t.switchWorkspace({commandId:crypto.randomUUID(),expectedActiveWorkspaceId:R,targetWorkspaceId:P,coordinatorGeneration:T.state.coordinatorGeneration,version:1});return i.current===N&&(l.current+=1,f.current=null,s({phase:"attaching",snapshot:null,error:null})),I.state},[t]),b=o.useCallback(async v=>{const T=f.current;if(!T)throw new ns("The local sync coordinator is not attached.","SYNC_COORDINATOR_UNAVAILABLE",409);if(T.state.ownershipMode===v)return T.state;const R=i.current,P=await t.transferOwnership({commandId:crypto.randomUUID(),workspaceId:e.workspaceId,coordinatorGeneration:T.state.coordinatorGeneration,targetMode:v,version:1});if(i.current===R){const N={...T,state:P.state};f.current=N,s({phase:"ready",snapshot:N,error:null}),y()}return P.state},[t,e.workspaceId,y]);return o.useMemo(()=>({...n,refresh:y,issueCommand:k,signalWake:w,switchWorkspace:S,transferOwnership:b}),[k,y,w,n,S,b])}function Fk(){if(typeof window>"u")return null;try{return window.sessionStorage}catch{return null}}function Uk(e){return e instanceof ns?e:new ns(e instanceof Error&&e.message.trim()?e.message:"The local sync coordinator request failed.","SYNC_COORDINATOR_REQUEST_FAILED",0)}function TN(e){return e.serverCommandMode}function xN(e){return e.runtimeMode==="local"}function RS(e){const t=String(e.workspaceId||"").trim(),r=e.snapshot,n=r?.state,s=r?.credential,i=r?[r.serverInstanceId,n?.activeWorkspaceId||"",n?.coordinatorGeneration??"",n?.ownershipMode||"",n?.transitionState||"",s?.status||"",s?.coordinatorGeneration??""].join(":"):`${e.phase}:unavailable`;let l,c=!1,d=!1,f=!0;return e.phase!=="ready"||!r||!n||!s?l="coordinator-unavailable":!t||n.activeWorkspaceId!==t?l="workspace-mismatch":s.status!=="ready"||s.workspaceId!==t?l="credential-blocked":s.coordinatorGeneration!==n.coordinatorGeneration?l="generation-mismatch":n.transitionState!=="idle"?l="transition-active":n.ownershipMode==="browser-gateway"?(l="browser-owner",c=!0,f=!1):n.ownershipMode==="server"?(l="server-owner",c=!0,d=!0,f=!1):n.ownershipMode==="stopped"?l="coordinator-stopped":l="transition-active",{browserSchedulingAllowed:l==="browser-owner",coordinatorAuthorityReady:c,serverCommandMode:d,transitionFenced:f,reason:l,authorityEpoch:i}}class RN extends Error{constructor(t,r){super(t),this.code=r,this.name="WorkspaceSyncTransportGatewayError"}}function PN(e){if(e.type==="handshake")return"handshake";if(e.type==="provision"||e.type==="bootstrap-push")return"bootstrap";if(e.type==="push")return"push";if(e.type==="v3-dispatch")return"v3-dispatch";if(e.type==="initiative-repair"||e.type==="combined-repair"||e.type==="v3-feed-repair"||e.type==="pull"&&e.repairMode===!0||e.type==="v3-feed"&&(e.forceRepair===!0||e.repairCursor))return"repair";if(e.type==="pull"||e.type==="v3-feed"||e.type==="task-comment-audit"||e.type==="content-pull")return"pull";throw EN("The requested sync gateway operation is not supported.")}function EN(e){return new RN(e,"SYNC_COORDINATOR_GATEWAY_OPERATION_INVALID")}function NN(e){return e.type==="v3-dispatch"?9e4:e.type==="initiative-repair"||e.type==="combined-repair"||e.type==="v3-feed-repair"||e.type==="v3-feed"&&(e.forceRepair===!0||e.repairCursor)?75e3:e.type==="push"&&e.repairMode===!0||e.type==="pull"&&e.repairMode===!0?18e4:e.type==="push"||e.type==="bootstrap-push"||e.type==="pull"||e.type==="v3-feed"||e.type==="content-pull"?9e4:e.type==="task-comment-audit"?45e3:2e4}const jN=5e3;function PS(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function DN(e,t){return!PS(e)||e.success!==!0||e.workspaceId!==t||!Array.isArray(e.changes)||typeof e.hasMore!="boolean"||!Object.hasOwn(e,"nextCursor")||!(e.nextCursor===null||typeof e.nextCursor=="string")||e.workspaceMembers!==void 0&&!Array.isArray(e.workspaceMembers)||e.excludedProjections!==void 0&&(!Array.isArray(e.excludedProjections)||e.excludedProjections.some(r=>typeof r!="string"))?!1:e.diagnostics===void 0||PS(e.diagnostics)}function Wg(e){return{cursor:e??null}}function Af(e){return{version:1,projection:e.projection,cursor:e.cursor??null,...e.coverage?{coverage:{...e.coverage}}:{}}}function ES(e){const t=String(e||"").trim();if(!t)throw new TypeError("Independent content transfer identity is required.");return{version:1,projection:"independent-content",cursor:null,identity:t}}async function MN(e,t){const r=await e.text();let n={},s=!1;if(r)try{n=JSON.parse(r),s=!!(n&&typeof n=="object"&&!Array.isArray(n))}catch{n={error:r.slice(0,400)}}const i=e.headers.get("retry-after");let l;if(i){const c=Number.parseInt(i,10);if(Number.isFinite(c)&&c>0)l=c*1e3;else{const d=Date.parse(i),f=d-t;Number.isFinite(d)&&f>0&&(l=f)}}return{result:{ok:e.status>=200&&e.status<300,status:e.status,data:n,...l===void 0?{}:{retryAfterMs:l}},validJsonObject:s}}function LN(e){const t=e.now,r=e.createPermitId||(()=>crypto.randomUUID()),n=new WeakMap,s=p=>{if(p!==e.workspaceId)throw new TypeError("The browser-gateway sync operation workspace does not match its coordinator.")},i=async(p,g="SYNC_COORDINATOR_BROWSER_ABANDONED",h)=>{const k=(await e.client.abandonPermit({permitId:p,workspaceId:e.workspaceId,coordinatorGeneration:e.coordinatorGeneration,errorCode:g}))?.permit;if(!k||k.permitId!==p||k.workspaceId!==e.workspaceId||k.coordinatorGeneration!==e.coordinatorGeneration||k.serverInstanceId!==e.serverInstanceId||k.ownerMode!=="browser-gateway"||h&&(k.operationClass!==h.operationClass||k.operationIdentity!==h.operationIdentity)||!["released","abandoned-clean","abandoned-reconcile-required"].includes(k.state)||h?.acceptedReceipt===!0&&(k.upstreamDisposition!=="accepted"||!["released","abandoned-reconcile-required"].includes(k.state)))throw new Error("The browser-gateway execution permit was not abandoned safely.");return k},l=async(p,g,h)=>{try{await i(p,void 0,h)}catch{}throw g},c=async p=>{if(e.isExecutionAuthorized?.()===!1)throw new Error("The browser-gateway sync authority selection was revoked.");s(p.operation.workspaceId);const g=t(),h=Math.max(1,Math.floor(e.permitDeadlineMs??NN(p.operation)+jN)),y=PN(p.operation),k={operationClass:y,operationIdentity:p.operationIdentity||null},w=r();let S;try{S=await e.client.issuePermit({permitId:w,workspaceId:e.workspaceId,coordinatorGeneration:e.coordinatorGeneration,operationClass:y,operationIdentity:p.operationIdentity||null,lastCommittedCursor:p.previousBoundary,deadlineAt:new Date(g.getTime()+h).toISOString()})}catch($){return l(w,$,k)}const b=S?.permit;if(!b||b.permitId!==w||b.workspaceId!==e.workspaceId||b.coordinatorGeneration!==e.coordinatorGeneration||b.serverInstanceId!==e.serverInstanceId||b.ownerMode!=="browser-gateway"||b.operationClass!==y||b.operationIdentity!==k.operationIdentity||b.state!=="issued-idle")return l(w,new Error("The browser-gateway execution permit is invalid."),k);let v;try{v=await e.client.executeGateway({permitId:b.permitId,workspaceId:e.workspaceId,coordinatorGeneration:e.coordinatorGeneration,operationIdentity:p.operationIdentity||null,operation:p.operation})}catch($){return l(w,$,k)}let T;try{T=await MN(v,g.getTime())}catch($){return l(w,$,k)}const R=T.result;let P;try{P=await e.client.readPermit({permitId:w,workspaceId:e.workspaceId,coordinatorGeneration:e.coordinatorGeneration})}catch($){return l(w,$,k)}const N=P?.permit;if(!N||N.permitId!==w||N.workspaceId!==e.workspaceId||N.coordinatorGeneration!==e.coordinatorGeneration||N.serverInstanceId!==e.serverInstanceId||N.ownerMode!=="browser-gateway"||N.operationClass!==y||N.operationIdentity!==k.operationIdentity||N.state!=="gateway-complete-awaiting-apply"||!["accepted","rejected","unknown"].includes(N.upstreamDisposition||""))return l(w,new Error("The browser-gateway did not settle its execution permit."),k);if(N.upstreamDisposition==="accepted"&&(p.requireAcceptedJsonObject&&!T.validJsonObject||p.validateAcceptedData&&!p.validateAcceptedData(R.data)))return l(w,new Error("The accepted browser-gateway sync response is invalid."),k);if(!p.applying){if(N.upstreamDisposition==="accepted"){let $;try{$=await e.client.releasePermit({permitId:w,workspaceId:e.workspaceId,coordinatorGeneration:e.coordinatorGeneration})}catch(x){return l(w,x,k)}const j=$?.permit;if(!j||j.permitId!==w||j.workspaceId!==e.workspaceId||j.coordinatorGeneration!==e.coordinatorGeneration||j.serverInstanceId!==e.serverInstanceId||j.ownerMode!=="browser-gateway"||j.operationClass!==y||j.operationIdentity!==k.operationIdentity||j.state!=="released")return l(w,new Error("The browser-gateway execution permit was not released."),k)}else await i(w,void 0,k);return R}if(N.upstreamDisposition!=="accepted")return await i(w,void 0,k),R;if(!p.previousBoundary)return l(w,new Error("A browser-gateway applying request did not declare its prior boundary."),k);const I=Object.freeze({});return n.set(I,{permitId:w,workspaceId:e.workspaceId,previousBoundary:p.previousBoundary,operationClass:y,operationIdentity:k.operationIdentity}),{...R,transferReceipt:{token:I}}},d=(p,g,h)=>{if(s(p),!Array.isArray(g)||g.length===0)throw new TypeError("A browser-gateway apply completion group requires transfer receipts.");const y=g.map(k=>{if(!k||typeof k!="object")throw new TypeError("The browser-gateway transfer receipt is invalid.");const w=k.token;if(!w||typeof w!="object")throw new TypeError("The browser-gateway transfer receipt token is invalid.");const S=n.get(w);if(!S||S.workspaceId!==p)throw new TypeError("The browser-gateway transfer receipt does not belong to this adapter.");if(h&&bn(S.previousBoundary)!==bn(h))throw new TypeError("The browser-gateway transfer receipt starts at a different boundary.");return S});if(new Set(y.map(k=>k.permitId)).size!==y.length)throw new TypeError("The browser-gateway apply completion group contains duplicate receipts.");return y},f=(p,g,h,y)=>{const k=d(p,g,h);return{version:LC,workspaceId:p,coordinatorGeneration:e.coordinatorGeneration,ownerMode:"browser-gateway",serverInstanceId:e.serverInstanceId,permitIds:k.map(w=>w.permitId),previousBoundary:h,expectedBoundary:y}};return{handshakeWorkspace:p=>c({operation:{type:"handshake",workspaceId:p},applying:!1}),provisionWorkspace:p=>c({operation:{type:"provision",...p},applying:!1}),pushWorkspaceChanges:p=>{const{ownership:g}=p,h=Eg(p.pushBoundary),y=uh(p.changes);return c({operation:{type:"push",workspaceId:p.workspaceId,idempotencyKey:p.idempotencyKey,changes:p.changes,...p.repairMode===!0?{repairMode:!0}:{},...g.activeV3TaskMetadataIds.length>0?{activeV3TaskMetadataIds:g.activeV3TaskMetadataIds}:{},...g.activeV3TaskLifecycleIds.length>0?{activeV3TaskLifecycleIds:g.activeV3TaskLifecycleIds}:{},...g.activeV3TaskReopenAssigneeIds.length>0?{activeV3TaskReopenAssigneeIds:g.activeV3TaskReopenAssigneeIds}:{},...g.activeV3InitiativeIds.length>0?{activeV3InitiativeIds:g.activeV3InitiativeIds}:{},...g.initiativeProjectionOwner==="v3"?{v3InitiativeProjectionOwned:!0}:{},...g.combinedCoverage?{combinedCoverage:g.combinedCoverage,excludedProjections:g.combinedExcludedProjections||[]}:{}},operationIdentity:p.idempotencyKey,previousBoundary:h,applying:!0,requireAcceptedJsonObject:!0,validateAcceptedData:k=>{try{return rI(k,y),!0}catch{return!1}}})},pullWorkspaceChanges:p=>{const g=p.excludedProjections?.length?Iw(p.excludedProjections):null;return c({operation:{type:"pull",...p,...g?{coverage:g}:{},excludedProjections:p.excludedProjections?[...p.excludedProjections]:void 0},previousBoundary:Wg(p.cursor),applying:!0,requireAcceptedJsonObject:!0,validateAcceptedData:h=>DN(h,p.workspaceId)})},pullWorkspaceContent:p=>{const{previousCursor:g,independentCompletionIdentity:h,...y}=p;return c({operation:{type:"content-pull",...y},previousBoundary:h?ES(h):Wg(g),applying:!0})},pullInitiativeFeed:p=>c({operation:{type:"v3-feed",...p,limit:p.limit||100},previousBoundary:Af({projection:"initiative",cursor:p.repairCursor||p.cursor}),applying:!0}),pullInitiativeRepair:p=>c({operation:{type:"initiative-repair",...p,limit:p.limit||100},previousBoundary:Af({projection:"initiative",cursor:p.cursor}),applying:!0}),pullCombinedFeed:p=>c({operation:{type:"v3-feed",...p,limit:p.limit||100},previousBoundary:Af({projection:"combined",cursor:p.repairCursor||p.cursor,coverage:p.coverage||Aa}),applying:!0}),pullCombinedRepair:p=>c({operation:{type:"combined-repair",...p,limit:p.limit||100,coverage:p.coverage||Aa},previousBoundary:Af({projection:"combined",cursor:p.cursor,coverage:p.coverage||Aa}),applying:!0}),pullTaskCommentAudit:p=>c({operation:{type:"task-comment-audit",...p,limit:p.limit||50},previousBoundary:Af({projection:"task-comment-audit",cursor:p.cursor}),applying:!0}),abandonTransferReceipts:async({workspaceId:p,receipts:g,errorCode:h})=>{const y=d(p,g);await Promise.all(y.map(k=>i(k.permitId,h,{operationClass:k.operationClass,operationIdentity:k.operationIdentity,acceptedReceipt:!0})))},acknowledgeNonApplyingTransferReceipts:async({workspaceId:p,receipts:g})=>{const h=d(p,g);await Promise.all(h.map(async y=>{const k=await e.client.releasePermit({permitId:y.permitId,workspaceId:p,coordinatorGeneration:e.coordinatorGeneration,...y.operationClass==="push"?{pushBoundary:Eg(y.previousBoundary)}:{}});if(!k?.permit||k.permit.state!=="released"||k.permit.permitId!==y.permitId||k.permit.workspaceId!==p||k.permit.coordinatorGeneration!==e.coordinatorGeneration||k.permit.serverInstanceId!==e.serverInstanceId||k.permit.ownerMode!=="browser-gateway"||k.permit.operationClass!==y.operationClass)throw new Error("The browser-gateway non-applying transfer receipt was not released.")}))},buildV2ApplyCompletionGroup:({workspaceId:p,previousCursor:g,nextCursor:h,receipts:y})=>f(p,y,Wg(g),Wg(h)),buildIndependentContentApplyCompletionGroup:({workspaceId:p,identity:g,receipts:h})=>{const y=ES(g);return f(p,h,y,y)},buildV2PushApplyCompletionGroup:({workspaceId:p,pushBoundary:g,receipts:h})=>f(p,h,Eg(g),Eg(g)),buildV3ApplyCompletionGroup:({workspaceId:p,apply:g,receipts:h})=>{const y=d(p,h),k=y[0].previousBoundary;if(!("projection"in k)||k.projection!==g.projection||y.some(b=>bn(b.previousBoundary)!==bn(k)))throw new TypeError("The v3 transfer receipts do not match the applied projection.");const w=g.kind==="repair"&&g.previousCursor===null&&y.every(b=>b.operationClass==="pull");if(k.cursor!==g.previousCursor&&!w)throw new TypeError("The v3 apply does not start at the receipt boundary.");const S=g.kind==="delta"||g.kind==="audit"?"pull":"repair";if(!w&&y.some(b=>b.operationClass!==S))throw new TypeError("The v3 transfer receipt operation does not match the apply.");return f(p,h,k,{...k,cursor:g.nextCursor})}}}function NS(e){const t=e.current===e.captured&&e.current.mode!=="blocked"&&e.browserSchedulingAllowed;return t||e.onDenied?.(),t}function ON(e){if(!e.authority.browserSchedulingAllowed)return{mode:"blocked",remoteServices:null};const t=String(e.workspaceId||"").trim(),r=e.snapshot,n=r?.state,s=r?.credential;if(e.phase!=="ready"||e.authority.reason!=="browser-owner"||!t||!r||!n||!s||n.activeWorkspaceId!==t||n.ownershipMode!=="browser-gateway"||n.transitionState!=="idle"||s.status!=="ready"||s.workspaceId!==t||s.coordinatorGeneration!==n.coordinatorGeneration||!Number.isSafeInteger(n.coordinatorGeneration)||n.coordinatorGeneration<1||!String(r.serverInstanceId||"").trim())return{mode:"blocked",remoteServices:null};const i=e.createGatewayRemoteServices||LN;let l;return l={mode:"browser-gateway",remoteServices:i({workspaceId:t,coordinatorGeneration:n.coordinatorGeneration,serverInstanceId:r.serverInstanceId,client:e.client,now:()=>new Date,isExecutionAuthorized:()=>e.isSelectionAuthorized?.(l)!==!1}),coordinatorGeneration:n.coordinatorGeneration,serverInstanceId:r.serverInstanceId},l}const jS={documents:!1,aiProfiles:!1,assets:!1,documentReviewSessions:!1,annotatedAttachmentSessions:!1,taskforceAgents:!1};function BN(e){const{currentWorkspaceId:t,cloudAuthConfigured:r,runtimeMode:n,authSessionResolved:s,isAuthenticated:i,authUserId:l,projectName:c,resolveCloudAuthUrl:d,resolveWebSocketUrl:f,realtimeSyncEnabled:p,localOutboxDispatchEnabled:g,localCoordinatorBrowserAuthorityGateEnabled:h=!1,localCoordinatorClient:y,initiativeFeedActivationEnabled:k,combinedFeedActivationEnabled:w,combinedFeedCoverage:S,tasks:b,archivedTasks:v,deletedTasks:T=[],initiatives:R,workstreams:P,taxonomies:N,taxonomyState:I,setupState:$,globalTheme:j,locale:x,globalWeekStartsOn:V,themeUseGlobalDefault:U,setTasks:ne,setArchivedTasks:L,setAuthBlocked:ie,setIsAuthenticated:J,checkAuthSession:ue,setGlobalTheme:oe,setCurrentTheme:ge,setSetupState:je,setLocale:qe,setGlobalWeekStartsOn:Ye,fetchPlanningEntities:he}=e,ce=o.useMemo(()=>aE(I),[I]),[B,K]=o.useState("disconnected"),[Ae,re]=o.useState(null),[F,D]=o.useState(null),[z,we]=o.useState(null),[ke,ee]=o.useState(null),[Z,H]=o.useState(null),[ae,Te]=o.useState(!1),[Le,Ue]=o.useState("idle"),[ft,He]=o.useState(null),[Fe,me]=o.useState(!1),[ve,ot]=o.useState(0),[Oe,A]=o.useState(null),G=o.useRef(null),_e=o.useCallback(O=>{G.current=O,A(O)},[]),[Ne,Ee]=o.useState([]),[fe,nt]=o.useState(""),q=o.useRef(b||[]),be=o.useRef(v||[]),Ve=o.useRef(T||[]),Ce=o.useRef([]),[xe,Ie]=o.useState([]),de=o.useCallback(O=>{Ce.current=O,Ie(O)},[]),Be=o.useRef(R||[]),at=o.useRef(P||[]),Qe=o.useRef(I),Ze=o.useRef(N||[]),Pe=o.useRef([]),gt=o.useRef(new Set),[it,De]=o.useState([]),[bt,Et]=o.useState(""),[mt,qt]=o.useState(null),[et,Y]=o.useState(null),[le,Ke]=o.useState(0),[It,vt]=o.useState(null),Mt=o.useRef([]),[gr,Zt]=o.useState([]),[or,Dt]=o.useState(""),lr=o.useRef([]),Rr=o.useRef(new Set),[Lr,Dr]=o.useState([]),[Me,rt]=o.useState(""),pt=o.useRef([]),ht=o.useRef([]),[At,Ft]=o.useState([]),[Tt,$t]=o.useState(""),Ct=o.useRef([]),[Wt,Ot]=o.useState([]),[vr,xt]=o.useState(""),ct=o.useRef([]),tr=o.useRef([]),$r=o.useRef([]),u=o.useRef([]),[Rt,pr]=o.useState(jS),[nr,ar]=o.useState("degraded-fallback"),[an,Bt]=o.useState({accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0}),Qr=o.useRef(!1),xr=o.useRef(null),Gt=o.useRef("missing-baseline"),Fr=o.useRef(0),en=o.useRef(!1),ln=o.useRef(new Set),tn=o.useRef(""),Ge=o.useRef(""),yn=o.useRef(""),Kr=o.useRef(""),ir=o.useRef(""),wt=o.useRef(""),Gr=o.useRef(""),Ut=o.useRef(!1),dr=o.useRef(null),wr=o.useRef(new Set),Ur=o.useRef([]),vs=o.useRef(null),ea=o.useRef(""),ta=o.useRef(()=>Promise.resolve(!1)),rn=o.useRef(""),sn=o.useRef(async()=>{}),on=o.useRef(null),Tn=o.useRef(null),cn=o.useRef("idle"),Ar=o.useCallback(()=>{xr.current!==null&&(window.clearTimeout(xr.current),xr.current=null)},[]),Or=o.useCallback(O=>{if(typeof window>"u")return;Ar();const M=Math.max(1,Math.floor(Fr.current)+1);Fr.current=M;const Nt=1500*2**Math.max(0,M-1),Qt=Number.isFinite(Number(O))?Math.max(0,Math.floor(Number(O))):0,Pt=Math.max(Math.min(12e4,Nt),Qt);xr.current=window.setTimeout(()=>{xr.current=null,sn.current({preferCloudOnFirstSync:!1})},Pt)},[Ar]),qr=o.useCallback(O=>{pr(M=>M[O]?M:{...M,[O]:!0})},[]),Yr=Object.values(Rt).every(Boolean),ra=o.useMemo(()=>y||new jI,[y]),Gn=xN({runtimeMode:n}),Yt=_N({enabled:Gn,workspaceId:t,client:ra}),Zr=o.useMemo(()=>RS({workspaceId:t,phase:Yt.phase,snapshot:Yt.snapshot}),[t,Yt.phase,Yt.snapshot,h]),wn=o.useMemo(()=>RS({workspaceId:t,phase:Yt.phase,snapshot:Yt.snapshot}),[t,Yt.phase,Yt.snapshot]),dt=o.useRef(Zr);o.useLayoutEffect(()=>{dt.current=Zr},[Zr]);const Cr=o.useCallback(()=>dt.current.browserSchedulingAllowed,[]),{workspaceRetryAt:pn,isWorkspaceRetryPending:pe,workspacePushInFlightRef:st,workspacePullInFlightRef:yt,workspaceLastPushedSignatureRef:Jt,workspacePendingSignatureRef:Xt,workspaceLastPushedTaskIdsRef:yr,workspaceDeletedTaskIdsRef:Sn,workspaceDeletedTaskWatermarksRef:br,workspacePullCursorRef:Lt,clearWorkspaceRetry:Pr,scheduleWorkspaceRetry:fn,persistWorkspaceSyncPatch:Kn,applyWorkspaceSyncPatchLocally:na,readWorkspaceSyncStateSnapshot:er,loadWorkspaceSyncState:Ho,applyWorkspaceSyncStateSnapshot:Ca,saveWorkspaceCloudSyncSettings:aa,acquireWorkspaceSyncLease:Ha,releaseWorkspaceSyncLease:ma,forceClearWorkspaceSyncLease:Ms,recordWorkspaceSyncCompletion:ro,wasWorkspaceSyncOperationCompletedRecently:Ls}=$P({currentWorkspaceId:t,setWorkspaceCloudSyncEnabled:Te,setWorkspaceSyncPhase:Ue,setWorkspaceSyncSetupIntent:He,setWorkspaceLastPullAt:D,setWorkspaceLastPushAt:we,setWorkspaceLastErrorMessage:H,isWorkspaceOperationAuthorized:Cr}),ws=o.useCallback(O=>{(O.phase==="attach-cloud"||O.phase==="provision-local")&&(cn.current=O.phase,on.current===null&&(on.current=Date.now()),Tn.current=null),Ca(O)},[Ca]),sa=o.useRef(new Map),xn=o.useRef(new Map),no=o.useRef(new Map),An=o.useRef(""),ao=o.useRef(new Set),Ia=o.useRef(new Map),as=o.useRef(new Set),Wn=o.useRef(new Map),ja=o.useRef(new Set),oa=o.useRef(new Map),bs=o.useRef(new Map),ga=o.useRef(new Set),Va=o.useRef(new Map),Da=o.useRef(new Set),Ma=o.useRef(new Map),ia=o.useRef(new Set),Ss=o.useRef(new Map),ut=o.useRef(new Set),kr=o.useRef(new Map),Jr=o.useRef(new Set),Cn=o.useRef(new Map),In=o.useRef(new Set),Os=o.useRef(new Map),so=o.useRef(new Set),Bs=o.useRef(new Map),ha=o.useRef(new Set),ca=o.useRef(new Map),Rn=o.useRef(new Map),Er=o.useCallback(O=>O?(yr.current=new Set(O.taskIds),sa.current=O.taskWatermarks,xn.current=O.taskChangeKeys||new Map,no.current=O.taskRelationshipChangeKeys||new Map,An.current=O.taxonomyChangeKey||"",ao.current=new Set(Array.from(O.initiativeWatermarks.keys())),Ia.current=O.initiativeWatermarks,as.current=new Set(Array.from(O.workstreamWatermarks.keys())),Wn.current=O.workstreamWatermarks,ja.current=new Set(Array.from(O.aiProfileWatermarks.keys())),oa.current=O.aiProfileWatermarks,bs.current=O.aiProfileChangeKeys||new Map,In.current=new Set(Array.from((O.taskforceAgentWatermarks||new Map).keys())),Os.current=O.taskforceAgentWatermarks||new Map,so.current=new Set(Array.from((O.taskforceAgentSkillWatermarks||new Map).keys())),Bs.current=O.taskforceAgentSkillWatermarks||new Map,ha.current=new Set(Array.from((O.agentConversationWatermarks||new Map).keys())),ca.current=O.agentConversationWatermarks||new Map,ga.current=new Set(Array.from(O.documentWatermarks.keys())),Va.current=O.documentWatermarks,Da.current=new Set(Array.from(O.assetWatermarks.keys())),Ma.current=O.assetWatermarks,ia.current=new Set(Array.from(O.documentReviewSessionWatermarks.keys())),Ss.current=O.documentReviewSessionWatermarks,ut.current=new Set(Array.from(O.documentReviewCommentWatermarks.keys())),kr.current=O.documentReviewCommentWatermarks,Jr.current=new Set(Array.from(O.annotatedAttachmentSessionWatermarks.keys())),Cn.current=O.annotatedAttachmentSessionWatermarks,Rn.current=O.taskEventWatermarks,Gt.current=null,!0):!1,[yr]),Ga=o.useCallback(()=>({taskIds:yr.current,taskWatermarks:sa.current,taskChangeKeys:xn.current,taskRelationshipChangeKeys:no.current,taxonomyChangeKey:An.current,initiativeWatermarks:Ia.current,workstreamWatermarks:Wn.current,aiProfileWatermarks:oa.current,aiProfileChangeKeys:bs.current,taskforceAgentWatermarks:Os.current,taskforceAgentSkillWatermarks:Bs.current,agentConversationWatermarks:ca.current,documentWatermarks:Va.current,assetWatermarks:Ma.current,documentReviewSessionWatermarks:Ss.current,documentReviewCommentWatermarks:kr.current,annotatedAttachmentSessionWatermarks:Cn.current,taskEventWatermarks:Rn.current}),[]),As=o.useCallback(()=>{if(Gt.current==="repair-reset"||Gt.current==="storage-write-failed")return!1;const O=Bk(t,ce);return!O||O.aiProfileWatermarks.size===0?!1:(ja.current=new Set(O.aiProfileWatermarks.keys()),oa.current=new Map(O.aiProfileWatermarks),bs.current=new Map(O.aiProfileChangeKeys||[]),!0)},[t,ce]),_a=o.useRef(!1),ya=o.useRef(!1),Ka=o.useRef(!1),ss=o.useRef(!1),pi=o.useRef(!1),oo=o.useRef(""),os=o.useRef(!1),Ws=3e4,ye=p?3e4:15e3,St=Math.max(3e4,ye),[Vt,sr]=o.useState(null);o.useEffect(()=>{const O=Date.now();if(n!=="local"||!ae||Le!=="active")return;const M=F?Date.parse(F):NaN;if(!Number.isFinite(M))return;const Nt=M+CI-O;if(Nt<=0)return;const Qt=window.setTimeout(()=>{sr(Date.now())},Nt+50);return()=>window.clearTimeout(Qt)},[n,ae,Le,F]);const Ir=o.useMemo(()=>{const O=F?Date.parse(F):NaN,M=z?Date.parse(z):NaN;return Number.isFinite(O)&&Number.isFinite(M)?O>=M?F:z:Number.isFinite(O)?F:Number.isFinite(M)?z:null},[F,z]),Ln=iE({enabled:ae,phase:Le,busy:Fe,retryAt:pn,lastErrorMessage:Z,lastErrorAt:ke,lastPullAt:F,lastPushAt:z,nowMs:Vt??Date.now(),pendingChanges:ve,durableOutbox:Oe}),Ta=Ln.status,qn=Ln.summary,Pn=Ln.recommendedAction,kn=o.useCallback(O=>{const M=String(O||"").trim();if(!M)return null;const Qt=bS()[M]?.updatedAt;return typeof Qt=="string"&&Qt.trim().length>0?Qt.trim():null},[]),fi=o.useCallback((O,M)=>{const Nt=String(O||"").trim(),Qt=String(M||"").trim();if(!Nt||!Qt)return;const Pt=bS();Pt[Nt]={updatedAt:Qt},nE(Pt)},[]),$s=o.useCallback(()=>{const O=$?.mode==="operations"?"operations":"core";return{theme:j,operatingMode:O,localization:{locale:x,weekStartsOn:V}}},[j,$?.mode,x,V]),gc=o.useCallback(async O=>{if(!(!O||typeof O!="object")){en.current=!0;try{const M={},Nt=ep(O.theme);if(Nt&&(oe(Nt),U&&ge(Nt),M.theme=Nt),(O.operatingMode==="core"||O.operatingMode==="operations")&&(je(Qt=>Qt&&{...Qt,mode:O.operatingMode}),M.setup={mode:O.operatingMode}),O.localization&&typeof O.localization=="object"){const Qt={};if(typeof O.localization.locale=="string"&&O.localization.locale.trim().length>0){const Re=SC(O.localization.locale.trim());qe(Re)}const Pt=String(O.localization.weekStartsOn||"").trim().toLowerCase();(Pt==="sunday"||Pt==="monday")&&(Ye(Pt),Qt.weekStartsOn=Pt),Object.keys(Qt).length>0&&(M.schedulePreferences=Qt)}Object.keys(M).length>0&&await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(M)})}finally{en.current=!1}}},[U,oe,ge,je,qe,Ye]),ka=o.useCallback(async O=>{const M=O?.preferCloudOnFirstSync!==!1;if(!r)return;if(n!=="local"||!i){Ar(),Fr.current=0,K("disconnected");return}const Nt=String(l||"").trim();if(!Nt||Nt==="anonymous"){Ar(),Fr.current=0,K("disconnected");return}if(!Qr.current){K("syncing"),re(null),Qr.current=!0;try{const Qt=await D1({resolveCloudAuthUrl:d,userId:Nt,preferCloudOnFirstSync:M,getLocalUpdatedAt:kn,buildLocalSettings:$s,applyRemoteSettings:gc});if(!Qt.success){K("error"),Qt.transient?(re(Qt.error||"Sync failed temporarily. Retrying automatically."),Or(Qt.retryAfterMs)):(Ar(),Fr.current=0,re(Qt.error||"Sync failed."));return}Ar(),Fr.current=0;const Pt=String(Qt.updatedAt||"").trim()||new Date().toISOString();fi(Nt,Pt),K("idle"),re(null),ln.current.add(Nt),Qt.mode==="pulled"&&(tn.current="")}catch{K("error"),re("Sync failed temporarily. Retrying automatically."),Or()}finally{Qr.current=!1}}},[r,n,i,l,d,kn,$s,gc,fi,Ar,Or]);o.useEffect(()=>{sn.current=ka},[ka]),o.useEffect(()=>()=>{Ar()},[Ar]);const cr=o.useCallback(()=>{H(null),ee(null)},[]),vn=o.useCallback(O=>{H(wS),ee(new Date().toISOString()),K("error"),re(wS),Es("workspace_sync_window_contention",{workspaceId:t,operation:O})},[t]),dn=o.useCallback(async O=>{try{return await Kn(O)}catch{return na(O)}},[na,Kn]),La=o.useCallback(O=>{dn(O).catch(()=>{})},[dn]),$n=o.useCallback(()=>{const O={...Ga(),taxonomyStateFingerprint:ce},M=SS(t,O);return dn({pushBaseline:SI(O)}).catch(()=>{}),M},[Ga,t,dn,ce]);o.useEffect(()=>{Ge.current="",yn.current="",Kr.current="",ir.current="",wt.current="",Gr.current="",oo.current="",os.current=!1,Ee([]),nt(""),Mt.current=[],De([]),Et(""),Zt([]),Dt(""),pt.current=[],ht.current=[],Dr([]),rt(""),Ct.current=[],Ft([]),$t(""),ct.current=[],tr.current=[],u.current=[],Ot([]),xt(""),pr(jS),H(null),ee(null),ot(0),wr.current=new Set,Ur.current=[],sa.current=new Map,xn.current=new Map,no.current=new Map,An.current="",ao.current=new Set,Ia.current=new Map,as.current=new Set,Wn.current=new Map,ja.current=new Set,oa.current=new Map,bs.current=new Map,ga.current=new Set,Va.current=new Map,Da.current=new Set,Ma.current=new Map,ia.current=new Set,Ss.current=new Map,ut.current=new Set,kr.current=new Map,Jr.current=new Set,Cn.current=new Map,In.current=new Set,Os.current=new Map,so.current=new Set,Bs.current=new Map,ha.current=new Set,ca.current=new Map,Rn.current=new Map,ya.current=!!er().startupFullReconcileCompletedAt,xa.current=!1;const O=Bk(t,ce);Er(O)||(Gt.current="missing-baseline")},[t,Er,ce]),o.useEffect(()=>{if(Gt.current!=="missing-baseline")return;const O=Bk(t,ce);if(Er(O))return;const M=AI(er().pushBaseline,ce);Er(M)&&SS(t,{...Ga(),taxonomyStateFingerprint:ce})},[Ga,t,Er,er,ce,ae,Le]),o.useEffect(()=>{ya.current=!!er().startupFullReconcileCompletedAt},[t,er,F,Le]);const va=o.useCallback(O=>{fn(()=>ta.current(),{minDelayMs:O})},[fn]);o.useEffect(()=>{mE({workspaceSyncPhase:Le,lastBootstrapPhaseRef:cn,bootstrapPhaseStartedAtRef:on,bootstrapLastProgressAtRef:Tn})},[Le]),o.useEffect(()=>gE({currentWorkspaceId:t,workspaceCloudSyncEnabled:ae,workspaceSyncPhase:Le,workspacePullInFlightRef:yt,workspacePushInFlightRef:st,bootstrapPhaseStartedAtRef:on,bootstrapLastProgressAtRef:Tn,isExecutionAuthorized:Cr,setWorkspaceLastErrorMessage:O=>H(O),setWorkspaceLastErrorAt:O=>ee(O),setUserGlobalSyncStatus:K,setUserGlobalSyncError:O=>re(O),setWorkspaceSyncBusy:me,persistWorkspaceSyncPatchSafely:La}),[t,ae,Le,La,yt,st,Zr.authorityEpoch,Cr]),o.useEffect(()=>{q.current=b||[]},[b]),o.useEffect(()=>{be.current=v||[]},[v]),o.useEffect(()=>{let O=!1;return fetch("/api/taskforce/task-relationships",{method:"GET",credentials:"include"}).then(M=>M.ok?M.json():null).then(M=>{!O&&Array.isArray(M?.relationships)&&de(M.relationships)}).catch(()=>{}),()=>{O=!0}},[v,t,b,de]),o.useEffect(()=>{Ve.current=T||[],Sn.current=new Set((T||[]).map(O=>String(O?.taskId||"").trim()).filter(O=>O.length>0)),br.current=new Map((T||[]).map(O=>[String(O?.taskId||"").trim(),String(O?.deletedAt||"").trim()]).filter(([O,M])=>O.length>0&&Number.isFinite(Date.parse(M))))},[T,Sn,br]),o.useEffect(()=>{Be.current=R||[]},[R]),o.useEffect(()=>{at.current=P||[]},[P]),o.useEffect(()=>{Qe.current=I,Ze.current=N||[]},[N,I]);const hc=o.useRef(!1),xa=o.useRef(!1),Co=o.useMemo(()=>({repairMode:ss,forceFullAiProfilePush:hc,pushInFlight:st,pullInFlight:yt,pullAfterPushRequested:pi,pendingPushReplay:vs,blockedPushSignature:ea,lastPushedSignature:Jt,pendingSignature:Xt,lastPushedTaskIds:yr,deletedTaskIds:Sn,deletedTaskWatermarks:br,pullCursor:Lt,lastPushedWatermarks:sa,lastPushedTaskChangeKeys:xn,lastPushedTaskRelationshipChangeKeys:no,lastPushedTaxonomyChangeKey:An,lastPushedInitiativeIds:ao,lastPushedInitiativeWatermarks:Ia,lastPushedWorkstreamIds:as,lastPushedWorkstreamWatermarks:Wn,lastPushedAiProfileIds:ja,lastPushedAiProfileWatermarks:oa,lastPushedAiProfileChangeKeys:bs,lastPushedDocumentPaths:ga,lastPushedDocumentWatermarks:Va,lastPushedAssetPaths:Da,lastPushedAssetWatermarks:Ma,lastPushedDocumentReviewSessionIds:ia,lastPushedDocumentReviewSessionWatermarks:Ss,lastPushedDocumentReviewCommentIds:ut,lastPushedDocumentReviewCommentWatermarks:kr,lastPushedAnnotatedAttachmentSessionIds:Jr,lastPushedAnnotatedAttachmentSessionWatermarks:Cn,lastPushedTaskforceAgentIds:In,lastPushedTaskforceAgentWatermarks:Os,lastPushedTaskforceAgentSkillIds:so,lastPushedTaskforceAgentSkillWatermarks:Bs,lastPushedAgentConversationIds:ha,lastPushedAgentConversationWatermarks:ca,lastPushedTaskEventWatermarks:Rn,baselineResetReason:Gt,captureAttachBootstrapBaseline:os,attachBootstrapBaselineSignature:oo,startupRepairRan:_a,startupFullReconcileRan:ya,startupFullReconcileRequested:Ka,fullReconcileInFlight:xa,lastBootstrapPhase:cn,bootstrapPhaseStartedAtMs:on,bootstrapLastProgressAtMs:Tn,realtimeSuppressedEventQueue:Ur}),[]),Ra=o.useMemo(()=>JE(),[]),Oa=o.useRef(null),Fn=o.useMemo(()=>ON({workspaceId:t,phase:Yt.phase,snapshot:Yt.snapshot,authority:Zr,client:ra,isSelectionAuthorized:O=>Oa.current===O&&Cr()}),[Zr.authorityEpoch,Zr.browserSchedulingAllowed,Zr.reason,t,ra,Yt.phase,Yt.snapshot?.credential.coordinatorGeneration,Yt.snapshot?.credential.status,Yt.snapshot?.credential.workspaceId,Yt.snapshot?.serverInstanceId,Yt.snapshot?.state.activeWorkspaceId,Yt.snapshot?.state.coordinatorGeneration,Yt.snapshot?.state.ownershipMode,Yt.snapshot?.state.transitionState,h]),Sr=Fn.remoteServices;o.useLayoutEffect(()=>(Oa.current=Fn,()=>{Oa.current===Fn&&(Oa.current=null)}),[Fn]);const Cs=o.useCallback(async()=>{const O=Fn,M=Oa.current??{mode:"blocked",remoteServices:null};return!Sr||!NS({current:M,captured:O,browserSchedulingAllowed:Cr()})?{success:!1,statusCode:409,transient:!0,error:"Browser workspace sync authority changed before cloud readiness validation."}:S1({cloudAuthConfigured:r,runtimeMode:n,isAuthenticated:i,resolveCloudAuthUrl:d,workspaceId:t,workspaceName:c||t,allowProvisionOnMismatch:Le!=="attach-cloud",remoteServices:Sr})},[r,t,i,Cr,c,d,n,Sr,Le,Fn]),Is=o.useRef(t);Is.current=t;const Io=o.useCallback(()=>vP({workspaceId:Is.current,tasks:q.current,archivedTasks:be.current,taskRelationships:Ce.current,deletedTasks:Ve.current,pendingDeletedTaskIds:Sn.current,pendingDeletedTaskWatermarks:br.current,initiatives:Be.current,workstreams:at.current,taxonomies:Ze.current,taxonomyState:Qe.current,aiProfiles:Mt.current,documents:Pe.current,assets:lr.current,currentDocumentPaths:gt.current,currentAssetPaths:Rr.current,documentReviewSessions:pt.current,documentReviewComments:ht.current,annotatedAttachmentSessions:Ct.current,taskforceAgents:ct.current,agentRoles:tr.current,taskforceAgentSkills:$r.current,agentConversations:u.current}),[]),Di=o.useCallback(O=>{const M=Io();return bP({snapshot:M,forceAllAiProfiles:O?.forceAllAiProfiles===!0,baseline:{lastPushedTaskIds:yr.current,lastPushedWatermarks:sa.current,lastPushedTaskChangeKeys:xn.current,lastPushedTaskRelationshipChangeKeys:no.current,lastPushedTaxonomyChangeKey:An.current,lastPushedInitiativeIds:ao.current,lastPushedInitiativeWatermarks:Ia.current,lastPushedWorkstreamIds:as.current,lastPushedWorkstreamWatermarks:Wn.current,lastPushedAiProfileIds:ja.current,lastPushedAiProfileWatermarks:oa.current,lastPushedAiProfileChangeKeys:bs.current,lastPushedDocumentPaths:ga.current,lastPushedDocumentWatermarks:Va.current,lastPushedAssetPaths:Da.current,lastPushedAssetWatermarks:Ma.current,lastPushedDocumentReviewSessionIds:ia.current,lastPushedDocumentReviewSessionWatermarks:Ss.current,lastPushedDocumentReviewCommentIds:ut.current,lastPushedDocumentReviewCommentWatermarks:kr.current,lastPushedAnnotatedAttachmentSessionIds:Jr.current,lastPushedAnnotatedAttachmentSessionWatermarks:Cn.current,lastPushedTaskforceAgentIds:In.current,lastPushedTaskforceAgentWatermarks:Os.current,lastPushedTaskforceAgentSkillIds:so.current,lastPushedTaskforceAgentSkillWatermarks:Bs.current,lastPushedAgentConversationIds:ha.current,lastPushedAgentConversationWatermarks:ca.current,lastPushedTaskEventWatermarks:Rn.current,baselineResetReason:Gt.current}})},[Io]),_s=o.useCallback(O=>Di(O).payload,[Di]),Ts=o.useCallback((O,M)=>{if(n==="local")try{const Nt={...M,workspaceId:O,details:cy(M.details)};fetch("/api/taskforce/sync/events",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(Nt)}).catch(Qt=>{Es("sync_event_post_failed",{workspaceId:O,eventType:M.eventType,status:M.status,error:String(Qt?.message||Qt||"")})})}catch(Nt){Es("sync_event_post_failed",{workspaceId:O,eventType:M.eventType,status:M.status,error:String(Nt?.message||Nt||"")})}},[n]),En=o.useCallback(()=>dI(Io()),[Io]),Mi=o.useMemo(()=>JSON.stringify({tasks:(b||[]).map(O=>({id:String(O.id||"").trim(),updatedAt:String(O.updatedAt||O.createdAt||"").trim(),status:String(O.status||"").trim(),referenceNumber:O.referenceNumber??null,localReferenceNumber:O.localReferenceNumber??null})).sort((O,M)=>O.id.localeCompare(M.id)),archivedTasks:(v||[]).map(O=>({id:String(O.id||"").trim(),updatedAt:String(O.updatedAt||O.createdAt||"").trim(),status:String(O.status||"").trim(),referenceNumber:O.referenceNumber??null,localReferenceNumber:O.localReferenceNumber??null})).sort((O,M)=>O.id.localeCompare(M.id)),initiatives:(R||[]).map(O=>({id:String(O.id||"").trim(),updatedAt:String(O.updatedAt||O.createdAt||"").trim(),isArchived:!!O.isArchived})).sort((O,M)=>O.id.localeCompare(M.id)),workstreams:(P||[]).map(O=>({id:String(O.id||"").trim(),updatedAt:String(O.updatedAt||O.createdAt||"").trim(),initiativeId:typeof O.initiativeId=="string"?O.initiativeId.trim():"",isArchived:!!O.isArchived})).sort((O,M)=>O.id.localeCompare(M.id)),taskEvents:Av(b||[],v||[],R||[],P||[]).map(O=>({id:String(O.id||"").trim(),entityType:String(O.entityType||"task").trim(),entityId:String(O.entityId||O.taskId||"").trim(),createdAt:String(O.createdAt||"").trim(),action:String(O.action||"").trim()})).sort((O,M)=>O.id.localeCompare(M.id)),deletedTasks:(T||[]).map(O=>({taskId:String(O?.taskId||"").trim(),deletedAt:String(O?.deletedAt||"").trim()})).filter(O=>O.taskId.length>0&&Number.isFinite(Date.parse(O.deletedAt))).sort((O,M)=>O.taskId.localeCompare(M.taskId)),taxonomies:Array.isArray(N)?N:[],taxonomyState:I&&typeof I=="object"?I:null}),[b,v,T,R,P,N,I]);pN({enabled:g===!0&&n==="local"&&wn.browserSchedulingAllowed&&ae,workspaceId:t,mutationFingerprint:Mi,authorityScope:Fn,remoteServices:Sr,localServices:Ra,isAuthorityCurrent:O=>Oa.current===O&&Cr(),onHydratedEventIds:O=>{xo.current.recordSuppressedEventIds(O,{ttlMs:6e4})},onOutboxStatus:_e});const Fs=o.useCallback(()=>{if(g!==!0)return!1;const O=G.current;return O===null||O.recovery!==null&&O.recovery.state!=="completed"},[g]),_o=o.useMemo(()=>{const O=[];for(const M of b||[]){const Nt=Array.isArray(M.attachments)?M.attachments.length:0;Nt>0&&O.push(`${M.id}:${Nt}`)}return O.join("|")},[b]),Yn=o.useCallback(O=>{if(!O)return!1;if(os.current)return os.current=!1,oo.current=O,Jt.current=O,ot(0),!0;const M=oo.current;return M?O===M?(Jt.current=O,ot(0),!0):(oo.current="",!1):!1},[]),Vo=o.useCallback(async()=>{if(n!=="local"||!qc(t)||r&&(!s||!i))return!1;try{const O=await fetch(`/api/taskforce/taxonomy-state?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!O.ok)return!1;const M=await O.json();return pI(M)?(Qe.current=M,Ze.current=Array.isArray(M.taxonomies)?M.taxonomies:[],!0):!1}catch(O){return Es("taxonomy_snapshot_refresh_failed",{workspaceId:t,error:String(O?.message||O||"")}),!1}},[n,t,r,s,i]),io=o.useCallback(async()=>{if(n!=="local"||!qc(t)||r&&(!s||!i))return!1;try{const O=await fetch(`/api/taskforce/sync/workspace/documents?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!O.ok)return!1;const M=await O.json();if(!Array.isArray(M?.documents))return!1;const Nt=Array.isArray(M?.documents)?M.documents.map(Re=>({path:String(Re?.path||"").trim(),updatedAt:String(Re?.updatedAt||"").trim(),content:typeof Re?.content=="string"?Re.content:"",assetId:typeof Re?.assetId=="string"&&Re.assetId.trim().length>0?Re.assetId.trim():void 0,documentId:typeof Re?.documentId=="string"&&Re.documentId.trim().length>0?Re.documentId.trim():null,referenceNumber:Number.isFinite(Number(Re?.referenceNumber))?Math.max(1,Math.floor(Number(Re.referenceNumber))):null,version:Number.isFinite(Number(Re?.version))?Math.max(1,Math.floor(Number(Re.version))):null,taskId:typeof Re?.taskId=="string"&&Re.taskId.trim().length>0?Re.taskId.trim():null,logicalName:typeof Re?.logicalName=="string"&&Re.logicalName.trim().length>0?Re.logicalName.trim():null,caption:typeof Re?.caption=="string"&&Re.caption.trim().length>0?Re.caption.trim():null,originalFilename:typeof Re?.originalFilename=="string"&&Re.originalFilename.trim().length>0?Re.originalFilename.trim():null,linkRole:Re?.linkRole==="reference"?"reference":"attachment"})).filter(Re=>Re.path.length>0):[],Qt=new Set(Array.isArray(M?.knownPaths)?M.knownPaths.map(Re=>String(Re||"").trim()).filter(Re=>Re.length>0):Nt.map(Re=>Re.path)),Pt=typeof M?.fingerprint=="string"?M.fingerprint:JSON.stringify(Nt.map(Re=>`${Re.path}:${Re.updatedAt}:${Re.content.length}`).sort());return Pt===Ge.current||(Ge.current=Pt,Pe.current=Nt,gt.current=Qt,Ee(Nt),nt(Pt)),!0}catch(O){return Es("documents_snapshot_refresh_failed",{workspaceId:t,error:String(O?.message||O||"")}),!1}finally{qr("documents")}},[n,t,r,s,i,qr]),Ba=o.useCallback(async()=>{if(n!=="local")return vt("runtime-not-local"),!1;if(!qc(t))return vt("workspace-id-invalid"),!1;if(r&&(!s||!i))return vt(s?"auth-required":"auth-unresolved"),!1;vt(null);try{const O=await fetch(`/api/taskforce/sync/workspace/ai-profiles?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!O.ok)return Y(`HTTP ${O.status}`),qt(new Date().toISOString()),!1;const M=await O.json();if(!Array.isArray(M?.aiProfiles))return!1;const Nt=Array.isArray(M?.aiProfiles)?M.aiProfiles:[];Ke(Nt.length);const Qt=Array.isArray(M?.aiProfiles)?M.aiProfiles.map(Re=>eE(Re)).filter(Re=>Re.id.length>0&&Re.workspaceId.length>0):[];Y(null),qt(new Date().toISOString());const Pt=typeof M?.fingerprint=="string"?M.fingerprint:gP(Qt);return Pt===yn.current||(yn.current=Pt,Mt.current=Qt,De(Qt),Et(Pt)),!0}catch(O){return Y(String(O?.message||O||"unknown-error")),qt(new Date().toISOString()),Es("ai_profiles_snapshot_refresh_failed",{workspaceId:t,error:String(O?.message||O||"")}),!1}finally{qr("aiProfiles")}},[n,t,r,s,i,qr]),wa=o.useCallback(async()=>{if(n!=="local"||!qc(t)||r&&(!s||!i))return!1;try{const O=await fetch(`/api/taskforce/sync/workspace/assets?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!O.ok)return!1;const M=await O.json();if(!Array.isArray(M?.assets))return!1;const Nt=Array.isArray(M?.assets)?M.assets.map(Re=>({path:String(Re?.path||"").trim(),updatedAt:String(Re?.updatedAt||"").trim(),contentBase64:typeof Re?.contentBase64=="string"?Re.contentBase64:"",assetId:typeof Re?.assetId=="string"&&Re.assetId.trim().length>0?Re.assetId.trim():void 0,kind:Re?.kind==="image"?"image":"file",mimeType:typeof Re?.mimeType=="string"&&Re.mimeType.trim().length>0?Re.mimeType.trim():"application/octet-stream",referenceNumber:Number.isFinite(Number(Re?.referenceNumber))?Math.max(1,Math.floor(Number(Re.referenceNumber))):null,taskId:typeof Re?.taskId=="string"&&Re.taskId.trim().length>0?Re.taskId.trim():null,logicalName:typeof Re?.logicalName=="string"&&Re.logicalName.trim().length>0?Re.logicalName.trim():null,caption:typeof Re?.caption=="string"&&Re.caption.trim().length>0?Re.caption.trim():null,originalFilename:typeof Re?.originalFilename=="string"&&Re.originalFilename.trim().length>0?Re.originalFilename.trim():null,linkRole:Re?.linkRole==="reference"?"reference":Re?.linkRole==="image"?"image":"attachment"})).filter(Re=>Re.path.length>0&&Re.contentBase64.length>0):[],Qt=new Set(Array.isArray(M?.knownPaths)?M.knownPaths.map(Re=>String(Re||"").trim()).filter(Re=>Re.length>0):Nt.map(Re=>Re.path)),Pt=typeof M?.fingerprint=="string"?M.fingerprint:JSON.stringify(Nt.map(Re=>`${Re.path}:${Re.updatedAt}:${Re.contentBase64.length}`).sort());return Pt===Kr.current||(Kr.current=Pt,lr.current=Nt,Rr.current=Qt,Zt(Nt),Dt(Pt)),!0}catch(O){return Es("assets_snapshot_refresh_failed",{workspaceId:t,error:String(O?.message||O||"")}),!1}finally{qr("assets")}},[n,t,r,s,i,qr]),Us=o.useCallback(async()=>{if(n!=="local"||!qc(t)||r&&(!s||!i))return!1;try{const O=await fetch(`/api/taskforce/planning/bootstrap?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!O.ok)return!1;const M=await O.json();if(!Array.isArray(M?.initiatives)||!Array.isArray(M?.workstreams))return!1;const Nt=Array.isArray(M?.initiatives)?M.initiatives.filter(Pt=>!!(Pt&&typeof Pt=="object"&&typeof Pt.id=="string")):[],Qt=Array.isArray(M?.workstreams)?M.workstreams.filter(Pt=>!!(Pt&&typeof Pt=="object"&&typeof Pt.id=="string")):[];return Be.current=Nt,at.current=Qt,!0}catch(O){return Es("planning_snapshot_refresh_failed",{workspaceId:t,error:String(O?.message||O||"")}),!1}},[n,t,r,s,i]),un=o.useCallback(async()=>{if(n!=="local"||!qc(t)||r&&(!s||!i))return!1;try{const O=await fetch(`/api/taskforce/sync/workspace/document-reviews?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!O.ok)return!1;const M=await O.json();if(!Array.isArray(M?.sessions))return!1;const Nt=Array.isArray(M?.sessions)?M.sessions.map(Re=>({id:String(Re?.id||"").trim(),assetId:String(Re?.assetId||"").trim(),documentId:typeof Re?.documentId=="string"&&Re.documentId.trim().length>0?Re.documentId.trim():null,documentVersion:Number.isFinite(Number(Re?.documentVersion))?Math.max(1,Math.floor(Number(Re.documentVersion))):null,title:typeof Re?.title=="string"&&Re.title.trim().length>0?Re.title.trim():null,status:Re?.status==="resolved"?"resolved":"open",comments:Array.isArray(Re?.comments)?Re.comments:[],createdByActorId:typeof Re?.createdByActorId=="string"&&Re.createdByActorId.trim().length>0?Re.createdByActorId.trim():null,updatedByActorId:typeof Re?.updatedByActorId=="string"&&Re.updatedByActorId.trim().length>0?Re.updatedByActorId.trim():null,createdAt:String(Re?.createdAt||"").trim(),updatedAt:String(Re?.updatedAt||Re?.createdAt||"").trim(),deletedAt:typeof Re?.deletedAt=="string"&&Re.deletedAt.trim().length>0?Re.deletedAt.trim():null})).filter(Re=>Re.id.length>0&&Re.assetId.length>0):[],Qt=Array.isArray(M?.comments)?M.comments.map(Re=>({id:String(Re?.id||"").trim(),sessionId:String(Re?.sessionId||"").trim(),body:typeof Re?.body=="string"?Re.body:"",anchor:Re?.anchor??null,order:Number.isFinite(Number(Re?.order))?Math.max(0,Math.floor(Number(Re.order))):0,authorActorId:typeof Re?.authorActorId=="string"&&Re.authorActorId.trim().length>0?Re.authorActorId.trim():null,updatedByActorId:typeof Re?.updatedByActorId=="string"&&Re.updatedByActorId.trim().length>0?Re.updatedByActorId.trim():null,deletedByActorId:typeof Re?.deletedByActorId=="string"&&Re.deletedByActorId.trim().length>0?Re.deletedByActorId.trim():null,createdAt:String(Re?.createdAt||"").trim(),updatedAt:String(Re?.updatedAt||Re?.createdAt||"").trim(),deletedAt:typeof Re?.deletedAt=="string"&&Re.deletedAt.trim().length>0?Re.deletedAt.trim():null})).filter(Re=>Re.id.length>0&&Re.sessionId.length>0):sE(Nt),Pt=typeof M?.fingerprint=="string"?M.fingerprint:JSON.stringify([...Nt.map(Re=>`${Re.id}:${Re.updatedAt}:${Re.status}:${Re.deletedAt||""}:${Re.comments.length}`).sort(),...Qt.map(Re=>`${Re.id}:${Re.sessionId}:${Re.updatedAt}:${Re.deletedAt||""}`).sort()]);return Pt===ir.current||(ir.current=Pt,pt.current=Nt,ht.current=Qt,Dr(Nt),rt(Pt)),!0}catch(O){return Es("document_review_sessions_snapshot_refresh_failed",{workspaceId:t,error:String(O?.message||O||"")}),!1}finally{qr("documentReviewSessions")}},[n,t,r,s,i,qr]),is=o.useCallback(async()=>{if(n!=="local"||!qc(t)||r&&(!s||!i))return!1;try{const O=await fetch(`/api/taskforce/sync/workspace/annotated-attachments?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!O.ok)return!1;const M=await O.json();if(!Array.isArray(M?.sessions))return!1;const Nt=Array.isArray(M?.sessions)?M.sessions.map(Pt=>({id:String(Pt?.id||"").trim(),workspaceId:String(Pt?.workspaceId||"").trim(),taskId:String(Pt?.taskId||"").trim(),baseImageAssetId:String(Pt?.baseImageAssetId||"").trim(),title:typeof Pt?.title=="string"&&Pt.title.trim().length>0?Pt.title.trim():null,globalInstruction:typeof Pt?.globalInstruction=="string"&&Pt.globalInstruction.trim().length>0?Pt.globalInstruction.trim():null,annotations:Array.isArray(Pt?.annotations)?Pt.annotations:[],createdByActorId:typeof Pt?.createdByActorId=="string"&&Pt.createdByActorId.trim().length>0?Pt.createdByActorId.trim():null,updatedByActorId:typeof Pt?.updatedByActorId=="string"&&Pt.updatedByActorId.trim().length>0?Pt.updatedByActorId.trim():null,createdAt:String(Pt?.createdAt||"").trim(),updatedAt:String(Pt?.updatedAt||Pt?.createdAt||"").trim(),deletedAt:typeof Pt?.deletedAt=="string"&&Pt.deletedAt.trim().length>0?Pt.deletedAt.trim():null})).filter(Pt=>Pt.id.length>0&&Pt.workspaceId.length>0&&Pt.taskId.length>0&&Pt.baseImageAssetId.length>0):[],Qt=typeof M?.fingerprint=="string"?M.fingerprint:JSON.stringify(Nt.map(Pt=>`${Pt.id}:${Pt.updatedAt}:${Pt.taskId}:${Pt.baseImageAssetId}:${Pt.annotations.length}:${Pt.deletedAt||""}`).sort());return Qt===wt.current||(wt.current=Qt,Ct.current=Nt,Ft(Nt),$t(Qt)),!0}catch(O){return Es("annotated_attachment_sessions_snapshot_refresh_failed",{workspaceId:t,error:String(O?.message||O||"")}),!1}finally{qr("annotatedAttachmentSessions")}},[n,t,r,s,i,qr]),xs=o.useCallback(async()=>{if(n!=="local"||!qc(t)||r&&(!s||!i))return!1;try{const O=await fetch(`/api/taskforce/sync/workspace/taskforce-agents?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!O.ok)return!1;const M=await O.json();if(!Array.isArray(M?.agents)||!Array.isArray(M?.roles)||!Array.isArray(M?.skills)||!Array.isArray(M?.conversations))return!1;const Nt=Array.isArray(M?.agents)?M.agents.map(rr=>tE(rr)).filter(rr=>rr.id.length>0&&rr.workspaceId.length>0):[],Qt=Array.isArray(M?.conversations)?M.conversations.map(rr=>rE(rr)).filter(rr=>rr.id.length>0&&rr.workspaceId.length>0&&rr.agentId.length>0):[],Pt=Array.isArray(M?.roles)?M.roles.map(rr=>SP(rr,t)).filter(rr=>!!rr):[],Re=M.skills.map(rr=>AP(rr,t)).filter(rr=>!!(rr&&rr.id.length>0&&rr.workspaceId.length>0)),Wa=typeof M?.fingerprint=="string"?M.fingerprint:JSON.stringify([...Nt.map(rr=>`${rr.id}:${rr.updatedAt}:${rr.deletedAt||""}:${rr.name}:${rr.modelTier}`).sort(),...Pt.map(rr=>`${rr.id}:${rr.updatedAt}:${rr.deletedAt||""}:${rr.currentRevision}:${rr.currentContentHash}`).sort(),...Re.map(rr=>`${rr.id}:${rr.updatedAt}:${rr.revision}:${rr.contentHash}:${rr.lifecycleStatus}`).sort(),...Qt.map(rr=>`${rr.id}:${rr.agentId}:${rr.updatedAt}:${rr.deletedAt||""}:${rr.messages.length}`).sort()]);return Wa===Gr.current||(Gr.current=Wa,ct.current=Nt,tr.current=Pt,$r.current=Re,u.current=Qt,Ot(Nt),xt(Wa)),!0}catch(O){return Es("taskforce_agents_snapshot_refresh_failed",{workspaceId:t,error:String(O?.message||O||"")}),!1}finally{qr("taskforceAgents")}},[n,t,r,s,i,qr]),To=o.useCallback(()=>{yr.current=new Set([...q.current,...be.current].map(M=>String(M?.id||"").trim()).filter(M=>M.length>0)),sa.current=new Map([...q.current,...be.current].map(M=>[String(M?.id||"").trim(),si.getWatermark(M)]).filter(([M])=>M.length>0)),xn.current=new Map([...q.current.map(M=>[String(M?.id||"").trim(),si.getChangeKey({...M,isArchived:!1})]),...be.current.map(M=>[String(M?.id||"").trim(),si.getChangeKey({...M,isArchived:!0})])].filter(([M])=>M.length>0)),no.current=new Map(Ce.current.map(M=>[String(M?.id||"").trim(),Ew(M)]).filter(([M])=>M.length>0)),An.current=lI({taxonomyState:Qe.current,taxonomies:Ze.current}),ao.current=new Set(Be.current.map(M=>String(M?.id||"").trim()).filter(M=>M.length>0)),Ia.current=new Map(Be.current.map(M=>[String(M?.id||"").trim(),String(M?.updatedAt||M?.createdAt||"").trim()]).filter(([M])=>M.length>0)),as.current=new Set(at.current.map(M=>String(M?.id||"").trim()).filter(M=>M.length>0)),Wn.current=new Map(at.current.map(M=>[String(M?.id||"").trim(),String(M?.updatedAt||M?.createdAt||"").trim()]).filter(([M])=>M.length>0)),ja.current=new Set(Mt.current.map(M=>String(M?.id||"").trim()).filter(M=>M.length>0)),oa.current=new Map(Mt.current.map(M=>[String(M?.id||"").trim(),Hf.getWatermark(M)]).filter(([M])=>M.length>0)),bs.current=new Map(Mt.current.map(M=>[String(M?.id||"").trim(),Hf.getChangeKey(M)]).filter(([M])=>M.length>0)),ga.current=new Set(Pe.current.map(M=>String(M?.path||"").trim()).filter(M=>M.length>0)),Va.current=new Map(Pe.current.map(M=>[String(M?.path||"").trim(),String(M?.updatedAt||"").trim()]).filter(([M])=>M.length>0)),Da.current=new Set(lr.current.map(M=>String(M?.path||"").trim()).filter(M=>M.length>0)),Ma.current=new Map(lr.current.map(M=>[String(M?.path||"").trim(),String(M?.updatedAt||"").trim()]).filter(([M])=>M.length>0)),ia.current=new Set(pt.current.map(M=>String(M?.id||"").trim()).filter(M=>M.length>0)),Ss.current=new Map(pt.current.map(M=>[String(M?.id||"").trim(),String(M?.updatedAt||M?.createdAt||"").trim()]).filter(([M])=>M.length>0)),ut.current=new Set(ht.current.map(M=>String(M?.id||"").trim()).filter(M=>M.length>0)),kr.current=new Map(ht.current.map(M=>[String(M?.id||"").trim(),String(M?.updatedAt||M?.createdAt||"").trim()]).filter(([M])=>M.length>0)),Jr.current=new Set(Ct.current.map(M=>String(M?.id||"").trim()).filter(M=>M.length>0)),Cn.current=new Map(Ct.current.map(M=>[String(M?.id||"").trim(),String(M?.updatedAt||M?.createdAt||"").trim()]).filter(([M])=>M.length>0)),In.current=new Set([...ct.current.map(M=>String(M?.id||"").trim()),...tr.current.map(M=>`agent-role:${String(M?.id||"").trim()}`)].filter(M=>M.length>0)),Os.current=new Map([...ct.current.map(M=>[String(M?.id||"").trim(),String(M?.deletedAt||M?.updatedAt||M?.createdAt||"").trim()]),...tr.current.map(M=>[`agent-role:${String(M?.id||"").trim()}`,String(M?.deletedAt||M?.updatedAt||M?.createdAt||"").trim()])].filter(([M])=>M.length>0)),so.current=new Set($r.current.map(M=>String(M?.id||"").trim()).filter(M=>M.length>0)),Bs.current=new Map($r.current.map(M=>[String(M?.id||"").trim(),String(M?.updatedAt||M?.createdAt||"").trim()]).filter(([M])=>M.length>0)),ha.current=new Set(u.current.map(M=>String(M?.id||"").trim()).filter(M=>M.length>0)),ca.current=new Map(u.current.map(M=>[String(M?.id||"").trim(),String(M?.deletedAt||M?.updatedAt||M?.createdAt||"").trim()]).filter(([M])=>M.length>0)),Rn.current=new Map(Av(q.current,be.current,Be.current,at.current).map(M=>[String(M?.id||"").trim(),String(M?.createdAt||"").trim()]).filter(([M])=>M.length>0));const O=$n();Gt.current=O?null:"storage-write-failed"},[$n]),Li=o.useCallback(async()=>{const[O,M,Nt]=await Promise.all([fetch("/api/taskforce/tasks",{method:"GET",credentials:"include"}),fetch("/api/taskforce/archive",{method:"GET",credentials:"include"}),fetch("/api/taskforce/task-relationships",{method:"GET",credentials:"include"})]);if(!O.ok||!M.ok||!Nt.ok)throw new Error("Required task collection refresh failed.");const[Qt,Pt,Re]=await Promise.all([O.json(),M.json(),Nt.json()]);if(!Array.isArray(Qt?.tasks)||!Array.isArray(Pt?.archived)||!Array.isArray(Re?.relationships))throw new Error("Required task collection refresh returned an invalid response.");const Wa=Qt.tasks.map($a=>to($a)),rr=Pt.archived.map($a=>({...to($a),isArchived:!0}));q.current=Wa,be.current=rr,de(Re.relationships),ne(Wa),L(rr),await he().catch(()=>{Es("refresh_planning_entities_failed",{workspaceId:t})})},[t,he,L,ne,de]),{handleSyncAuthFailure:Go,ensureWorkspaceSyncReady:yc}=o.useMemo(()=>oE({currentWorkspaceId:t,workspaceSyncPhase:Le,clearWorkspaceRetry:Pr,setWorkspaceSyncBusy:me,setUserGlobalSyncStatus:K,setUserGlobalSyncError:O=>re(O),setWorkspaceLastErrorMessage:O=>H(O),setWorkspaceLastErrorAt:O=>ee(O),reportSyncEvent:Ts,setAuthBlocked:ie,setIsAuthenticated:J,checkAuthSession:ue,ensureCloudWorkspaceReadyForSync:Cs,scheduleWorkspaceSyncRetry:va,persistWorkspaceSyncPatchSafely:La}),[t,Le,Pr,Ts,ie,J,ue,Cs,va,La]),ba=o.useMemo(()=>{const O=Fn;return Sr?rN({cloudAuthConfigured:r,runtimeMode:n,initiativeFeedActivationEnabled:k,combinedFeedActivationEnabled:w,combinedFeedCoverage:S,workspaceCloudSyncEnabled:ae,currentWorkspaceId:t,workspaceSyncPhase:Le,isAuthenticated:i,checkAuthSession:ue,resolveCloudAuthUrl:d,ensureCloudWorkspaceReadyForSync:Cs,ensureWorkspaceSyncReady:yc,handleSyncAuthFailure:Go,clearWorkspaceRetry:Pr,clearWorkspaceIssue:cr,isWorkspaceRetryPending:pe,isDurableRecoveryBlockingOrdinaryPush:Fs,isExecutionAuthorized:()=>NS({current:Oa.current??{mode:"blocked",remoteServices:null},captured:O,browserSchedulingAllowed:Cr(),onDenied:()=>{const M=dt.current;!M.serverCommandMode||rn.current===M.authorityEpoch||(rn.current=M.authorityEpoch,Ts(t,{eventType:"handshake",status:"error",statusCode:409,errorMessage:"Browser cloud execution was blocked by persisted server ownership.",details:{errorCode:"SYNC_BROWSER_EXECUTION_FENCED_BY_SERVER_OWNER",authorityEpoch:M.authorityEpoch,capturedTransportMode:O.mode}}))}}),scheduleWorkspaceSyncRetry:va,persistWorkspaceSyncPatchSafely:La,persistWorkspaceSyncPatchBestEffort:dn,persistWorkspaceSyncWatermarksSnapshotBestEffort:$n,refreshWorkspaceAiProfilePushBaselineFromPersistence:As,reportSyncEvent:Ts,acquireWorkspaceSyncLease:Ha,releaseWorkspaceSyncLease:ma,recordWorkspaceSyncCompletion:ro,reportWorkspaceWindowContention:vn,refreshWorkspaceSyncMarkdownDocumentsSnapshot:io,refreshWorkspaceSyncAiProfilesSnapshot:Ba,refreshWorkspaceSyncAssetsSnapshot:wa,refreshWorkspaceSyncTaxonomySnapshot:Vo,refreshWorkspaceSyncPlanningEntitiesSnapshot:Us,refreshWorkspaceSyncDocumentReviewSessionsSnapshot:un,refreshWorkspaceSyncAnnotatedAttachmentSessionsSnapshot:is,refreshWorkspaceSyncTaskforceAgentsSnapshot:xs,refreshLocalWorkspaceTaskCollections:Li,buildWorkspaceSyncPayload:_s,buildWorkspaceSyncSignature:En,seedWorkspaceSnapshotPushBaseline:To,shouldSuppressAttachBootstrapPush:Yn,recordSuppressedEventIds:(...M)=>xo.current.recordSuppressedEventIds(...M),runtime:Co,localServices:Ra,remoteServices:Sr,setWorkspaceSyncBusy:me,setUserGlobalSyncStatus:K,setUserGlobalSyncError:re,setWorkspaceLastErrorMessage:H,setWorkspaceLastErrorAt:ee,setWorkspaceLastPullAt:D,setWorkspaceLastPushAt:we,setWorkspaceSyncPendingChanges:ot,setTasks:ne,setArchivedTasks:L,scheduleTask:(M,Nt)=>{const Qt=window.setTimeout(M,Nt);return{cancel:()=>window.clearTimeout(Qt)}},logDebug:Es,notifyAiProfilesMutated:mI,notifyAgentsMutated:gI,notifyAgentSkillsMutated:hI}):null},[r,n,k,w,S,ae,t,Le,ce,i,ue,d,Cs,yc,Go,Pr,cr,Fs,va,La,dn,$n,As,Ts,Ha,ma,ro,vn,io,Ba,wa,Vo,Us,un,is,xs,Li,_s,En,To,Yn,Fn,Sr,ne,L]);o.useEffect(()=>{ba?.resumeDeferredWork()},[Zr.authorityEpoch,ba]),o.useEffect(()=>()=>ba?.dispose(),[ba]);const mi=o.useCallback((O,M)=>ba?ba.pushWorkspaceChangesToCloud(O,M):Promise.resolve(!1),[ba]),zs=o.useCallback(O=>ba?ba.pullWorkspaceChangesFromCloud(O):Promise.resolve(!1),[ba]),Hs=o.useRef(zs);Hs.current=zs;const xo=o.useRef({handleRealtimeSignal:()=>{},recordSuppressedEventIds:()=>{},clearRealtimePullDebounce:()=>{}}),Vs=o.useMemo(()=>vE({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,workspaceSyncPhase:Le,workspacePullInFlightRef:yt,realtimePullDebounceRef:dr,realtimeSuppressedEventIdsRef:wr,clearWorkspaceRetry:Pr,isWorkspaceRetryPending:pe,isExecutionAuthorized:Cr,isServerOwned:()=>TN(dt.current),signalServerWake:O=>Yt.signalWake("realtime",O),pullWorkspaceChangesFromCloud:zs}),[r,n,ae,Le,Pr,pe,Cr,Yt.signalWake,zs]);xo.current=Vs;const Oi=f("/taskforce-ws"),Gs=String(l||"").trim(),kc=!!(p&&(Cr()||Zr.serverCommandMode)&&r&&n==="local"&&ae&&s&&i&&Gs&&Gs!=="anonymous"&&Oi),mn=fI({enabled:kc,workspaceId:t,websocketUrl:Oi,onSignal:Vs.handleRealtimeSignal,onTelemetry:Bt,userId:Gs||void 0});o.useEffect(()=>{ar(mn.connectionState)},[mn.connectionState]),o.useEffect(()=>()=>Vs.clearRealtimePullDebounce(),[Vs]),o.useEffect(()=>{Zr.browserSchedulingAllowed||(Pr(),xo.current.clearRealtimePullDebounce())},[Zr.authorityEpoch,Zr.browserSchedulingAllowed,Pr]);const el=o.useCallback(async O=>Zr.serverCommandMode?(await Yt.issueCommand(O.enabled?"EnableSync":"DisableSync"),{success:!0}):Cr()?aa(O,{cloudAuthConfigured:r,isAuthenticated:i,ensureCloudWorkspaceReadyForSync:Cs}):{success:!1,error:"Workspace sync ownership is changing. Wait for the coordinator to become ready."},[aa,r,i,Cs,Zr.serverCommandMode,Cr,Yt]),cs=o.useCallback(async()=>{await ka({preferCloudOnFirstSync:!1})},[ka]),la=o.useMemo(()=>SE({currentWorkspaceId:t,workspaceCloudSyncEnabled:ae,workspaceSyncPhase:Le,workspaceLastPullAt:F,runtime:Co,localServices:Ra,acquireWorkspaceSyncLease:Ha,releaseWorkspaceSyncLease:ma,forceClearWorkspaceSyncLease:Ms,clearWorkspaceRetry:Pr,clearWorkspaceIssue:cr,reportWorkspaceWindowContention:vn,reportSyncEvent:Ts,persistWorkspaceSyncPatch:Kn,persistWorkspaceSyncWatermarksSnapshotBestEffort:$n,buildWorkspaceSyncSignature:En,pullWorkspaceChangesFromCloud:zs,pushWorkspaceChangesToCloud:mi,cloudAuthConfigured:r,runtimeMode:n,isAuthenticated:i,checkAuthSession:ue,isExecutionAuthorized:Cr,coordinatorGeneration:Yt.snapshot?.state?.coordinatorGeneration??null}),[t,ce,ae,Le,F,Co,Ra,Ha,ma,Ms,Pr,cr,vn,Ts,Kn,$n,En,zs,mi,r,n,i,ue,Cr,Yt.snapshot?.state?.coordinatorGeneration]),co=o.useCallback(async()=>{if(Zr.serverCommandMode){const O=Yt.snapshot||await Yt.refresh();return!O||O.credential.status!=="ready"?!1:(await Yt.issueCommand("Retry"),!0)}return Cr()?la.retryWorkspaceCloudSync():!1},[Zr.serverCommandMode,Cr,Yt,la]),tl=o.useCallback(async()=>{if(Zr.serverCommandMode){Yt.issueCommand("Repair").catch(()=>{});return}Cr()&&await la.resetWorkspaceSyncCursorAndPull()},[Zr.serverCommandMode,Cr,Yt,la]),zd=o.useCallback(()=>{const O=xv({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,currentWorkspaceId:t,workspaceSyncPhase:Le,isAuthenticated:i,repairModeActive:ss.current===!0,repairModeBypass:!1,pushInFlight:st.current,pullInFlight:yt.current}),M=pe(),Nt=Rv({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,currentWorkspaceId:t,workspaceSyncPhase:Le,isAuthenticated:i,repairModeActive:ss.current===!0,repairModeBypass:!1,retryPending:M,pushInFlight:st.current,pullInFlight:yt.current}),Qt=Pv({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,currentWorkspaceId:t,isAuthenticated:i});return{workspaceId:t,enabled:ae,phase:Le,status:Ta,summary:qn,lastSuccessfulSyncAt:Ir,lastPullAt:F,lastPushAt:z,lastErrorAt:ke,pendingChanges:ve+(Oe?.activeDepth||0),lastErrorMessage:Z,recommendedAction:Pn,pushBlockedReason:O.allowed?null:O.reason,pullBlockedReason:Nt.allowed?null:Nt.reason,retryBlockedReason:Qt.allowed?null:Qt.reason,repairActive:ss.current===!0,pushInFlight:st.current===!0,pullInFlight:yt.current===!0,retryPending:M,documentSnapshotCount:Ne.length,aiProfileSnapshotCount:it.length,aiProfileSnapshotRawCount:le,aiProfileSnapshotLastFetchAt:mt,aiProfileSnapshotLastFetchError:et,aiProfileSnapshotLastSkipReason:It,assetSnapshotCount:gr.length,documentReviewSessionSnapshotCount:Lr.length,documentReviewSessionSnapshotFingerprint:Me,annotatedAttachmentSessionSnapshotCount:At.length,annotatedAttachmentSessionSnapshotFingerprint:Tt,taskforceAgentSnapshotCount:Wt.length,taskforceAgentSnapshotFingerprint:vr,lastPushedAiProfileCount:ja.current.size,lastPushedAiProfileWatermarkCount:oa.current.size,lastPushedTaskforceAgentCount:In.current.size,lastPushedTaskforceAgentWatermarkCount:Os.current.size,lastPushedAgentConversationCount:ha.current.size,lastPushedAgentConversationWatermarkCount:ca.current.size,forceFullAiProfilePushQueued:hc.current===!0,durableOutbox:Oe}},[r,t,n,ae,Le,i,Ta,qn,Ir,F,z,ke,ve,Oe,Z,Pn,Ne.length,it.length,le,mt,et,It,gr.length,Lr.length,Me,At.length,Tt,Wt.length,vr,pe]);o.useEffect(()=>{ta.current=co},[co]);const Nn=o.useCallback(()=>{io(),wa()},[io,wa]);o.useEffect(()=>{if(!r||n!=="local"||!ae||!s||!i)return;io(),Ba(),wa(),un(),is(),xs();const O=Ro=>{const gn=Ro.detail;(String(gn?.workspaceId||"").trim()||"default")===t&&Nn()},M=Ro=>{const gn=Ro.detail;(String(gn?.workspaceId||"").trim()||"default")===t&&(Ba(),wa())},Nt=Ro=>{const gn=Ro.detail;(String(gn?.workspaceId||"").trim()||"default")===t&&String(gn?.reason||"").trim()!=="sync-apply"&&xs()},Qt=Ro=>{const gn=Ro.detail;(String(gn?.workspaceId||"").trim()||"default")===t&&String(gn?.reason||"").trim()!=="sync-apply"&&xs()};window.addEventListener(Cv,O),window.addEventListener(Iv,M),window.addEventListener(_v,Nt),window.addEventListener(Tv,Qt);const Pt=window.setInterval(()=>{io()},Ws),Re=window.setInterval(()=>{Ba()},Ws),Wa=window.setInterval(()=>{wa()},Ws),rr=window.setInterval(()=>{un()},Ws),$a=window.setInterval(()=>{is()},Ws),Pl=window.setInterval(()=>{xs()},Ws);return()=>{window.removeEventListener(Cv,O),window.removeEventListener(Iv,M),window.removeEventListener(_v,Nt),window.removeEventListener(Tv,Qt),window.clearInterval(Pt),window.clearInterval(Re),window.clearInterval(Wa),window.clearInterval(rr),window.clearInterval($a),window.clearInterval(Pl)}},[r,n,ae,s,i,t,Nn,io,Ba,wa,un,is,xs,Ws]),o.useEffect(()=>{!r||n!=="local"||!ae||!s||!i||_o&&Nn()},[r,n,ae,s,i,_o,Nn]),o.useEffect(()=>{if(!Cr()||!cE({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,authSessionResolved:s,workspaceSyncPhase:Le,workspaceSyncReferenceSnapshotsReady:Yr}))return;const O=En();if(Yn(O)||!O||O===Jt.current||ea.current===O)return;ea.current="";const M=_s();if(ot(M.changes.length),st.current||yt.current){Xt.current=O;return}const Nt=window.setTimeout(()=>{if(Cr()){if(st.current||yt.current){Xt.current=En();return}mi(O)}},1500);return()=>window.clearTimeout(Nt)},[r,n,ae,s,Le,Yr,En,Yn,_s,Mi,bt,fe,or,Me,Tt,vr,mi,st,yt,Zr.authorityEpoch,Cr]),o.useEffect(()=>{if(!Cr()||!lE({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,authSessionResolved:s,workspaceSyncPhase:Le,workspaceSyncReferenceSnapshotsReady:Yr}))return;const O=window.setInterval(()=>{if(!Cr()||st.current||yt.current||pe())return;const M=En();if(!M||M===Jt.current||ea.current===M)return;ea.current="";const Nt=_s();ot(Nt.changes.length),Nt.changes.length!==0&&mi(M)},St);return()=>window.clearInterval(O)},[r,n,ae,s,Le,Yr,En,_s,mi,pe,St,Zr.authorityEpoch,Cr]),o.useEffect(()=>{r&&n==="local"&&ae||(Pr(),me(!1))},[r,n,ae,Pr]),o.useEffect(()=>{if(!Cr())return;const O=dE({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,authSessionResolved:s,workspaceSyncPhase:Le,lastPullAt:F,retryPending:pe()});if(!O.shouldStart)return;O.shouldKickOffImmediately&&Hs.current();const M=window.setInterval(()=>{Cr()&&(Ls(t,"pull",ye)||Hs.current())},ye);return()=>{window.clearInterval(M)}},[r,n,ae,s,Le,F,t,pe,Ls,ye,Zr.authorityEpoch,Cr]),o.useEffect(()=>{if(!Cr()||!uE({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,authSessionResolved:s,isAuthenticated:i,workspaceSyncPhase:Le}))return;const O=window.setInterval(()=>{Cr()&&(xa.current||(xa.current=!0,Hs.current({forceCursorNull:!0}).finally(()=>{xa.current=!1})))},XP);return()=>window.clearInterval(O)},[r,n,ae,s,i,Le,Zr.authorityEpoch,Cr]),o.useEffect(()=>{n!=="local"||!i||!l||l==="anonymous"||ka({preferCloudOnFirstSync:!0})},[n,i,l,ka]),o.useEffect(()=>{if(n!=="local"||!i||!l||l==="anonymous"||!ln.current.has(l)||en.current)return;const O=$s(),M=JSON.stringify(O);if(!tn.current){tn.current=M;return}if(M===tn.current)return;tn.current=M,fi(l,new Date().toISOString());const Nt=window.setTimeout(()=>{ka({preferCloudOnFirstSync:!1})},350);return()=>window.clearTimeout(Nt)},[n,i,l,$s,fi,ka]),o.useEffect(()=>{Cr()&&pE({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,authSessionResolved:s,isAuthenticated:i,workspaceSyncPhase:Le,alreadyRan:_a.current})&&(_a.current=!0,fetch("/api/taskforce/sync/workspace/repair-startup",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceId:t})}).then(async O=>{if(!O.ok)return;const M=await O.json().catch(()=>({}));M?.applied>0&&(Es("startup_repair_applied",{workspaceId:t,applied:M.applied,skipped:M.skipped,failed:M.failed}),io(),Ba(),wa(),un())}).catch(()=>{}))},[r,n,ae,s,i,Le,t,io,Ba,wa,un,Zr.authorityEpoch,Cr]);const Hd=Gn&&Yt.phase==="ready"&&Yt.snapshot?.state.activeWorkspaceId===t?{coordinatorGeneration:Yt.snapshot.state.coordinatorGeneration,localDataVersion:Yt.snapshot.state.localDataVersion}:null,vc=Gn?{phase:Yt.phase,snapshot:Yt.snapshot,errorMessage:Yt.error?.message||null}:null,Bi=o.useCallback(async O=>{if(n!=="local"||!Gn)return!1;if(Yt.phase!=="ready"||!Yt.snapshot)throw new ns("The local sync coordinator is not ready to switch workspaces.","SYNC_COORDINATOR_UNAVAILABLE",409);return await Yt.switchWorkspace(O),!0},[Yt,Gn,n]),Wi=o.useCallback(async O=>{if(n!=="local"||!Gn)return!1;if(Yt.phase!=="ready"||!Yt.snapshot)throw new ns("The local sync coordinator is not ready to transfer ownership.","SYNC_COORDINATOR_UNAVAILABLE",409);return await Yt.transferOwnership(O),O==="server"&&(await Yt.issueCommand(ae?"EnableSync":"DisableSync"),ae&&Yt.issueCommand("Sync").catch(()=>{})),!0},[Yt,Gn,n,ae]);return{userGlobalSyncStatus:B,setUserGlobalSyncStatus:K,userGlobalSyncError:Ae,setUserGlobalSyncError:re,workspaceLastPullAt:F,workspaceLastPushAt:z,workspaceLastErrorAt:ke,workspaceLastErrorMessage:Z,workspaceLastSuccessfulSyncAt:Ir,workspaceCloudSyncEnabled:ae,workspaceSyncPhase:Le,workspaceSyncSetupIntent:ft,workspaceSyncStatus:Ta,workspaceSyncSummary:qn,workspaceSyncRecommendedAction:Pn,workspaceSyncBusy:Fe,workspaceSyncPendingChanges:ve+(Oe?.activeDepth||0),workspaceTaskRelationships:xe,localCoordinatorDataVersion:Hd,localCoordinatorStatus:vc,switchLocalCoordinatorWorkspace:Bi,transferLocalCoordinatorOwnership:Wi,syncInFlightRef:Ut,workspaceRetryAt:pn,isWorkspaceRetryPending:pe,workspacePushInFlightRef:st,workspacePullInFlightRef:yt,workspaceLastPushedSignatureRef:Jt,workspacePendingSignatureRef:Xt,workspaceLastPushedTaskIdsRef:yr,workspaceDeletedTaskIdsRef:Sn,workspaceDeletedTaskWatermarksRef:br,workspacePullCursorRef:Lt,clearWorkspaceRetry:Pr,persistWorkspaceSyncPatch:Kn,loadWorkspaceSyncState:Ho,applyWorkspaceSyncStateSnapshot:ws,syncUserGlobalSettings:ka,buildWorkspaceSyncSignature:En,pushWorkspaceChangesToCloud:mi,pullWorkspaceChangesFromCloud:zs,saveWorkspaceCloudSyncSettings:el,retryUserGlobalSettingsSync:cs,retryWorkspaceCloudSync:co,resetWorkspaceSyncCursorAndPull:tl,getWorkspaceSyncDiagnostics:zd}}function WN(e,t){return typeof t=="number"&&Number.isFinite(t)&&t>0?t:e==="error"?12e3:2600}function $N(){const[e,t]=o.useState(null),r=o.useRef(null),n=o.useCallback(()=>{r.current!==null&&(window.clearTimeout(r.current),r.current=null),t(null)},[]),s=o.useCallback((i,l="info",c,d)=>{if(!i||(r.current!==null&&(window.clearTimeout(r.current),r.current=null),t({message:i,tone:l,ttlMs:c,actionLabel:d?.label,onAction:d?.onAction,actionPrimary:d?.primary,secondaryActionLabel:d?.secondaryLabel,onSecondaryAction:d?.onSecondaryAction,dismissible:d?.dismissible,ownerKey:d?.ownerKey}),d))return;const f=WN(l,c);r.current=window.setTimeout(()=>{r.current=null,t(null)},f)},[]);return o.useEffect(()=>()=>{r.current!==null&&(window.clearTimeout(r.current),r.current=null)},[]),{uiNotice:e,pushNotice:s,clearNotice:n}}function FN(e){const{resolveCloudAuthUrl:t,currentWorkspaceId:r,normalizedCloudAuthBaseUrl:n,normalizedCloudMcpBaseUrl:s,mergedConfig:i,availableWorkspaces:l,currentTheme:c,configLoaded:d,globalTheme:f,themeUseGlobalDefault:p,keyShortcut:g,jsonBackupEnabled:h,globalJsonBackupEnabled:y,globalWeekStartsOn:k,locale:w,supportedLocales:S,jsonBackupUseGlobalDefault:b,manualComplexityEnabled:v,checklistDropdownEnabled:T,showTaskCardStatusLabel:R,showTaskCardDescription:P,showTaskCardAttachments:N,showTaskCardChecklistProgress:I,showTaskCardLatestActivity:$,tintTaskCardActivityBackground:j,pathSaved:x,settingsSection:V,setupState:U,buildInfo:ne,saveSetupMode:L,saveWorkspaceProfile:ie,setCurrentTheme:J,handleSaveTheme:ue,handleSaveGlobalTheme:oe,handleUseGlobalThemeDefault:ge,setKeyShortcut:je,handleJsonBackupEnabledChange:qe,handleSaveGlobalJsonBackupEnabled:Ye,handleUseGlobalJsonBackupDefault:he,handleSaveGlobalWeekStartsOn:ce,handleSaveLocale:B,handleManualComplexityEnabledChange:K,handleChecklistDropdownEnabledChange:Ae,handleShowTaskCardStatusLabelChange:re,handleShowTaskCardDescriptionChange:F,handleShowTaskCardAttachmentsChange:D,handleShowTaskCardChecklistProgressChange:z,handleShowTaskCardLatestActivityChange:we,handleTintTaskCardActivityBackgroundChange:ke,handleSaveSettings:ee,initiativeTemplates:Z,fetchInitiativeTemplates:H,createInitiativeFromTemplate:ae,setShowFolderBrowser:Te,setBrowserTarget:Le,fetchFolders:Ue,activeCategories:ft,pathValidation:He,taxonomyDisplayLabels:Fe,handleUpdateCategory:me,handleRemoveCategory:ve,handleSaveCategory:ot,handleAddPath:Oe,handleRemovePath:A,handleUpdateCategoryIcon:G,handleUpdateCategoryColor:_e,activeTypes:Ne,handleSaveType:Ee,handleRemoveType:fe,handleUpdateType:nt,taxonomies:q,handleUpdateTaxonomies:be,priorities:Ve,handleUpdatePriorities:Ce,analyzeSystemTaxonomyPack:xe,handleApplySystemTaxonomyPack:Ie,handleUpdateTaxonomyDisplayLabels:de,projectRoot:Be,projectName:at,mcpHostRoot:Qe,serverHostRoot:Ze,mcpScriptPath:Pe,tenantId:gt,runtimeMode:it,workspaceSwitchingEnabled:De,deleteWorkspace:bt,setMcpHostRoot:Et,isAuthenticated:mt}=e,qt=o.useCallback(async(Ke,It)=>{const vt=t(Ke),Mt=new Headers(It?.headers||void 0);if(Ke.startsWith("/api/taskforce/settings/mcp/")){const Zt=String(r||"").trim();Zt&&Zt!=="default"&&!Mt.has("x-taskforce-workspace-id")&&Mt.set("x-taskforce-workspace-id",Zt)}const gr={...It,headers:Mt,credentials:It?.credentials??"include"};if(typeof window<"u"&&/^https?:\/\//i.test(vt))try{new URL(vt,window.location.origin).origin!==window.location.origin&&gr.mode===void 0&&(gr.mode="cors")}catch{}return fetch(vt,gr)},[r,t]),et=o.useCallback(async()=>{const Ke=new Headers,It=String(r||"").trim();It&&It!=="default"&&Ke.set("x-taskforce-workspace-id",It);const vt=await fetch("/api/taskforce/mcp/global-cli-health",{method:"POST",headers:Ke,credentials:"include"}),Mt=await vt.json().catch(()=>({}));if(!vt.ok||!Mt?.result)throw new Error(String(Mt?.error||"Unable to validate the global Taskforce CLI."));return Mt.result},[r]),Y=o.useCallback(async()=>{const Ke=await fetch("/api/taskforce/update/status",{method:"GET",credentials:"include"}),It=await Ke.json().catch(()=>({}));if(!Ke.ok||!It?.result)throw new Error(String(It?.error||"Unable to determine Taskforce update availability."));return It.result},[]),le=l.find(Ke=>Ke.id===r);return{fetchCloudAuthApi:qt,checkLocalMcpCliHealth:et,getLocalUpdateStatus:Y,currentTheme:c,configLoaded:d,globalTheme:f,themeUseGlobalDefault:p,keyShortcut:g,jsonBackupEnabled:h,globalJsonBackupEnabled:y,globalWeekStartsOn:k,locale:w,supportedLocales:S,jsonBackupUseGlobalDefault:b,manualComplexityEnabled:v,checklistDropdownEnabled:T,showTaskCardStatusLabel:R,showTaskCardDescription:P,showTaskCardAttachments:N,showTaskCardChecklistProgress:I,showTaskCardLatestActivity:$,tintTaskCardActivityBackground:j,pathSaved:x,initialSection:V,setupState:U,buildInfo:ne,onSaveSetupMode:L,onSaveWorkspaceProfile:ie,onThemeChange:J,onSaveTheme:ue,onSaveGlobalTheme:oe,onUseGlobalThemeDefault:ge,onKeyShortcutChange:je,onJsonBackupEnabledChange:qe,onSaveGlobalJsonBackupEnabled:Ye,onUseGlobalJsonBackupDefault:he,onSaveGlobalWeekStartsOn:ce,onSaveLocale:B,onManualComplexityEnabledChange:K,onChecklistDropdownEnabledChange:Ae,onShowTaskCardStatusLabelChange:re,onShowTaskCardDescriptionChange:F,onShowTaskCardAttachmentsChange:D,onShowTaskCardChecklistProgressChange:z,onShowTaskCardLatestActivityChange:we,onTintTaskCardActivityBackgroundChange:ke,onSaveSettings:ee,initiativeTemplates:Z,onRefreshInitiativeTemplates:H,onCreateInitiativeFromTemplate:ae,onShowFolderBrowserChange:Te,onBrowserTargetChange:Le,onFetchFolders:Ue,categories:ft,pathValidation:He,taxonomyDisplayLabels:Fe,onUpdateCategory:me,onRemoveCategory:ve,onSaveCategory:ot,onAddPath:Oe,onRemovePath:A,onUpdateCategoryIcon:G,onUpdateCategoryColor:_e,types:Ne,onSaveType:Ee,onRemoveType:fe,onUpdateType:nt,taxonomies:q,onUpdateTaxonomies:be,priorities:Ve,onUpdatePriorities:Ce,onAnalyzeSystemTaxonomyPack:xe,onApplySystemTaxonomyPack:Ie,onUpdateTaxonomyDisplayLabels:de,projectRoot:Be,projectName:at,mcpHostRoot:Qe,serverHostRoot:Ze,mcpScriptPath:Pe,tenantId:gt,workspaceId:r,runtimeMode:it,cloudAuthBaseUrl:n||i.cloudAuthBaseUrl,cloudMcpBaseUrl:s||void 0,workspaceSwitchingEnabled:De,currentWorkspaceRole:le?.role||"member",currentWorkspaceName:String(le?.name||""),onDeleteWorkspace:bt,onMcpHostRootChange:Et,isAuthenticated:mt}}function UN(e){const{keyShortcut:t,themeUseGlobalDefault:r,runtimeMode:n,jsonBackupUseGlobalDefault:s,globalTheme:i,globalJsonBackupEnabled:l,setCurrentTheme:c,setThemeUseGlobalDefault:d,setGlobalTheme:f,setJsonBackupEnabled:p,setJsonBackupUseGlobalDefault:g,setGlobalJsonBackupEnabled:h,setGlobalWeekStartsOn:y,setLocale:k,setManualComplexityEnabled:w,setChecklistDropdownEnabled:S,setShowTaskCardStatusLabel:b,setShowTaskCardDescription:v,setShowTaskCardAttachments:T,setShowTaskCardChecklistProgress:R,setShowTaskCardLatestActivity:P,setTintTaskCardActivityBackground:N}=e,I=o.useCallback(async()=>{try{const B=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({shortcut:t})});if(!B.ok)throw new Error(`Failed to save global settings (${B.status})`);return!0}catch{return console.error("[Taskforce] Failed to save shortcut"),!1}},[t]),$=o.useCallback(async B=>{c(B),d(!1);try{const K=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:B})});if(!K.ok)throw new Error(`Failed to save config (${K.status})`);return!0}catch{return console.error("[Taskforce] Failed to save project theme"),!1}},[c,d]),j=o.useCallback(async B=>{f(B),r&&c(B);try{const K=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:B})});if(!K.ok)throw new Error(`Failed to save global settings (${K.status})`);return!0}catch{return console.error("[Taskforce] Failed to save global theme"),!1}},[f,r,c]),x=o.useCallback(async()=>{try{const B=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:null})});if(!B.ok)throw new Error(`Failed to save config (${B.status})`);return d(!0),c(i),!0}catch{return console.error("[Taskforce] Failed to use global theme default"),!1}},[i,c,d]),V=o.useCallback(async B=>{if(n==="cloud")return p(!1),g(!1),!1;p(B),g(!1);try{const K=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:B})});if(!K.ok)throw new Error(`Failed to save config (${K.status})`);return!0}catch{return console.error("[Taskforce] Failed to save project backup setting"),!1}},[n,p,g]),U=o.useCallback(async B=>{if(n==="cloud")return h(!1),s&&p(!1),!1;h(B),s&&p(B);try{const K=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:B})});if(!K.ok)throw new Error(`Failed to save global settings (${K.status})`);return!0}catch{return console.error("[Taskforce] Failed to save global backup setting"),!1}},[n,h,s,p]),ne=o.useCallback(async()=>{try{const B=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:null})});if(!B.ok)throw new Error(`Failed to save config (${B.status})`);return g(!0),p(l),!0}catch{return console.error("[Taskforce] Failed to use global backup default"),!1}},[l,p,g]),L=o.useCallback(async B=>{y(B);try{const K=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({schedulePreferences:{weekStartsOn:B}})});if(!K.ok)throw new Error(`Failed to save global settings (${K.status})`);return!0}catch{return console.error("[Taskforce] Failed to save regional week start setting"),!1}},[y]),ie=o.useCallback(async B=>{const K=SC(B);return k(K),!0},[k]),J=o.useCallback(async B=>{w(B);try{const K=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({manualComplexityEnabled:B})});if(!K.ok)throw new Error(`Failed to save config (${K.status})`);return!0}catch{return console.error("[Taskforce] Failed to save manual complexity setting"),!1}},[w]),ue=o.useCallback(async B=>{S(B);try{const K=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({checklistDropdownEnabled:B})});if(!K.ok)throw new Error(`Failed to save config (${K.status})`);return!0}catch{return console.error("[Taskforce] Failed to save checklist dropdown setting"),!1}},[S]),oe=o.useCallback(async(B,K,Ae)=>{try{const re=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({[B]:K})});if(!re.ok)throw new Error(`Failed to save config (${re.status})`);return!0}catch{return console.error(`[Taskforce] ${Ae}`),!1}},[]),ge=o.useCallback(async B=>(b(B),oe("showTaskCardStatusLabel",B,"Failed to save task card status label setting")),[oe,b]),je=o.useCallback(async B=>(v(B),oe("showTaskCardDescription",B,"Failed to save task card description setting")),[oe,v]),qe=o.useCallback(async B=>(T(B),oe("showTaskCardAttachments",B,"Failed to save task card attachments setting")),[oe,T]),Ye=o.useCallback(async B=>(R(B),oe("showTaskCardChecklistProgress",B,"Failed to save task card checklist progress setting")),[oe,R]),he=o.useCallback(async B=>(P(B),oe("showTaskCardLatestActivity",B,"Failed to save task card latest activity setting")),[oe,P]),ce=o.useCallback(async B=>(N(B),oe("tintTaskCardActivityBackground",B,"Failed to save task card activity background setting")),[oe,N]);return{handleSaveSettings:I,handleSaveTheme:$,handleSaveGlobalTheme:j,handleUseGlobalThemeDefault:x,handleJsonBackupEnabledChange:V,handleSaveGlobalJsonBackupEnabled:U,handleUseGlobalJsonBackupDefault:ne,handleSaveGlobalWeekStartsOn:L,handleSaveLocale:ie,handleManualComplexityEnabledChange:J,handleChecklistDropdownEnabledChange:ue,handleShowTaskCardStatusLabelChange:ge,handleShowTaskCardDescriptionChange:je,handleShowTaskCardAttachmentsChange:qe,handleShowTaskCardChecklistProgressChange:Ye,handleShowTaskCardLatestActivityChange:he,handleTintTaskCardActivityBackgroundChange:ce}}function zN(e){const{activeCategories:t,activeTab:r,activeTypes:n,archivedTasks:s,browserTarget:i,category:l,configLoaded:c,customCategories:d,refreshTaskCollections:f,fetchTasks:p,filterCategories:g,getCategoryPaths:h,normalizePath:y,pathValidation:k,setBrowserTarget:w,setCategory:S,setCustomCategories:b,setCustomTypes:v,setFilterCategories:T,setPathValidation:R,setPriorities:P,setShowFolderBrowser:N,setTaxonomies:I,tasks:$}=e,j=o.useCallback(async(re,F)=>{const D=await re.json().catch(()=>({}));return String(D?.error||F)},[]),x=o.useCallback(()=>[...$,...s],[s,$]),V=o.useCallback(re=>re.priorities.find(F=>F.value===2)?.value||re.priorities[0]?.value||2,[]),U=o.useCallback(async re=>{if(re.length!==0)try{const F=await fetch("/api/taskforce/validate-paths",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({paths:re})});if(F.ok){const D=await F.json();R(z=>({...z,...D.results}))}}catch(F){console.error("[Taskforce] Failed to validate paths:",F)}},[R]);o.useEffect(()=>{if(r!=="settings"||!c)return;const re=[];t.forEach(D=>{h(D).forEach(we=>{re.includes(we)||re.push(we)})});const F=re.filter(D=>!k[D]);F.length>0&&U(F)},[t,r,c,h,k,U]);const ne=o.useCallback(async(re,F)=>{if(c){b(D=>(D.length>0?D:t).map(we=>we.value===re.value?re:we)),F&&F!==re.label&&(l===F&&S(re.label),g.includes(F)&&T(D=>D.map(z=>z===F?re.label:z)));try{const we={categories:(d.length>0?d:t).map(ke=>ke.value===re.value?re:ke)};F&&F!==re.label&&(we.reassignFrom=F,we.reassignTo=re.label),await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(we)}),F&&await p()}catch(D){console.error("[Taskforce] Failed to update category",D)}}},[t,l,c,d,p,g,S,b,T]),L=o.useCallback(async re=>{if(!c)return;const F=re.trim().toLowerCase().replace(/\s+/g,"-");if(t.some(z=>z.value===F))return;const D={value:F,label:re.trim(),color:"blue-200",icon:"Folder"};b(z=>[...z.length>0?z:t,D]);try{const we=[...d.length>0?d:t,D];await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({categories:we})})}catch(z){console.error("[Taskforce] Failed to create category",z)}},[t,c,d,b]),ie=o.useCallback((re,F)=>{if(!F.trim())return;const D=t.find(ee=>ee.value===re);if(!D)return;const z=h(D),we=F.trim();if(z.includes(we))return;const ke=[...z,we];ne({...D,path:void 0,paths:ke}),U(ke)},[t,h,ne,U]),J=o.useCallback((re,F)=>{const D=t.find(z=>z.value===re);D&&ne({...D,icon:F})},[t,ne]),ue=o.useCallback((re,F)=>{const D=t.find(z=>z.value===re);D&&ne({...D,color:F})},[t,ne]),oe=o.useCallback((re,F)=>{const D=t.find(ke=>ke.value===re);if(!D)return;const we=h(D).filter(ke=>ke!==F);ne({...D,path:void 0,paths:we})},[t,h,ne]),ge=o.useCallback(re=>{const F=y(re);if(i&&typeof i=="object"&&i.type==="category"){const D=t.find(z=>z.value===i.value);if(D){const z=h(D);if(!z.includes(F)){const we=[...z,F];ne({...D,path:void 0,paths:we})}}}N(!1),w(null)},[t,i,h,ne,y,w,N]),je=o.useCallback(async re=>{if(!c)return;const F=op,D=t.find(ee=>ee.value===F),z=D?{...D}:{value:F,label:ey,icon:"Inbox"},we=z.label,ke=t.find(ee=>ee.value===re);b(ee=>{let H=(ee.length>0?ee:t).filter(ae=>ae.value!==re);return H.some(ae=>ae.value===F)||(H=[z,...H]),H}),ke&&((l===ke.label||l===ke.value)&&S(F),(g.includes(ke.label)||g.includes(ke.value))&&T(ee=>{const Z=ee.filter(H=>H!==ke.label&&H!==ke.value);return Z.includes(F)?Z:[...Z,F]}));try{let ee=(d.length>0?d:t).filter(Z=>Z.value!==re);ee.some(Z=>Z.value===F)||(ee=[z,...ee]),await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({categories:ee,reassignFrom:ke?.label||re,reassignTo:we})}),await p()}catch(ee){console.error("[Taskforce] Failed to remove category",ee)}},[t,l,c,d,p,g,S,b,T]),qe=o.useCallback(async re=>{if(!re.trim())return;const F=re.trim().toLowerCase().replace(/\s+/g,"-");if(n.some(z=>z.value===F))return;const D=[...n,{value:F,label:re.trim(),status:"active"}];v(D);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:D})})}catch(z){console.error("Failed to save type",z)}},[n,v]),Ye=o.useCallback(async re=>{const F=n.map(D=>D.value===re?{...D,status:"retired"}:D);v(F);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:F})}),await p()}catch(D){console.error("Failed to save type",D)}},[n,p,v]),he=o.useCallback(async(re,F)=>{const D=n.find(ee=>ee.value===re);if(!D)return;const z=typeof F.label=="string"?F.label.trim():D.label;if(!z)return;const we=n.map(ee=>ee.value===re?{...ee,...F,label:z}:ee);if(JSON.stringify(we)!==JSON.stringify(n)){v(we);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:we})})}catch(ee){console.error("Failed to update type",ee)}}},[n,v]),ce=o.useCallback(async re=>{if(c){I(re);try{await fetch("/api/taskforce/taxonomies",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taxonomies:re})})}catch(F){console.error("[Taskforce] Failed to save taxonomies",F)}}},[c,I]),B=o.useCallback(async re=>{if(c){P(re);try{await fetch("/api/taskforce/priorities",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({priorities:re})})}catch(F){console.error("[Taskforce] Failed to save priorities",F)}}},[c,P]),K=o.useCallback(re=>{const F=x(),D=new Set(re.categories.map(H=>H.value)),z=new Set(re.types.map(H=>H.value)),we=new Set(re.priorities.map(H=>Number(H.value))),ke=Array.from(new Set(F.map(H=>String(H.category||"").trim()).filter(H=>H.length>0&&!D.has(H)))).sort(),ee=Array.from(new Set(F.map(H=>String(H.type||"").trim()).filter(H=>H.length>0&&!z.has(H)))).sort(),Z=Array.from(new Set(F.map(H=>Number(H.priority)).filter(H=>Number.isFinite(H)&&H>0&&!we.has(H)))).sort((H,ae)=>H-ae);return{unmatchedCategoryValues:ke,unmatchedTypeValues:ee,incompatiblePriorityValues:Z}},[x]),Ae=o.useCallback(async re=>{if(!c)return{success:!1,error:"Settings are still loading."};const{pack:F,sections:D,remapExistingValuesToDefault:z,workspaceIdOverride:we}=re,ke=String(we||"").trim(),ee=ke.length>0,Z=ee?[]:x(),H=Te=>{if(!ke)return Te;const Le=Te.includes("?")?"&":"?";return`${Te}${Le}workspaceId=${encodeURIComponent(ke)}`},ae=()=>{const Te={"Content-Type":"application/json"};return ke&&(Te["x-taskforce-workspace-id"]=ke),Te};try{const Te=await fetch(H("/api/taskforce/taxonomy-library/apply"),{method:"POST",headers:ae(),body:JSON.stringify({packId:F.id,sections:D,remapExistingValuesToDefault:z})}),Le=await Te.json().catch(()=>({}));if(Te.ok&&Le.taxonomyState)return ee||(D.categories&&Le.taxonomyState.categories&&b(Le.taxonomyState.categories),D.types&&Le.taxonomyState.types&&v(Le.taxonomyState.types),D.priorities&&Le.taxonomyState.priorities&&P(Le.taxonomyState.priorities),await f({isSilent:!0})),{success:!0};if(Le.code!=="WORKSPACE_SYNC_V3_TAXONOMY_ACTIVATION_DISABLED")return{success:!1,error:Le.error||"Failed to apply taxonomy library pack atomically."};if(D.categories){const Ue=new Set(F.categories.map(Fe=>Fe.value)),ft=z?[...F.categories]:[...F.categories,...t.filter(Fe=>!Ue.has(Fe.value)).map(Fe=>({...Fe,disabled:!0}))];ee||b(ft);const He=await fetch(H("/api/taskforce/categories"),{method:"POST",headers:ae(),body:JSON.stringify({categories:ft})});if(!He.ok)return{success:!1,error:await j(He,"Failed to apply category library pack.")}}if(D.types){const Ue=new Set(F.types.map(me=>me.value)),ft=F.types.find(me=>me.value===So)?.value||F.types[0]?.value||So;if(z){const me=Z.filter(ve=>ve.type&&!Ue.has(String(ve.type))).map(ve=>({id:ve.id,type:ft}));if(me.length>0){const ve=await fetch(H("/api/taskforce/bulk-update-fields"),{method:"POST",headers:ae(),body:JSON.stringify({updates:me})});if(!ve.ok)return{success:!1,error:await j(ve,"Failed to remap task types to the pack default.")}}}const He=z?[...F.types]:[...F.types,...n.filter(me=>!Ue.has(me.value)).map(me=>({...me,status:"retired"}))];ee||v(He);const Fe=await fetch(H("/api/taskforce/types"),{method:"POST",headers:ae(),body:JSON.stringify({types:He})});if(!Fe.ok)return{success:!1,error:await j(Fe,"Failed to apply task type library pack.")}}if(D.priorities){const Ue=new Set(F.priorities.map(me=>me.value)),ft=Array.from(new Set(Z.map(me=>Number(me.priority)).filter(me=>Number.isFinite(me)&&me>0&&!Ue.has(me)))).sort((me,ve)=>me-ve);if(ft.length>0&&!z)return{success:!1,error:`This workspace still uses priority levels ${ft.join(", ")}. Enable "Remap unmatched existing values to default" to replace them before applying this pack.`};if(ft.length>0){const me=V(F),ve=Z.filter(ot=>ft.includes(Number(ot.priority))).map(ot=>({id:ot.id,priority:me}));if(ve.length>0){const ot=await fetch(H("/api/taskforce/bulk-update-fields"),{method:"POST",headers:ae(),body:JSON.stringify({updates:ve})});if(!ot.ok)return{success:!1,error:await j(ot,"Failed to remap task priorities to the pack default.")}}}const He=F.priorities.map(me=>({...me,value:Number(me.value)}));ee||P(He);const Fe=await fetch(H("/api/taskforce/priorities"),{method:"POST",headers:ae(),body:JSON.stringify({priorities:He})});if(!Fe.ok)return{success:!1,error:await j(Fe,"Failed to apply priority library pack.")}}return ee||await f({isSilent:!0}),{success:!0}}catch(Te){return console.error("[Taskforce] Failed to apply system taxonomy pack",Te),{success:!1,error:Te instanceof Error?Te.message:"Failed to apply system taxonomy pack."}}},[t,n,c,x,V,j,f,b,v,P]);return{getCategoryPaths:h,validatePaths:U,handleUpdateCategory:ne,handleSaveCategory:L,handleAddPath:ie,handleUpdateCategoryIcon:J,handleUpdateCategoryColor:ue,handleRemovePath:oe,handleSelectPath:ge,handleRemoveCategory:je,handleSaveType:qe,handleRemoveType:Ye,handleUpdateType:he,handleUpdateTaxonomies:ce,handleUpdatePriorities:B,analyzeSystemTaxonomyPack:K,handleApplySystemTaxonomyPack:Ae}}function HN({shouldDeferProtectedApiCalls:e,shouldBlockProtectedApiCalls:t}){const[r,n]=o.useState([]),s=e||t,i=o.useCallback(async()=>{if(s)return[];try{const l=await fetch("/api/taskforce/initiative-templates");if(!l.ok)return[];const c=await l.json(),d=Array.isArray(c?.templates)?c.templates:[];return n(d),d}catch{return[]}},[s]);return{initiativeTemplates:r,fetchInitiativeTemplates:i}}function VN(){const[e,t]=o.useState(!1),r=o.useCallback(async()=>{if(!document.fullscreenElement){try{await document.documentElement.requestFullscreen(),t(!0)}catch(n){console.error(`Error attempting to enable full-screen mode: ${n}`)}return}document.exitFullscreen&&(await document.exitFullscreen(),t(!1))},[]);return o.useEffect(()=>{const n=()=>{t(!!document.fullscreenElement)};return document.addEventListener("fullscreenchange",n),()=>document.removeEventListener("fullscreenchange",n)},[]),{zenMode:e,setZenModeState:t,toggleZenMode:r}}function GN({tasks:e,archivedTasks:t,setTasks:r,setArchivedTasks:n,setLoadingTasks:s,getCurrentWorkspaceId:i,workspaceResetKey:l,shouldDeferProtectedApiCalls:c,shouldBlockProtectedApiCalls:d,handleUnauthorized:f,authRequiredForApi:p,setError:g,setLoading:h}){const y=o.useRef(new Map),k=o.useRef(!1),w=o.useRef(e),S=o.useRef(t),b=o.useRef(null),v=o.useRef(null),T=o.useRef(null),R=o.useRef(new Map),[P,N]=o.useState([]),[I,$]=o.useState({}),j=o.useCallback(B=>String(B.detailRevision||JSON.stringify([B.updatedAt||B.createdAt||"",B.commentCount||0,B.checklistCount||0,B.completedChecklistCount||0,B.attachmentCount||0,B.relationshipCount||0])),[]),x=o.useCallback(()=>{N(Array.from(R.current.values(),B=>B.detail))},[]);o.useEffect(()=>{w.current=e},[e]),o.useEffect(()=>{S.current=t},[t]);const V=o.useCallback(B=>em(B),[]),U=o.useCallback((B,K)=>K.aborted?B===K.reason?!0:B instanceof DOMException?B.name==="AbortError":String(B?.name||"").toLowerCase()==="aborterror":!1,[]),[ne,L]=o.useState([]),ie=o.useRef(new Map),J=o.useCallback(B=>{!B.length||typeof window>"u"||(L(K=>Array.from(new Set([...K,...B]))),B.forEach(K=>{const Ae=ie.current.get(K);Ae&&window.clearTimeout(Ae);const re=window.setTimeout(()=>{ie.current.delete(K),L(F=>F.filter(D=>D!==K))},2e3);ie.current.set(K,re)}))},[]);o.useEffect(()=>()=>{typeof window>"u"||(ie.current.forEach(B=>window.clearTimeout(B)),ie.current.clear())},[]),o.useEffect(()=>{y.current=new Map,k.current=!1,b.current?.abort("workspace-reset"),b.current=null,v.current?.abort("workspace-reset"),v.current=null;const B=T.current!==null;T.current?.abort("workspace-reset"),T.current=null,B&&h?.(!1),R.current=new Map,N([]),$({}),typeof window<"u"&&(ie.current.forEach(K=>window.clearTimeout(K)),ie.current.clear()),L([])},[h,l]),o.useEffect(()=>()=>{T.current?.abort("unmount")},[]);const ue=o.useCallback((B,K)=>{const Ae=new Map(B.map(we=>[we.id,we]));let re=!1;const F=new Map(R.current),D={},z=new Set;for(const[we,ke]of F){const ee=Ae.get(we),Z=!!ke.detail.isArchived===K;if(Z&&z.add(we),!ee&&Z){F.delete(we),re=!0;continue}if(ee){const H=j(ee);H!==ke.summaryRevision&&(D[we]=H)}}$(we=>{const ee={...Object.fromEntries(Object.entries(we).filter(([ae])=>!z.has(ae))),...D},Z=Object.entries(we),H=Object.entries(ee);return Z.length===H.length&&Z.every(([ae,Te])=>ee[ae]===Te)?we:ee}),re&&(R.current=F,x())},[j,x]),oe=o.useCallback(()=>{const B=T.current!==null;T.current?.abort("navigation"),T.current=null,B&&h?.(!1)},[h]),ge=o.useCallback(async(B=!1,K)=>{if(!(K?.ignoreAuthGuard===!0)&&(c||d))return;s(!B);const re=String(i()||"").trim();b.current?.abort("superseded");const F=new AbortController;b.current=F;try{const D=await fetch("/api/taskforce/tasks",{signal:F.signal});if(D.status===401){f(),r([]),B||s(!1);return}if(D.ok){const we=((await D.json()).tasks||[]).map(Le=>to(Le));if(String(i()||"").trim()!==re)return;ue(we,!1);const ee=new Map,Z=[],H=K?.highlightChangedTaskIds===void 0?null:new Set(K.highlightChangedTaskIds.map(Le=>Ex(we,Le)||Le));for(const Le of we){const Ue=V(Le);if(ee.set(Le.id,Ue),!k.current)continue;const ft=y.current.get(Le.id);(!ft||ft!==Ue)&&(H===null||H.has(Le.id))&&Z.push(Le.id)}y.current=ee,k.current?J(Z):k.current=!0;const ae=w.current,Te=$b(ae,we);w.current=Te,Te!==ae&&r(Te)}}catch(D){if(U(D,F.signal))return;console.error("[Taskforce] Failed to fetch tasks:",D)}finally{b.current===F&&(b.current=null,s(!1))}},[V,i,J,f,r,s,p,c,d,ue]),je=o.useCallback(async(B=!1,K)=>{if(!(K?.ignoreAuthGuard===!0)&&(c||d))return!1;B||s(!0);const re=String(i()||"").trim();v.current?.abort("superseded");const F=new AbortController;v.current=F;try{const D=await fetch("/api/taskforce/archive",{signal:F.signal});if(D.ok){const z=await D.json();if(String(i()||"").trim()!==re)return!1;const ke=(z.archived||[]).map(H=>({...to(H),isArchived:!0}));ue(ke,!0);const ee=S.current,Z=$b(ee,ke);return S.current=Z,Z!==ee&&n(Z),!0}return!1}catch(D){return U(D,F.signal)||console.error("[Taskforce] Failed to fetch archive:",D),!1}finally{v.current===F&&(v.current=null,B||s(!1))}},[i,U,ue,n,s,c,d]),qe=o.useCallback(async(B,K)=>{const Ae=K?.force===!0;if(!Ae&&!B.isSummary){const ke=Wb(B);return R.current.set(B.id,{detail:B,summaryRevision:j(ke)}),$(ee=>{if(!Object.prototype.hasOwnProperty.call(ee,B.id))return ee;const Z={...ee};return delete Z[B.id],Z}),x(),B}const re=R.current.get(B.id);let F=B,D=j(F);if(!Ae&&re&&re.summaryRevision===D)return re.detail;const z=String(i()||"").trim();T.current?.abort("superseded");const we=new AbortController;T.current=we,h?.(!0),g?.("");try{for(let ke=0;ke<2;ke+=1){const ee=await fetch(`/api/taskforce/task/${encodeURIComponent(F.id)}`,{signal:we.signal});if(ee.status===401)return f(),null;if(ee.status===404)return g?.("Task not found. It may have moved or been deleted."),null;if(!ee.ok)return g?.("Unable to load task details."),null;const Z=to(await ee.json()),H=String(i()||"").trim();if(we.signal.aborted||H!==z)return null;const ae=[...w.current,...S.current].find(Ue=>Ue.id===F.id);if(!ae)return g?.("Task not found. It may have moved or been deleted."),null;const Te=j(ae);if(Te!==D){if(ke===0&&ae){F=ae,D=Te;continue}return g?.("Task details changed while loading. Please open the task again."),null}if(F.updatedAt&&Z.updatedAt&&Date.parse(Z.updatedAt)<Date.parse(F.updatedAt))return g?.("Task details changed while loading. Please open the task again."),null;const Le={...Z,detailRevision:Z.detailRevision||D};return K?.shouldCommit&&!K.shouldCommit()?null:(R.current.set(Le.id,{detail:Le,summaryRevision:D}),$(Ue=>{if(!Object.prototype.hasOwnProperty.call(Ue,Le.id))return Ue;const ft={...Ue};return delete ft[Le.id],ft}),x(),Le)}return null}catch(ke){return U(ke,we.signal)||(console.error("[Taskforce] Failed to fetch task detail:",ke),g?.("Unable to load task details.")),null}finally{T.current===we&&(T.current=null,h?.(!1))}},[i,j,f,U,x,g,h]),Ye=o.useCallback(async B=>{const K=B?.isSilent!==!1,Ae=B?.ignoreAuthGuard===!0,re=B?.includeActive!==!1,F=B?.includeArchive!==!1;await Promise.all([re?ge(K,{ignoreAuthGuard:Ae,highlightChangedTaskIds:B?.highlightChangedTaskIds}):Promise.resolve(!1),F?je(K,{ignoreAuthGuard:Ae}):Promise.resolve(!1)])},[je,ge]),he=o.useCallback(async B=>{await Ye({isSilent:!0,includeActive:B?.includeActive!==!1,includeArchive:B?.includeArchive!==!1,highlightChangedTaskIds:B?.highlightChangedTaskIds})},[Ye]),ce=o.useCallback(B=>{const K=to(B),Ae=[...w.current,...S.current].find(we=>we.id===K.id),re=K.isSummary?K:Wb({...K,detailRevision:void 0,commentCount:K.commentCount??(K.comments?void 0:Ae?.commentCount),checklistCount:K.checklistCount??(K.checklistItems?void 0:Ae?.checklistCount),completedChecklistCount:K.completedChecklistCount??(K.checklistItems?void 0:Ae?.completedChecklistCount),attachmentCount:K.attachmentCount??(K.attachments?void 0:Ae?.attachmentCount),relationshipCount:K.relationshipCount??Ae?.relationshipCount??0});K.isSummary||(R.current.set(K.id,{detail:K,summaryRevision:j(re)}),x(),$(we=>{if(!Object.prototype.hasOwnProperty.call(we,K.id))return we;const ke={...we};return delete ke[K.id],ke}));const F=Gx(re,w.current,S.current),D=F.tasks!==w.current,z=F.archivedTasks!==S.current;w.current=F.tasks,S.current=F.archivedTasks,D&&r(F.tasks),z&&n(F.archivedTasks)},[j,x,r,n]);return{tasksRef:w,archivedTasksRef:S,taskDetails:P,staleTaskDetailRevisions:I,recentlyChangedTaskIds:ne,markRecentlyChangedTasks:J,fetchTasks:ge,fetchArchive:je,loadTaskDetail:qe,cancelTaskDetailLoad:oe,refreshTaskCollections:Ye,refreshTaskCollectionsFromInvalidation:he,mergeTaskFromServer:ce,getTaskRevisionKey:V}}function KN(e){const{editingTaskId:t,relationshipTasks:r,initiatives:n=[],workstreams:s=[],workstreamInput:i="",resolveWorkstreamIdInput:l,supplementalTasks:c=[],assignee:d,setAssignee:f,setChecklistItems:p,setComments:g}=e,h=o.useRef(null),y=o.useMemo(()=>{if(c.length===0)return r;const b=new Map;return r.forEach(v=>b.set(v.id,v)),c.forEach(v=>b.set(v.id,v)),Array.from(b.values())},[r,c]),k=o.useMemo(()=>{if(t)return y.find(b=>b.id===t)},[y,t]);o.useEffect(()=>{t&&(p(k?.checklistItems||[]),g(k?.comments||[]))},[t,k?.id,k?.updatedAt,k?.checklistItems,k?.comments,p,g]),o.useEffect(()=>{if(!t||!k){h.current=null;return}const b=k.assignee||"unassigned",v=h.current;if(!v||v.taskId!==t){h.current={taskId:t,assignee:b},d!==b&&f(b);return}v.assignee!==b&&(d===v.assignee&&f(b),h.current={taskId:t,assignee:b})},[d,k?.assignee,k?.id,t,f]);const w=o.useMemo(()=>{if(k?.workstreamId)return s.find(b=>b.id===k.workstreamId);if(!(t||!i.trim()))return l?.(i)||void 0},[k,t,l,i,s]),S=o.useMemo(()=>{if(w?.initiativeId)return n.find(b=>b.id===w.initiativeId)},[w,n]);return{currentTask:k,currentTaskWorkstream:w,currentTaskInitiative:S}}const Bw="WS-",Ww="IN-";function Fo(e){return cp(Bw,e)}function MI(e){return ty(Bw,e)}function pp(e){return pm(Bw,e)}function gs(e){return cp(Ww,e)}function qN(e){return ty(Ww,e)}function LI(e){return pm(Ww,e)}function Mv(e,t){const r=String(t||"").trim();if(!r)return null;const n=qN(r);return e.find(s=>s.id===r||gs(s)===r||n!==null&&s.referenceNumber===n)||null}function YN(e){const t={};return e.forEach(r=>{const n=r.defaultValue;if(n!=null){if(Array.isArray(n)){n.length>0&&(t[r.id]=n.map(s=>typeof s=="number"?s:String(s)));return}t[r.id]=typeof n=="number"?n:String(n)}}),t}function ZN(e,t){return e.filter(r=>{const n=t[r.id],s=Array.isArray(n)?n.length>0:n!=null&&n!=="";return r.status==="retired"&&!s?!1:r.formEnabled!==!1||r.isRequired===!0||s})}function JN(e){const{activeCategories:t,activeTypes:r,activeTab:n,attachments:s,checklistItems:i,comments:l,cancelTaskDetailLoad:c,description:d,editingTaskId:f,flushPendingAutoSave:p,getDescriptionDraft:g,getPreferredCategoryValue:h,getTitleDraft:y,lastUsedCategory:k,loadTaskDetail:w,newCommentText:S,onTaskApplied:b,relationshipTasks:v,workstreams:T,showArchive:R,taxonomies:P,setActiveTab:N,setAssignee:I,setAttachments:$,setAttachmentsDirty:j,setCategory:x,setChecklistItems:V,setComments:U,setComplexity:ne,setDescription:L,setDueDate:ie,setEditingTaskId:J,setError:ue,setFormTaxonomies:oe,setIsOpen:ge,setNewCommentText:je,setPendingNavigation:qe,setWorkstreamInput:Ye,setPriority:he,setScheduledDate:ce,setShowArchive:B,setStatus:K,setTaskReturnTrail:Ae,setTitle:re,setType:F,setUnsavedModalOpen:D,taskReturnTrail:z,title:we}=e,ke=o.useRef(0),ee=o.useCallback(()=>{ke.current+=1,c?.()},[c]),Z=o.useCallback(()=>r.find(A=>String(A.value||"").trim().length>0)?.value||So,[r]),H=o.useCallback(async A=>{const G=()=>{ee(),A()};if(f){await p()&&G();return}if(!((y?.()??we).trim()!==""||(g?.()??d).trim()!==""||i.length>0||S.trim()!==""||l.length>0||s.length>0)){G();return}qe(()=>G),D(!0)},[s,l.length,d,f,p,g,y,i,ee,S,qe,D,we]),ae=o.useCallback(()=>{ee(),ge(!1)},[ee,ge]),Te=o.useCallback(()=>{ee(),J(null),re(""),L("");const A=k,G=t.some(_e=>_e.label===A||_e.value===A);if(A&&G){const _e=t.find(Ne=>Ne.label===A||Ne.value===A);x(_e?.value||A)}else x(h(t));F(Z()),he(2),ne(3),K("task"),I("unassigned"),ce(""),ie(""),Ye(""),V([]),oe(YN(P)),U([]),je(""),$([]),j(!1),ue("")},[t,h,Z,ee,k,I,$,j,x,V,U,ne,L,ie,J,ue,oe,je,he,ce,K,re,F,P]),Le=o.useCallback(A=>{const G=A.trim();if(!G)return null;const _e=ry(G);if(_e){const fe=v.find(nt=>nt.referenceNumber===_e);if(fe)return fe}const Ne=v.find(fe=>fe.id===G);if(Ne)return Ne;const Ee=v.find(fe=>ys(fe)===G);return Ee||null},[v]),Ue=o.useCallback(A=>{const G=A.trim();if(!G)return null;const _e=G.toLowerCase(),Ne=MI(G);if(Ne){const nt=T.find(q=>q.referenceNumber===Ne);if(nt)return nt}const Ee=T.find(nt=>nt.id===G);if(Ee)return Ee;const fe=T.find(nt=>nt.title.trim().toLowerCase()===_e);return fe||null},[T]),ft=o.useCallback((A,G)=>{G?.preserveReturnTrail||Ae([]),J(A.id),re(A.title),L(A.description||""),x(A.category||h(t)),F(A.type||Z()),he(typeof A.priority=="number"?A.priority:2),ne(typeof A.complexity=="number"?A.complexity:3),K(A.status||"task"),I(A.assignee||"unassigned"),ce(A.scheduledDate||""),ie(A.dueDate||"");const _e=A.workstreamId&&T.find(Ne=>Ne.id===A.workstreamId)||null;Ye(_e?Fo(_e)||_e.id:""),V(A.checklistItems||[]),U(A.comments||[]),oe(A.taxonomies||{}),$(A.attachments||[]),j(!1),N("add"),G?.adoptAsBaseline!==!1&&b?.(A)},[t,h,Z,N,I,$,j,x,V,U,ne,L,ie,J,oe,he,ce,K,Ae,re,F,b,T]),He=o.useCallback(async(A,G)=>{const _e=ke.current+1;if(ke.current=_e,!w)return c?.(),ft(A,{preserveReturnTrail:G?.preserveReturnTrail}),A;if(!A.isSummary){c?.();const Ee=G?.shouldApply?await w(A,{shouldCommit:G.shouldApply}):await w(A);if(ke.current===_e){const fe=Ee||A;return ft(fe,{preserveReturnTrail:G?.preserveReturnTrail}),fe}return null}const Ne=G?.shouldApply?await w(A,{shouldCommit:G.shouldApply}):await w(A);return Ne&&ke.current===_e?(ft(Ne,{preserveReturnTrail:G?.preserveReturnTrail}),Ne):null},[ft,c,w]),Fe=o.useCallback((A,G)=>{He(A,G)},[He]),me=o.useCallback((A,G)=>He(A,G),[He]),ve=o.useCallback(A=>{const G=v.find(Ne=>Ne.id===A);if(!G)return;const _e=()=>{n==="add"&&f&&f!==G.id&&Ae(Ne=>Ne[Ne.length-1]===f?Ne:[...Ne,f]),G.isArchived&&!R&&B(!0),Fe(G,{preserveReturnTrail:!0})};if(n==="add"&&f&&f!==G.id){H(_e);return}_e()},[n,f,Fe,H,v,B,Ae,R]),ot=o.useCallback(()=>{if(n!=="add"||!f||z.length===0)return!1;const A=[...z];for(;A.length>0;){const G=A.pop();if(!G)continue;const _e=v.find(Ne=>Ne.id===G);if(_e)return _e.isArchived&&!R&&B(!0),Ae(A),Fe(_e,{preserveReturnTrail:!0}),!0}return Ae([]),!1},[n,f,Fe,v,B,Ae,R,z]),Oe=o.useCallback(()=>{Ae([])},[Ae]);return{handleNavigation:H,handleClose:ae,resetForm:Te,resolveTaskIdInput:Le,resolveWorkstreamIdInput:Ue,handleEdit:Fe,refreshTaskDetail:me,applyTaskToEditor:ft,handleOpenTaskById:ve,returnToPreviousTask:ot,clearReturnToParentTask:Oe}}function XN(e){return e.map(t=>({...t}))}function QN(e){return e.map(t=>({...t}))}function ej(e){return e.map(t=>({...t}))}const tj={id:"software-development",label:"Software Development",description:"A software-oriented starter pack with developer-focused work types and a 4-level priority scale.",isDefaultStarter:!0,categories:[{value:"default",label:"General",icon:"Inbox"},{value:"product",label:"Product",icon:"Layers",color:"blue-500"},{value:"ui-ux",label:"UI/UX",icon:"Palette",color:"violet-500"},{value:"backend",label:"Backend",icon:"Server",color:"emerald-500"}],types:[{value:"feature",label:"Feature",icon:"Star",color:"teal-500",status:"active"},{value:"bug",label:"Bug",icon:"Bug",color:"red-500",status:"active"},{value:"chore",label:"Chore",icon:"Zap",color:"amber-500",status:"active"},{value:"refactor",label:"Refactor",icon:"Code",color:"blue-500",status:"active"},{value:"documentation",label:"Docs",icon:"Book",color:"sky-500",status:"active"}],priorities:[{value:1,label:"Low",color:"amber-200",icon:"ArrowDown"},{value:2,label:"Medium",color:"yellow-500",icon:"Minus"},{value:3,label:"High",color:"orange-500",icon:"ArrowUp"},{value:4,label:"Critical",color:"red-500",icon:"AlertTriangle"}]},rj=[{id:"general",label:"General",description:"A neutral starter pack for broad project and AI collaboration workflows.",categories:[{value:op,label:ey,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"}]},tj];function OI(){return rj.map(e=>({...e,categories:XN(e.categories),types:QN(e.types),priorities:ej(e.priorities)}))}const nj={"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"},fre=["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 Jn(e){if(e)return nj[e]||e}const xd=[{value:"task",label:"To Do",shortLabel:"To Do",icon:"Square",color:"blue-200"},{value:"on-hold",label:"Blocked",shortLabel:"Blocked",icon:"Pause",color:"amber-500"},{value:"in-progress",label:"Working",shortLabel:"Working",icon:"Play",color:"blue-500"},{value:"review",label:"Review",shortLabel:"Review",icon:"ClipboardCheck",color:"violet-500"},{value:"done",label:"Done",shortLabel:"Done",icon:"SquareCheck",color:"green-500"},{value:"cancelled",label:"Cancelled",shortLabel:"Cancelled",icon:"Ban",color:"var(--status-cancelled)"}],fc=xd.map(({value:e,label:t,icon:r,color:n})=>({value:e,label:t,icon:r,color:n}));function $o(e){const t=String(e||"task").trim().toLowerCase();return t==="completed"?xd.find(r=>r.value==="done")||xd[0]:xd.find(r=>r.value===t)||xd[0]}const BI=["Folder","Code","FileText","Terminal","Database","Cpu","Globe","Layout","Server","Search","Settings","Zap","Shield","Star","Layers","Bug","Box","Book","MessageSquare","Image","Music","Video","Map","Mail","Camera","Heart","Anchor","Rocket","Target","Flag","Bookmark","Briefcase","Puzzle","SquareUserRound","Users","User","Unplug","Clock","Lock","Pencil","TrafficCone","CircleDollarSign","Activity","Wrench","Microscope","Palette","Webhook","FlaskConical","Route","Compass","Landmark","BookOpen","Bot","Cloud","Kanban","Infinity","Monitor","Smartphone","History","Brain","Calendar","Play","Pause","Sparkles","Check","Ban","Circle","CheckCircle","Wind","Github","Square","SquareCheck","CheckSquare","Package","AlertCircle","Lightbulb","ClipboardCheck","ScanSearch","Inbox","HelpCircle","Gauge","FileCode","ArrowDown","Minus","ArrowUp","AlertTriangle","CircleQuestionMark","TriangleAlert"],fp=BI.reduce((e,t)=>(e[t]=eo[t]||Ld,e),{}),mre=BI,Oh=Object.fromEntries(OI().flatMap(e=>e.types).filter(e=>e.icon&&e.color).reduce((e,t)=>(e.some(([r])=>r===t.value)||e.push([t.value,{icon:t.icon,color:t.color}]),e),[])),aj={PDF:"red-500",DOC:"blue-500",DOCX:"blue-500",CSV:"teal-500",JSON:"amber-500",TXT:"violet-200",MD:"violet-200"};function sj(e){const t=String(e||"").trim().toLowerCase();return Jn(Oh[t]?.color)||Jn("violet-200")||"#9c7aeb"}function gre(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 oj(e){const t=String(e||"").trim().toUpperCase();return Jn(aj[t])||"var(--text-muted)"}const ij=/[\u2010-\u2015\u2212]/g;function $w(e){return String(e??"").trim().replace(ij,"-").replace(/\s+/g," ").toLowerCase()}function dy(e){const t=$w(e);if(!t)return null;const r=t.match(/^(l\s*t|t)\s*(?:-\s*)?(\d+)$/i);return r?`${r[1].replace(/\s+/g,"").toLowerCase()}-${r[2]}`:null}function gm(e){const t=$w(e);return{raw:t,tokens:t?t.split(" ").filter(Boolean):[],referenceToken:dy(e)}}function Wo(e,t){const r=String(t??"").trim();r&&e.push(r)}function Vu(e,t,r){const n=String(r??"").trim();if(!n)return;const s=t?.find(i=>String(i.value)===n);Wo(e,s?.label)}function cj(e,t={}){const r=[];return Wo(r,e.title),Wo(r,e.description),Wo(r,e.id),Wo(r,ys(e)),Wo(r,e.category),Wo(r,e.type),Wo(r,e.priority),Wo(r,e.status),Wo(r,e.assignee||"unassigned"),Wo(r,e.canceledReason),Vu(r,t.categories,e.category),Vu(r,t.types,e.type),Vu(r,t.priorities,e.priority),Vu(r,fc,e.status),Vu(r,t.assigneeOptions,e.assignee||"unassigned"),Object.entries(e.taxonomies||{}).forEach(([n,s])=>{const i=t.taxonomies?.find(c=>c.id===n);Wo(r,i?.label),(Array.isArray(s)?s:[s]).forEach(c=>{Wo(r,c),Vu(r,i?.options,c)})}),r}function Bh(e,t,r={}){const n=typeof t=="string"?gm(t):t;if(!n.raw)return!0;const s=cj(e,r),l=s.map($w).filter(Boolean).join(" ");return l.includes(n.raw)||n.referenceToken&&s.map(dy).some(d=>d?.includes(n.referenceToken))?!0:n.tokens.length>0&&n.tokens.every(c=>l.includes(c))}function lj(e,t){const r=e.taxonomies?.[t];return r==null||r===""?!1:Array.isArray(r)?r.some(n=>String(n).trim().length>0):String(r).trim().length>0}function hm(e,t){const r=e.filter(s=>s.status!=="retired"),n=e.filter(s=>s.status==="retired"&&t.some(i=>lj(i,s.id)));return[...r,...n.filter(s=>!r.some(i=>i.id===s.id))]}function WI(e,t=[]){return hm(e,t).filter(r=>r.sortEnabled===!0).map(r=>({value:`taxonomy:${r.id}`,label:r.status==="retired"?`${r.label} (Retired)`:r.label}))}function DS(e,t){const r=e.taxonomies?.[t.id];if(r==null||r==="")return null;const n=Array.isArray(r)?r.map(s=>String(s)):[String(r)];for(let s=0;s<t.options.length;s+=1)if(n.includes(String(t.options[s]?.value)))return s;return null}function yd(e,t){return new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime()}function Wh(e,t,r,n,s=[]){let i=0;if(r==="created")return i=yd(e,t),n==="desc"?i:-i;if(r==="updated"){const l=e.updatedAt||e.createdAt,c=t.updatedAt||t.createdAt;return i=new Date(c).getTime()-new Date(l).getTime(),n==="desc"?i:-i}if(r==="priority"){const l=xh(e.priority),c=xh(t.priority);return i=l!==c?c-l:yd(e,t),n==="desc"?i:-i}if(r==="complexity"){const l=typeof e.complexity=="number"?e.complexity:3,c=typeof t.complexity=="number"?t.complexity:3;return i=l!==c?c-l:yd(e,t),n==="desc"?i:-i}if(r.startsWith("taxonomy:")){const l=r.slice(9),c=s.find(p=>p.id===l);if(!c)return i=yd(e,t),n==="desc"?i:-i;const d=DS(e,c),f=DS(t,c);return d===null&&f===null?yd(e,t):d===null?1:f===null?-1:d!==f?n==="desc"?f-d:d-f:yd(e,t)}return i=yd(e,t),n==="desc"?i:-i}function dj(e,t,r){const n=e.taxonomies?.[t];return n==null||n===""?!1:Array.isArray(n)?n.some(s=>String(s)===String(r)):String(n)===String(r)}function Fw(e,t){const r=e.options.filter(s=>s.status!=="retired"),n=e.options.filter(s=>s.status==="retired"&&t.some(i=>dj(i,e.id,s.value)));return[...r,...n.filter(s=>!r.some(i=>String(i.value)===String(s.value)))]}function uj({query:e,runtimeMode:t,workspaceId:r,enabled:n,scope:s,debounceMs:i=250,pageSize:l=50,maxMatches:c=500}){const[d,f]=o.useState(()=>new Set),p=o.useRef(0),g=o.useMemo(()=>gm(e).raw,[e]);return o.useEffect(()=>{p.current+=1;const h=p.current;if(!n||t!=="cloud"||!g||!r.trim()){f(w=>w.size===0?w:new Set);return}f(w=>w.size===0?w:new Set);const y=new AbortController,k=window.setTimeout(()=>{(async()=>{const w=new Set;let S=0,b=0;const v=Math.max(1,Math.min(50,Math.trunc(l))),T=Math.max(1,Math.trunc(c));try{for(;b<T;){const R=Math.min(v,T-b),P=new URLSearchParams({query:e.trim(),scope:s,limit:String(R),offset:String(S)}),N=await fetch(`/api/taskforce/tasks/search?${P.toString()}`,{signal:y.signal});if(!N.ok)throw new Error(`Task search failed (${N.status}).`);const I=await N.json(),$=I.matches||[];b+=$.length;for(const x of $){const V=String(x?.id||"").trim();V&&w.add(V)}if(I.pagination?.hasMore!==!0)break;const j=Number(I.pagination?.nextOffset);if(!Number.isInteger(j)||j<=S)break;S=j}!y.signal.aborted&&p.current===h&&f(w)}catch{if(y.signal.aborted||p.current!==h)return;f(new Set)}})()},Math.max(0,i));return()=>{window.clearTimeout(k),y.abort("superseded")}},[i,n,c,g,l,e,t,s,r]),d}function pj({tasks:e,archivedTasks:t,activeCategories:r,activeTypes:n,priorities:s,taxonomies:i,configLoaded:l,referenceDataLoaded:c,assigneeOptionsLoaded:d,assigneeOptions:f,runtimeMode:p="local",workspaceId:g="",cloudTaskSearchEnabled:h=!1,cloudTaskSearchScope:y="active"}){const k=o.useMemo(()=>[...e,...t],[t,e]),w=o.useMemo(()=>RC(f),[f]),S=o.useMemo(()=>hm(i,k).filter(me=>me.filterEnabled!==!1).map(me=>({...me,options:Fw(me,k)})),[k,i]),b=o.useMemo(()=>new Map(S.map(me=>[me.id,me])),[S]),v=o.useMemo(()=>w.map(me=>me.value),[w]),[T,R]=o.useState(""),P=uj({query:T,runtimeMode:p,workspaceId:g,enabled:h,scope:y}),[N,I]=o.useState([]),[$,j]=o.useState([]),[x,V]=o.useState([]),[U,ne]=o.useState(!1),[L,ie]=o.useState(fc.map(me=>me.value)),[J,ue]=o.useState(v),[oe,ge]=o.useState(!0),[je,qe]=o.useState({}),Ye=o.useRef(d),[he,ce]=o.useState("created"),[B,K]=o.useState("desc"),Ae=o.useCallback(()=>{K(me=>me==="asc"?"desc":"asc")},[]),[re,F]=o.useState("status"),[D,z]=o.useState("show"),[we,ke]=o.useState({}),ee=o.useCallback((me,ve)=>ve.length===0?!0:ve.every(ot=>me.includes(ot)),[]),Z=o.useCallback((me,ve)=>me.length===ve.length&&me.every((ot,Oe)=>ot===ve[Oe]),[]);o.useEffect(()=>{if(!(!l||!c)&&d&&!U&&r.length>0&&n.length>0&&s.length>0){I(r.map(ve=>ve.value)),j(s.map(ve=>ve.value)),V(n.map(ve=>ve.value)),ue(v),ge(!0);const me={};S.forEach(ve=>{me[ve.id]=ve.options.map(ot=>ot.value)}),qe(me),ne(!0)}},[l,c,d,r,n,s,S,U,v]),o.useEffect(()=>{if(!U||!d)return;const me=new Set(v),ve=J.filter(A=>me.has(A)),ot=oe?v:ve.length>0||J.length===0?ve:v;(ot.length!==J.length||ot.some((A,G)=>A!==J[G]))&&ue(ot)},[v,J,oe,U,d]),o.useEffect(()=>{if(!U||!d)return;const me=J.filter(ot=>v.includes(ot)),ve=v.length>0&&v.every(ot=>me.includes(ot));oe&&!ve&&d&&!Ye.current||ve!==oe&&ge(ve)},[v,J,oe,U,d]),o.useEffect(()=>{Ye.current=d},[d]),o.useEffect(()=>{if(!l||!c||!U||r.length===0)return;const me=qx(N,r);(me.length!==N.length||me.some((ot,Oe)=>ot!==N[Oe]))&&I(me)},[l,c,r,U,N]),o.useEffect(()=>{if(!l||!c||!U||s.length===0||$.length===0)return;const me=Kx($,s),ve=Array.from(new Set($.map(Oe=>Number(Oe)).filter(Oe=>Number.isFinite(Oe))));(me.length!==ve.length||me.some((Oe,A)=>Oe!==ve[A]))&&j(me)},[l,c,U,s,$]),o.useEffect(()=>{if(!l||!c||!U||n.length===0)return;const me=new Set(n.map(Oe=>Oe.value)),ve=x.filter(Oe=>me.has(Oe)),ot=ve.length>0||x.length===0?ve:n.map(Oe=>Oe.value);Z(ot,x)||V(ot)},[n,l,x,U,Z,c]),o.useEffect(()=>{if(!l||!c||!U)return;const me={};S.forEach(G=>{const _e=G.options.map(fe=>fe.value);if(_e.length===0)return;const Ne=Array.isArray(je[G.id])?je[G.id]:[],Ee=Ne.filter(fe=>_e.includes(fe));me[G.id]=Ee.length>0||Ne.length===0?Ee:_e});const ve=Object.keys(je).sort(),ot=Object.keys(me).sort(),Oe=ve.length!==ot.length||ve.some((G,_e)=>G!==ot[_e]),A=ot.some(G=>!Z(je[G]||[],me[G]||[]));(Oe||A)&&qe(me)},[l,je,S,U,Z,c]);const H=o.useCallback(()=>{R(""),I(r.map(ve=>ve.value)),j(s.map(ve=>ve.value)),V(n.map(ve=>ve.value)),ie(fc.map(ve=>ve.value)),ue(v),ge(!0);const me={};S.forEach(ve=>{me[ve.id]=ve.options.map(ot=>ot.value)}),qe(me),ce("created"),K("desc")},[r,s,n,S,v]),ae=o.useCallback(me=>{ue(ve=>{const ot=typeof me=="function"?me(ve):me,Oe=Array.from(new Set(ot.filter(G=>typeof G=="string"&&G.trim().length>0))),A=v.length>0&&v.every(G=>Oe.includes(G));return ge(A),Oe})},[v]),Te=o.useMemo(()=>gm(T),[T]),Le=o.useMemo(()=>({categories:r,types:n,priorities:s,assigneeOptions:w,taxonomies:i}),[r,n,s,w,i]),Ue=o.useMemo(()=>{const me=ee(N,r.map(A=>A.value)),ve=ee(x,n.map(A=>A.value)),ot=ee(Array.from(new Set($.map(A=>Number(A)).filter(A=>Number.isFinite(A)))),s.map(A=>Number(A.value)).filter(A=>Number.isFinite(A))),Oe=ee(L,fc.map(A=>A.value));return e.filter(A=>{const G=Bh(A,Te,Le)||!!Te.raw&&P.has(A.id),_e=!U||me||N.includes(A.category),Ne=!U||ot||Tk(A.priority,$),Ee=!U||ve||x.includes(A.type||So),fe=!U||Oe||L.includes(A.status),nt=!U||oe||J.includes(A.assignee||"unassigned"),q=Object.entries(je).every(([be,Ve])=>{const Ce=b.get(be);if(!Ce)return!0;const xe=Ce?.options.every(de=>Ve.includes(de.value))??!0;if(xe)return!0;const Ie=A.taxonomies?.[be];return Ie?Array.isArray(Ie)?Ie.some(de=>Ve.includes(de)):Ve.includes(Ie):xe||Ve.includes("")});return G&&_e&&Ne&&Ee&&fe&&nt&&q}).sort((A,G)=>Wh(A,G,he,B,i))},[e,Te,Le,P,N,$,x,L,J,oe,je,he,B,U,S,b,r,n,s,ee,i]),ft=o.useMemo(()=>{const me=ee(N,r.map(A=>A.value)),ve=ee(x,n.map(A=>A.value)),ot=ee(Array.from(new Set($.map(A=>Number(A)).filter(A=>Number.isFinite(A)))),s.map(A=>Number(A.value)).filter(A=>Number.isFinite(A))),Oe=ee(L,fc.map(A=>A.value));return e.filter(A=>{const G=!U||me||N.includes(A.category),_e=!U||ot||Tk(A.priority,$),Ne=!U||ve||x.includes(A.type||So),Ee=!U||Oe||L.includes(A.status),fe=!U||oe||J.includes(A.assignee||"unassigned"),nt=Object.entries(je).every(([q,be])=>{const Ve=b.get(q);if(!Ve)return!0;const Ce=Ve?.options.every(Ie=>be.includes(Ie.value))??!0;if(Ce)return!0;const xe=A.taxonomies?.[q];return xe?Array.isArray(xe)?xe.some(Ie=>be.includes(Ie)):be.includes(xe):Ce||be.includes("")});return G&&_e&&Ne&&Ee&&fe&&nt})},[e,N,$,x,L,J,oe,je,U,S,b,r,n,s,ee]),He=o.useMemo(()=>{const me=r.every(Oe=>N.includes(Oe.value)),ve=ee(x,n.map(Oe=>Oe.value)),ot=ee(Array.from(new Set($.map(Oe=>Number(Oe)).filter(Oe=>Number.isFinite(Oe)))),s.map(Oe=>Number(Oe.value)).filter(Oe=>Number.isFinite(Oe)));return t.filter(Oe=>{const A=Bh(Oe,Te,Le)||!!Te.raw&&P.has(Oe.id),G=!U||me||N.includes(Oe.category),_e=!U||ot||Tk(Oe.priority,$),Ne=!U||ve||x.includes(Oe.type||So),Ee=!U||oe||J.includes(Oe.assignee||"unassigned"),fe=Object.entries(je).every(([nt,q])=>{const be=b.get(nt);if(!be)return!0;const Ve=be?.options.every(xe=>q.includes(xe.value))??!0;if(Ve)return!0;const Ce=Oe.taxonomies?.[nt];return Ce?Array.isArray(Ce)?Ce.some(xe=>q.includes(xe)):q.includes(Ce):Ve||q.includes("")});return A&&G&&_e&&Ne&&Ee&&fe}).sort((Oe,A)=>Wh(Oe,A,he,B,i))},[t,Te,Le,P,N,$,x,J,oe,je,he,B,U,r,n,s,S,b,ee,i]),Fe=o.useMemo(()=>{const me={};return Ue.forEach(ve=>{const ot=r.find(A=>A.value===ve.category),Oe=ot?ot.label:ve.category||"General";me[Oe]||(me[Oe]=[]),me[Oe].push(ve)}),me},[Ue,r]);return{searchQuery:T,setSearchQuery:R,filterCategories:N,setFilterCategories:I,filterPriorities:$,setFilterPriorities:j,filterTypes:x,setFilterTypes:V,filterStatus:L,setFilterStatus:ie,filterAssignees:J,setFilterAssignees:ae,filterAssigneesAllSelected:oe,setFilterAssigneesAllSelected:ge,filterTaxonomies:je,setFilterTaxonomies:qe,hasInitedFilters:U,setHasInitedFilters:ne,sortBy:he,setSortBy:ce,sortOrder:B,setSortOrder:K,toggleSortOrder:Ae,groupBy:re,setGroupBy:F,emptyColumnMode:D,setEmptyColumnMode:z,collapsedCategories:we,setCollapsedCategories:ke,clearFilters:H,filteredTasks:Ue,searchAgnosticTasks:ft,filteredArchive:He,groupedTasks:Fe}}const fj=pj,Uw="taskforce-workspace-sync-v3",mj=3,rp="operation-identities",ic="task-create-attempts",np="workstream-create-attempts";function $g(e){if(!e)return[];const t=Array.isArray(e.attempts)?[...e.attempts]:[];return e.active&&!t.some(r=>r.operationId===e.active?.operationId)&&t.push(e.active),t}function MS(e,t){delete e.active,e.attempts=t}function rs(e,t){const r=String(e||"").trim();if(!r)throw new Error(`${t} is required.`);return r}function Zc(e,t){return e.error||new Error(t)}function gj(e){e.objectStoreNames.contains(rp)||e.createObjectStore(rp,{keyPath:"fingerprint"}),e.objectStoreNames.contains(ic)||e.createObjectStore(ic,{keyPath:"workspaceId"}),e.objectStoreNames.contains(np)||e.createObjectStore(np,{keyPath:"fingerprint"})}function zw(e,t){return e?new Promise((r,n)=>{const s=e.open(t,mj);let i=!1;s.onupgradeneeded=()=>gj(s.result),s.onsuccess=()=>{const l=s.result;if(i){l.close();return}i=!0,l.onversionchange=()=>l.close(),r(l)},s.onerror=()=>{i||(i=!0,n(Zc(s,"Failed to open the local operation identity database.")))},s.onblocked=()=>{}}):Promise.reject(new Error("IndexedDB is unavailable."))}class Hw{constructor(t=globalThis.indexedDB,r=Uw){this.indexedDb=t,this.databaseName=r}async getOrCreate(t,r){const n=rs(t,"fingerprint"),s=await this.open();try{return await new Promise((i,l)=>{const c=s.transaction(rp,"readwrite"),d=c.objectStore(rp),f=d.get(n);let p="",g=!1;f.onsuccess=()=>{try{const h=f.result;if(h){p=rs(h.operationId,"stored operationId");return}p=rs(r(),"operationId"),g=!0,d.add({fingerprint:n,operationId:p})}catch(h){c.abort(),l(h)}},f.onerror=()=>l(Zc(f,"Failed to read the local operation identity.")),c.oncomplete=()=>i({operationId:p,created:g}),c.onerror=()=>l(c.error||new Error("Failed to persist the local operation identity.")),c.onabort=()=>l(c.error||new Error("Persisting the local operation identity was aborted."))})}finally{s.close()}}async deleteIfMatches(t,r){const n=rs(t,"fingerprint"),s=rs(r,"operationId"),i=await this.open();try{await new Promise((l,c)=>{const d=i.transaction(rp,"readwrite"),f=d.objectStore(rp),p=f.get(n);p.onsuccess=()=>{p.result?.operationId===s&&f.delete(n)},p.onerror=()=>c(Zc(p,"Failed to read the local operation identity.")),d.oncomplete=()=>l(),d.onerror=()=>c(d.error||new Error("Failed to delete the local operation identity.")),d.onabort=()=>c(d.error||new Error("Deleting the local operation identity was aborted."))})}finally{i.close()}}open(){return zw(this.indexedDb,this.databaseName)}}class $I{constructor(t=globalThis.indexedDB,r=Uw){this.indexedDb=t,this.databaseName=r}async getForParticipant(t,r){const n=rs(t,"workspaceId"),s=rs(r,"participantId"),i=await this.open();try{return await new Promise((l,c)=>{const d=i.transaction(ic,"readonly"),p=d.objectStore(ic).get(n);let g=null;p.onsuccess=()=>{const h=p.result,y=$g(h).find(k=>k.participantId===s);y&&(g={...y,created:!1,resolved:!1})},p.onerror=()=>c(Zc(p,"Failed to read the local task-create attempt.")),d.oncomplete=()=>l(g),d.onerror=()=>c(d.error||new Error("Failed to claim the local task-create attempt.")),d.onabort=()=>c(d.error||new Error("Claiming the local task-create attempt was aborted."))})}finally{i.close()}}async listPending(t){const r=rs(t,"workspaceId"),n=await this.open();try{return await new Promise((s,i)=>{const l=n.transaction(ic,"readonly"),d=l.objectStore(ic).get(r);let f=[];d.onsuccess=()=>{f=$g(d.result).map(p=>({...p,created:!1,resolved:!1}))},d.onerror=()=>i(Zc(d,"Failed to list local task-create attempts.")),l.oncomplete=()=>s(f),l.onerror=()=>i(l.error||new Error("Failed to list local task-create attempts.")),l.onabort=()=>i(l.error||new Error("Listing local task-create attempts was aborted."))})}finally{n.close()}}async claim(t,r,n,s){const i=rs(t,"workspaceId"),l=rs(r,"participantId"),c=await this.open();try{return await new Promise((d,f)=>{const p=c.transaction(ic,"readwrite"),g=p.objectStore(ic),h=g.get(i);let y=null,k=!1;h.onsuccess=()=>{try{const w=h.result||{workspaceId:i},S=$g(w),b=S.find(T=>T.participantId===l);if(b){y={...b,created:!1,resolved:!1};return}const v={workspaceId:i,operationId:rs(s(),"operationId"),task:n,participantId:l};k=!0,S.push(v),MS(w,S),g.put(w),y={...v,created:!0,resolved:!1}}catch(w){p.abort(),f(w)}},h.onerror=()=>f(Zc(h,"Failed to read the local task-create attempt.")),p.oncomplete=()=>{if(!y)return f(new Error("Local task-create attempt was not prepared."));d({...y,created:k})},p.onerror=()=>f(p.error||new Error("Failed to persist the local task-create attempt.")),p.onabort=()=>f(p.error||new Error("Persisting the local task-create attempt was aborted."))})}finally{c.close()}}async markResolved(t,r){const n=rs(r,"operationId");await this.mutateState(t,s=>s.filter(i=>i.operationId!==n))}async abandonIfMatches(t,r){await this.mutateState(t,n=>{const s=rs(r,"operationId");return n.filter(i=>i.operationId!==s)})}async mutateState(t,r){const n=rs(t,"workspaceId"),s=await this.open();try{await new Promise((i,l)=>{const c=s.transaction(ic,"readwrite"),d=c.objectStore(ic),f=d.get(n);f.onsuccess=()=>{const p=f.result||{workspaceId:n},g=r($g(p));g.length===0?d.delete(n):(MS(p,g),d.put(p))},f.onerror=()=>l(Zc(f,"Failed to read the local task-create state.")),c.oncomplete=()=>i(),c.onerror=()=>l(c.error||new Error("Failed to update the local task-create state.")),c.onabort=()=>l(c.error||new Error("Updating the local task-create state was aborted."))})}finally{s.close()}}open(){return zw(this.indexedDb,this.databaseName)}}class hj{constructor(t=globalThis.indexedDB,r=Uw){this.indexedDb=t,this.databaseName=r}async claim(t,r,n){const s=rs(t,"fingerprint"),i=await this.open();try{return await new Promise((l,c)=>{const d=i.transaction(np,"readwrite"),f=d.objectStore(np),p=f.get(s);let g=null,h=!1;p.onsuccess=()=>{try{const y=p.result;if(y){g=y;return}g={fingerprint:s,operationId:rs(n(),"operationId"),workstream:r},h=!0,f.add(g)}catch(y){d.abort(),c(y)}},p.onerror=()=>c(Zc(p,"Failed to read the workstream-create attempt.")),d.oncomplete=()=>{if(!g)return c(new Error("Workstream-create attempt was not prepared."));l({...g,created:h})},d.onerror=()=>c(d.error||new Error("Failed to persist the workstream-create attempt.")),d.onabort=()=>c(d.error||new Error("Persisting the workstream-create attempt was aborted."))})}finally{i.close()}}async deleteIfMatches(t,r){const n=rs(t,"fingerprint"),s=rs(r,"operationId"),i=await this.open();try{await new Promise((l,c)=>{const d=i.transaction(np,"readwrite"),f=d.objectStore(np),p=f.get(n);p.onsuccess=()=>{p.result?.operationId===s&&f.delete(n)},p.onerror=()=>c(Zc(p,"Failed to read the workstream-create attempt.")),d.oncomplete=()=>l(),d.onerror=()=>c(d.error||new Error("Failed to delete the workstream-create attempt.")),d.onabort=()=>c(d.error||new Error("Deleting the workstream-create attempt was aborted."))})}finally{i.close()}}open(){return zw(this.indexedDb,this.databaseName)}}function Jc(e){return bn(e)}async function Vw(e,t=globalThis.crypto){if(!t?.subtle)throw new Error("Web Crypto is unavailable.");const r=new TextEncoder().encode(Jc(e)),n=await t.subtle.digest("SHA-256",r);return Array.from(new Uint8Array(n),s=>s.toString(16).padStart(2,"0")).join("")}function Bf(){if(!globalThis.crypto?.randomUUID)throw new Error("Secure task operation identity generation is unavailable.");return`operation-${globalThis.crypto.randomUUID()}`}function yj(){return{operationId:Bf(),taskId:`task-${globalThis.crypto.randomUUID()}`}}async function Lv(e,t,r){const n={...t,headers:{...t.headers||{},"x-taskforce-operation-id":r}};try{return await fetch(e,n)}catch{return fetch(e,n)}}async function $h(e){if(e.ok||![400,404,409,422].includes(e.status))return!1;const t=await e.clone().json().catch(()=>null),r=String(t?.code||"").trim();return new Set(["TASK_CREATE_UNSUPPORTED_INPUT","DURABLE_TASK_HTTP_PATCH_UNSUPPORTED","DURABLE_TASK_PATCH_INVALID","WORKSPACE_SYNC_OPERATION_ID_REQUIRED","TASK_NOT_FOUND","TASK_ARCHIVED_READ_ONLY","TASK_CHECKLIST_INVALID","TASK_ATTACHMENT_LINKS_INVALID","TASK_COMMENT_INVALID","TASK_COMMENT_IDENTITY_CONFLICT","TASK_DETAIL_REVISION_CONFLICT"]).has(r)}function zk(e){const{id:t,createdAt:r,updatedAt:n,...s}=e;return s}function LS(e){return`taskforce.sync.v3.cloud-task-create-participant-v1:${e}`}function Ov(e){const t=new $I,r=new Hw,n=new Map,s=c=>{const d=globalThis.sessionStorage?.getItem(LS(c));if(d)try{const p=JSON.parse(d);if(typeof p.participantId=="string"&&p.participantId.trim())return{participantId:p.participantId.trim(),draftFingerprint:typeof p.draftFingerprint=="string"?p.draftFingerprint:null}}catch{}const f=n.get(c);return f||{participantId:Bf(),draftFingerprint:null}},i=(c,d)=>{n.set(c,d),globalThis.sessionStorage?.setItem(LS(c),JSON.stringify(d))},l=c=>{i(c,{participantId:Bf(),draftFingerprint:null})};return{async prepareCreate(c,d){const f=yj(),p={...d,id:f.taskId},g=await Vw({workspaceId:c,task:zk(d)});let h=s(c);h.draftFingerprint&&h.draftFingerprint!==g?h={participantId:Bf(),draftFingerprint:g}:h={...h,draftFingerprint:g},i(c,h);const y=await t.claim(c,h.participantId,p,()=>f.operationId),k=zk(y.task);return{operationId:y.operationId,body:y.task,recoveredChangedInput:bn(k)!==bn(zk(d))}},async confirmCreate(c,d){await t.markResolved(c,d),l(c)},resetCreateDraft(c){l(c)},async prepareUpdate(c,d,f,p){const g=bn({workspaceId:c,url:d,body:f,observedPrecondition:p}),h=await r.getOrCreate(g,Bf);return{fingerprint:g,operationId:h.operationId}},confirmUpdate(c,d){return r.deleteIfMatches(c,d)}}}function kj(e){const{activeCategories:t,activeTab:r,apiEndpoint:n,assignee:s,attachments:i,attachmentsDirty:l,category:c,checklistItems:d,comments:f,complexity:p,description:g,dueDate:h,createTaskDurably:y,durableTaskHttpRootActivationEnabled:k=!1,workspaceId:w,taskHttpMutationClient:S,updateTask:b,editingTaskId:v,editorBaselineDraft:T=null,revisionConflict:R=!1,fetchTasks:P,formTaxonomies:N,getAttachmentsDraft:I,getDescriptionDraft:$,getPreferredCategoryValue:j,getTitleDraft:x,awaitPendingDescriptionImageUpload:V,mergeTaskFromServer:U,onTaskCreated:ne,onTaskCreateAccepted:L,workstreamInput:ie,priority:J,pushNotice:ue,queueWorkspaceSyncFromAuthoritativeTaskState:oe,relationshipTasks:ge,supplementalTasks:je=[],resetForm:qe,resolveWorkstreamIdInput:Ye,scheduledDate:he,setActiveTab:ce,setAttachmentsDirty:B,setComments:K,setError:Ae,setLastUsedCategory:re,setLoading:F,setNewCommentText:D,status:z,title:we,taxonomies:ke,textDraftOccupied:ee,type:Z}=e,H=x||(()=>we),ae=$||(()=>g),Te=I||(()=>i),Le=o.useRef(H),Ue=o.useRef(ae),ft=o.useRef(Te),He=o.useRef(V);Le.current=H,Ue.current=ae,ft.current=Te,He.current=V;const Fe=o.useCallback(()=>({title:Le.current(),description:Ue.current()}),[]),[me,ve]=o.useState(null),[ot,Oe]=o.useState("idle"),[A,G]=o.useState(null),_e=o.useRef(null),Ne=o.useRef(null),Ee=o.useRef(null),fe=o.useRef(null),nt=o.useRef(!1),q=o.useRef(null),be=o.useRef(null),Ve=o.useRef(!1),Ce=o.useRef(null),xe=v&&(ge.find(Y=>Y.id===v)||je.find(Y=>Y.id===v))||null,Ie=xe?.isDeleted?"deleted":xe?.isArchived?"archived":null,de=r==="add"&&!v&&((ee??(we.trim()!==""||g.trim()!==""))||d.length>0||(f?.length||0)>0||i.length>0);o.useEffect(()=>{Ve.current&&!de&&(be.current?.resetCreateDraft(w),y?.resetDraft?.()),Ve.current=de},[de,y,w]);const Be=o.useCallback(Y=>JSON.stringify({title:Y.title.trim(),description:Y.description,category:Y.category,type:Y.type,priority:Number(Y.priority),complexity:Number(Y.complexity)||3,assignee:Y.assignee||"agent",scheduledDate:Y.scheduledDate||"",dueDate:Y.dueDate||"",workstreamId:Y.workstreamId||"",checklistItems:Y.checklistItems,taxonomies:Y.taxonomies,attachments:Y.attachments}),[]),at=o.useCallback((Y=Fe(),le=ft.current())=>Be({title:Y.title,description:Y.description,category:typeof c=="string"?c:c.label||j(t),type:typeof Z=="string"?Z:Z.label||So,priority:J,complexity:Number(p)||3,status:z,assignee:s||"agent",scheduledDate:he,dueDate:h,workstreamId:ie.trim()?Ye(ie)?.id||ie.trim():"",checklistItems:d,taxonomies:N,attachments:le}),[t,s,Be,c,d,p,g,h,N,j,J,Fe,Ye,he,z,we,Z,ie]),Qe=o.useCallback(()=>{_e.current!==null&&(window.clearTimeout(_e.current),_e.current=null)},[]),Ze=o.useCallback(()=>!!(v&&A!==null&&at()!==A),[at,v,A]),Pe=Ze();o.useEffect(()=>{R&&(Qe(),Ne.current=null,Oe("idle"))},[Qe,R]);const gt=o.useCallback(Y=>{if(Ee.current===Y.signature&&Ne.current===null&&fe.current||(Ne.current=Y,fe.current))return fe.current;const Ke=(async()=>{let It=!0;for(;Ne.current;){const vt=Ne.current;Ne.current=null,Ee.current=vt.signature,It=await vt.save(),It&&G(vt.signature)}return Ee.current=null,It})().finally(()=>{Ee.current=null,fe.current=null});return fe.current=Ke,Ke},[]),it=o.useCallback(async Y=>{const le=Y?.quiet??!1,Ke=Y?.source??"manual";if(v&&R)return Ae(""),Oe("idle"),!1;if(!v&&Ke==="manual")try{await He.current?.()}catch(or){console.error("Description image upload did not settle before task creation.",or);const Dt="Wait for the Description image upload to finish, then try again.";return Ae(Dt),le||ue(Dt,"error"),!1}const It=Y?.textDraft??Fe(),vt=It.title,Mt=It.description,gr=ft.current();if(v||(q.current=null),Ie)return Ae(Ie==="deleted"?"Deleted tasks are read-only. Restore first to make changes.":"Archived tasks are read-only. Unarchive first to make changes."),Oe(Ke==="autosave"?"error":"idle"),!1;if(!vt.trim())return Ae("Title is required"),v&&Oe(Ke==="autosave"?"error":"idle"),!1;const Zt=ke.filter(or=>or.isRequired).filter(or=>{const Dt=N[or.id];return Array.isArray(Dt)?Dt.filter(lr=>String(lr).trim().length>0).length===0:typeof Dt!="string"&&typeof Dt!="number"||String(Dt).trim().length===0}).map(or=>or.label);if(Zt.length>0)return Ae(`Required taxonomy values are missing: ${Zt.join(", ")}`),v&&Oe(Ke==="autosave"?"error":"idle"),!1;F(!0),Ae(""),v&&Oe("saving");try{const or=v?`/api/taskforce/task/${v}`:n.replace("/api/dev/task","/api/taskforce/task").replace("/api/taskforce/task","/api/taskforce/task"),Dt=v?"PATCH":"POST",lr=typeof c=="string"?c:c.label||j(t),Rr=typeof Z=="string"?Z:Z.label||So,Lr=ie.trim()?Ye(ie):null,Dr=v?ge.find(Ct=>Ct.id===v):null,Me=!v||!Dr||bn(Dr.checklistItems||[])!==bn(d),rt={title:vt,description:Mt||null,category:lr||j(t),type:Rr,priority:J,complexity:Number(p)||3,status:v?void 0:z,completedAt:v?void 0:z==="done"?new Date().toISOString():null,assignee:s||"agent",scheduledDate:he||null,dueDate:h||null,workstreamId:ie.trim()?Lr?.id||ie.trim():null,taxonomies:N,...v?{}:{createdAt:new Date().toISOString(),createdBy:"user"}};if(v&&Dr)for(const[Ct,Wt]of Object.entries(rt))(Wt===void 0||bn(Wt??null)===bn(Dr[Ct]??null))&&delete rt[Ct];if(Me&&(rt.checklistItems=d),v||(rt.comments=f),(!v||l)&&(rt.attachments=gr),v&&Object.keys(rt).length>0&&(rt.saveSource=Ke,Dr?.detailRevision&&(rt.expectedDetailRevision=Dr.detailRevision)),v&&b){const Ct=await b(v,rt);return F(!1),Oe(Ct===!1?"error":"saved"),Ct===!1?!1:(re(lr),B(!1),!0)}if(!v&&y){let Ct;try{Ct=await y(rt)}catch(Wt){console.error("Durable task create failed before a conclusive result.",Wt);const Ot="Task creation confirmation was interrupted. Retry the same task to confirm it safely.";return Ae(Ot),le||ue(Ot,"error"),F(!1),!1}if(Ct){if(Ct.state==="failed"||Ct.state==="rejected"||Ct.state==="ambiguous"||Ct.state==="disabled"){const Wt=Ct.state==="disabled"?"Task was not created because durable capture became unavailable. Reload before retrying.":Ct.state==="failed"?"Task was not created because durable local preparation failed. Retry the task.":Ct.state==="rejected"?`Task was not created because durable capture rejected it${Ct.errorCode?` (${Ct.errorCode})`:""}.`:"Task creation confirmation was interrupted. Retry the same task to confirm it safely.";return Ae(Wt),le||ue(Wt,"error"),F(!1),!1}if(Ct.task){const Wt=to(Ct.task);q.current=Wt,U(Wt)}if(Ct.recoveredChangedInput&&(nt.current=!0,ue("Recovered the previously interrupted task. Changes made after the interrupted submission were not applied.","info")),Ct.state==="pending")Ct.pendingReason!=="queued"&&(nt.current=!0,ue(Ct.pendingReason==="auth"?"Task created locally. Sign in to finish cloud sync.":Ct.pendingReason==="sync-disabled"?"Task created locally. Turn on sync to send it to cloud.":"Task created locally. Cloud sync will retry automatically.","info")),Ae("");else if(Ct.state==="blocked"){nt.current=!0;const Wt=`Task created locally, but cloud sync is blocked${Ct.errorCode?` (${Ct.errorCode})`:""}.`;Ae(Wt),ue(Wt,"error")}else Ae("");return re(lr),B(!1),F(!1),!0}}let pt=!1,ht=null,At=rt;if(k&&!v){be.current||(be.current=S||Ov());const Ct=await be.current.prepareCreate(w,rt);ht=Ct.operationId,At=Ct.body,pt=Ct.recoveredChangedInput}const Ft={method:Dt,headers:{"Content-Type":"application/json"},body:JSON.stringify(At)},Tt=ht?await Lv(or,Ft,ht):await fetch(or,Ft);if(!Tt.ok){!v&&ht&&await $h(Tt)&&await be.current?.confirmCreate(w,ht);const Ct=await Tt.json(),Wt=Ct.error||Ct.message||`Failed to ${v?"update":"save"} task`;return Ae(Wt),le||ue(Wt,"error"),F(!1),v&&Oe("error"),!1}const $t=await Tt.json().catch(()=>null);if(!v&&ht&&(!$t||typeof $t!="object"||String($t.id||"")!==String(At.id||"")))throw new Error("Durable cloud task create returned an invalid authoritative task identity.");if(!v&&ht&&await be.current?.confirmCreate(w,ht),pt&&(nt.current=!0,ue("Recovered the previously interrupted task. Changes made after the interrupted submission were not applied.","info")),$t&&typeof $t=="object"){const Ct=to($t);U(Ct),v?oe():q.current=Ct}return re(lr),B(!1),F(!1),v&&Oe("saved"),!0}catch(or){return console.error("Failed to save task.",or),Ae("Failed to connect to server"),le||ue("Failed to connect to server","error"),F(!1),v&&Oe("error"),!1}},[t,n,s,l,c,d,f,p,h,y,k,w,S,b,v,R,Ie,N,j,U,ie,J,ue,oe,Fe,Ye,B,Ae,re,F,he,z,ke,Z]),De=o.useCallback(async()=>{if(await it({source:"manual"})&&(!v&&!nt.current&&ue("Task added successfully","success"),nt.current=!1,r==="add"&&!v)){const le=q.current;if(le&&L)try{await L(le)}catch(Ke){console.warn("Task create draft upload promotion failed.",Ke),ue("Task created successfully. Temporary image cleanup will retry automatically.","info")}if(le&&ne){ne(le);return}qe(),ce("tasks"),await P()}},[r,v,P,L,ne,ue,qe,it,ce]);o.useEffect(()=>{if(Qe(),Ne.current=null,!v){G(null),Oe("idle");return}G(T?Be(T):at()),Oe("idle")},[Be,Qe,v,T]);const bt=o.useCallback(async()=>{if(Qe(),Ie)return!0;if(R)return!1;if(!v||A===null)return!0;const Y=Fe(),le=at(Y);return le===A?!0:!Y.title.trim()||h&&he&&h<he?!1:await gt({signature:le,save:()=>it({quiet:!0,source:"autosave",textDraft:Y})})&&at()===le},[at,Qe,h,v,Ie,gt,A,Fe,R,it,he]);o.useEffect(()=>{if(!v||Ie||R||A===null)return;const Y=Fe(),le=at(Y);if(le===A)return;if(!Y.title.trim()){Oe("idle");return}if(h&&he&&h<he){Oe("error");return}Oe(vt=>vt==="error"?"error":"idle"),Qe();const It=(()=>{try{return String(JSON.parse(A).assignee||"")}catch{return""}})()!==String(s||"agent")?0:1400;return _e.current=window.setTimeout(async()=>{await gt({signature:le,save:()=>it({quiet:!0,source:"autosave",textDraft:Y})})},It),()=>{Qe()}},[at,s,Qe,h,v,Ie,gt,A,Fe,R,it,he]);const Et=o.useCallback(async Y=>{if(Y.preventDefault(),h&&he&&h<he){ve({dueDate:h,scheduledDate:he});return}await De()},[h,De,he]),mt=o.useCallback(async()=>{ve(null),await De()},[De]),qt=o.useCallback(()=>{ve(null)},[]),et=o.useCallback(async Y=>{if(!v||!Y.trim())return;const le=Y.trim(),Ke=Ce.current,It=Ke?.taskId===v&&Ke.text===le?Ke:{taskId:v,text:le,operationId:globalThis.crypto?.randomUUID?.()||`comment-operation-${Date.now()}`,commentId:`comment-${globalThis.crypto?.randomUUID?.()||Date.now()}`,timestamp:new Date().toISOString()};Ce.current=It;try{const vt=await fetch(`/api/taskforce/task/${v}/comment`,{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-operation-id":It.operationId},body:JSON.stringify({text:le,commentId:It.commentId,timestamp:It.timestamp})});if(!vt.ok){const gr=await $h(vt),or=(await vt.json().catch(()=>({}))).error||"Failed to add comment.";gr&&(Ce.current=null),Ae(or),ue(or,"error");return}const Mt=await vt.json().catch(()=>null);if(Ce.current=null,D(""),Mt&&typeof Mt=="object"){const gr=to(Mt);K(gr.comments||[]),U(Mt),G(at()),Oe("saved")}else await P(!0);oe()}catch(vt){console.error("Failed to add comment",vt),Ae("Failed to add comment."),ue("Failed to add comment.","error")}},[v,P,at,U,ue,oe,K,Ae,D]);return{autoSaveState:ot,hasUnsavedChanges:Pe,hasUnsavedChangesNow:Ze,hasPendingAutoSave:ot==="saving",flushAutoSave:bt,scheduleWarningPrompt:me,saveTask:it,handleSubmit:Et,confirmScheduleWarning:mt,cancelScheduleWarning:qt,handleAddComment:et}}const vj=(e,t)=>globalThis.fetch(e,t),Fh="taskforce.task-description-image-draft-recovery.v1",OS=[1e3,5e3,15e3,6e4],wj=8,BS=Number.MAX_SAFE_INTEGER;function bj(e){const t=Math.max(0,Math.min(OS.length-1,Math.floor(e)-1));return OS[t]}function Ju(e){return`${e.workspaceId}\0${e.createdByUserId}\0${e.draftUploadId}`}function Sj(e){if(!e||typeof e!="object")return!1;const t=e;return typeof t.workspaceId=="string"&&!!t.workspaceId.trim()&&typeof t.createdByUserId=="string"&&!!t.createdByUserId.trim()&&typeof t.draftUploadId=="string"&&!!t.draftUploadId.trim()&&(t.resolution==="promote"||t.resolution==="discard")&&Number.isFinite(t.attempts)&&Number.isFinite(t.nextAttemptAt)&&Number.isFinite(t.createdAt)}function Bv(e){if(!e)return[];try{const t=JSON.parse(e.getItem(Fh)||"[]");if(!Array.isArray(t))return[];const r=new Map;return t.filter(Sj).forEach(n=>{r.set(Ju(n),n)}),[...r.values()]}catch{return[]}}function Aj(e,t){if(e)try{if(t.length===0){e.removeItem(Fh);return}e.setItem(Fh,JSON.stringify(t))}catch{}}function Hk(e,t){const r=t(Bv(e));return Aj(e,r),r}function Cj(){try{return globalThis.localStorage||null}catch{return null}}function Ij(e,t,r={}){const n=r.fetchImpl||vj,s=r.storage===void 0?Cj():r.storage,i=r.now||Date.now,l=o.useRef(null),c=o.useRef(new Map),d=o.useRef(async()=>{}),f=o.useCallback(()=>{l.current!==null&&(clearTimeout(l.current),l.current=null)},[]),p=o.useCallback(()=>{f();const k=Bv(s).filter(S=>S.workspaceId===e&&S.createdByUserId===t&&S.nextAttemptAt<BS).sort((S,b)=>S.nextAttemptAt-b.nextAttemptAt)[0];if(!k)return;const w=Math.max(0,k.nextAttemptAt-i());l.current=setTimeout(()=>{l.current=null,d.current(!1)},w)},[f,t,i,s,e]),g=o.useCallback(k=>{const w=Ju(k),S=c.current.get(w);if(S)return S;const b=(async()=>{await Promise.resolve();try{const v=await n(`/api/taskforce/context-upload/draft/${k.resolution}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceId:k.workspaceId,draftUploadId:k.draftUploadId,uploadPurpose:"task-description-draft"})});if(!v.ok)throw new Error(`Draft upload ${k.resolution} was rejected (${v.status}).`);Hk(s,T=>T.filter(R=>Ju(R)!==w))}catch(v){throw Hk(s,T=>T.map(R=>{if(Ju(R)!==w)return R;const P=Math.min(Number.MAX_SAFE_INTEGER,R.attempts+1);return{...R,attempts:P,nextAttemptAt:P>=wj?BS:i()+bj(P)}})),v}finally{c.current.delete(w),p()}})();return c.current.set(w,b),b},[n,i,p,s]),h=o.useCallback(async(k=!1)=>{const w=i(),S=Bv(s).filter(b=>b.workspaceId===e&&b.createdByUserId===t&&(k||b.nextAttemptAt<=w));await Promise.allSettled(S.map(b=>g(b))),p()},[g,t,i,p,s,e]);return d.current=h,o.useEffect(()=>{h(!0);const k=()=>{h(!0)},w=()=>{document.visibilityState==="visible"&&h(!0)},S=b=>{b.key===Fh&&h(!1)};return window.addEventListener("online",k),window.addEventListener("storage",S),document.addEventListener("visibilitychange",w),()=>{f(),window.removeEventListener("online",k),window.removeEventListener("storage",S),document.removeEventListener("visibilitychange",w)}},[f,h]),{resolveDraft:o.useCallback(async k=>{const w=k.draftUploadId.trim();if(!e||!t||!w)return;const S=i(),b={workspaceId:e,createdByUserId:t,draftUploadId:w,resolution:k.resolution,attempts:0,nextAttemptAt:S,createdAt:S};Hk(s,v=>[...v.filter(T=>Ju(T)!==Ju(b)),b]),await g(b)},[g,t,i,s,e])}}function _j(e){const{editingTaskId:t,workstreamInput:r,pushNotice:n,relationshipTasks:s,resolveWorkstreamIdInput:i,setError:l,updateTask:c}=e;return{handleSetWorkstreamForCurrentTask:o.useCallback(async f=>{if(!t)return;const p=s.find(k=>k.id===t);if(!p)return;const g=typeof f=="string"?f.trim():f===null?"":r.trim(),h=g?i(g):null,y=g.length>0?h?.id||g:null;if((p.workstreamId||null)===y){n(y?"Task already belongs to that workstream.":"Task is already standalone.","info");return}try{if(await c(t,{workstreamId:y})===!1)return;l(""),n(y?"Workstream set":"Workstream removed","info")}catch{l("Failed to set workstream."),n("Failed to set workstream.","error")}},[t,r,n,s,i,l,c])}}const Gw=new Set(["title","description","priority","complexity","type","category","createdBy","assignee","scheduledDate","dueDate","scheduledWeekKey","orderInDay","workstreamId","taxonomies"]);function Tj(e){const t={};for(const r of Gw)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}class gh extends Error{constructor(t,r,n){super(t),this.code=r,this.statusCode=n,this.name="DurableTaskMetadataMutationError"}}function FI(e){const t=e&&typeof e=="object"&&!Array.isArray(e)?e:null;if(!t)throw new gh("Task metadata patch must be an object.","DURABLE_TASK_PATCH_INVALID",400);const r=Object.keys(t);if(r.length===0)throw new gh("Task metadata patch cannot be empty.","DURABLE_TASK_PATCH_INVALID",400);const n=r.filter(s=>!Gw.has(s));if(n.length>0)throw new gh(`Task metadata patch contains unsupported fields: ${n.sort().join(", ")}.`,"DURABLE_TASK_PATCH_INVALID",400);return{...t}}const $d="taskforce:tasks-mutated";function xj(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent($d,{detail:e}))}const Fg=Gw,Rj=new Set(["status","assignee","canceledReason","completedAt","completed","inProgress","readyForReview","cancelled"]);function Pj(e,t){return e===void 0||t===void 0?e===t:bn(e)===bn(t)}function _n(e,t,r,n){return t?e.map(s=>{if(s.id!==r)return s;const i={...s};for(const l of Object.keys(n))Object.prototype.hasOwnProperty.call(t,l)?i[l]=t[l]:delete i[l];return i}):e}function Cf(e,t){return{taskId:t,updatedAt:e?.updatedAt??null,detailRevision:e?.detailRevision??null,status:e?.status??null,isArchived:e?.isArchived===!0}}function Ej({tasks:e,archivedTasks:t,editingTaskId:r,editingTaskDetailRevision:n=null,setTasks:s,setArchivedTasks:i,setDeletedTasks:l,setError:c,resetForm:d,setActiveTab:f,fetchTasks:p,fetchArchive:g,fetchDeletedTasks:h,mergeTaskFromServer:y,pushNotice:k,cloudAuthConfigured:w,runtimeMode:S,isAuthenticated:b,workspaceCloudSyncEnabled:v,buildWorkspaceSyncSignature:T,pushWorkspaceChangesToCloud:R,workspacePendingSignatureRef:P,workspaceDeletedTaskIdsRef:N,workspaceDeletedTaskWatermarksRef:I,mutateTaskMetadata:$,mutateTaskStatus:j,mutateTaskLifecycle:x,mutateTaskDelete:V,mutateTaskRestore:U,durableTaskMetadataActivationEnabled:ne=!1,durableTaskStatusActivationEnabled:L=!1,durableTaskDeleteActivationEnabled:ie=!1,durableTaskHttpRootActivationEnabled:J=!1,workspaceId:ue="default",taskHttpMutationClient:oe,onTaskRevisionConflict:ge,onTaskMutationAccepted:je}){const qe=o.useRef(new Map);o.useEffect(()=>{if(typeof window>"u")return;const A=G=>{const _e=G.detail,Ne=_e?.authoritativeTask,Ee=String(_e?.workspaceId||"").trim()||"default";!Ne||Ee!==ue||(qe.current.set(Ne.id,Ne),y(Ne))};return window.addEventListener($d,A),()=>window.removeEventListener($d,A)},[y,ue]);const[Ye,he]=o.useState(null),ce=o.useRef(null),B=o.useRef(null),K=o.useRef(null),Ae=o.useRef(null),re=o.useCallback(async(A,G,_e,Ne,Ee)=>{const fe=["checklistItems","attachments","comments"].some(be=>Object.prototype.hasOwnProperty.call(_e,be));if(!J&&!fe)return fetch(A,G);Ae.current||(Ae.current=oe||Ov());const nt=await Ae.current.prepareUpdate(ue,A,_e,Ne),q=await Lv(A,G,nt.operationId);if(q.ok){const be=await q.clone().json().catch(()=>null);if(!Ee(be))throw new Error("Durable cloud task mutation returned an invalid authoritative response.");await Ae.current.confirmUpdate(nt.fingerprint,nt.operationId)}else await $h(q)&&await Ae.current.confirmUpdate(nt.fingerprint,nt.operationId);return q},[J,oe,ue]),F=o.useCallback((A,G,_e,Ne,Ee)=>re(A,G,_e,Ee,fe=>!!fe&&typeof fe=="object"&&String(fe.id||"")===Ne),[re]);o.useEffect(()=>()=>{typeof window>"u"||(B.current!==null&&(window.clearTimeout(B.current),B.current=null),K.current=null)},[]);const D=o.useCallback((A=0)=>{if(!(w&&S==="local"&&b&&v)||typeof window>"u")return;const G=Math.max(0,A),_e=Date.now()+G,Ne=K.current;if(B.current!==null){if(G<=0||Ne!==null&&Ne>=_e)return;window.clearTimeout(B.current),B.current=null}K.current=_e,B.current=window.setTimeout(()=>{B.current=null,K.current=null;const Ee=T();Ee&&(P.current=Ee,R(Ee))},G)},[w,S,b,v,T,P,R]),z=o.useCallback(async(A,G)=>{let _e=await fetch(`/api/taskforce/deleted${A}`,G);return _e.status===404&&(_e=await fetch(`/api/taskforce/trash${A}`,G)),_e},[]),we=async(A,G=!1,_e={})=>{if(!_e.skipConfirm&&!confirm("Move this task to Trash? You can restore it later."))return!1;const Ne=G||t.some(Ee=>Ee.id===A);try{let Ee=null;if(ie){const q=await V?.(A);if(!q){const be="Task was not deleted because durable capture was unavailable.";return c(be),k(be,"error"),!1}if(q.state!=="disabled"){if(q.state==="rejected"||q.state==="failed"||q.state==="ambiguous"){const be=q.state==="ambiguous"?"Task delete confirmation was interrupted. Retry the same delete to confirm it safely.":`Task was not deleted because durable capture rejected it${q.errorCode?` (${q.errorCode})`:""}.`;return c(be),k(be,"error"),!1}if(Ee=q.deleted||null,!Ee){const be="Task delete was captured, but its Trash record was unavailable.";return c(be),k(be,"error"),!1}}}let fe=Ee?{deleted:Ee}:{};if(!Ee){const q=`/api/taskforce/task/${A}`,be=e.find(Ce=>Ce.id===A)||t.find(Ce=>Ce.id===A),Ve=await re(q,{method:"DELETE"},{},Cf(be,A),Ce=>!!Ce&&typeof Ce=="object"&&Ce.success===!0&&!!Ce.deleted&&typeof Ce.deleted=="object"&&String(Ce.deleted.taskId||"")===A);if(!Ve.ok){const xe=(await Ve.json().catch(()=>({}))).error||"Failed to delete task.";return c(xe),k(xe,"error"),!1}fe=await Ve.json().catch(()=>({}))}const nt=fe?.deleted&&typeof fe.deleted=="object"&&fe.deleted.taskSnapshot?{...fe.deleted,taskSnapshot:to(fe.deleted.taskSnapshot)}:null;if(window.location.search.includes(A)){const q=new URL(window.location.href);q.searchParams.delete("task"),window.history.pushState({},"",q.toString())}if(Ne?i(q=>q.filter(be=>be.id!==A)):s(q=>q.filter(be=>be.id!==A)),nt){l(be=>[nt,...be.filter(Ve=>Ve.taskId!==A)]);const q=String(nt.deletedAt||"").trim();Number.isFinite(Date.parse(q))&&I.current.set(A,q)}else await h(!0),I.current.set(A,new Date().toISOString());if(N.current.add(A),!Ee&&w&&S==="local"&&b&&v){const q=T();P.current=q,R(q)}return r===A&&(d(),f("tasks")),c(""),k("Task moved to Trash.","info"),!0}catch(Ee){return console.error("Failed to delete task:",Ee),c("Failed to delete task."),k("Failed to delete task.","error"),!1}},ke=o.useCallback(async(A,G,_e={})=>{try{const Ne=`/api/taskforce/deleted/${A}/restore`,Ee=String(G||"").trim();if(ie){if(!Ee||!U)throw new Error("Durable local task restore requires the expected task identity and capture client.");const Ve=await U(A,Ee,_e.restoreDestination||"previous");if(!Ve||Ve.state==="failed"||Ve.state==="ambiguous"||Ve.state==="rejected"||Ve.state==="disabled"){const xe="Failed to capture task restore durably.";return c(xe),_e.silent||k(xe,"error"),null}const Ce=Ve.task;if(!Ce||Ce.id!==Ee)throw new Error("Durable local task restore did not return the restored task.");return y(Ce),l(xe=>xe.filter(Ie=>Ie.id!==A&&Ie.taskId!==Ee)),N.current.delete(A),N.current.delete(Ee),I.current.delete(A),I.current.delete(Ee),c(""),_e.silent||k(Ve.state==="accepted"?"Task restored from Trash.":"Task restored locally; cloud sync is pending.","info"),to(Ce)}if(J&&!Ee)throw new Error("Durable cloud task restore requires the expected task identity.");const fe=I.current.get(Ee)||I.current.get(A)||null,nt=J?await re(Ne,{method:"POST"},{},{taskId:Ee,updatedAt:fe,status:"deleted",isArchived:!1},Ve=>!Ve||typeof Ve!="object"?!1:String(Ve.id||"").trim()===Ee):await z(`/${A}/restore`,{method:"POST"});if(!nt.ok){const Ce=(await nt.json().catch(()=>({}))).error||"Failed to restore deleted task.";return c(Ce),_e.silent||k(Ce,"error"),null}const q=await nt.json().catch(()=>null);q?y(q):await p(!0);const be=String(q?.id||"").trim();return l(Ve=>Ve.filter(Ce=>Ce.id!==A&&Ce.taskId!==Ee&&Ce.taskId!==be)),N.current.delete(A),I.current.delete(A),be&&(N.current.delete(be),I.current.delete(be)),D(),c(""),_e.silent||k(q?.isArchived===!0?"Task restored to Archived.":"Task restored to Active.","info"),q?to(q):null}catch(Ne){return console.error("Failed to restore deleted task:",Ne),c("Failed to restore deleted task."),_e.silent||k("Failed to restore deleted task.","error"),null}},[J,ie,re,p,y,U,k,D,z,l,c]),ee=o.useCallback(async A=>{try{const G=await z(`/${A}`,{method:"DELETE"});if(!G.ok){const Ne=(await G.json().catch(()=>({}))).error||"Failed to permanently delete deleted task.";return c(Ne),k(Ne,"error"),!1}return l(_e=>_e.filter(Ne=>Ne.id!==A&&Ne.taskId!==A)),D(),c(""),k("Deleted task permanently removed.","info"),!0}catch(G){return console.error("Failed to permanently delete deleted task:",G),c("Failed to permanently delete deleted task."),k("Failed to permanently delete deleted task.","error"),!1}},[k,D,z,l,c]),Z=o.useCallback(async()=>{try{const A=await z("/empty",{method:"POST"});if(!A.ok){const Ee=(await A.json().catch(()=>({}))).error||"Failed to permanently delete deleted tasks.";return c(Ee),k(Ee,"error"),null}const G=await A.json().catch(()=>({})),_e=Number(G?.deleted||0);return l([]),D(),c(""),k(_e===1?"Deleted task permanently removed.":`${_e} deleted tasks permanently removed.`,"info"),_e}catch(A){return console.error("Failed to empty deleted tasks:",A),c("Failed to permanently delete deleted tasks."),k("Failed to permanently delete deleted tasks.","error"),null}},[k,D,z,l,c]),H=o.useCallback((A,G,_e,Ne,Ee)=>{if(A.state==="disabled")return!1;if(A.state==="rejected"||A.state==="failed"){const fe=Ne.find(q=>q.id===G)||Ee.find(q=>q.id===G);s(q=>_n(q,fe,G,_e)),i(q=>_n(q,fe,G,_e));const nt=A.state==="failed"?"Task was not saved because durable local preparation failed. Retry the edit.":A.retryable?"Task was not saved because durable capture is busy. Retry the edit shortly.":`Task was not saved because durable capture rejected it${A.errorCode?` (${A.errorCode})`:""}.`;return c(nt),k(nt,"error"),!0}if("task"in A&&A.task&&(y(A.task),je?.(A.task)),A.state==="accepted")c("");else if(A.state==="pending")c(""),A.pendingReason!=="queued"&&k(A.pendingReason==="auth"?"Task saved locally. Sign in to finish cloud sync.":A.pendingReason==="sync-disabled"?"Task saved locally. Turn on sync to send it to cloud.":"Task saved locally. Cloud sync will retry automatically.","info");else{const fe=A.state==="blocked"?`Task saved locally, but cloud sync is blocked${A.errorCode?` (${A.errorCode})`:""}.`:"Task save confirmation was interrupted. Retry the same edit to confirm it safely.";c(fe),k(fe,"error")}return!0},[y,je,k,i,c,s]),ae=o.useCallback(async(A,G,_e={},Ne)=>{const Ee=Ne??(A.id===r?n:null),fe=Object.keys(_e).some(xe=>Fg.has(xe)),nt=Object.keys(_e).filter(xe=>!Rj.has(xe)&&!Fg.has(xe));if(L&&nt.length>0){const xe=`Task status was not saved because the combined update contains unsupported fields: ${nt.sort().join(", ")}.`;c(xe),k(xe,"error");return}const q=new Date().toISOString(),be={..._e,status:G,completedAt:G==="done"||G==="cancelled"?_e.completedAt||q:null,completed:G==="done",inProgress:G==="in-progress",readyForReview:G==="review",cancelled:G==="cancelled"},Ve=e,Ce=t;if(s(xe=>xe.map(Ie=>Ie.id===A.id?{...Ie,...be}:Ie)),i(xe=>xe.map(Ie=>Ie.id===A.id?{...Ie,...be}:Ie)),j)try{const xe=(de,Be,at)=>{const Qe=Object.prototype.hasOwnProperty.call(Be,"assignee")?{kind:"set",value:Be.assignee??null}:{kind:"preserve"},Ze=Tj(Be);return delete Ze.assignee,{status:de,assigneeIntent:Qe,canceledReason:de==="cancelled"?Be.canceledReason??null:null,metadataPatch:Ze,...at?{expectedDetailRevision:at}:{}}};let Ie=await j(A.id,xe(G,_e,Ee));if(Ie&&(Ie.state==="rejected"||Ie.state==="failed")&&Ie.errorCode==="TASK_DETAIL_REVISION_CONFLICT"){const de=Ve.find(at=>at.id===A.id)||Ce.find(at=>at.id===A.id);s(at=>_n(at,de,A.id,be)),i(at=>_n(at,de,A.id,be));const Be=await ge?.(A.id,null);if(Be?.retryDetailRevision){const at=Object.fromEntries(Object.entries(_e).map(([Ze,Pe])=>[Ze,Be.retryPatch&&Object.prototype.hasOwnProperty.call(Be.retryPatch,Ze)?Be.retryPatch[Ze]:Pe])),Qe=Be.retryPatch?.status||G;if(Ie=await j(A.id,xe(Qe,at,Be.retryDetailRevision)),Ie&&(Ie.state==="rejected"||Ie.state==="failed")&&Ie.errorCode==="TASK_DETAIL_REVISION_CONFLICT"&&(await ge?.(A.id,null))?.handled){c("");return}}else if(Be?.handled){c("");return}}if(Ie&&H(Ie,A.id,be,Ve,Ce))return;if(!Ie&&L){const de=Ve.find(at=>at.id===A.id)||Ce.find(at=>at.id===A.id);s(at=>_n(at,de,A.id,be)),i(at=>_n(at,de,A.id,be));const Be="Task status was not saved because durable capture was unavailable.";c(Be),k(Be,"error");return}}catch(xe){console.error("Durable task status update failed before a conclusive result.",xe);const Ie=Ve.find(Be=>Be.id===A.id)||Ce.find(Be=>Be.id===A.id);s(Be=>_n(Be,Ie,A.id,be)),i(Be=>_n(Be,Ie,A.id,be));const de="Task save confirmation was interrupted. Retry the same edit to confirm it safely.";c(de),k(de,"error");return}if(ne&&fe){const xe=Ve.find(de=>de.id===A.id)||Ce.find(de=>de.id===A.id);s(de=>_n(de,xe,A.id,be)),i(de=>_n(de,xe,A.id,be));const Ie="Task was not saved because durable status capture is required for this combined metadata update.";c(Ie),k(Ie,"error");return}try{const xe={..._e,status:G,completedAt:be.completedAt,...Ee?{expectedDetailRevision:Ee}:{}};let Ie=xe,de,Be={};for(let Qe=0;de=await F(`/api/taskforce/task/${A.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(Ie)},Ie,A.id,Cf(A,A.id)),!(de.ok||(Be=await de.json().catch(()=>({})),Be.code!=="TASK_DETAIL_REVISION_CONFLICT"));Qe+=1){s(Ve),i(Ce);const Ze=typeof Be?.details?.currentDetailRevision=="string"?Be.details.currentDetailRevision:null,Pe=await ge?.(A.id,Ze);if(Qe===0&&Pe?.retryDetailRevision){Ie={...Object.fromEntries(Object.entries(xe).map(([it,De])=>[it,Pe.retryPatch&&Object.prototype.hasOwnProperty.call(Pe.retryPatch,it)?Pe.retryPatch[it]:De])),expectedDetailRevision:Pe.retryDetailRevision};continue}if(Pe?.handled){c("");return}break}if(!de.ok){Object.keys(Be).length===0&&(Be=await de.json().catch(()=>({})));const Qe=Be.error||"Failed to update task status.";c(Qe),k(Qe,"error"),s(Ve),i(Ce);return}const at=await de.json().catch(()=>null);at?(y(at),je?.(at)):await p(!0),D(),c("")}catch(xe){console.error("Failed to update task status.",xe),c("Failed to update task status."),k("Failed to update task status.","error"),s(Ve),i(Ce)}},[t,ne,n,r,J,L,p,F,H,y,j,je,ge,k,D,i,c,s,e]),Te=o.useCallback(async(A,G)=>{const _e=G,Ne=_e.saveSource,Ee=typeof _e.expectedDetailRevision=="string"?_e.expectedDetailRevision:A===r?n:null;if(G=Object.fromEntries(Object.entries(G).filter(([Ze])=>Ze!=="saveSource"&&Ze!=="expectedDetailRevision")),Object.keys(G).length===0)return!0;const fe=qe.current.get(A),nt=e.find(Ze=>Ze.id===A)||t.find(Ze=>Ze.id===A),q=Date.parse(String(fe?.updatedAt||"")),be=Date.parse(String(nt?.updatedAt||"")),Ve=fe&&(!nt||Number.isFinite(q)&&(!Number.isFinite(be)||q>=be))?fe:nt;if(nt&&Ve===nt&&fe&&qe.current.delete(A),Ve&&(G=Object.fromEntries(Object.entries(G).filter(([Ze,Pe])=>!Pj(Ve[Ze],Pe))),Object.keys(G).length===0))return!0;if(G.status){const Ze=e.find(Pe=>Pe.id===A)||t.find(Pe=>Pe.id===A);if(Ze){await ae(Ze,G.status,G,Ee);return}if(L){const Pe="Task status was not saved because the current task could not be resolved safely.";c(Pe),k(Pe,"error");return}}const Ce=e,xe=t;s(Ze=>Ze.map(Pe=>Pe.id===A?{...Pe,...G}:Pe)),i(Ze=>Ze.map(Pe=>Pe.id===A?{...Pe,...G}:Pe));const Ie=Object.fromEntries(Object.entries(G).filter(([Ze])=>Fg.has(Ze)));let de=Object.fromEntries(Object.entries(G).filter(([Ze])=>!Fg.has(Ze)));const Be=Object.keys(Ie).length>0;let at=Object.keys(de).length>0,Qe=!1;if(Be&&$)try{const Ze={...Ne?{saveSource:Ne}:{},...Ee?{expectedDetailRevision:Ee}:{}};let Pe=Object.keys(Ze).length>0?await $(A,Ie,Ze):await $(A,Ie);if(Pe&&Pe.state!=="disabled"){if((Pe.state==="rejected"||Pe.state==="failed")&&Pe.errorCode==="TASK_DETAIL_REVISION_CONFLICT"){const gt=Ce.find(De=>De.id===A)||xe.find(De=>De.id===A);s(De=>_n(De,gt,A,G)),i(De=>_n(De,gt,A,G));const it=await ge?.(A,null);if(it?.retryDetailRevision){const De=it.retryPatch,bt=Object.fromEntries(Object.entries(Ie).map(([Et,mt])=>[Et,De&&Object.prototype.hasOwnProperty.call(De,Et)?De[Et]:mt]));if(Pe=await $(A,bt,{...Ne?{saveSource:Ne}:{},expectedDetailRevision:it.retryDetailRevision}),Pe&&(Pe.state==="rejected"||Pe.state==="failed")&&Pe.errorCode==="TASK_DETAIL_REVISION_CONFLICT"&&(await ge?.(A,null))?.handled)return c(""),!1}else if(it?.handled)return c(""),!1}if(!Pe||Pe.state==="disabled"){const gt=Ce.find(De=>De.id===A)||xe.find(De=>De.id===A);s(De=>_n(De,gt,A,G)),i(De=>_n(De,gt,A,G));const it="Task was not saved because durable metadata capture became unavailable during retry.";return c(it),k(it,"error"),!1}if(Pe.state==="rejected"||Pe.state==="failed"){const gt=Ce.find(De=>De.id===A)||xe.find(De=>De.id===A);s(De=>_n(De,gt,A,G)),i(De=>_n(De,gt,A,G));const it=Pe.state==="failed"?"Task was not saved because durable local preparation failed. Retry the edit.":Pe.retryable?"Task was not saved because durable capture is busy. Retry the edit shortly.":`Task was not saved because durable capture rejected it${Pe.errorCode?` (${Pe.errorCode})`:""}.`;return c(it),k(it,"error"),!1}if(Qe=!0,"task"in Pe&&Pe.task&&(y(Pe.task),je?.(Pe.task)),Pe.state==="accepted")c("");else if(Pe.state==="pending")c(""),Pe.pendingReason!=="queued"&&k(Pe.pendingReason==="auth"?"Task saved locally. Sign in to finish cloud sync.":Pe.pendingReason==="sync-disabled"?"Task saved locally. Turn on sync to send it to cloud.":"Task saved locally. Cloud sync will retry automatically.","info");else{const gt=Pe.state==="blocked"?`Task saved locally, but cloud sync is blocked${Pe.errorCode?` (${Pe.errorCode})`:""}.`:"Task save confirmation was interrupted. Retry the same edit to confirm it safely.";c(gt),k(gt,"error")}if(Pe.state==="ambiguous"){if(at){const gt=Ce.find(it=>it.id===A)||xe.find(it=>it.id===A);s(it=>_n(it,gt,A,de)),i(it=>_n(it,gt,A,de))}return!1}if(!at)return!0}else if(ne){const gt=Ce.find(De=>De.id===A)||xe.find(De=>De.id===A);s(De=>_n(De,gt,A,G)),i(De=>_n(De,gt,A,G));const it="Task was not saved because durable metadata capture was unavailable.";return c(it),k(it,"error"),!1}}catch(Ze){if(console.error("Durable task metadata update failed before a conclusive result.",Ze),at){const gt=Ce.find(it=>it.id===A)||xe.find(it=>it.id===A);s(it=>_n(it,gt,A,de)),i(it=>_n(it,gt,A,de))}const Pe="Task save confirmation was interrupted. Retry the same edit to confirm it safely.";return c(Pe),k(Pe,"error"),!1}else if(Be&&ne){const Ze=Ce.find(gt=>gt.id===A)||xe.find(gt=>gt.id===A);s(gt=>_n(gt,Ze,A,G)),i(gt=>_n(gt,Ze,A,G));const Pe="Task was not saved because durable metadata capture was unavailable.";return c(Pe),k(Pe,"error"),!1}if(Be&&!Qe&&(de={...Ie,...de},at=!0),!at)return!0;try{const Ze={...de,...Ne?{saveSource:Ne}:{},...Ee?{expectedDetailRevision:Ee}:{}},Pe={method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(Ze)};let gt=Ze;for(let it=0;it<2;it+=1){const De=it===0?Pe:{...Pe,body:JSON.stringify(gt)},bt=await F(`/api/taskforce/task/${A}`,De,gt,A,Cf(Ce.find(et=>et.id===A)||xe.find(et=>et.id===A),A));if(bt.ok){const et=await bt.json().catch(()=>null);return y(et),et&&typeof et=="object"&&typeof et.id=="string"&&je?.(et),D(G.attachments!==void 0?150:0),c(""),!0}const Et=await bt.json().catch(()=>({})),mt=Ce.find(et=>et.id===A)||xe.find(et=>et.id===A);if(s(et=>_n(et,mt,A,de)),i(et=>_n(et,mt,A,de)),Et.code==="TASK_DETAIL_REVISION_CONFLICT"){const et=typeof Et?.details?.currentDetailRevision=="string"?Et.details.currentDetailRevision:null,Y=await ge?.(A,et);if(it===0&&Y?.retryDetailRevision){const le=Y.retryPatch;gt={...Object.fromEntries(Object.entries(Ze).map(([It,vt])=>[It,le&&Object.prototype.hasOwnProperty.call(le,It)?le[It]:vt])),expectedDetailRevision:Y.retryDetailRevision};continue}if(Y?.handled)return c(""),!1}const qt=Et.error||`Failed to update task ${A}.`;return c(qt),k(qt,"error"),!1}return!1}catch(Ze){console.error("Failed to update task",Ze);const Pe=`Failed to update task ${A}.`;c(Pe),k(Pe,"error");const gt=Ce.find(it=>it.id===A)||xe.find(it=>it.id===A);return s(it=>_n(it,gt,A,de)),i(it=>_n(it,gt,A,de)),!1}},[e,t,n,r,k,y,$,je,ge,D,ae,ne,L,F]),Le=async A=>{const G=A.status==="done"?"task":"done";await ae(A,G)},Ue=async A=>{const G=A.status==="cancelled"?"task":"cancelled";await ae(A,G)},ft=async A=>{const G=A.status==="in-progress"?"task":"in-progress";await ae(A,G)},He=async A=>{const G=A.status==="review"?"task":"review";await ae(A,G)},Fe=async A=>{if(x)try{const G=await x(A.id,{mutationKind:"archive",cancellation:A.status==="cancelled",reason:A.status==="cancelled"?A.canceledReason??null:null});if(G&&H(G,A.id,{},e,t)){const _e=G.state!=="rejected"&&G.state!=="failed"&&G.state!=="ambiguous";return r===A.id&&_e&&(d(),f("tasks")),_e}if(!G&&L)throw new Error("Durable task archive activation returned no result.")}catch(G){console.error("Durable task archive failed before a conclusive result.",G);const _e="Task archive confirmation was interrupted. Retry the same action to confirm it safely.";return c(_e),k(_e,"error"),!1}try{const _e=A.status==="cancelled"?"cancel":"complete",Ne=`/api/taskforce/task/${A.id}/${_e}`,Ee=await re(Ne,{method:"POST"},{},Cf(A,A.id),fe=>!!fe&&typeof fe=="object"&&String(fe.id||"")===A.id);if(Ee.ok){const fe=await Ee.json().catch(()=>null),nt=[];if(fe&&typeof fe=="object"&&nt.push(fe),nt.length>0){for(const be of nt)y(be);D()}else g();const q=new Set(nt.map(be=>String(be?.id||"").trim()).filter(be=>be.length>0));return r&&q.has(r)&&(d(),f("tasks")),!0}else{const nt=(await Ee.json().catch(()=>({}))).error||"Failed to archive task.";return c(nt),k(nt,"error"),!1}}catch(G){return console.error("Failed to archive",G),c("Failed to archive task."),k("Failed to archive task.","error"),!1}},me=async()=>{const A=e.filter(G=>G.status==="done"||G.status==="cancelled");if(A.length!==0&&confirm(`Archive ${A.length} completed/cancelled tasks?`)){if(x){let G=!1,_e=0;for(const Ne of A)try{const Ee=await x(Ne.id,{mutationKind:"archive",cancellation:Ne.status==="cancelled",reason:Ne.status==="cancelled"?Ne.canceledReason??null:null});if(!Ee||Ee.state==="disabled"){if(!G&&(!L||Ee?.state==="disabled"))break;const fe="Bulk archive stopped safely because durable capture became unavailable.";c(fe),k(fe,"error");return}if(G=!0,H(Ee,Ne.id,{},e,t)){if(Ee.state==="rejected"||Ee.state==="failed")return;_e+=1}}catch(Ee){console.error("Durable bulk archive confirmation was interrupted.",Ee);const fe="Bulk archive stopped safely. Retry to confirm the remaining tasks.";c(fe),k(fe,"error");return}if(G){k(`${_e} tasks archived`,"info"),c("");return}}try{const G=await fetch("/api/taskforce/bulk-archive",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:A.map(_e=>_e.id)})});if(G.ok){const _e=await G.json(),Ne=Array.isArray(_e?.results?.archived)?_e.results.archived:[];if(Ne.length>0){for(const Ee of Ne)y(Ee);D()}else s(Ee=>Ee.filter(fe=>!["done","cancelled"].includes(fe.status))),g();k(`${_e.archived||A.length} tasks archived`,"info"),c("")}else{const Ne=(await G.json().catch(()=>({}))).error||"Failed to bulk archive tasks.";c(Ne),k(Ne,"error")}}catch(G){console.error("Failed to bulk archive",G),c("Failed to bulk archive tasks."),k("Failed to bulk archive tasks.","error")}}},ve=async A=>{if(x)try{const G=await x(A,{mutationKind:"unarchive"});if(G&&H(G,A,{},e,t)){G.state!=="rejected"&&G.state!=="failed"&&k("Task restored from archive.","info");return}if(!G&&L)throw new Error("Durable task unarchive activation returned no result.")}catch(G){console.error("Durable task unarchive failed before a conclusive result.",G);const _e="Task restore confirmation was interrupted. Retry the same action to confirm it safely.";c(_e),k(_e,"error");return}try{const G=`/api/taskforce/task/${A}/unarchive`,_e=t.find(Ee=>Ee.id===A)||e.find(Ee=>Ee.id===A),Ne=await re(G,{method:"POST"},{},Cf(_e,A),Ee=>!!Ee&&typeof Ee=="object"&&String(Ee.id||"")===A);if(Ne.ok){const Ee=await Ne.json().catch(()=>null);Ee?(y(Ee),D()):(i(fe=>fe.filter(nt=>nt.id!==A)),await p(!0),D()),c(""),k("Task restored from archive.","info")}}catch(G){console.error("Failed to unarchive",G),c("Failed to unarchive task."),k("Failed to unarchive task.","error")}},ot=o.useCallback(async(A,G="previous",_e)=>{const Ne=Array.from(new Map(A.map(be=>[be.id,be])).values()),Ee={requested:Ne.length,completed:0,succeeded:[],failed:[]},fe=()=>_e?.({...Ee,succeeded:[...Ee.succeeded],failed:[...Ee.failed]}),nt=(be,Ve,Ce)=>{Ee.failed.push({deletedRecordId:be.id,taskId:be.taskId,title:be.taskSnapshot.title,message:Ve,...Ce?{code:Ce}:{}}),Ee.completed+=1,fe()},q=(be,Ve)=>{y(Ve),l(Ce=>Ce.filter(xe=>xe.id!==be.id&&xe.taskId!==Ve.id)),N.current.delete(be.id),N.current.delete(be.taskId),I.current.delete(be.id),I.current.delete(be.taskId),Ee.succeeded.push(be),Ee.completed+=1,fe()};if(ie)for(const be of Ne){const Ve=await ke(be.id,be.taskId,{silent:!0,restoreDestination:G});Ve?q(be,Ve):nt(be,"Failed to capture or confirm the durable restore.")}else{for(let be=0;be<Ne.length;be+=50){const Ve=Ne.slice(be,be+50),Ce=Ve.map(Ie=>Ie.id),xe=G==="archive"?{ids:Ce,restoreDestination:G}:{ids:Ce};try{let Ie,de=null;J?(Ae.current||(Ae.current=oe||Ov()),de=await Ae.current.prepareUpdate(ue,"/api/taskforce/deleted/restore-batch",xe,G==="archive"?{deletedRecordIds:Ce,restoreDestination:G}:{deletedRecordIds:Ce}),Ie=await Lv("/api/taskforce/deleted/restore-batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(xe)},de.operationId)):Ie=await z("/restore-batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(xe)});const Be=await Ie.json().catch(()=>({}));if(de&&(Ie.ok||await $h(Ie))&&await Ae.current?.confirmUpdate(de.fingerprint,de.operationId),!Ie.ok){const Ze=String(Be.error||"Failed to restore the selected Trash records.");Ve.forEach(Pe=>nt(Pe,Ze));continue}const at=new Map(Ve.map(Ze=>[Ze.id,Ze])),Qe=new Set;for(const Ze of Be.results||[]){const Pe=String(Ze.deletedRecordId||"").trim(),gt=at.get(Pe);if(!gt||!Ze.task)continue;const it=to(Ze.task);it.id===gt.taskId&&(Qe.add(Pe),q(gt,it))}for(const Ze of Be.errors||[]){const Pe=String(Ze.id||"").trim(),gt=at.get(Pe);!gt||Qe.has(Pe)||(Qe.add(Pe),nt(gt,String(Ze.message||"Failed to restore the deleted task."),Ze.code?String(Ze.code):void 0))}for(const Ze of Ve)Qe.has(Ze.id)||nt(Ze,"The restore response did not include this deleted record.")}catch(Ie){const de=Ie instanceof Error?Ie.message:"The restore request was interrupted.";Ve.forEach(Be=>nt(Be,de))}}D()}if(Ee.failed.length>0){const be=`${Ee.succeeded.length} restored; ${Ee.failed.length} failed and remain selected.`;c(be),k(be,"error")}else Ee.succeeded.length>0&&(c(""),k(G==="archive"?`${Ee.succeeded.length} task${Ee.succeeded.length===1?"":"s"} restored to Archive.`:`${Ee.succeeded.length} task${Ee.succeeded.length===1?"":"s"} restored from Trash.`,"info"));return Ee},[ie,J,ke,y,k,D,z,l,c,oe,N,I,ue]);return{copiedId:Ye,handleDelete:we,handleUpdateTask:Te,handleSetStatus:ae,handleToggleComplete:Le,handleToggleCancel:Ue,handleToggleInProgress:ft,handleToggleReview:He,handleArchiveTask:Fe,handleBulkArchive:me,handleUnarchive:ve,handleRestoreDeletedTask:ke,handleRestoreSelectedDeletedTasks:ot,handlePermanentlyDeleteDeletedTask:ee,handleEmptyDeletedTasks:Z,handleCopyId:(A,G)=>{A.stopPropagation(),navigator.clipboard.writeText(G),he(G),ce.current!==null&&window.clearTimeout(ce.current),ce.current=window.setTimeout(()=>{ce.current=null,he(null)},2e3)},queueWorkspaceSyncFromAuthoritativeTaskState:D}}const Nj=Ej;function Ug(e){return e==="/api/taskforce/auth/runtime-config"||e==="/api/taskforce/sync/workspace/apply-local"||e==="/api/taskforce/sync/workspace/repair-startup"}function jj(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 Dj({currentWorkspaceIdRef:e,resolveApiUrl:t,runtimeMode:r}){o.useEffect(()=>{if(typeof window>"u"||typeof window.fetch!="function")return;const n=window.fetch.bind(window),s=i=>{if(typeof i=="string")return r!=="cloud"?i:i.startsWith("/api/taskforce")&&!Ug(i)?t(i):i;if(i instanceof URL)return r!=="cloud"?i:i.origin===window.location.origin&&i.pathname.startsWith("/api/taskforce")?Ug(i.pathname)?i:new URL(t(`${i.pathname}${i.search}${i.hash}`)):i;if(typeof Request<"u"&&i instanceof Request){if(r!=="cloud")return i;const l=new URL(i.url,window.location.origin);if(l.origin===window.location.origin&&l.pathname.startsWith("/api/taskforce"))return Ug(l.pathname)?i:t(`${l.pathname}${l.search}${l.hash}`)}return i};return window.fetch=((i,l)=>{const c=s(i),d=jj(c);if(!!!(d&&d.pathname.startsWith("/api/taskforce")&&!Ug(d.pathname)))return n(c,l);const p=String(e.current||"").trim();if(typeof Request<"u"&&c instanceof Request){const h=new Headers(c.headers);l?.headers&&new Headers(l.headers).forEach((w,S)=>h.set(S,w)),p&&p!=="default"&&!h.has("x-taskforce-workspace-id")&&(h.set("x-taskforce-workspace-id",p),h.set("x-taskforce-workspace-authoritative","1"));const y=new Request(c,{...l,headers:h});return n(y)}const g=new Headers(l?.headers);return p&&p!=="default"&&!g.has("x-taskforce-workspace-id")&&(g.set("x-taskforce-workspace-id",p),g.set("x-taskforce-workspace-authoritative","1")),n(c,{...l,headers:g})}),()=>{window.fetch=n}},[e,t,r])}const Wf=12e3,Mj=3e4,Lj=2e4;function zg(e){return e==="cloud"?Mj:Wf}function WS(){return typeof performance<"u"?performance.now():Date.now()}function Oj({runtimeConfigReady:e,shouldProbeCloudAuth:t,authSessionResolved:r,resolveCloudAuthUrl:n,authOnlyCloudMode:s,authRequiredError:i,runtimeMode:l,workspaceSelectionScope:c,markBootstrapPhase:d,markBootstrapStalled:f,setRuntimeMode:p,setAuthRequiredForApi:g,setIsAuthenticated:h,setAuthUserId:y,setAuthWorkspaceId:k,setAuthUserEmail:w,setAuthUserDisplayName:S,setAuthUserAvatarUrl:b,setUserGlobalSyncStatus:v,setUserGlobalSyncError:T,setHasBetaAccess:R,setAvailableWorkspaces:P,setHydratedWorkspaceRole:N,setAssigneeOptions:I,setAuthBlocked:$,setAuthSessionResolved:j,setError:x,applyResolvedWorkspaceId:V,readPersistedWorkspaceId:U,authSessionRequestRef:ne,authSessionEpochRef:L,authSessionLastCheckedAtRef:ie,authSessionLastResultRef:J,isLoopbackHost:ue,setAuthStateReadyRefs:oe}){const ge=o.useCallback(async qe=>{const Ye=qe?.force===!0;if(d("auth"),!e)return J.current;if(!t)return p("local"),g(!1),h(!1),y("anonymous"),k(""),Nf(null),w(""),S(""),b(""),v("disconnected"),T(null),R(!0),P([]),N(null),I(xl()),$(!1),j(!0),oe(!1,!0,!1),J.current=!1,ie.current=Date.now(),!1;const he=n("/api/taskforce/auth/session"),ce=Date.now();if(!Ye&&ne.current)return ne.current;if(!Ye&&r&&ce-ie.current<1500)return J.current;const B=++L.current;let K=null;return K=(async()=>{const Ae=WS(),re=new AbortController,F=typeof window<"u"?window.setTimeout(()=>re.abort(),Lj):null,D=()=>L.current!==B,z=(we,ke)=>{_r(we,{durationMs:Math.max(0,Math.round(WS()-Ae)),force:Ye,sessionUrl:he,...ke})};try{const we=await fetch(he,{method:"GET",credentials:"include",mode:"cors",signal:re.signal});if(D())return J.current;if(we.status===429)return j(!0),oe(J.current,!0,!1),z("auth_session_rate_limited",{status:we.status}),J.current;if(!we.ok)return D()?J.current:(ue&&Nf(null),j(!0),oe(!1,!0,!1),J.current=!1,z("auth_session_request_failed",{status:we.status}),!1);const ke=await we.json();if(D())return J.current;const ee=!!ke.authRequiredForApi,Z=!!ke.authenticated,H=Z?ke.betaAccess!==!1:!0,ae=typeof ke.workspaceId=="string"&&ke.workspaceId.trim().length>0?ke.workspaceId.trim():"",Te=typeof ke.userId=="string"&&ke.userId.trim().length>0?ke.userId.trim():"anonymous",Le=typeof ke.email=="string"&&ke.email.trim().length>0?ke.email.trim().toLowerCase():"",Ue=typeof ke.displayName=="string"?ke.displayName.trim():"",ft=typeof ke.avatarUrl=="string"?ke.avatarUrl.trim():"",He=l==="local",Fe=l==="local"||s,me=s||He?!1:ee;return g(me),h(Z),y(Z?Te:"anonymous"),k(Z?ae:""),ue&&Nf(Z?Te:null),w(Z?Le:""),S(Z?Ue:""),b(Z?ft:""),Z&&x(ve=>ve===i?"":ve),v(Z?"idle":"disconnected"),T(null),R(H),Fe||V(ae||U(c)||"default",{preserveNonDefaultDefault:!0}),$(s||He?!1:ee&&!Z),j(!0),oe(Z,!0,me),J.current=Z,Z&&d("ready"),z("auth_session_resolved",{status:we.status,authenticated:Z,workspaceId:Z?ae:"",userId:Z?Te:"anonymous",authRequiredForApi:me}),Z}catch(we){return D()||(ue&&Nf(null),j(!0),oe(!1,!0,!1),J.current=!1,f("Unable to verify your session."),z("auth_session_exception",{error:we instanceof Error?we.message:String(we)})),J.current}finally{F!==null&&typeof window<"u"&&window.clearTimeout(F),D()||(ie.current=Date.now()),K&&ne.current===K&&(ne.current=null)}})(),ne.current=K,K},[e,t,r,n,s,i,l,c,d,f,p,g,h,y,k,w,S,b,v,T,R,P,N,I,$,j,x,V,U,ne,L,ie,J,ue,oe]),je=l==="local"&&ue&&t?Cw():"";return o.useEffect(()=>{je&&(h(!0),j(!0),y(je),oe(!0,!0,!1),J.current=!0)},[je,j,oe,y,h,J]),o.useEffect(()=>{if(l!=="local"||!t||typeof window>"u")return;const qe=()=>{ge()},Ye=()=>{document.visibilityState==="visible"&&qe()};window.addEventListener("focus",qe),window.addEventListener("online",qe),document.addEventListener("visibilitychange",Ye);const he=window.setInterval(qe,3e4);return()=>{window.removeEventListener("focus",qe),window.removeEventListener("online",qe),document.removeEventListener("visibilitychange",Ye),window.clearInterval(he)}},[l,t,ge]),{checkAuthSession:ge}}function Bj(e){const t=e.runtimeMode==="cloud",r=!!(e.shouldGateProtectedApiCalls&&t&&!e.authSessionResolved),n=!!(e.shouldGateProtectedApiCalls&&t&&e.authSessionResolved&&e.authRequiredForApi&&!e.isAuthenticated);return{shouldDeferProtectedApiCalls:r,shouldBlockProtectedApiCalls:n,canCallProtectedApi:!(r||n)}}function Wj(e){return!!(!e.isOpen||!e.canCallProtectedApi||e.authBlocked||e.authRequiredForApi&&!e.isAuthenticated)}function $j(e){return!!(e.shouldGateProtectedApiCalls&&!e.authSessionResolved||e.authRequiredForApi&&!e.isAuthenticated)}function Dn(){return typeof performance<"u"?performance.now():Date.now()}function Fj(e){const{shouldDeferProtectedApiCalls:t,shouldBlockProtectedApiCalls:r,getWorkspaceRequestState:n,isWorkspaceRequestStale:s,isWorkspaceEpochStale:i,isAbortError:l,isBootstrapTimeoutError:c,fetchWithTimeout:d,handleUnauthorized:f,applyBootstrapConfig:p,loadPersistedUiState:g,fetchBuildInfo:h,markBootstrapPhase:y,markBootstrapStalled:k,fetchInitiativeTemplates:w,setReferenceDataLoaded:S,setCustomCategories:b,setCustomTypes:v,setPriorities:T,setTaxonomies:R,setTaxonomyDisplayLabels:P,setConfigLoaded:N,hasLoadedUiStateRef:I,currentWorkspaceIdRef:$,referenceDataRequestRef:j,referenceDataAbortRef:x,bootstrapConfigAbortRef:V,workspaceListAbortRef:U,assigneeOptionsAbortRef:ne,workspaceListHydratedRef:L,setAvailableWorkspaces:ie,runtimeMode:J,applyResolvedWorkspaceId:ue,workspaceSwitchingEnabled:oe,authSessionResolved:ge,isAuthenticated:je,authUserId:qe,authUserAvatarUrl:Ye,setHydratedWorkspaceRole:he,setAssigneeOptions:ce,setAssigneeOptionsLoaded:B,commitCurrentWorkspaceId:K,currentWorkspaceId:Ae,workspaceSelectionScope:re,abortWorkspaceScopedRequests:F,setWorkspaceBootstrapPending:D,checkAuthSession:z,lastConfigRefreshKeyRef:we,lastAssigneeOptionsLoadKeyRef:ke,lastWorkspaceSyncStateLoadKeyRef:ee,lastTaskSurfaceLoadKeyRef:Z,lastSettingsSurfaceLoadKeyRef:H,isOpen:ae,activeTab:Te,showArchive:Le,taskScope:Ue,settingsSection:ft,workspaceBootstrapPending:He,fetchTasks:Fe,fetchPlanningEntities:me,refreshTaskCollections:ve,loadWorkspaceSyncState:ot,switchLocalCoordinatorWorkspace:Oe,hasBootstrappedDataRef:A}=e,G=o.useCallback(async Ce=>{const xe=Ce?.ignoreAuthGuard===!0,Ie=Ce?.force===!0;if(!xe&&(t||r)){_r("bootstrap_reference_data_skipped",{reason:r?"auth_blocked":"auth_deferred",runtimeMode:J,workspaceId:String(n().workspaceId||"").trim()||"default",force:Ie});return}const de=n(),Be=String(de.workspaceId||"").trim()||"default";if(!(J!=="cloud"||!ge||!je||Be!==""&&Be!=="default")){_r("bootstrap_reference_data_skipped",{reason:"workspace_unresolved",runtimeMode:J,workspaceId:Be,force:Ie});return}if(!Ie&&j.current?.workspaceId===de.workspaceId){_r("bootstrap_reference_data_reused",{workspaceId:Be,force:Ie}),await j.current.promise;return}S(!1);const Qe=Dn(),Ze=new AbortController;x.current=Ze;const Pe=(async()=>{await Promise.allSettled([(async()=>{let gt="empty-taxonomy-state";const it=await fetch("/api/taskforce/taxonomy-state",{signal:Ze.signal});if(!it.ok)return;const De=await it.json().catch(()=>({}));if(pI(De))gt="taxonomy-state";else{gt="fallback-endpoints";const[Et,mt,qt,et]=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})]),[Y,le,Ke,It]=await Promise.all([Et.ok?Et.json().catch(()=>({})):Promise.resolve({}),mt.ok?mt.json().catch(()=>({})):Promise.resolve({}),qt.ok?qt.json().catch(()=>({})):Promise.resolve({}),et.ok?et.json().catch(()=>({})):Promise.resolve({})]);De.categories=Y.categories,De.types=le.types,De.priorities=Ke.priorities,De.taxonomies=It.taxonomies}const bt=CP(De);if(s(de)){_r("bootstrap_reference_data_stale_drop",{workspaceId:Be,source:gt});return}bt.categories.length>0&&b(bt.categories),bt.types.length>0&&v(bt.types),bt.priorities.length>0&&T(bt.priorities),R(bt.taxonomies),P(bt.displayLabels||{}),_r("bootstrap_reference_data_source",{workspaceId:Be,source:gt,categories:bt.categories.length,types:bt.types.length,priorities:bt.priorities.length,taxonomies:bt.taxonomies.length})})(),w()]),!s(de)&&(S(!0),_r("bootstrap_reference_data_loaded",{durationMs:Math.max(0,Math.round(Dn()-Qe)),workspaceId:Be,force:Ie}))})();j.current={workspaceId:de.workspaceId,promise:Pe};try{await Pe}finally{j.current?.promise===Pe&&(j.current=null),x.current===Ze&&(x.current=null)}},[ge,w,n,je,s,x,j,J,b,v,T,S,R,P,r,t]),_e=o.useCallback(async Ce=>{if(!(Ce?.ignoreAuthGuard===!0)&&(t||r))return;y("config");const Ie=n(),de=Dn(),Be=new AbortController;V.current=Be;try{const at=await d("/api/taskforce/config",void 0,zg(J),{signal:Be.signal});if(i(Ie))return;if(at.status===401){f(),N(!0);return}let Qe="";if(at.ok){const Ze=await at.json();if(i(Ie))return;Qe=typeof Ze?.workspaceId=="string"&&Ze.workspaceId.trim().length>0?Ze.workspaceId.trim():"",p(Ze)}if(i(Ie)){const Ze=String($.current||"default").trim()||"default";if(!Qe||Ze!==Qe)return}if(I.current||(I.current=!0,await g(Qe||Ie.workspaceId)),i(Ie)){const Ze=String($.current||"default").trim()||"default";if(!Qe||Ze!==Qe)return}N(!0),y("ready"),_r("bootstrap_config_loaded",{durationMs:Math.max(0,Math.round(Dn()-de)),status:at.status,workspaceId:Qe||Ie.workspaceId}),h()}catch(at){if(l(at)||i(Ie))return;I.current||(I.current=!0,await g(Ie.workspaceId)),k(c(at)?"Startup checks timed out.":"Unable to finish startup checks."),N(!0),_r("bootstrap_config_failed",{durationMs:Math.max(0,Math.round(Dn()-de)),workspaceId:Ie.workspaceId,error:at instanceof Error?at.message:String(at)})}finally{V.current===Be&&(V.current=null)}},[p,V,$,h,d,n,f,I,l,c,i,g,y,k,J,N,r,t]),Ne=o.useCallback(async Ce=>{await _e(Ce),await G(Ce)},[_e,G]),Ee=o.useCallback(async()=>{if(!oe)return ie([]),L.current=!1,{success:!0,workspaces:[]};const Ce=n(),xe=Dn(),Ie=new AbortController;U.current=Ie;try{const de=await d("/api/taskforce/workspaces",{method:"GET",credentials:"include"},zg(J),{signal:Ie.signal});if(i(Ce))return{success:!1,error:"Workspace changed while loading workspaces."};if(de.status===401)return ie([]),L.current=!1,{success:!1,error:"Authentication required."};const Be=await de.json().catch(()=>({}));if(i(Ce))return{success:!1,error:"Workspace changed while loading workspaces."};if(!de.ok||Be?.success===!1)return ie([]),L.current=!1,{success:!1,error:Be?.error||`Failed to load workspaces (${de.status})`};const at=Array.isArray(Be?.workspaces)?Be.workspaces.map(Qe=>({id:String(Qe?.id||"").trim(),name:String(Qe?.name||"").trim(),role:String(Qe?.role||"member").trim().toLowerCase(),slug:typeof Qe?.slug=="string"?Qe.slug:null,description:typeof Qe?.description=="string"?Qe.description:null,status:typeof Qe?.status=="string"?Qe.status:"",betaAccess:Qe?.betaAccess===!0})).filter(Qe=>Qe.id&&Qe.name):[];return ie(at),L.current=!0,J!=="local"&&typeof Be?.currentWorkspaceId=="string"&&Be.currentWorkspaceId.trim().length>0&&ue(Be.currentWorkspaceId.trim(),{preserveNonDefaultDefault:!0}),_r("bootstrap_workspaces_loaded",{durationMs:Math.max(0,Math.round(Dn()-xe)),workspaceId:Ce.workspaceId,count:at.length,status:de.status}),{success:!0,workspaces:at}}catch(de){return c(de)&&k("Startup checks timed out."),ie([]),L.current=!1,_r("bootstrap_workspaces_failed",{durationMs:Math.max(0,Math.round(Dn()-xe)),workspaceId:Ce.workspaceId,error:de instanceof Error?de.message:String(de)}),{success:!1,error:l(de)?"Workspace list request aborted.":"Failed to load workspaces."}}finally{U.current===Ie&&(U.current=null)}},[ue,d,n,l,c,i,k,J,ie,U,L,oe]),fe=o.useCallback(async()=>{const Ce=n(),xe=Dn(),Ie=new AbortController;ne.current=Ie,B(!1);try{const[de,Be]=await Promise.all([d("/api/taskforce/workspace/assignee-options",{method:"GET",credentials:"include"},zg(J),{signal:Ie.signal}),ge&&je?d("/api/taskforce/auth/workspace-members",{method:"GET",credentials:"include"},zg(J),{signal:Ie.signal}).catch(()=>null):Promise.resolve(null)]);if(s(Ce))return{success:!1,error:"Workspace changed while loading assignee options."};if(de.status===401)return ce(xl()),B(!0),{success:!1,error:"Authentication required."};const at=await de.json().catch(()=>({}));if(s(Ce))return{success:!1,error:"Workspace changed while loading assignee options."};if(!de.ok)return ce(xl()),B(!0),{success:!1,error:at?.error||`Failed to load assignee options (${de.status})`};const Qe=String(qe||"").trim(),Ze=String(Ye||"").trim(),Pe=(mt,qt)=>{const et=typeof mt?.avatarUrl=="string"&&mt.avatarUrl.trim().length>0?mt.avatarUrl.trim():"";if(et)return et;const Y=String(mt?.userId||qt||"").trim();return Qe&&Y===Qe&&Ze?Ze:null},gt=Array.isArray(at?.assignees)?at.assignees:[],it=gt.map(mt=>{const qt=String(mt?.value||"").trim(),et=String(mt?.kind||"").trim().toLowerCase();return qt?et==="agent"||et==="ai"?{value:qt,label:String(mt?.label||qt).trim()||qt,icon:String(mt?.icon||"Bot"),color:String(mt?.color||"#8b5cf6"),kind:"agent",avatarUrl:typeof mt?.avatarUrl=="string"&&mt.avatarUrl.trim().length>0?mt.avatarUrl.trim():null,avatarRevision:Number.isFinite(Number(mt?.avatarRevision))?Math.max(0,Math.floor(Number(mt.avatarRevision))):null,avatarUpdatedAt:typeof mt?.avatarUpdatedAt=="string"&&mt.avatarUpdatedAt.trim().length>0?mt.avatarUpdatedAt.trim():null,username:typeof mt?.username=="string"&&mt.username.trim().length>0?mt.username.trim():null,surfaceType:typeof mt?.surfaceType=="string"&&mt.surfaceType.trim().length>0?mt.surfaceType.trim():null,providerMetadata:mt?.providerMetadata&&typeof mt.providerMetadata=="object"&&!Array.isArray(mt.providerMetadata)?mt.providerMetadata:null,archivedAt:typeof mt?.archivedAt=="string"&&mt.archivedAt.trim().length>0?mt.archivedAt.trim():null,createdAt:typeof mt?.createdAt=="string"&&mt.createdAt.trim().length>0?mt.createdAt.trim():null,updatedAt:typeof mt?.updatedAt=="string"&&mt.updatedAt.trim().length>0?mt.updatedAt.trim():null}:et==="member"||et==="human"?{value:qt,label:String(mt?.label||qt).trim()||qt,icon:String(mt?.icon||"User"),color:String(mt?.color||"#22c55e"),kind:"member",avatarUrl:Pe(mt,qt)}:null:null}).filter(Boolean),De=gt.map(mt=>({userId:String(mt?.userId||"").trim(),email:String(mt?.email||"").trim().toLowerCase(),displayName:typeof mt?.displayName=="string"?mt.displayName:null,avatarUrl:Pe(mt)})).filter(mt=>mt.userId);let bt=De;if(Be?.ok){const mt=await Be.json().catch(()=>({})),qt=Array.isArray(mt?.users)?mt.users:[],et=qt.find(Ke=>String(Ke?.userId||"").trim()===Qe),Y=String(et?.role||"").trim().toLowerCase();Y==="owner"||Y==="admin"||Y==="member"||Y==="read-only"?he(Y):!oe&&qt.length===0&&he(null);const le=qt.map(Ke=>({userId:String(Ke?.userId||"").trim(),email:String(Ke?.email||"").trim().toLowerCase(),displayName:typeof Ke?.displayName=="string"?Ke.displayName:null,avatarUrl:Pe(Ke)})).filter(Ke=>Ke.userId);bt=Array.from(new Map([...De,...le].map(Ke=>[Ke.userId,Ke])).values())}else!oe&&!De.length&&he(null);const Et=lp([...it,...NR(bt).filter(mt=>mt.kind==="member")]);return s(Ce)?{success:!1,error:"Workspace changed while loading assignee options."}:(ce(Et),B(!0),_r("bootstrap_assignee_options_loaded",{durationMs:Math.max(0,Math.round(Dn()-xe)),workspaceId:Ce.workspaceId,count:Et.length}),{success:!0})}catch(de){return s(Ce)||(ce(xl()),B(!0)),_r("bootstrap_assignee_options_failed",{durationMs:Math.max(0,Math.round(Dn()-xe)),workspaceId:Ce.workspaceId,error:de instanceof Error?de.message:String(de)}),{success:!1,error:l(de)?"Assignee options request aborted.":"Failed to load assignee options."}}finally{ne.current===Ie&&(ne.current=null)}},[ne,ge,Ye,qe,d,n,l,je,s,J,ce,B,he,oe]),nt=o.useCallback(async(Ce,xe)=>{if(!oe)return{success:!1,error:"Workspace switching is unavailable in local mode.",code:"WORKSPACE_SWITCHING_DISABLED"};const Ie=String(Ce||"").trim();if(!Ie)return{success:!1,error:"workspaceId is required."};const de=String($.current||"").trim()||"default",Be=Dn();try{_r("bootstrap_workspace_switch_started",{fromWorkspaceId:de,toWorkspaceId:Ie,hydrate:xe?.hydrate!==!1});const at=J==="local"?"/api/taskforce/session/workspace?taskforceCloud=1":"/api/taskforce/session/workspace",Qe=await fetch(at,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:Ie})}),Ze=await Qe.json().catch(()=>({}));if(!Qe.ok||Ze?.success===!1)return{success:!1,error:Ze?.error||`Failed to switch workspace (${Qe.status})`,code:Ze?.code};try{de!=="default"&&await Oe(Ie)}catch(gt){return de&&de!=="default"&&(await fetch(at,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:de})}).catch(()=>null),await z({force:!0}).catch(()=>!1)),{success:!1,error:gt instanceof Error?gt.message:"The local sync coordinator rejected the workspace switch.",code:String(gt?.code||"SYNC_COORDINATOR_WORKSPACE_SWITCH_FAILED")}}K(Ie,{clearExplicitSelection:!1}),F(),D(!0),y("workspace");const Pe=await z({force:!0});return xe?.hydrate===!1?await Ee():(we.current=`${J}:${Ie}:${re}`,ke.current=`${J}:${Pe?"auth":"guest"}:${Ie}`,ee.current=Ie,ae&&Te==="tasks"&&!(Le||Ue==="archived"||Ue==="deleted")&&(Z.current=`${Ie}:${Te}:active:${Ue}`),ae&&Te==="settings"&&(H.current=`${Ie}:${Te}:${ft}`),await Promise.all([Ne(),Ee(),ve({isSilent:!1}),ot()]),me({ignoreAuthGuard:!0})),_r("bootstrap_workspace_switch_completed",{fromWorkspaceId:de,toWorkspaceId:Ie,hydrate:xe?.hydrate!==!1,durationMs:Math.max(0,Math.round(Dn()-Be))}),{success:!0}}catch(at){return _r("bootstrap_workspace_switch_failed",{fromWorkspaceId:de,toWorkspaceId:Ie,hydrate:xe?.hydrate!==!1,durationMs:Math.max(0,Math.round(Dn()-Be)),error:at instanceof Error?at.message:String(at)}),{success:!1,error:"Failed to switch workspace."}}finally{D(!1)}},[F,Te,z,K,$,Ne,me,Ee,ae,ke,we,H,Z,ee,ot,y,ve,J,ft,D,Le,Oe,Ue,re,oe]),q=o.useCallback(async Ce=>{y("workspace"),D(!0);try{if(!oe){const Pe=String(Ae||"").trim()||"default";return K(Pe),{success:!0,workspaceSetupRequired:!1,workspaceId:Pe}}const xe=String(Ce?.preferredWorkspaceId||"").trim(),Ie=vv(re),de=await Ee();if(!de.success)return{success:!1,workspaceSetupRequired:!1,error:de.error||"Failed to load workspaces after authentication."};const Be=Array.isArray(de.workspaces)?de.workspaces:[];if(Be.length===0)return K("default"),{success:!0,workspaceSetupRequired:!0};const at=new Set(Be.map(Pe=>String(Pe.id||"").trim()).filter(Boolean)),Qe=String($.current||"").trim(),Ze=(xe&&at.has(xe)?xe:"")||(Qe&&at.has(Qe)?Qe:"")||(Ie&&at.has(Ie)?Ie:"")||String(Be[0]?.id||"").trim();if(!Ze)return K("default"),{success:!0,workspaceSetupRequired:!0};if(Qe!==Ze){const Pe=await nt(Ze,{hydrate:!1});if(!Pe.success)return{success:!1,workspaceSetupRequired:!1,error:Pe.error||"Failed to set workspace after authentication.",code:Pe.code}}else K(Ze);return{success:!0,workspaceSetupRequired:!1,workspaceId:Ze}}catch{return k("Unable to resolve workspace access."),{success:!1,workspaceSetupRequired:!1,error:"Failed to resolve workspace access."}}finally{D(!1)}},[K,Ae,$,Ee,y,k,D,nt,re,oe]),be=o.useCallback(async()=>{y("auth");const Ce=Dn();_r("bootstrap_retry_started",{workspaceId:String($.current||"default").trim()||"default"});const xe=await z({force:!0});let Ie=!1;if(oe&&xe){const de=await q();if(!de.success||de.workspaceSetupRequired){await Ne({ignoreAuthGuard:!0}),_r("bootstrap_retry_completed",{workspaceId:String($.current||"default").trim()||"default",authenticated:xe,workspaceSetupRequired:de.workspaceSetupRequired===!0,success:de.success,durationMs:Math.max(0,Math.round(Dn()-Ce))});return}}D(!0);try{await Ne({ignoreAuthGuard:!0}),xe&&!Ie&&(await Promise.all([Fe(!0,{ignoreAuthGuard:!0}),G({ignoreAuthGuard:!0,force:!0})]),me({ignoreAuthGuard:!0})),_r("bootstrap_retry_completed",{workspaceId:String($.current||"default").trim()||"default",authenticated:xe,workspaceSetupRequired:Ie,success:!0,durationMs:Math.max(0,Math.round(Dn()-Ce))})}finally{D(!1)}},[z,$,Ne,me,G,Fe,y,q,D,oe]),Ve=o.useCallback(async Ce=>{const xe=Ce?.reason||"initial-load",Ie=Ce?.ignoreAuthGuard===!0,de=Ce?.tasksSilent!==!1,Be=Dn();if(y("auth"),!await z({force:!0}))return await Ne({ignoreAuthGuard:!0}),_r("cloud_bootstrap_completed",{reason:xe,durationMs:Math.max(0,Math.round(Dn()-Be)),authenticated:!1,workspaceSetupRequired:!1,success:!1}),{success:!1,authenticated:!1,workspaceSetupRequired:!1,error:"Sign in required.",code:"AUTH_REQUIRED"};if(oe){const Qe=await q();if(!Qe.success)return await Ne({ignoreAuthGuard:!0}),_r("cloud_bootstrap_completed",{reason:xe,durationMs:Math.max(0,Math.round(Dn()-Be)),authenticated:!0,workspaceSetupRequired:!1,success:!1,error:Qe.error||"Workspace resolution failed."}),{success:!1,authenticated:!0,workspaceSetupRequired:!1,error:Qe.error||"Unable to resolve workspace access.",code:Qe.code};if(Qe.workspaceSetupRequired)return await Ne({ignoreAuthGuard:!0}),_r("cloud_bootstrap_completed",{reason:xe,durationMs:Math.max(0,Math.round(Dn()-Be)),authenticated:!0,workspaceSetupRequired:!0,success:!0}),{success:!0,authenticated:!0,workspaceSetupRequired:!0}}D(!0);try{await _e({ignoreAuthGuard:Ie});const Qe=String($.current||"default").trim()||"default",Ze=Dn();return Fe(de,{ignoreAuthGuard:Ie}).then(()=>{_r("cloud_bootstrap_tasks_loaded_deferred",{reason:xe,workspaceId:Qe,durationMs:Math.max(0,Math.round(Dn()-Ze))})}).catch(Pe=>{_r("cloud_bootstrap_tasks_deferred_failed",{reason:xe,workspaceId:Qe,error:Pe instanceof Error?Pe.message:String(Pe)})}),G({ignoreAuthGuard:Ie}).then(()=>{_r("cloud_bootstrap_reference_data_loaded_deferred",{reason:xe,workspaceId:Qe,durationMs:Math.max(0,Math.round(Dn()-Ze))})}).catch(Pe=>{_r("cloud_bootstrap_reference_data_deferred_failed",{reason:xe,workspaceId:Qe,error:Pe instanceof Error?Pe.message:String(Pe)})}),me({ignoreAuthGuard:Ie}),_r("cloud_bootstrap_completed",{reason:xe,durationMs:Math.max(0,Math.round(Dn()-Be)),authenticated:!0,workspaceSetupRequired:!1,success:!0,workspaceId:Qe}),{success:!0,authenticated:!0,workspaceSetupRequired:!1}}finally{D(!1)}},[z,$,_e,me,G,Fe,y,q,D,oe]);return o.useEffect(()=>{!t&&!r&&!A.current&&(A.current=!0,(async()=>{const Ce=Dn();if(J==="cloud"&&ge&&je){const xe=await Ve({reason:"initial-load",tasksSilent:!1});if(!xe.success||xe.workspaceSetupRequired)return}else await _e(),await Promise.all([Fe(!1),G()]),me();_r("bootstrap_initial_load_completed",{durationMs:Math.max(0,Math.round(Dn()-Ce)),runtimeMode:J,workspaceId:String($.current||"default").trim()||"default"})})())},[ge,$,_e,me,G,Fe,A,je,Ve,J,r,t]),o.useEffect(()=>{if(t||r||He||re==="bootstrap"||!A.current)return;const Ce=`${J}:${Ae}:${re}`;we.current!==Ce&&(we.current=Ce,Ne())},[Ae,Ne,A,we,J,r,t,He,re]),o.useEffect(()=>{if(t||r||He)return;const Ce=Ae;ee.current!==Ce&&(ee.current=Ce,ot())},[Ae,ee,ot,r,t,He]),o.useEffect(()=>{if(J!=="cloud"||!ge||!je){J!=="cloud"&&ie([]),L.current=!1;return}He||!A.current||L.current||Ee()},[ge,Ee,A,je,J,ie,He,L]),{fetchReferenceData:G,fetchBootstrapConfig:_e,fetchConfig:Ne,fetchWorkspaces:Ee,fetchAssigneeOptions:fe,switchWorkspace:nt,resolveWorkspaceAfterAuth:q,retryBootstrapChecks:be,runCloudBootstrap:Ve}}function Uj(e){const{runtimeMode:t,workspaceUiStateScope:r,currentWorkspaceId:n,currentWorkspaceIdRef:s,referenceDataLoaded:i,activeCategories:l,activeTypes:c,priorities:d,taxonomies:f,activeWorkspaceModule:p,setActiveWorkspaceModuleState:g,groupBy:h,setGroupBy:y,emptyColumnMode:k,setEmptyColumnMode:w,taskScope:S,setTaskScope:b,openTaskId:v,setPendingOpenTaskId:T,compressedCards:R,setCompressedCards:P,zenMode:N,setZenModeState:I,searchQuery:$,setSearchQuery:j,collapsedCategories:x,setCollapsedCategories:V,filterCategories:U,setFilterCategories:ne,filterPriorities:L,setFilterPriorities:ie,filterTypes:J,setFilterTypes:ue,filterStatus:oe,setFilterStatus:ge,filterAssignees:je,setFilterAssignees:qe,filterAssigneesAllSelected:Ye,setFilterAssigneesAllSelected:he,filterTaxonomies:ce,setFilterTaxonomies:B,sortBy:K,setSortBy:Ae,sortOrder:re,setSortOrder:F,hasInitedFilters:D,setHasInitedFilters:z,lastUsedCategory:we,setLastUsedCategory:ke,taskforceAgentId:ee,setTaskforceAgentId:Z,taskforceAgentConversationId:H,setTaskforceAgentConversationId:ae,taskforceAgentConversationByAgentId:Te,setTaskforceAgentConversationByAgentId:Le}=e,Ue=o.useRef(!1),ft=o.useRef(""),He=o.useRef(!1),Fe=o.useRef(!1),me=o.useRef(null),[ve,ot]=o.useState(!1),Oe=o.useMemo(()=>i?WR({categories:l,types:c,priorities:d,taxonomies:f}):null,[l,c,d,i,f]),A=o.useCallback(fe=>{ve||(Fe.current=!0),g(fe)},[g,ve]),G=o.useCallback((fe,nt)=>{if(!fe){me.current=null,Z(""),ae(""),Le({}),T(null);return}const q=Array.isArray(fe.filterCategories)||Array.isArray(fe.filterPriorities)||Array.isArray(fe.filterTypes)||fe.filterTaxonomies&&typeof fe.filterTaxonomies=="object";q||(me.current=null);const be=Array.isArray(fe.filterCategories)||Array.isArray(fe.filterPriorities)||Array.isArray(fe.filterTypes)||Array.isArray(fe.filterStatus)||Array.isArray(fe.filterAssignees)||typeof fe.filterAssigneesAllSelected=="boolean"||fe.filterTaxonomies&&typeof fe.filterTaxonomies=="object",Ve=i,Ce=!!(fe.filterTaxonomySignature&&Oe);q&&!Ve&&(me.current={state:fe,skipActiveWorkspaceModule:nt?.skipActiveWorkspaceModule});const xe=q&&Ve&&(!Ce||$R(fe.filterTaxonomySignature,Oe)),Ie=q&&Ce&&!xe,de=!q||xe||Ie;if(nt?.skipActiveWorkspaceModule||(fe.activeWorkspaceModule?g(fe.activeWorkspaceModule):fe.groupBy==="docs"&&g("docs")),fe.groupBy&&fe.groupBy!=="docs"&&y(fe.groupBy),fe.emptyColumnMode&&w(fe.emptyColumnMode),fe.taskScope&&b(fe.taskScope),(typeof fe.openTaskId=="string"||fe.openTaskId===null)&&T(fe.openTaskId),typeof fe.compressedCards=="boolean"&&P(fe.compressedCards),typeof fe.zenMode=="boolean"&&I(fe.zenMode),typeof fe.searchQuery=="string"&&j(fe.searchQuery),fe.collapsedCategories&&typeof fe.collapsedCategories=="object"&&V(fe.collapsedCategories),xe?(ne(Array.isArray(fe.filterCategories)?fe.filterCategories:l.map(Be=>Be.value)),ie(Array.isArray(fe.filterPriorities)?fe.filterPriorities:d.map(Be=>Be.value)),ue(Array.isArray(fe.filterTypes)?fe.filterTypes:c.map(Be=>Be.value)),fe.filterTaxonomies&&typeof fe.filterTaxonomies=="object"&&B(fe.filterTaxonomies)):Ie&&(ne(l.map(Be=>Be.value)),ie(d.map(Be=>Be.value)),ue(c.map(Be=>Be.value)),B({})),Array.isArray(fe.filterStatus)&&ge(fe.filterStatus),Array.isArray(fe.filterAssignees)){const Be=fe.filterAssigneesAllSelected===!0&&!fe.filterAssignees.includes("unassigned")?["unassigned",...fe.filterAssignees]:fe.filterAssignees;qe(Be)}typeof fe.filterAssigneesAllSelected=="boolean"&&he(fe.filterAssigneesAllSelected),(fe.sortBy==="created"||fe.sortBy==="priority"||fe.sortBy==="updated"||fe.sortBy==="complexity")&&Ae(fe.sortBy),(fe.sortOrder==="asc"||fe.sortOrder==="desc")&&F(fe.sortOrder),Ie?z(!0):typeof fe.hasInitedFilters=="boolean"&&de?z(fe.hasInitedFilters):be&&de&&z(!0),typeof fe.lastCategory=="string"&&ke(fe.lastCategory),Z(typeof fe.taskforceAgentId=="string"?fe.taskforceAgentId.trim():""),ae(typeof fe.taskforceAgentConversationId=="string"?fe.taskforceAgentConversationId.trim():""),Le(fe.taskforceAgentConversationByAgentId||{})},[l,c,Oe,d,i,g,V,P,w,qe,he,ne,ie,ge,B,ue,y,z,ke,j,Ae,F,b,T,Le,ae,Z,I]);o.useEffect(()=>{if(!i||!me.current)return;const fe=me.current;me.current=null,G(fe.state,{skipActiveWorkspaceModule:fe.skipActiveWorkspaceModule})},[G,i]);const _e=o.useRef(G);o.useEffect(()=>{_e.current=G},[G]);const Ne=o.useCallback(async fe=>{const nt=String(fe||s.current||n||"default").trim()||"default",q=`${t}:${r}:${nt}`;try{const be=await fetch(`/api/taskforce/ui-state?key=app&workspaceId=${encodeURIComponent(nt)}`,{method:"GET",credentials:"include"}),Ve=be.ok?await be.json().catch(()=>({})):{},Ce=EC(Ve?.state),xe=Zb(r),Ie=Ce||xe?{...xe||{},...Ce||{},version:yv}:null;if(s.current!==nt)return;_e.current(Ie,{skipActiveWorkspaceModule:Fe.current}),ft.current=q}catch{const be=Zb(r);s.current===nt&&(_e.current(be,{skipActiveWorkspaceModule:Fe.current}),ft.current=q)}finally{if(s.current!==nt)return;Fe.current=!1,He.current=!0,ot(!0)}},[n,s,t,r]);o.useEffect(()=>{const fe=`${t}:${r}:${n}`;Ue.current&&ft.current!==fe&&(ot(!1),Ne(n))},[n,Ne,t,r]),o.useEffect(()=>{if(!ve)return;if(He.current){He.current=!1;return}const fe={version:yv,groupBy:h,activeWorkspaceModule:p,emptyColumnMode:k,taskScope:S,openTaskId:v||null,compressedCards:R,zenMode:N,searchQuery:$,collapsedCategories:x,filterCategories:U,filterPriorities:L,filterTypes:J,filterStatus:oe,filterAssignees:je,filterAssigneesAllSelected:Ye,filterTaxonomies:ce,...Oe?{filterTaxonomySignature:Oe}:{},sortBy:K,sortOrder:re,hasInitedFilters:D,lastCategory:we||"",taskforceAgentId:ee,taskforceAgentConversationId:H,taskforceAgentConversationByAgentId:Te};HR(fe,r);const nt=window.setTimeout(async()=>{try{await zf({stateKey:"app",workspaceId:s.current,patch:fe})}catch{}},250);return()=>window.clearTimeout(nt)},[p,x,R,Oe,s,k,je,Ye,U,L,oe,ce,J,h,D,we,v,$,K,re,S,Te,H,ee,ve,r,N]);const Ee=o.useCallback(fe=>{ft.current="",me.current=null,Fe.current=!1,He.current=!1,fe?.clearLoaded&&(Ue.current=!1),ot(!1)},[]);return{hasLoadedUiStateRef:Ue,loadPersistedUiState:Ne,resetPersistedUiStateLoad:Ee,setActiveWorkspaceModule:A,uiStateReady:ve}}const zj="taskforce:workspace-resources-invalidated";function UI(e){typeof window>"u"||window.dispatchEvent(new CustomEvent(zj,{detail:e}))}function Hj({workspaceId:e,isOpen:t,authBlocked:r,authRequiredForApi:n,isAuthenticated:s,canCallProtectedApi:i,shouldGateProtectedApiCalls:l,authSessionResolvedRef:c,authRequiredForApiRef:d,isAuthenticatedRef:f,dataVersionRef:p,refreshTaskCollectionsForDataVersion:g,coordinatorDataVersion:h=null}){const y=o.useRef(g);y.current=g;const k=o.useRef({scopeKey:null,workspaceId:"",scopeEpoch:0,renderedVersion:null,pendingVersion:null,sourceVersions:new Map,inFlight:null}),w=o.useRef(!0);o.useEffect(()=>(w.current=!0,()=>{w.current=!1}),[]);const S=!!(h&&Number.isSafeInteger(h.coordinatorGeneration)&&h.coordinatorGeneration>0&&Number.isSafeInteger(h.localDataVersion)&&h.localDataVersion>=0),b=()=>{const T=k.current;if(!w.current||T.inFlight||T.pendingVersion===null||typeof document>"u"||document.visibilityState!=="visible")return;const R=T.pendingVersion;if(T.renderedVersion!==null&&R<=T.renderedVersion)return;const P=T.scopeKey,N=T.scopeEpoch;let I=!1,$=!1;const j=y.current().then(()=>{if(!w.current||k.current.scopeKey!==P||k.current.scopeEpoch!==N){$=!0;return}I=!0,k.current.renderedVersion=R,p.current=R,UI({workspaceId:k.current.workspaceId,source:"data-version",dataVersion:R})}).catch(()=>{}).finally(()=>{k.current.inFlight===j&&(k.current.inFlight=null),(I||$)&&b()});T.inFlight=j},v=(T,R,P)=>{if(!Number.isSafeInteger(R)||R<0)return;const N=k.current,I=e;N.scopeKey!==I&&(N.scopeKey=I,N.workspaceId=e,N.scopeEpoch+=1,N.renderedVersion=null,N.pendingVersion=null,N.sourceVersions=new Map,p.current=null);const $=N.sourceVersions.get(T);if($!==void 0&&(P.monotonic?R<=$:R===$)){b();return}if(N.sourceVersions.set(T,R),P.establishBaseline&&$===void 0){N.renderedVersion===null&&N.pendingVersion===null&&!N.inFlight&&(N.renderedVersion=R,N.pendingVersion=R,p.current=R);return}const j=Math.max(N.renderedVersion??0,N.pendingVersion??0);N.pendingVersion=j===0?R:Math.max(j+1,R),b()};o.useEffect(()=>{!S||!h||v(`${e}:coordinator:${h.coordinatorGeneration}`,h.localDataVersion,{monotonic:!0,establishBaseline:!1})},[h,S,e]),o.useEffect(()=>{if(typeof window>"u"||typeof document>"u"||Wj({isOpen:t,authBlocked:r,authRequiredForApi:n,isAuthenticated:s,canCallProtectedApi:i}))return;let T=!1;const R=async()=>{if(!(T||document.visibilityState!=="visible")&&!$j({shouldGateProtectedApiCalls:l,authSessionResolved:c.current,authRequiredForApi:d.current,isAuthenticated:f.current}))try{const j=await fetch("/api/taskforce/data-version");if(!j.ok)return;const x=await j.json(),V=Number(x?.dataVersion);if(T)return;v(`${e}:legacy`,V,{monotonic:!1,establishBaseline:!0})}catch{}},P=()=>{document.visibilityState==="visible"&&R()},N=()=>{R()},I=()=>{R()},$=window.setInterval(()=>{R()},3e3);return document.addEventListener("visibilitychange",P),window.addEventListener("focus",N),window.addEventListener("online",I),R(),()=>{T=!0,window.clearInterval($),document.removeEventListener("visibilitychange",P),window.removeEventListener("focus",N),window.removeEventListener("online",I)}},[t,e,r,n,s,i,l,c,d,f,p])}const Vj="/api/taskforce/sync/v3/local/operations",Gj="/api/taskforce/sync/v3/local/dispatch";function hh(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}async function $S(e,t,r){const n=await e(t,{method:"POST",credentials:"include",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(r)});let s;try{s=JSON.parse(await n.text())}catch{s=null}return{response:n,body:hh(s)}}function za(e,t){const r=String(e||"").trim();if(!r||r.length>200)throw new Error(`${t} is invalid.`);return r}function Kj(){if(!globalThis.crypto?.randomUUID)throw new Error("Secure operation ID generation is unavailable.");return globalThis.crypto.randomUUID()}function qj(e){return e===400||e===401||e===403||e===404||e===405||e===409||e===413||e===422||e===429}function hp(e={}){const t=e.identityStore||new Hw,r=e.fetchImpl||fetch,n=e.createOperationId||Kj,s=e.fingerprint||Vw;return{async execute(i){const l=za(i.workspaceId,"workspaceId");let c,d,f,p;try{i.preparedIdentity?(c=i.preparedIdentity.key,d={operationId:i.preparedIdentity.operationId,created:i.preparedIdentity.created},f=i.preparedIdentity.abandonIfMatches,p=i.preparedIdentity.markCaptureConfirmed):(c=await s(i.fingerprintValue),d=await t.getOrCreate(c,n),f=(I,$)=>t.deleteIfMatches(I,$),p=f)}catch{return{state:"failed",phase:"prepare",fallbackEligible:!1,errorCode:"LOCAL_OPERATION_PREPARATION_FAILED"}}const g=za(d.operationId,"operationId"),h=i.buildOperation(g),y=za(h.entityId,"entityId");let k;try{k=await $S(r,Vj,{contractVersion:3,workspaceId:l,operationId:g,operation:h})}catch{return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:g}}if(k.response.status===404&&k.body?.success===!1&&typeof k.body.code=="string"&&i.disabledCodes.has(k.body.code))return d.created?(await f(c,g),{state:"disabled",fallbackEligible:!0,operationId:g}):{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:g,errorCode:k.body.code};const w=hh(k.body?.task),S=hh(k.body?.deleted),b=typeof k.body?.clientId=="string"?k.body.clientId.trim():"";if(!k.response.ok||k.body?.success!==!0||k.body.contractVersion!==3||k.body.state!=="pending"||k.body.workspaceId!==l||k.body.operationId!==g||!b||(h.mutationKind==="delete"?!S||S.taskId!==y:!w||w.id!==y)){if(!k.response.ok&&qj(k.response.status)){try{await f(c,g)}catch{}return{state:"rejected",phase:"capture",fallbackEligible:!1,operationId:g,retryable:k.response.status===429,errorCode:typeof k.body?.code=="string"?k.body.code:void 0}}return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:g,errorCode:typeof k.body?.code=="string"?k.body.code:void 0}}try{await p(c,g)}catch{return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:g,errorCode:"LOCAL_OPERATION_IDENTITY_CLEANUP_FAILED"}}const v=h.mutationKind==="delete"?{deleted:S}:{task:w};if(!i.isAuthenticated)return{state:"pending",fallbackEligible:!1,operationId:g,...v,pendingReason:"auth"};if(i.dispatchEnabled===!1)return{state:"pending",fallbackEligible:!1,operationId:g,...v,pendingReason:"sync-disabled"};let T;try{T=await $S(r,Gj,{workspaceId:l,limit:1})}catch{return{state:"pending",fallbackEligible:!1,operationId:g,...v,pendingReason:"retry"}}if(!T.response.ok)return{state:"pending",fallbackEligible:!1,operationId:g,...v,pendingReason:T.response.status===401?"auth":"retry",errorCode:typeof T.body?.code=="string"?T.body.code:void 0};if(T.body?.success!==!0||!Array.isArray(T.body.outcomes))return{state:"pending",fallbackEligible:!1,operationId:g,...v,pendingReason:"retry"};const R=T.body.outcomes.map(hh).find(I=>I?.clientId===b&&I?.operationId===g);if(!R)return{state:"pending",fallbackEligible:!1,operationId:g,...v,pendingReason:"queued"};const P=R.disposition;if(P!=="accepted"&&P!=="retry"&&P!=="blocked"&&P!=="lease-lost")return{state:"pending",fallbackEligible:!1,operationId:g,...v,pendingReason:"retry"};const N=typeof R.errorCode=="string"?R.errorCode:void 0;return P==="accepted"?{state:"accepted",fallbackEligible:!1,operationId:g,...v,dispatchDisposition:P}:{state:P==="blocked"?"blocked":"pending",fallbackEligible:!1,operationId:g,...v,dispatchDisposition:P,pendingReason:P==="retry"||P==="lease-lost"?N==="WORKSPACE_SYNC_TRANSPORT_401"?"auth":"retry":void 0,errorCode:N}}}}const Yj=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED"]);function Zj(e={}){const t=hp(e);return{async update(r){const n=za(r.workspaceId,"workspaceId"),s=za(r.entityId,"entityId"),i=FI(r.patch),l={domain:"task",entityId:s,mutationKind:"metadata-update",payload:{patch:i,...r.saveSource?{saveSource:r.saveSource}:{},...r.expectedDetailRevision?{expectedDetailRevision:r.expectedDetailRevision}:{}}};return t.execute({workspaceId:n,fingerprintValue:{contractVersion:3,workspaceId:n,operation:l},buildOperation:()=>l,disabledCodes:Yj,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}const Jj=new Set(["title","description","priority","complexity","type","category","assignee","scheduledDate","dueDate","scheduledWeekKey","orderInDay","workstreamId","taxonomies"]);function Xj(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=Object.keys(e);return t.length>0&&t.every(r=>Jj.has(r))}function Qj(e){const t=o.useRef(null);return o.useCallback(async(r,n,s)=>{if(!e.enabled||!Xj(n))return null;const i=String(e.workspaceId||"").trim(),l=String(r||"").trim();return!i||i.toLowerCase()==="default"||!l?null:(t.current||(t.current=e.client||Zj()),t.current.update({workspaceId:i,entityId:l,patch:n,...s?.saveSource?{saveSource:s.saveSource}:{},...s?.expectedDetailRevision?{expectedDetailRevision:s.expectedDetailRevision}:{},isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}const eD=new Set(["title","description","priority","complexity","type","category","assignee","status","scheduledDate","dueDate","orderInDay","workstreamId","taxonomies"]),tD=new Set(["task","on-hold","in-progress","review","done","cancelled"]);class Hg extends Error{constructor(t,r,n){super(t),this.code=r,this.statusCode=n,this.name="DurableTaskCreateMutationError"}}function rD(e){if(!e||typeof e!="object"||Array.isArray(e))throw new Hg("Task create input must be an object.","TASK_CREATE_INVALID",400);const t=e;for(const n of Object.keys(t))if(!eD.has(n))throw new Hg(`Task create field is not supported by this contract: ${n}`,"TASK_CREATE_INVALID",400);const r=typeof t.title=="string"?t.title.trim():"";if(!r)throw new Hg("Task title is required.","TASK_CREATE_INVALID",400);if(t.status!==void 0&&!tD.has(t.status))throw new Hg(`Task create status is not supported by this contract: ${String(t.status)}`,"TASK_CREATE_INVALID",400);return{...t,title:r}}const nD=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_CREATE_CAPTURE_DISABLED"]),aD="/api/taskforce/sync/v3/local/operations";function Xu(e){return JSON.parse(Jc(rD(e)))}function Vg(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Local task create input must be an object.");const r=e,{attachments:n=[],checklistItems:s=[],comments:i=[],...l}=r;if(!Array.isArray(n)||!Array.isArray(s)||!Array.isArray(i))throw new Error("Local task create carriers must be arrays.");const c=Xu(l);if(Jc(c)!==Jc(t))throw new Error("Local task create root does not match its durable task.");return JSON.parse(Jc({...c,attachments:n,checklistItems:s,comments:i}))}function FS(e={}){const t=hp(e),r=e.attemptStore||new $I,n=e.fetchImpl||globalThis.fetch,s=async(l,c)=>{let d,f;try{d=await n(`${aD}?workspaceId=${encodeURIComponent(l)}&operationId=${encodeURIComponent(c)}`,{method:"GET",headers:{Accept:"application/json"}}),f=await d.json()}catch{return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:c}}if(d.status===404&&f?.success===!1&&f?.code==="WORKSPACE_SYNC_LOCAL_OPERATION_NOT_FOUND")return null;const p=f?.operation,g=p?.payload?.task,h=p?.payload?.localCarriers;if(!d.ok||f?.success!==!0||f?.contractVersion!==3||f?.workspaceId!==l||f?.operationId!==c||p?.domain!=="task"||p?.entityId!==`task-${c}`||p?.mutationKind!=="create")return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:c,errorCode:typeof f?.code=="string"?f.code:void 0};try{const y=Xu(g);return{workspaceId:l,operationId:c,task:Vg({...y,...h&&typeof h=="object"?h:{}},y)}}catch{return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:c,errorCode:"WORKSPACE_SYNC_LOCAL_REPLAY_INVALID"}}},i=async(l,c,d,f)=>{const p=await t.execute({workspaceId:l.workspaceId,preparedIdentity:{key:l.workspaceId,operationId:l.operationId,created:!1,abandonIfMatches:(g,h)=>r.abandonIfMatches(g,h),markCaptureConfirmed:(g,h)=>r.markResolved(g,h)},buildOperation:()=>{const{attachments:g,checklistItems:h,comments:y,...k}=l.task;return{domain:"task",entityId:`task-${l.operationId}`,mutationKind:"create",payload:{task:Xu(k),localCarriers:{attachments:g,checklistItems:h,comments:y}}}},disabledCodes:nD,isAuthenticated:c,dispatchEnabled:d});return f&&(p.state==="accepted"||p.state==="pending"||p.state==="blocked")?{...p,recoveredChangedInput:!0}:p};return{async recoverPending(l){const c=za(l.workspaceId,"workspaceId");let d;try{d=await r.listPending(c)}catch{return[]}const f=[];for(const p of d)f.push(await i(p,l.isAuthenticated,l.dispatchEnabled,!1));return f},async create(l){const c=za(l.workspaceId,"workspaceId"),d=Xu(l.task),f=Vg(l.localTask||{...d,attachments:[],checklistItems:[],comments:[]},d),p=za(l.participantId,"participantId"),g=await s(c,p);if(g&&"state"in g)return g;if(g){const k=Jc(g.task)!==Jc(f);return i({...g},l.isAuthenticated,l.dispatchEnabled,k)}let h;try{h=await r.claim(c,p,f,()=>p)}catch{return{state:"failed",phase:"prepare",fallbackEligible:!1,errorCode:"LOCAL_OPERATION_PREPARATION_FAILED"}}try{const{attachments:k,checklistItems:w,comments:S,...b}=h.task;h={...h,task:Vg({...b,attachments:k,checklistItems:w,comments:S},Xu(b))}}catch{return{state:"failed",phase:"prepare",fallbackEligible:!1,errorCode:"LOCAL_OPERATION_PREPARATION_FAILED"}}const y=!h.created&&Jc(h.task)!==Jc(f);return i(h,l.isAuthenticated,l.dispatchEnabled,y)},async resumePending(l){const c=za(l.workspaceId,"workspaceId"),d=za(l.participantId,"participantId"),f=await s(c,d);if(f&&"state"in f)return f;if(f)return i({...f},l.isAuthenticated,l.dispatchEnabled,!0);let p;try{p=await r.getForParticipant(c,d)}catch{return{state:"failed",phase:"prepare",fallbackEligible:!1,errorCode:"LOCAL_OPERATION_PREPARATION_FAILED"}}if(!p)return null;try{const{attachments:g,checklistItems:h,comments:y,...k}=p.task;p={...p,task:Vg({...k,attachments:g,checklistItems:h,comments:y},Xu(k))}}catch{return{state:"failed",phase:"prepare",fallbackEligible:!1,errorCode:"LOCAL_OPERATION_PREPARATION_FAILED"}}return i(p,l.isAuthenticated,l.dispatchEnabled,!0)}}}const zI=["title","description","priority","complexity","type","category","assignee","scheduledDate","dueDate","orderInDay","workstreamId","taxonomies"],sD=new Set([...zI,"status","completedAt","workstreamId","checklistItems","comments","attachments","createdAt","createdBy"]);function oD(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e;if(Object.keys(t).some(s=>!sD.has(s))||t.status!=="task"||t.completedAt!==null||!Array.isArray(t.checklistItems)||!Array.isArray(t.comments)||!Array.isArray(t.attachments)||t.createdBy!=="user")return null;const r=String(t.createdAt||"").trim();if(!Number.isFinite(Date.parse(r))||new Date(r).toISOString()!==r)return null;const n={};for(const s of zI)Object.prototype.hasOwnProperty.call(t,s)&&(n[s]=t[s]);return{task:n,localTask:{...n,checklistItems:t.checklistItems,comments:t.comments,attachments:t.attachments}}}function Wv(){if(!globalThis.crypto?.randomUUID)throw new Error("Secure task-create participant ID generation is unavailable.");return globalThis.crypto.randomUUID()}function HI(e){return`taskforce.sync.v3.task-create-participant-v2:${e}`}function $v(e,t){globalThis.sessionStorage?.setItem(HI(e),JSON.stringify(t))}function iD(e){const t=HI(e),r=globalThis.sessionStorage?.getItem(t)?.trim();if(r)try{const s=JSON.parse(r);if(typeof s.participantId=="string"&&s.participantId.trim())return{participantId:s.participantId.trim(),draftFingerprint:typeof s.draftFingerprint=="string"?s.draftFingerprint:null}}catch{}const n={participantId:Wv(),draftFingerprint:null};return $v(e,n),n}async function cD(e){let t=iD(e);return{get participantId(){return t.participantId},prepareForDraft(r){return t.draftFingerprint&&t.draftFingerprint!==r?t={participantId:Wv(),draftFingerprint:r}:t={...t,draftFingerprint:r},$v(e,t),t.participantId},rotate(){return t={participantId:Wv(),draftFingerprint:null},$v(e,t),t.participantId},close(){}}}async function lD(e){const{createdAt:t,updatedAt:r,...n}=e;return Vw(n)}function dD(e){const t=o.useRef(null),r=o.useRef(null),n=o.useCallback(i=>(r.current?.workspaceId!==i&&(r.current?.promise.then(l=>l.close()),r.current={workspaceId:i,promise:cD(i)}),r.current.promise),[]);o.useEffect(()=>{if(!e.localRuntime)return;const i=String(e.workspaceId||"").trim();return i&&i.toLowerCase()!=="default"&&(n(i),e.enabled&&(t.current||(t.current=e.client||FS()),typeof t.current.recoverPending=="function"&&t.current.recoverPending({workspaceId:i,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}))),()=>{const l=r.current;r.current=null,l?.promise.then(c=>c.close())}},[n,e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.localRuntime,e.workspaceId]);const s=o.useCallback(async i=>{if(!e.localRuntime)return null;const l=String(e.workspaceId||"").trim();if(!l||l.toLowerCase()==="default")return null;t.current||(t.current=e.client||FS());const c=await n(l),d=oD(i),f=e.enabled&&d?c.prepareForDraft(await lD(d.localTask)):c.participantId;let p;if(!e.enabled||!d){if(p=await t.current.resumePending({workspaceId:l,participantId:f,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}),!p&&!e.enabled)return null;if(!p&&e.enabled&&!d)return{state:"rejected",phase:"capture",fallbackEligible:!1,operationId:f,retryable:!1,errorCode:"TASK_CREATE_UNSUPPORTED_INPUT"}}else p=await t.current.create({workspaceId:l,participantId:f,task:d.task,localTask:d.localTask,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled});return p?((p.state==="accepted"||p.state==="pending"||p.state==="blocked")&&c.rotate(),p):null},[n,e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.localRuntime,e.workspaceId]);return s.resetDraft=()=>{const i=String(e.workspaceId||"").trim();!i||i.toLowerCase()==="default"||n(i).then(l=>l.rotate())},s}const US=["task","on-hold","in-progress","review","done","cancelled"];class uD extends Error{constructor(t,r,n){super(t),this.code=r,this.statusCode=n,this.name="DurableTaskStatusMutationError"}}const zS=2e3;function Ns(e){throw new uD(e,"TASK_STATUS_INVALID_PAYLOAD",400)}function pD(e){return typeof e!="string"||!US.includes(e)?Ns(`Task status must be one of: ${US.join(", ")}.`):e}function fD(e,t){if(e!==null&&typeof e!="string")return Ns("Task cancellation reason must be a string or null.");const r=typeof e=="string"?e.trim():null;return r!==null&&(r.length===0||r.length>zS)?Ns(`Task cancellation reason must contain 1-${zS} characters.`):t!=="cancelled"&&r!==null?Ns("Task cancellation reason must be null unless status is cancelled."):r}function mD(e){if(e&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length===0)return{};let t;try{t=FI(e)}catch(r){if(r instanceof gh)return Ns(r.message);throw r}return Object.prototype.hasOwnProperty.call(t,"assignee")?Ns("Task status metadataPatch cannot contain assignee; use assigneeIntent."):t}function gD(e,t){if(!e||typeof e!="object"||Array.isArray(e))return Ns("Task status assigneeIntent must be an object.");const r=e;return r.kind==="preserve"?Object.keys(r).length!==1?Ns("Preserve assignee intent must contain exactly kind."):{kind:"preserve"}:r.kind==="set"?Object.keys(r).sort().join(",")!=="kind,value"?Ns("Set assignee intent must contain exactly kind and value."):r.value!==null&&typeof r.value!="string"?Ns("Set assignee intent value must be a string or null."):{kind:"set",value:(typeof r.value=="string"?r.value.trim():"")||null}:r.kind==="claim-if-unassigned"?Object.keys(r).sort().join(",")!=="kind,value"?Ns("Claim-if-unassigned intent must contain exactly kind and value."):t!=="in-progress"?Ns("Claim-if-unassigned is valid only when status is in-progress."):typeof r.value!="string"||!r.value.trim()?Ns("Claim-if-unassigned value must be a nonblank string."):{kind:"claim-if-unassigned",value:r.value.trim()}:Ns("Task status assigneeIntent kind is invalid.")}function hD(e){if(!e||typeof e!="object"||Array.isArray(e))return Ns("Task status payload must be an object.");const t=e;if(Object.keys(t).sort().join(",")!=="assigneeIntent,canceledReason,metadataPatch,status")return Ns("Task status payload must contain exactly status, assigneeIntent, canceledReason, and metadataPatch.");const r=pD(t.status);return{status:r,assigneeIntent:gD(t.assigneeIntent,r),canceledReason:fD(t.canceledReason,r),metadataPatch:mD(t.metadataPatch)}}const yD=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_STATUS_CAPTURE_DISABLED"]);function kD(e={}){const t=hp(e);return{async setStatus(r){const n=za(r.workspaceId,"workspaceId"),s=za(r.entityId,"entityId"),i=hD({status:r.status,assigneeIntent:r.assigneeIntent,canceledReason:r.canceledReason,metadataPatch:r.metadataPatch??{}}),l={domain:"task",entityId:s,mutationKind:"set-status",payload:{...i,...r.expectedDetailRevision?{expectedDetailRevision:r.expectedDetailRevision}:{}}};return t.execute({workspaceId:n,fingerprintValue:{contractVersion:3,workspaceId:n,operation:l},buildOperation:()=>l,disabledCodes:yD,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}function vD(e){const t=o.useRef(null);return o.useCallback(async(r,n)=>{if(!e.enabled)return null;const s=String(e.workspaceId||"").trim(),i=String(r||"").trim();return!s||s.toLowerCase()==="default"||!i?null:(t.current||(t.current=e.client||kD()),t.current.setStatus({workspaceId:s,entityId:i,...n,metadataPatch:n.metadataPatch,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}class Gu extends Error{constructor(t,r,n){super(t),this.code=r,this.statusCode=n,this.name="DurableTaskLifecycleMutationError"}}const HS=2e3;function VS(e,t){if(!t||typeof t!="object"||Array.isArray(t))throw new Gu("Task lifecycle payload must be an object.","TASK_LIFECYCLE_INVALID_PAYLOAD",400);const r=t,n=Object.keys(r).sort();if(e==="unarchive"){if(n.length!==0)throw new Gu("Unarchive payload must be empty.","TASK_LIFECYCLE_INVALID_PAYLOAD",400);return{cancellation:!1,reason:null}}if(n.length!==2||n[0]!=="cancellation"||n[1]!=="reason"||typeof r.cancellation!="boolean")throw new Gu("Archive payload must contain exactly cancellation and reason.","TASK_LIFECYCLE_INVALID_PAYLOAD",400);if(r.reason!==null&&typeof r.reason!="string")throw new Gu("Archive reason must be a string or null.","TASK_LIFECYCLE_INVALID_PAYLOAD",400);const s=typeof r.reason=="string"?r.reason.trim():null;if(s!==null&&(s.length===0||s.length>HS))throw new Gu(`Archive reason must contain 1-${HS} characters.`,"TASK_LIFECYCLE_INVALID_PAYLOAD",400);if(!r.cancellation&&s!==null)throw new Gu("Archive reason must be null when cancellation is false.","TASK_LIFECYCLE_INVALID_PAYLOAD",400);return{cancellation:r.cancellation,reason:s}}class Gg extends Error{constructor(t,r,n){super(t),this.code=r,this.statusCode=n,this.name="DurableTaskWorkflowMutationError"}}function GS(e,t){if(!t||typeof t!="object"||Array.isArray(t))throw new Gg("Task workflow payload must be an object.","TASK_WORKFLOW_INVALID_PAYLOAD",400);const r=t,n=Object.keys(r).sort();if(e==="complete"){if(n.length!==0)throw new Gg("Complete payload must be empty.","TASK_WORKFLOW_INVALID_PAYLOAD",400);return{assignee:null}}if(n.length!==1||n[0]!=="assignee"||r.assignee!==null&&typeof r.assignee!="string")throw new Gg("Reopen payload must contain exactly assignee as a string or null.","TASK_WORKFLOW_INVALID_PAYLOAD",400);const s=typeof r.assignee=="string"?r.assignee.trim():null;if(typeof r.assignee=="string"&&!s)throw new Gg("Reopen assignee cannot be blank.","TASK_WORKFLOW_INVALID_PAYLOAD",400);return{assignee:s}}const wD=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_LIFECYCLE_CAPTURE_DISABLED"]);function bD(e){return e.mutationKind==="archive"?VS("archive",{cancellation:e.cancellation,reason:e.reason}):e.mutationKind==="unarchive"?(VS("unarchive",{}),{}):e.mutationKind==="complete"?(GS("complete",{}),{}):GS("reopen",{assignee:e.assignee})}function SD(e={}){const t=hp(e),r=async n=>{const s=za(n.workspaceId,"workspaceId"),i=za(n.entityId,"entityId"),l=bD(n),c=n.mutationKind,d={domain:"task",entityId:i,mutationKind:c,payload:l};return t.execute({workspaceId:s,fingerprintValue:{contractVersion:3,workspaceId:s,operation:d},buildOperation:()=>d,disabledCodes:wD,isAuthenticated:n.isAuthenticated,dispatchEnabled:n.dispatchEnabled})};return{mutate:r,archive(n){return r({...n,mutationKind:"archive"})},unarchive(n){return r({...n,mutationKind:"unarchive"})},complete(n){return r({...n,mutationKind:"complete"})},reopen(n){return r({...n,mutationKind:"reopen"})}}}function AD(e){const t=o.useRef(null);return o.useCallback(async(r,n)=>{if(!e.enabled)return null;const s=String(e.workspaceId||"").trim(),i=String(r||"").trim();return!s||s.toLowerCase()==="default"||!i?null:(t.current||(t.current=e.client||SD()),t.current.mutate({workspaceId:s,entityId:i,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled,...n}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}const CD=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_DELETE_CAPTURE_DISABLED"]);function ID(e={}){const t=hp(e);return{delete(r){const n=za(r.workspaceId,"workspaceId"),i={domain:"task",entityId:za(r.entityId,"entityId"),mutationKind:"delete",payload:{}};return t.execute({workspaceId:n,fingerprintValue:{contractVersion:3,workspaceId:n,operation:i},buildOperation:()=>i,disabledCodes:CD,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}function _D(e){const t=o.useRef(null);return o.useCallback(async r=>{if(!e.enabled)return null;const n=String(e.workspaceId||"").trim(),s=String(r||"").trim();return!n||n.toLowerCase()==="default"||!s?null:(t.current||(t.current=e.client||ID()),t.current.delete({workspaceId:n,entityId:s,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}const TD=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_DELETE_CAPTURE_DISABLED"]);function xD(e={}){const t=hp(e);return{restore(r){const n=za(r.workspaceId,"workspaceId"),s=za(r.entityId,"entityId"),i=za(r.deletedRecordId,"deletedRecordId"),l=r.restoreDestination||"previous",c={domain:"task",entityId:s,mutationKind:"restore",payload:l==="archive"?{deletedRecordId:i,restoreDestination:l}:{deletedRecordId:i}};return t.execute({workspaceId:n,fingerprintValue:{contractVersion:3,workspaceId:n,operation:c},buildOperation:()=>c,disabledCodes:TD,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}function RD(e){const t=o.useRef(null);return o.useCallback(async(r,n,s="previous")=>{if(!e.enabled)return null;const i=String(e.workspaceId||"").trim(),l=String(n||"").trim(),c=String(r||"").trim();return!i||i.toLowerCase()==="default"||!l||!c?null:(t.current||(t.current=e.client||xD()),t.current.restore({workspaceId:i,entityId:l,deletedRecordId:c,restoreDestination:s,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}const VI=["active","archive","deleted","planning"];function GI(e){const t=new Set(e||[]);return VI.filter(r=>t.has(r))}function PD(e){return Array.from(new Set((e||[]).map(t=>String(t||"").trim()).filter(Boolean)))}function Dd(e,t){return{collections:GI(e),taskIds:PD(t?.taskIds),ambiguous:t?.ambiguous===!0}}function KI(e,t){return e?Dd([...e.collections,...t.collections],{taskIds:[...e.taskIds||[],...t.taskIds||[]],ambiguous:e.ambiguous||t.ambiguous}):Dd(t.collections,{taskIds:t.taskIds,ambiguous:t.ambiguous})}function ED(e){return e.ambiguous?[]:[...e.taskIds||[]]}function ND(e,t){if(e==="taskforce:update"||e==="taskforce:replay-gap"||e==="taskforce:replay-reset"||!t?.length)return Dd(VI,{ambiguous:!0});let r=null;for(const n of t){const s=String(n.entityType||"").trim(),i=GI(n.affectedCollections);let l;i.length>0?l=i:s==="task"?l=String(n.changeType||"").trim()==="delete"?["active","archive","deleted"]:["active","archive","deleted","planning"]:s==="taxonomy"?l=["active","archive","planning"]:s==="initiative"||s==="workstream"?l=["planning"]:l=[],r=KI(r,Dd(l,{taskIds:n.entityIds}))}return r||Dd([])}class jD{values=new Map;async getOrCreate(t,r){const n=this.values.get(t);if(n)return{operationId:n,created:!1};const s=r();return this.values.set(t,s),{operationId:s,created:!0}}async deleteIfMatches(t,r){this.values.get(t)===r&&this.values.delete(t)}}class DD{values=new Map;async claim(t,r,n){const s=this.values.get(t);if(s)return{...s,created:!1};const i={fingerprint:t,operationId:n(),workstream:r};return this.values.set(t,i),{...i,created:!0}}async deleteIfMatches(t,r){this.values.get(t)?.operationId===r&&this.values.delete(t)}}const MD=new Set(["WORKSTREAM_MUTATION_INVALID","WORKSTREAM_MUTATION_IDENTITY_REQUIRED","WORKSTREAM_NOT_FOUND","WORKSTREAM_ID_CONFLICT","WORKSTREAM_STATE_CONFLICT","WORKSTREAM_INITIATIVE_INVALID","WORKSTREAM_OWNER_INVALID","WORKSTREAM_COMMENT_AUTHOR_INVALID","WORKSTREAM_ATTACHMENT_INVALID","WORKSTREAM_HAS_ACTIVE_TASKS","WORKSTREAM_TASK_ORDER_INVALID","WORKSTREAM_TASK_ORDER_MEMBERSHIP_MISMATCH","WORKSTREAM_TASK_ORDER_IDENTITY_CONFLICT","ENTITY_EVENT_IDENTITY_COLLISION","WORKSPACE_SYNC_REVISION_CONFLICT","WORKSPACE_SYNC_IDEMPOTENCY_CONFLICT"]);function LD(e,t){return e.find(n=>n.id===t.id)?null:t}function KS(){if(!globalThis.crypto?.randomUUID)throw new Error("Secure workstream operation identity generation is unavailable.");return`operation-${globalThis.crypto.randomUUID()}`}async function If(e){if(e.ok||e.status<400||e.status>=500)return!1;const t=await e.clone().json().catch(()=>null);return MD.has(String(t?.code||"").trim())}function OD(e){const t=globalThis.indexedDB?new Hw:new jD,r=globalThis.indexedDB?new hj:new DD;return{async prepareCreate(n,s){if(!globalThis.crypto?.randomUUID)throw new Error("Secure workstream identity generation is unavailable.");const i=bn({workspaceId:n,candidate:s}),l=await r.claim(i,{...s,id:s.id||`workstream-${globalThis.crypto.randomUUID()}`,createdAt:s.createdAt||new Date().toISOString()},KS);return{fingerprint:i,operationId:l.operationId,body:l.workstream}},confirmCreate(n,s){return r.deleteIfMatches(n,s)},abandonCreate(n,s){return r.deleteIfMatches(n,s)},async prepareMutation(n,s,i,l=null){const c=bn({workspaceId:n,url:s,body:i,observedState:l}),d=await t.getOrCreate(c,KS);return{fingerprint:c,operationId:d.operationId}},confirmMutation(n,s){return t.deleteIfMatches(n,s)},abandonMutation(n,s){return t.deleteIfMatches(n,s)}}}async function _f(e,t,r){const n={...t,headers:{...t.headers||{},"x-taskforce-operation-id":r}},s=()=>fetch(e,n);let i;try{i=await s()}catch{i=await s()}if(i.status!==409)return i;const l=await i.clone().json().catch(()=>({}));if(l?.code!=="WORKSPACE_SYNC_OPERATION_IN_PROGRESS")return i;const c=Date.parse(String(l?.retryAt||"")),d=Number.isFinite(c)?Math.max(0,c-Date.now()):Number.NaN;return!Number.isFinite(d)||d>2e3?i:(await new Promise(f=>setTimeout(f,d)),s())}const BD={};function WD(e,t,r,n){const s=new Map;for(const i of t)s.set(i.id,i);for(const i of e)s.set(i.id,i);if(n&&s.has(n)){const i=r.find(l=>l.id===n);i&&s.set(n,i)}return Array.from(s.values())}function ni(e,t){const r=e.findIndex(n=>n.id===t.id);return r===-1?[...e,t]:e.map((n,s)=>s===r?t:n)}function Vk(){return{status:"loading",error:null,isRefreshing:!1,collections:{initiatives:"loading",workstreams:"loading"}}}const Yc=bw(BD),Gk=(()=>{const e=Yc.baseUrl,t=Yc.cloudAuthBaseUrl;if(t)return t;const r=Yc.apiBaseUrl;return r||e||"https://app.taskforcehq.ai"})(),Kg=2e4,$D=new Set(["external-abort","superseded","workspace-reset","workspace-transition"]);function yh(e){return typeof DOMException<"u"&&e instanceof DOMException?e.name==="AbortError":String(e?.name||"").toLowerCase()==="aborterror"}function Fv(e){return typeof e=="string"&&$D.has(e)}function Kk(e,t){return t.aborted?e===t.reason||Fv(e)||Fv(t.reason)?!0:yh(e):!1}function qS(e){const t=new Error(`Startup checks timed out after ${e}ms.`);return t.name="BootstrapTimeoutError",t}function YS(e){const t=e&&typeof e=="object"?e:{},r=Array.isArray(t.initiatives)?t.initiatives.filter(i=>!!(i&&typeof i=="object"&&typeof i.id=="string")):[],n=Array.isArray(t.workstreams)?t.workstreams.filter(i=>!!(i&&typeof i=="object"&&typeof i.id=="string")):[],s=Array.isArray(t.workstreamTaskSummaries)?t.workstreamTaskSummaries.flatMap(i=>{if(!i||typeof i!="object")return[];const l=String(i.workstreamId||"").trim();if(!l)return[];const c=Array.isArray(i.tasks)?i.tasks:[],d=Math.max(0,Number(i.taskCount)||0),f=Math.max(0,Number(i.completedTaskCount)||0);return[{workstreamId:l,taskCount:d,completedTaskCount:f,tasks:c.filter(p=>!!(p&&typeof p=="object"&&typeof p.id=="string")).map(p=>({id:String(p.id||"").trim(),referenceNumber:typeof p.referenceNumber=="number"?p.referenceNumber:null,localReferenceNumber:typeof p.localReferenceNumber=="number"?p.localReferenceNumber:null,referenceLabel:typeof p.referenceLabel=="string"&&p.referenceLabel.trim()||void 0,title:String(p.title||"").trim()||"Untitled Task",status:typeof p.status=="string"?p.status:null,assignee:typeof p.assignee=="string"?p.assignee:null,attachmentCount:Math.max(0,Number(p.attachmentCount)||0),isArchived:!!p.isArchived}))}]}):[];return{initiatives:r,workstreams:n,workstreamTaskSummaries:s}}function FD({config:e={},initialTaskId:t,initialActivityEntryId:r,requestedWorkspaceId:n,onTaskCountChange:s,onClose:i}){const l={...wx,...e},{categories:c,types:d,apiEndpoint:f,apiBaseUrl:p,cloudAuthBaseUrl:g,cloudMcpBaseUrl:h,wsBaseUrl:y,shortcut:k}=l,w=typeof window<"u"?String(window.location.hostname||"").trim().toLowerCase():"",S=w==="localhost"||w==="127.0.0.1"||w==="::1",b=typeof window<"u"&&!S,[v,T]=o.useState({cloudEnvironment:"",cloudBaseUrl:"",cloudMcpBaseUrl:"",baseUrl:"",apiBaseUrl:"",cloudAuthBaseUrl:"",wsBaseUrl:"",cloudAuthViaLocalProxy:!1,authSource:"",workspaceMode:"",workspaceSwitchingEnabled:null,appGates:void 0,syncV3TaskMetadataActivation:!1,syncV3TaskCreateActivation:!1,syncV3TaskStatusActivation:!1,syncV3TaskDeleteActivation:!1,syncV3TaskCloudHttpRootActivation:!1,syncV3LocalOutboxDispatch:!1,localCoordinatorBrowserAuthorityGate:!1,syncV3InitiativeFeedActivation:void 0,syncV3CombinedFeedRouteAvailable:void 0,syncV3CombinedFeedActivation:void 0,syncV3CombinedFeedCoverage:void 0}),[R,P]=o.useState(!1),N=o.useCallback(C=>typeof C=="string"?C.trim().replace(/\/+$/,""):"",[]);o.useEffect(()=>{if(typeof window>"u"){P(!0);return}let C=!1;return(async()=>{try{const Q=await fetch("/api/taskforce/auth/runtime-config",{method:"GET",credentials:"include",cache:"no-store"});if(!Q.ok)return;const se=await Q.json().catch(()=>({})),X=se?.config&&typeof se.config=="object"?se.config:{};if(C)return;const Je=String(X.runtimeMode||"").trim().toLowerCase()==="cloud"?"cloud":"local",tt=String(X.workspaceMode||"").trim(),Ht=tt==="single-local"||tt==="multi-cloud"?tt:Je==="cloud"?"multi-cloud":"single-local";we(Je);const ur=Rl(X.syncV3?.combinedFeed?.coverage||{});T({cloudEnvironment:typeof X.cloudEnvironment=="string"?String(X.cloudEnvironment).trim().toLowerCase():"",cloudBaseUrl:N(X.cloudBaseUrl),cloudMcpBaseUrl:N(X.cloudMcpBaseUrl),baseUrl:N(X.baseUrl),apiBaseUrl:N(X.apiBaseUrl),cloudAuthBaseUrl:N(X.cloudAuthBaseUrl),wsBaseUrl:N(X.wsBaseUrl),cloudAuthViaLocalProxy:!!X.cloudAuthViaLocalProxy,authSource:"cloud",workspaceMode:Ht,workspaceSwitchingEnabled:typeof X.workspaceSwitchingEnabled=="boolean"?!!X.workspaceSwitchingEnabled:Ht==="multi-cloud",appGates:TR(X.appGates)?X.appGates:void 0,syncV3TaskMetadataActivation:X.syncV3?.taskMetadataActivation===!0,syncV3TaskCreateActivation:X.syncV3?.taskCreateActivation===!0,syncV3TaskStatusActivation:X.syncV3?.taskStatusActivation===!0,syncV3TaskDeleteActivation:X.syncV3?.taskDeleteActivation===!0,syncV3TaskCloudHttpRootActivation:X.syncV3?.taskCloudHttpRootActivation===!0,syncV3LocalOutboxDispatch:X.syncV3?.localOutboxDispatch===!0,localCoordinatorBrowserAuthorityGate:X.syncV3?.localCoordinatorBrowserAuthorityGate===!0,syncV3InitiativeFeedActivation:typeof X.syncV3?.initiativeFeedActivation=="boolean"?X.syncV3.initiativeFeedActivation:void 0,syncV3CombinedFeedRouteAvailable:typeof X.syncV3?.combinedFeed?.routeAvailable=="boolean"?X.syncV3.combinedFeed.routeAvailable:void 0,syncV3CombinedFeedActivation:typeof X.syncV3?.combinedFeed?.activationReady=="boolean"?X.syncV3.combinedFeed.activationReady:void 0,syncV3CombinedFeedCoverage:ur?.coverage})}catch{}finally{C||P(!0)}})(),()=>{C=!0}},[N]);const I=typeof window>"u"?"":S?Gk:"",$=N(Yc.baseUrl),j=N(Yc.apiBaseUrl),x=N(Yc.cloudBaseUrl),V=N(Yc.cloudMcpBaseUrl),U=N(Yc.cloudAuthBaseUrl),ne=N(Yc.wsBaseUrl),L=N(p),ie=N(g),J=N(h),ue=v.apiBaseUrl||v.baseUrl,ge=L||ue||(S?"":j||$)||"",je=ie||U||$,qe=v.cloudAuthBaseUrl||v.baseUrl,he=((S?qe||je:je||qe)||ge||I).trim().replace(/\/+$/,""),ce=N(dR(v.cloudMcpBaseUrl||v.cloudAuthBaseUrl||v.cloudBaseUrl||J||ie||V||U||x||he)),B=(v.cloudMcpBaseUrl||J||ce||v.cloudBaseUrl||V||x||he||I).trim().replace(/\/+$/,""),K=!b&&!!he&&!ge,Ae=b||R&&!!(he||ge),re=Ae&&!K,F=!!(he||ge||b),D=b?"cloud":"local",[z,we]=o.useState(()=>D),ke=D==="local"&&S&&F?Cw():"",ee=ke.length>0,Z=o.useCallback(C=>!C||/^https?:\/\//i.test(C)||!ge||!C.startsWith("/")?C:`${ge}${C}`,[ge]),H=o.useCallback(C=>{if(!C||/^https?:\/\//i.test(C)||!C.startsWith("/"))return C;const Q=C.startsWith("/api/taskforce/auth/")||C.startsWith("/api/taskforce/account/")||C.startsWith("/api/taskforce/billing/")||C.startsWith("/api/taskforce/sync/")||C.startsWith("/api/taskforce/settings/mcp/");if(!b&&Q&&(z==="cloud"||!R||v.cloudAuthViaLocalProxy||v.workspaceMode==="multi-cloud"))return C;const se=he||ge;if(se){const X=`${se}${C}`;if(typeof window<"u"&&!b&&Q)try{if(new URL(X,window.location.origin).origin===window.location.origin)return`${Gk}${C}`}catch{return`${Gk}${C}`}return X}return C},[R,v.cloudAuthViaLocalProxy,v.workspaceMode,he,ge,b,z]),ae=o.useCallback(C=>{const Q=String(C||"").trim()||"/taskforce-ws",se=Q.startsWith("/")?Q:`/${Q}`,X=String(y||v.wsBaseUrl||ne||ge||"").trim().replace(/\/+$/,""),We=typeof window<"u"?window.location.origin:"",Je=X||We;if(!Je)return"";try{const tt=new URL(se,Je);return tt.protocol==="https:"&&(tt.protocol="wss:"),tt.protocol==="http:"&&(tt.protocol="ws:"),tt.toString()}catch{return""}},[y,v.wsBaseUrl,ne,ge]),[Te,Le]=o.useState("tasks"),[Ue,ft]=o.useState(!1),[He,Fe]=o.useState(!1),[me,ve]=o.useState("open"),[ot,Oe]=o.useState(!1),[A,G]=o.useState(ep(l.theme)||Ch),[_e,Ne]=o.useState(ep(l.theme)||Ch),[Ee,fe]=o.useState(!0),[nt]=o.useState(".taskforce"),q=!1,[be,Ve]=o.useState(!1),[Ce,xe]=o.useState([]),[Ie,de]=o.useState([]),[Be,at]=o.useState(""),[Qe,Ze]=o.useState(null),[Pe,gt]=o.useState(null),[it,De]=o.useState(""),[bt,Et]=o.useState(""),mt=o.useMemo(()=>nR({projectRoot:it,runtimeMode:D}),[it,D]),[qt,et]=o.useState(""),[Y,le]=o.useState(""),Ke=iR(z),It=v.workspaceMode==="single-local"||v.workspaceMode==="multi-cloud"?v.workspaceMode:Ke.workspaceMode,vt=typeof v.workspaceSwitchingEnabled=="boolean"?v.workspaceSwitchingEnabled:Ke.workspaceSwitchingEnabled,[Mt,gr]=o.useState(!1),[Zt,or]=o.useState(!1),[Dt,lr]=o.useState(ee),[Rr,Lr]=o.useState(ee?ke:"anonymous"),[Dr,Me]=o.useState(""),[rt,pt]=o.useState(""),[ht,At]=o.useState(""),[Ft,Tt]=o.useState([]),[$t,Ct]=o.useState(""),[Wt,Ot]=o.useState(!0),[vr,xt]=o.useState(null),[ct,tr]=o.useState(()=>{if(D==="local")return"default";const C=vv(mt);return C&&C.toLowerCase()!=="default"?C:"default"}),$r=o.useMemo(()=>aR({projectRoot:it,runtimeMode:z,workspaceId:ct}),[it,z,ct]),[u,Rt]=o.useState([]),[pr,nr]=o.useState(()=>xl()),[ar,an]=o.useState(!1),[Bt,Qr]=o.useState(ee),[xr,Gt]=o.useState("idle"),[Fr,en]=o.useState(null),[ln,tn]=o.useState(null),Ge=o.useRef(null),yn=o.useRef(0),Kr=o.useRef(0),ir=o.useRef(ee),wt=o.useRef(ct),Gr=o.useRef(null),Ut=o.useRef(0),dr=o.useRef((typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`).replace(/[^A-Za-z0-9_-]+/g,"").slice(0,12)||"session"),[wr,Ur]=o.useState(0),vs=o.useRef(null),ea=o.useRef(null),ta=o.useRef(null),rn=o.useRef(null),sn=o.useRef(null),on=o.useRef(null),Tn=o.useRef(null),cn=o.useCallback((C,Q)=>{const se=String(C||"").trim();if(!se)return;const X=String(wt.current||"").trim();!Q?.skipTransitionReset&&X&&X!==se&&(Ut.current+=1,Ur(Ut.current)),wt.current=se,Q?.clearExplicitSelection!==!1&&(Gr.current=null),tr(se)},[]);o.useEffect(()=>{wt.current=ct},[ct]);const Ar=o.useCallback(C=>{const Q=String(C||"").trim();Q&&tr(()=>{const se=String(Gr.current||"").trim();let X=Q;return se&&se!==Q&&(X=se),wt.current=X,X})},[]),Or=o.useCallback(()=>({workspaceId:String(wt.current||"default").trim()||"default",epoch:Ut.current}),[]),qr=o.useCallback(()=>wt.current,[]),Yr=o.useCallback(C=>(String(wt.current||"default").trim()||"default")!==C.workspaceId||Ut.current!==C.epoch,[]),ra=o.useCallback(C=>Ut.current!==C.epoch,[]),Gn=o.useCallback(C=>yh(C)||Fv(C),[]),Yt=o.useCallback(()=>{[vs,ea,ta,rn,sn,on].forEach(C=>{C.current?.abort("workspace-transition"),C.current=null}),Tn.current!==null&&typeof window<"u"&&(window.clearTimeout(Tn.current),Tn.current=null),Lo.current=null},[]),Zr=o.useMemo(()=>Bj({shouldGateProtectedApiCalls:re,runtimeMode:z,authSessionResolved:Bt,authRequiredForApi:Mt,isAuthenticated:Dt}),[re,z,Bt,Mt,Dt]),wn=Zr.shouldDeferProtectedApiCalls,dt=Zr.shouldBlockProtectedApiCalls,[Cr,pn]=o.useState(null),[pe,st]=o.useState(null),[yt,Jt]=o.useState(!1),[Xt,yr]=o.useState("unknown"),[Sn,br]=o.useState(null),[Lt,Pr]=o.useState(l.shortcut||"Alt+T"),[fn,Kn]=o.useState(l.priorities||[]),[na,er]=o.useState(""),[Ho,Ca]=o.useState(!1),[aa,Ha]=o.useState(!1),[ma,Ms]=o.useState(!0),[ro,Ls]=o.useState(()=>eR()),ws=o.useMemo(()=>Qx(),[]),[sa,xn]=o.useState(()=>{try{return(Intl.DateTimeFormat().resolvedOptions().locale||"").toLowerCase().startsWith("en-us")?"sunday":"monday"}catch{return"monday"}}),[no,An]=o.useState(!1),[ao,Ia]=o.useState(!0),[as,Wn]=o.useState(!1),[ja,oa]=o.useState(!0),[bs,ga]=o.useState(!0),[Va,Da]=o.useState(!0),[Ma,ia]=o.useState(!0),[Ss,ut]=o.useState(!1),[kr,Jr]=o.useState(""),[Cn,In]=o.useState(null);Dj({currentWorkspaceIdRef:wt,resolveApiUrl:Z,runtimeMode:z});const{initiativeTemplates:Os,fetchInitiativeTemplates:so}=HN({shouldDeferProtectedApiCalls:wn,shouldBlockProtectedApiCalls:dt}),{zenMode:Bs,setZenModeState:ha,toggleZenMode:ca}=VN(),[Rn,Er]=o.useState(!1),[Ga,As]=o.useState(null),{uiNotice:_a,pushNotice:ya,clearNotice:Ka}=$N(),ss=o.useRef(_a);ss.current=_a;const[pi,oo]=o.useState([]),os=o.useRef(null),[Ws,ye]=o.useState(0),St=o.useCallback(C=>!C||!it?C:C.startsWith(it)?C.slice(it.length).replace(/^[/\\]+/,""):C,[it]),[Vt,sr]=o.useState([]),[Ir,Ln]=o.useState([]),[Ta,qn]=o.useState([]),[Pn,kn]=o.useState([]),[fi,$s]=o.useState([]),[gc,ka]=o.useState(Vk),[cr,vn]=o.useState([]),[dn,La]=o.useState(null),[$n,va]=o.useState(null),[hc,xa]=o.useState(()=>new Set),Co=o.useRef(null),Ra=o.useRef(null),[Oa,Fn]=o.useState(!1),[Sr,Cs]=o.useState(null),Is=o.useRef(null),[Io,Di]=o.useState(null),[_s,Ts]=o.useState(null),En=o.useRef(null),Mi=o.useRef(()=>null),Fs=o.useRef(null),[_o,Yn]=o.useState(null),Vo=o.useCallback(C=>{String(t||"").trim()||Yn(C)},[t]),[io,Ba]=o.useState(!1),[wa,Us]=o.useState([]),[un,is]=o.useState(!1),[xs,To]=o.useState({}),Li=o.useRef({authSessionResolved:!1,configLoaded:!1,workspaceBootstrapPending:!1});o.useEffect(()=>{Li.current={authSessionResolved:Bt,configLoaded:un,workspaceBootstrapPending:ar}},[Bt,un,ar]);const Go=o.useCallback(C=>{Gt(C),C!=="ready"&&(en(null),tn(Date.now()))},[]),yc=o.useCallback(C=>{const Q=Li.current;Q.authSessionResolved&&Q.configLoaded&&!Q.workspaceBootstrapPending||(Gt("stalled"),en(C),tn(se=>se??Date.now()))},[]),ba=o.useCallback(async(C,Q,se=Wf,X)=>{const We=new AbortController,Je=X?.signal,tt=Number(se)>0?Number(se):Wf,Ht=Or(),ur=C.startsWith("/api/taskforce/")?jk(Q,Kb({workspaceId:Ht.workspaceId,epoch:Ht.epoch,seed:dr.current})):Q,Tr=typeof window<"u"?window.setTimeout(()=>We.abort("bootstrap-timeout"),tt):null,Br=()=>{We.abort(Je?.reason||"external-abort")};Je&&(Je.aborted?Br():Je.addEventListener("abort",Br,{once:!0}));try{return await fetch(C,{...ur||{},signal:We.signal})}catch(Wr){throw Je?.aborted&&Kk(Wr,Je)?Je.reason||Wr:yh(Wr)||Wr==="bootstrap-timeout"?qS(tt):Wr}finally{Je&&Je.removeEventListener("abort",Br),Tr!==null&&typeof window<"u"&&window.clearTimeout(Tr)}},[Or]),mi=o.useMemo(()=>{const C=!Bt,Q=xr==="stalled",se=Bt&&(!un||ar||Q);let X="Checking account, workspace access, and setup status...";return xr==="auth"?X="Verifying session...":xr==="workspace"?X="Resolving workspace access...":xr==="config"&&(X="Loading configuration..."),{phase:xr,auth:{resolved:Bt,pending:C},config:{loaded:un},workspace:{pending:ar},pending:C||se,authPending:C,appPending:se,ready:Bt&&un&&!ar&&xr==="ready",stalled:Q,subtitle:X,error:Fr,startedAt:ln}},[Bt,Fr,xr,ln,un,ar]),zs=o.useCallback(C=>String(C?.name||"")==="BootstrapTimeoutError",[]),[Hs,xo]=o.useState([]),[Vs,Oi]=o.useState({}),[Gs,kc]=o.useState(l.taxonomies||[]),mn=o.useMemo(()=>(wa.length>0?wa:c||[]).map(Q=>typeof Q=="string"?{value:Q.toLowerCase().replace(/\s+/g,"-"),label:Q}:Q).sort((Q,se)=>Q.label.localeCompare(se.label)),[wa,c]),el=o.useMemo(()=>({categories:mn,types:Hs,priorities:fn,taxonomies:Gs,displayLabels:Vs}),[mn,Hs,fn,Gs,Vs]);o.useMemo(()=>mn.filter(C=>!C.disabled),[mn]);const cs=o.useCallback(C=>C.find(se=>se.value==="default"||se.value==="general"||se.label==="General"||se.value==="Taskforce"||se.label==="Taskforce")?.value||C[0]?.value||"default",[]),la=Hs.length>0?Hs:d,[co,tl]=o.useState(!1),[zd,Nn]=o.useState(""),Hd=o.useCallback(()=>Nn(""),[]),vc="Authentication required. Sign in to continue.",[Bi,Wi]=o.useState(!1),[O,M]=o.useState(!1),Nt=o.useCallback(()=>{or(z==="cloud"),lr(!1),pt(""),At(""),Ct(""),Nn(vc)},[vc,z]),{taskDetails:Qt,staleTaskDetailRevisions:Pt,recentlyChangedTaskIds:Re,fetchTasks:Wa,fetchArchive:rr,loadTaskDetail:$a,cancelTaskDetailLoad:Pl,refreshTaskCollections:Ro,refreshTaskCollectionsFromInvalidation:gn,mergeTaskFromServer:ls}=GN({tasks:Vt,archivedTasks:Ir,setTasks:sr,setArchivedTasks:Ln,setLoadingTasks:Fn,getCurrentWorkspaceId:qr,workspaceResetKey:`${ct}:${wr}`,shouldDeferProtectedApiCalls:wn,shouldBlockProtectedApiCalls:dt,handleUnauthorized:Nt,authRequiredForApi:Mt,setError:Nn,setLoading:tl});o.useEffect(()=>{wr!==0&&(Lo.current=null,ql.current="",Fp.current="",Yl.current="",qs.current="",us.current="",Wi(!1),nr(xl()),M(!1),vn([]),La(null),va(null),xa(new Set),Co.current=null,Ra.current=null,sr([]),Ln([]),qn([]),kn([]),$s([]),ka(Vk()),Yn(null),Fn(!1))},[Ln,Fn,sr,wr]);const Un=o.useCallback(async(C=!1,Q)=>{if(!(Q?.ignoreAuthGuard===!0)&&(wn||dt))return!1;C||Fn(!0);const X=Or();sn.current?.abort("superseded");const We=new AbortController;sn.current=We;try{let Je=await fetch("/api/taskforce/deleted",{signal:We.signal});if(Je.status===404&&(Je=await fetch("/api/taskforce/trash",{signal:We.signal})),Je.status===401)return Nt(),vn([]),!1;if(Je.status===404)return Yr(X)?!1:(vn([]),va(X.workspaceId),!0);if(Je.ok){const tt=await Je.json();if(Yr(X))return!1;const Ht=Array.isArray(tt?.deleted)?tt.deleted.map(ur=>{const Tr=ur?.taskSnapshot&&typeof ur.taskSnapshot=="object"?to(ur.taskSnapshot):null;return Tr?{...ur,taskSnapshot:Tr}:null}).filter(ur=>!!ur):[];return vn(Ht),va(X.workspaceId),!0}return!1}catch(Je){return Kk(Je,We.signal)||Gn(Je)||console.error("[Taskforce] Failed to fetch deleted tasks:",Je),!1}finally{sn.current===We&&(sn.current=null),C||Fn(!1)}},[Or,Nt,Gn,Yr,wn,dt]),Nr=o.useCallback(async C=>{if(!(C?.ignoreAuthGuard===!0)&&(wn||dt))return;const se=Or();on.current?.abort("superseded"),Tn.current!==null&&typeof window<"u"&&(window.clearTimeout(Tn.current),Tn.current=null);const X=new AbortController;on.current=X,ka(We=>({...We,isRefreshing:!0}));try{const We=Kb({workspaceId:se.workspaceId,epoch:se.epoch,seed:dr.current}),Je=async Wr=>{if(typeof window>"u")return fetch(Wr,jk({signal:X.signal},We));const zn=new AbortController,Ps=window.setTimeout(()=>zn.abort("planning-timeout"),Kg),yo=()=>zn.abort(X.signal.reason||"external-abort");X.signal.aborted?yo():X.signal.addEventListener("abort",yo,{once:!0});try{return await fetch(Wr,jk({signal:zn.signal},We))}catch(Xs){if(X.signal.aborted)throw X.signal.reason||Xs;if(yh(Xs)||Xs==="planning-timeout")return null;throw Xs}finally{window.clearTimeout(Ps),X.signal.removeEventListener("abort",yo)}};let tt=null,Ht={initiatives:"ready",workstreams:"ready"};const ur=await Je("/api/taskforce/planning/bootstrap");if(ur?.status===401){Nt(),qn([]),kn([]),$s([]),ka({status:"error",error:"Sign in again to load Planning.",isRefreshing:!1,collections:{initiatives:"error",workstreams:"error"}});return}if(ur===null)throw qS(Kg);if(ur.ok){const Wr=await ur.json().catch(()=>null);if(!Wr||!Array.isArray(Wr.initiatives)||!Array.isArray(Wr.workstreams))throw new Error("Planning returned an incomplete response.");tt=YS(Wr)}else{const[Wr,zn]=await Promise.all([Je("/api/taskforce/initiatives"),Je("/api/taskforce/workstreams")]);if(!Wr||!zn)throw new Error("Planning endpoints timed out during startup.");if(Wr.status===401||zn.status===401){Nt(),qn([]),kn([]),$s([]),ka({status:"error",error:"Sign in again to load Planning.",isRefreshing:!1,collections:{initiatives:"error",workstreams:"error"}});return}const Ps=async(ff,bg)=>{if(!ff.ok)return{items:[],status:"error"};const zc=await ff.json().catch(()=>null),kl=Array.isArray(zc)?zc:zc&&typeof zc=="object"&&Array.isArray(zc[bg])?zc[bg]:null;return kl?{items:kl,status:"ready"}:{items:[],status:"error"}},[yo,Xs]=await Promise.all([Ps(Wr,"initiatives"),Ps(zn,"workstreams")]);if(Ht={initiatives:yo.status,workstreams:Xs.status},Ht.initiatives==="error"&&Ht.workstreams==="error")throw new Error("Planning could not be loaded.");tt=YS({initiatives:yo.items,workstreams:Xs.items,workstreamTaskSummaries:[]})}if(Yr(se))return;qn(tt.initiatives),kn(tt.workstreams),$s(tt.workstreamTaskSummaries);const Tr=Ht.initiatives==="error"||Ht.workstreams==="error",Br=tt.initiatives.length===0&&tt.workstreams.length===0;ka({status:Tr?"partial":Br?"empty":"ready",error:Tr?"Some planning data could not be loaded.":null,isRefreshing:!1,collections:Ht})}catch(We){if(Kk(We,X.signal)||Gn(We))return;if(zs(We)?(_r("planning_bootstrap_timeout",{workspaceId:se.workspaceId,epoch:se.epoch,timeoutMs:Kg}),console.warn("[Taskforce] Planning bootstrap timed out during startup; retrying in background.")):console.error("[Taskforce] Failed to fetch planning entities:",We),!Yr(se)){const tt=Ta.length>0||Pn.length>0;ka(Ht=>({status:tt?"partial":"error",error:We instanceof Error&&We.message?We.message:"Planning could not be loaded.",isRefreshing:!1,collections:tt?Ht.collections:{initiatives:"error",workstreams:"error"}}))}typeof window<"u"&&!Yr(se)&&Ta.length===0&&Pn.length===0&&(Tn.current=window.setTimeout(()=>{Tn.current=null,Nr(C)},3e3))}finally{on.current===X&&(on.current=null)}},[Wf,Kg,Ta.length,Or,Nt,Gn,Yr,wn,dt,Pn.length]),Vd=o.useCallback(async(C,Q)=>{const se=String(Q||"").trim();if(!se)throw new Error(`Cannot load ${C} details without an id.`);const X=Or(),We=await fetch(`/api/taskforce/${C}/${encodeURIComponent(se)}`),Je=await We.json().catch(()=>({}));if(!We.ok)throw new Error(Je?.error||`Failed to load ${C} details (${We.status})`);const tt=Je;return Yr(X)||(C==="initiative"?qn(Ht=>ni(Ht,tt)):kn(Ht=>ni(Ht,tt))),tt},[Or,Yr]),ds=o.useCallback(async(C=!1,Q)=>{await Wa(C,Q)},[Wa]),Ko=o.useCallback(async(C=!1,Q)=>{const se=String(wt.current||"default").trim()||"default",X=await rr(C,Q),We=String(wt.current||"default").trim()||"default";return X&&We===se&&La(se),X},[rr]),qa=o.useCallback((C=!0,Q)=>{const se=String(wt.current||"default").trim()||"default";if(dn===se)return Promise.resolve(!0);const X=Co.current;if(X?.workspaceId===se)return X.promise;const We=Ko(C,Q).finally(()=>{Co.current?.promise===We&&(Co.current=null)});return Co.current={workspaceId:se,promise:We},We},[dn,Ko]),Ks=o.useCallback((C=!0,Q)=>{const se=String(wt.current||"default").trim()||"default";if($n===se)return Promise.resolve(!0);const X=Ra.current;if(X?.workspaceId===se)return X.promise;const We=Un(C,Q).finally(()=>{Ra.current?.promise===We&&(Ra.current=null)});return Ra.current={workspaceId:se,promise:We},We},[$n,Un]),qo=o.useCallback(()=>{const C=String(wt.current||"default").trim()||"default";return dn!==C?Promise.resolve(!1):Ko(!0)},[dn,Ko]),kp=o.useCallback((C=!0)=>{const Q=String(wt.current||"default").trim()||"default";return $n!==Q?Promise.resolve(!1):Un(C)},[$n,Un]),gi=o.useCallback(async C=>{const Q=C?.isSilent!==!1,se=C?.ignoreAuthGuard===!0,X=String(wt.current||"default").trim()||"default",We=dn===X,Je=$n===X;await Promise.all([Ro({isSilent:Q,ignoreAuthGuard:se,includeArchive:We,highlightChangedTaskIds:C?.highlightChangedTaskIds}),Je?Un(Q,{ignoreAuthGuard:se}):Promise.resolve(!1),Nr({ignoreAuthGuard:se})])},[dn,$n,Un,Nr,Ro]),wc=o.useRef(!1),Po=o.useRef(null),Gd=o.useRef(dn),$i=o.useRef($n),Yo=o.useRef(gn),Zo=o.useRef(Un),bc=o.useRef(Nr);Gd.current=dn,$i.current=$n,Yo.current=gn,Zo.current=Un,bc.current=Nr;const Eo=o.useCallback(async C=>{const Q=String(wt.current||"default").trim()||"default",se=Po.current;if(Po.current={workspaceId:Q,scope:se?.workspaceId===Q?KI(se.scope,C):C},!wc.current){wc.current=!0;try{for(;Po.current;){const X=Po.current;Po.current=null;const We=String(wt.current||"default").trim()||"default";if(X.workspaceId!==We)continue;const Je=new Set(X.scope.collections),tt=Je.has("active"),Ht=Je.has("archive")&&Gd.current===We,ur=Je.has("deleted")&&$i.current===We,Tr=ED(X.scope);await Promise.all([tt||Ht?Yo.current({includeActive:tt,includeArchive:Ht,highlightChangedTaskIds:Tr}):Promise.resolve(),ur?Zo.current(!0):Promise.resolve(!1),Je.has("planning")?bc.current():Promise.resolve()])}}finally{wc.current=!1}}},[]),Sc=o.useRef(()=>{}),rl=o.useRef(()=>{}),km=o.useRef(async()=>!1),jn=o.useCallback(C=>km.current(C),[]),{userGlobalSyncStatus:Kd,setUserGlobalSyncStatus:Zn,userGlobalSyncError:On,setUserGlobalSyncError:Ya,workspaceLastPullAt:vm,workspaceLastPushAt:wm,workspaceLastErrorAt:bm,workspaceLastErrorMessage:qd,workspaceLastSuccessfulSyncAt:vp,workspaceCloudSyncEnabled:No,workspaceSyncPhase:wp,workspaceSyncSetupIntent:Sm,workspaceSyncStatus:bp,workspaceSyncSummary:Am,workspaceSyncRecommendedAction:Sp,workspaceSyncBusy:Cm,workspaceSyncPendingChanges:Ap,workspaceTaskRelationships:Im,localCoordinatorDataVersion:Cp,localCoordinatorStatus:_m,switchLocalCoordinatorWorkspace:Ip,transferLocalCoordinatorOwnership:Tm,workspacePendingSignatureRef:_p,workspaceDeletedTaskIdsRef:xm,workspaceDeletedTaskWatermarksRef:Tp,loadWorkspaceSyncState:Rm,applyWorkspaceSyncStateSnapshot:gy,syncUserGlobalSettings:El,buildWorkspaceSyncSignature:hy,pushWorkspaceChangesToCloud:Yd,saveWorkspaceCloudSyncSettings:xp,retryUserGlobalSettingsSync:Fi,retryWorkspaceCloudSync:Nl,resetWorkspaceSyncCursorAndPull:Ui,getWorkspaceSyncDiagnostics:jl}=BN({currentWorkspaceId:ct,cloudAuthConfigured:F,runtimeMode:z,authSessionResolved:Bt,isAuthenticated:Dt,authUserId:Rr,projectName:bt,resolveCloudAuthUrl:H,resolveWebSocketUrl:ae,realtimeSyncEnabled:yt,localOutboxDispatchEnabled:v.syncV3LocalOutboxDispatch,localCoordinatorBrowserAuthorityGateEnabled:v.localCoordinatorBrowserAuthorityGate,initiativeFeedActivationEnabled:v.syncV3InitiativeFeedActivation,combinedFeedActivationEnabled:v.syncV3CombinedFeedActivation,combinedFeedCoverage:v.syncV3CombinedFeedCoverage,tasks:Vt,archivedTasks:Ir,deletedTasks:cr,initiatives:Ta,workstreams:Pn,taxonomies:Gs,taxonomyState:Bi?el:void 0,setupState:Cr,globalTheme:_e,locale:ro,globalWeekStartsOn:sa,themeUseGlobalDefault:Ee,setTasks:sr,setArchivedTasks:Ln,setAuthBlocked:or,setIsAuthenticated:lr,checkAuthSession:jn,setGlobalTheme:Ne,setCurrentTheme:G,setSetupState:pn,setLocale:Ls,setGlobalWeekStartsOn:xn,fetchPlanningEntities:Nr}),Zd=o.useCallback((C=la)=>C.find(Q=>String(Q.value||"").trim().length>0)?.value||So,[la]),[hi,zi]=o.useState(()=>cs(mn)),[jo,Hi]=o.useState(()=>Zd(la)),[Jd,Jo]=o.useState(2),[lo,yi]=o.useState(3),[nl,Xd]=o.useState("task"),[Ac,ki]=o.useState("unassigned"),[uo,Qd]=o.useState(""),[Dl,po]=o.useState(""),[Xo,vi]=o.useState(""),[Vi,Ml]=o.useState(""),[Gi,Ll]=o.useState(""),Do=o.useRef(Vi),fo=o.useRef(Gi),Ki=o.useRef(!1),[jr,Pm]=o.useState(!1),Pa=o.useCallback(()=>{const C=Do.current.trim()!==""||fo.current.trim()!=="";C!==Ki.current&&(Ki.current=C,Pm(C))},[]),al=o.useCallback(C=>{Do.current=C,Pa()},[Pa]),Cc=o.useCallback(C=>{fo.current=C,Pa()},[Pa]),wi=o.useCallback(()=>Do.current,[]),eu=o.useCallback(()=>fo.current,[]);o.useEffect(()=>{Do.current=Vi,Pa()},[Pa,Vi]),o.useEffect(()=>{fo.current=Gi,Pa()},[Gi,Pa]);const[qi,Rp]=o.useState([]),[tu,Pp]=o.useState([]),[Ol,bi]=o.useState(""),[Yi,Bl]=o.useState({}),Em=o.useRef(null),[Wl,Mo]=o.useState(""),[Nm,jm]=o.useState(""),[ru,Ic]=o.useState(""),[$l,yy]=o.useState({});o.useEffect(()=>{if(Sr)return;const C=String(jo||"").trim();la.some(se=>String(se.value||"").trim()===C)||Hi(Zd(la))},[la,Sr,Zd,jo]);const{searchQuery:Ep,setSearchQuery:Fl,filterCategories:Za,setFilterCategories:Qo,filterPriorities:Dm,setFilterPriorities:Mm,filterTypes:ei,setFilterTypes:Zi,filterStatus:nu,setFilterStatus:Ul,filterAssignees:Np,setFilterAssignees:jp,filterAssigneesAllSelected:Lm,setFilterAssigneesAllSelected:sl,filterTaxonomies:_c,setFilterTaxonomies:au,hasInitedFilters:Dp,setHasInitedFilters:Om,sortBy:Tc,setSortBy:xc,sortOrder:su,setSortOrder:Kt,toggleSortOrder:Bm,groupBy:ou,setGroupBy:Mp,emptyColumnMode:zl,setEmptyColumnMode:Lp,collapsedCategories:iu,setCollapsedCategories:Op,clearFilters:ky,filteredTasks:vy,searchAgnosticTasks:wy,filteredArchive:by,groupedTasks:Sy}=fj({tasks:Vt,archivedTasks:Ir,activeCategories:mn,activeTypes:la,priorities:fn,taxonomies:Gs,configLoaded:un,referenceDataLoaded:Bi,assigneeOptionsLoaded:O,assigneeOptions:pr,runtimeMode:z,workspaceId:ct,cloudTaskSearchEnabled:z==="cloud"&&Dt&&me!=="deleted"&&!wn&&!dt,cloudTaskSearchScope:me==="archived"?"archive":"active"});Sc.current=Zn,rl.current=Ya;const{checkAuthSession:Ay}=Oj({runtimeConfigReady:R,shouldProbeCloudAuth:Ae,authSessionResolved:Bt,resolveCloudAuthUrl:H,authOnlyCloudMode:K,authRequiredError:vc,runtimeMode:z,workspaceSelectionScope:mt,markBootstrapPhase:Go,markBootstrapStalled:yc,setRuntimeMode:we,setAuthRequiredForApi:gr,setIsAuthenticated:lr,setAuthUserId:Lr,setAuthWorkspaceId:Me,setAuthUserEmail:pt,setAuthUserDisplayName:At,setAuthUserAvatarUrl:Ct,setUserGlobalSyncStatus:C=>Sc.current(C),setUserGlobalSyncError:C=>rl.current(C),setHasBetaAccess:Ot,setAvailableWorkspaces:Rt,setHydratedWorkspaceRole:xt,setAssigneeOptions:nr,setAuthBlocked:or,setAuthSessionResolved:Qr,setError:Nn,applyResolvedWorkspaceId:Ar,readPersistedWorkspaceId:vv,authSessionRequestRef:Ge,authSessionEpochRef:yn,authSessionLastCheckedAtRef:Kr,authSessionLastResultRef:ir,isLoopbackHost:S,setAuthStateReadyRefs:(C,Q,se)=>{ll.current=Q,uu.current=se,Kl.current=C}});km.current=Ay;const[mo,Bp]=o.useState("tasks"),[Wm,Ji]=o.useState(!1),[Cy,Iy]=o.useState(!1),Wp=o.useRef([]),[$p,_y]=o.useState([]),$m=o.useCallback(C=>{const Q=typeof C=="function"?C(Wp.current):C;Wp.current=Q,_y(Q)},[]),Rc=o.useCallback(()=>[...Wp.current],[]),ol=o.useRef(null),[Ty,Hl]=o.useState(!1),il=o.useCallback(()=>`task-description-${globalThis.crypto?.randomUUID?.()||`${Date.now()}-${Math.random().toString(16).slice(2)}`}`,[]),Vl=o.useRef(il()),[cu,Gl]=o.useState(Vl.current),Pc=o.useCallback(()=>{const C=il();Vl.current=C,Gl(C)},[il]),Fm=o.useCallback(C=>{ol.current=C,Hl(!0),C.then(()=>{ol.current===C&&(ol.current=null,Hl(!1))},()=>{ol.current===C&&(ol.current=null,Hl(!1))})},[]),Ec=o.useCallback(async()=>{const C=ol.current;C&&await C},[]),[lu,Si]=o.useState(!1),cl=o.useRef(null),Nc=o.useRef(null),du=o.useRef(!1),ll=o.useRef(Bt),uu=o.useRef(Mt),Kl=o.useRef(Dt),ql=o.useRef(""),Fp=o.useRef(""),Yl=o.useRef(""),qs=o.useRef(""),us=o.useRef(""),Lo=o.useRef(null),Zl=o.useRef(!1),Up=o.useRef(!1),{handleSaveSettings:Um,handleSaveTheme:pu,handleSaveGlobalTheme:fu,handleUseGlobalThemeDefault:zm,handleJsonBackupEnabledChange:Hm,handleSaveGlobalJsonBackupEnabled:zp,handleUseGlobalJsonBackupDefault:xy,handleSaveGlobalWeekStartsOn:Hp,handleSaveLocale:Vm,handleManualComplexityEnabledChange:Gm,handleChecklistDropdownEnabledChange:Ry,handleShowTaskCardStatusLabelChange:mu,handleShowTaskCardDescriptionChange:gu,handleShowTaskCardAttachmentsChange:hu,handleShowTaskCardChecklistProgressChange:Km,handleShowTaskCardLatestActivityChange:yu,handleTintTaskCardActivityBackgroundChange:Py}=UN({keyShortcut:Lt,themeUseGlobalDefault:Ee,runtimeMode:z,jsonBackupUseGlobalDefault:ma,globalTheme:_e,globalJsonBackupEnabled:aa,setCurrentTheme:G,setThemeUseGlobalDefault:fe,setGlobalTheme:Ne,setJsonBackupEnabled:Ca,setJsonBackupUseGlobalDefault:Ms,setGlobalJsonBackupEnabled:Ha,setGlobalWeekStartsOn:xn,setLocale:Ls,setManualComplexityEnabled:An,setChecklistDropdownEnabled:Ia,setShowTaskCardStatusLabel:Wn,setShowTaskCardDescription:oa,setShowTaskCardAttachments:ga,setShowTaskCardChecklistProgress:Da,setShowTaskCardLatestActivity:ia,setTintTaskCardActivityBackground:ut});o.useEffect(()=>{z==="cloud"&&mt!==Wd&&zR(ct,mt)},[z,ct,mt]),o.useEffect(()=>{ll.current=Bt,uu.current=Mt,Kl.current=Dt},[Bt,Mt,Dt]);const{hasLoadedUiStateRef:Vp,loadPersistedUiState:Ey,resetPersistedUiStateLoad:jc,setActiveWorkspaceModule:Ny,uiStateReady:Ja}=Uj({runtimeMode:z,workspaceUiStateScope:$r,currentWorkspaceId:ct,currentWorkspaceIdRef:wt,referenceDataLoaded:Bi,activeCategories:mn,activeTypes:la,priorities:fn,taxonomies:Gs,activeWorkspaceModule:mo,setActiveWorkspaceModuleState:Bp,groupBy:ou,setGroupBy:Mp,emptyColumnMode:zl,setEmptyColumnMode:Lp,taskScope:me,setTaskScope:ve,openTaskId:Sr,setPendingOpenTaskId:Vo,compressedCards:ot,setCompressedCards:Oe,zenMode:Bs,setZenModeState:ha,searchQuery:Ep,setSearchQuery:Fl,collapsedCategories:iu,setCollapsedCategories:Op,filterCategories:Za,setFilterCategories:Qo,filterPriorities:Dm,setFilterPriorities:Mm,filterTypes:ei,setFilterTypes:Zi,filterStatus:nu,setFilterStatus:Ul,filterAssignees:Np,setFilterAssignees:jp,filterAssigneesAllSelected:Lm,setFilterAssigneesAllSelected:sl,filterTaxonomies:_c,setFilterTaxonomies:au,sortBy:Tc,setSortBy:xc,sortOrder:su,setSortOrder:Kt,hasInitedFilters:Dp,setHasInitedFilters:Om,lastUsedCategory:Wl,setLastUsedCategory:Mo,taskforceAgentId:Nm,setTaskforceAgentId:jm,taskforceAgentConversationId:ru,setTaskforceAgentConversationId:Ic,taskforceAgentConversationByAgentId:$l,setTaskforceAgentConversationByAgentId:yy}),jy=o.useCallback(C=>{const Q=C.runtimeMode==="cloud"?"cloud":"local",se=!!C.authRequiredForApi,X=typeof C.userId=="string"&&C.userId.trim().length>0?C.userId.trim():"anonymous",We=Q==="cloud"&&X!=="anonymous",Je=We||Kl.current,tt=ll.current;if(we(Q),gr(se),We&&(lr(!0),Lr(X),or(!1),tt||Qr(!0)),typeof C.workspaceId=="string"&&C.workspaceId.trim().length>0){const Ps=C.workspaceId.trim();if(Q==="local"){const yo=String(wt.current||"").trim()||"default";cn(Ps,{skipTransitionReset:!un&&yo==="default"})}else Ar(Ps)}or(Q==="cloud"&&se?!Je:!1),C.setupState&&typeof C.setupState=="object"?pn(C.setupState):pn(null),C.runtimeCapabilities&&typeof C.runtimeCapabilities=="object"?st(C.runtimeCapabilities):st(null),Jt(!!C.realtimeSyncEnabled);const Ht=String(C.realtimeSyncFlagSource||"").trim().toLowerCase();yr(Ht==="env"||Ht==="settings"||Ht==="default"?Ht:"unknown"),typeof C.shortcut=="string"&&C.shortcut.trim().length>0&&Pr(C.shortcut);const ur=ep(C.theme);ur&&G(ur);const Tr=ep(C.globalTheme);Tr&&Ne(Tr),typeof C.themeUseGlobalDefault=="boolean"&&fe(C.themeUseGlobalDefault);const Br=C.runtimeMode==="cloud"?"cloud":"local";typeof C.projectRoot=="string"?De(C.projectRoot):Br==="cloud"&&De(""),typeof C.tenantId=="string"?le(C.tenantId.trim()):Br==="cloud"&&le("");const Wr=Br==="cloud"?String(C.projectName||"").trim():C.projectName||C.paths?.projectName||"";(String(Wr||"").trim().length>0||Br==="cloud")&&Et(Wr),typeof C.mcpScript=="string"?et(C.mcpScript):Br==="cloud"&&et(""),typeof C.hostRoot=="string"?Jr(C.hostRoot):Br==="cloud"&&Jr(""),typeof C.jsonBackupEnabled=="boolean"&&Ca(C.jsonBackupEnabled),typeof C.globalJsonBackupEnabled=="boolean"&&Ha(C.globalJsonBackupEnabled),typeof C.jsonBackupUseGlobalDefault=="boolean"&&Ms(C.jsonBackupUseGlobalDefault);const zn=C?.schedulePreferences?.weekStartsOn;(zn==="sunday"||zn==="monday")&&xn(zn),typeof C.manualComplexityEnabled=="boolean"&&An(C.manualComplexityEnabled),typeof C.checklistDropdownEnabled=="boolean"?Ia(C.checklistDropdownEnabled):Ia(!0),typeof C.showTaskCardStatusLabel=="boolean"?Wn(C.showTaskCardStatusLabel):Wn(!1),typeof C.showTaskCardDescription=="boolean"?oa(C.showTaskCardDescription):oa(!0),typeof C.showTaskCardAttachments=="boolean"?ga(C.showTaskCardAttachments):ga(!0),typeof C.showTaskCardChecklistProgress=="boolean"?Da(C.showTaskCardChecklistProgress):Da(!0),typeof C.showTaskCardLatestActivity=="boolean"?ia(C.showTaskCardLatestActivity):ia(!0),typeof C.tintTaskCardActivityBackground=="boolean"?ut(C.tintTaskCardActivityBackground):ut(!1)},[Ar,cn,un,wt]),qm=o.useCallback(async()=>{const C=typeof performance<"u"?performance.now():Date.now();try{const Q=await ba("/api/taskforce/version",void 0,Wf);if(!Q.ok)return;const se=await Q.json().catch(()=>({}));se?.build&&typeof se.build=="object"&&br({version:String(se.build.version||""),gitSha:se.build.gitSha?String(se.build.gitSha):null,buildTime:se.build.buildTime?String(se.build.buildTime):null,deployId:se.build.deployId?String(se.build.deployId):null}),_r("build_info_loaded",{durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-C)})}catch(Q){zs(Q)&&_r("build_info_timeout",{durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-C)})}},[ba,zs]),{fetchReferenceData:ku,fetchConfig:go,fetchWorkspaces:Jl,fetchAssigneeOptions:vu,switchWorkspace:Ys,resolveWorkspaceAfterAuth:Gp,retryBootstrapChecks:wu,runCloudBootstrap:bu}=Fj({shouldDeferProtectedApiCalls:wn,shouldBlockProtectedApiCalls:dt,getWorkspaceRequestState:Or,isWorkspaceRequestStale:Yr,isWorkspaceEpochStale:ra,isAbortError:Gn,isBootstrapTimeoutError:zs,fetchWithTimeout:ba,handleUnauthorized:Nt,applyBootstrapConfig:jy,loadPersistedUiState:Ey,fetchBuildInfo:qm,markBootstrapPhase:Go,markBootstrapStalled:yc,fetchInitiativeTemplates:so,setReferenceDataLoaded:Wi,setCustomCategories:Us,setCustomTypes:xo,setPriorities:Kn,setTaxonomies:kc,setTaxonomyDisplayLabels:Oi,setConfigLoaded:is,hasLoadedUiStateRef:Vp,currentWorkspaceIdRef:wt,referenceDataRequestRef:Lo,referenceDataAbortRef:ea,bootstrapConfigAbortRef:vs,workspaceListAbortRef:ta,assigneeOptionsAbortRef:rn,workspaceListHydratedRef:Zl,setAvailableWorkspaces:Rt,runtimeMode:z,applyResolvedWorkspaceId:Ar,workspaceSwitchingEnabled:vt,authSessionResolved:Bt,isAuthenticated:Dt,authUserId:Rr,authUserAvatarUrl:$t,setHydratedWorkspaceRole:xt,setAssigneeOptions:nr,setAssigneeOptionsLoaded:M,commitCurrentWorkspaceId:(C,Q)=>{Gr.current=C,cn(C,Q),Q?.clearExplicitSelection!==!1&&(Gr.current=null)},currentWorkspaceId:ct,workspaceSelectionScope:mt,abortWorkspaceScopedRequests:Yt,setWorkspaceBootstrapPending:an,checkAuthSession:jn,lastConfigRefreshKeyRef:Fp,lastAssigneeOptionsLoadKeyRef:ql,lastWorkspaceSyncStateLoadKeyRef:Yl,lastTaskSurfaceLoadKeyRef:qs,lastSettingsSurfaceLoadKeyRef:us,isOpen:Ue,activeTab:Te,showArchive:He,taskScope:me,settingsSection:Pe,workspaceBootstrapPending:ar,fetchTasks:ds,fetchPlanningEntities:Nr,refreshTaskCollections:gi,loadWorkspaceSyncState:Rm,switchLocalCoordinatorWorkspace:Ip,hasBootstrappedDataRef:Up}),Dc=o.useCallback(async()=>{await jn(),await go()},[jn,go]);o.useEffect(()=>{if(!un||ar)return;const C=`${z}:${Dt?"auth":"guest"}:${ct}:${$t||"no-avatar"}`;O&&ql.current===C||(ql.current=C,vu())},[O,$t,un,ct,vu,Dt,z,ar]),o.useEffect(()=>{if(!Bt||!Dt)return;const C=String(Rr||"").trim();if(!C||C==="anonymous")return;const Q=String($t||"").trim()||null;nr(se=>{let X=!1;const We=se.map(Je=>Je.kind!=="member"||String(Je.value||"").trim()!==C||(typeof Je.avatarUrl=="string"&&Je.avatarUrl.trim().length>0?Je.avatarUrl.trim():null)===Q?Je:(X=!0,{...Je,avatarUrl:Q}));return X?We:se})},[Bt,$t,Rr,Dt]);const Dy=o.useMemo(()=>vt?u.find(Q=>Q.id===ct)?.role??null:vr,[u,ct,vr,vt]);o.useEffect(()=>{Dt||xt(null)},[Dt]);const My=o.useCallback(async()=>{en(null);const C=await bu({reason:"post-plans",ignoreAuthGuard:!0,tasksSilent:!0});return C.authenticated?C.success?C.workspaceSetupRequired?{success:!0,destination:"setup"}:{success:!0,destination:"app"}:{success:!1,destination:"app",error:C.error||"Unable to resolve workspace after plan selection.",code:C.code}:{success:!1,destination:"login",error:C.error||"Sign in required.",code:C.code||"AUTH_REQUIRED"}},[bu]),Ai=o.useCallback(async C=>{const Q=C?.reason||"retry",se=typeof C?.preferredWorkspaceId=="string"?C.preferredWorkspaceId.trim():"",X=C?.allowCommercialGate===!0;if(se&&vt){if(!await jn({force:!0}))return await go({ignoreAuthGuard:!0}),{success:!1,error:"Sign in required.",code:"AUTH_REQUIRED"};const tt=await Gp({preferredWorkspaceId:se});if(!tt.success)return await go({ignoreAuthGuard:!0}),{success:!1,error:tt.error||"Unable to resolve workspace access.",code:tt.code};if(tt.workspaceSetupRequired)return await go({ignoreAuthGuard:!0}),{success:!0,workspaceSetupRequired:!0}}const We=await bu({reason:Q,ignoreAuthGuard:!0,tasksSilent:!0});return We.authenticated?We.success?We.workspaceSetupRequired?X?{success:!0,workspaceSetupRequired:!1}:{success:!0,workspaceSetupRequired:!0}:(X||El({preferCloudOnFirstSync:!0}),{success:!0,workspaceSetupRequired:!1}):{success:!1,error:We.error||"Unable to resolve workspace access.",code:We.code}:{success:!1,error:We.error||"Sign in required.",code:We.code||"AUTH_REQUIRED"}},[jn,go,Gp,bu,El,vt]),Ly=o.useCallback(async(C,Q)=>{if(!vt)return{success:!1,error:"Workspace management is unavailable in local mode.",code:"WORKSPACE_MANAGEMENT_DISABLED"};const se=String(C||"").trim();if(!se)return{success:!1,error:"Workspace name is required."};try{const X=await fetch("/api/taskforce/workspaces",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({name:se,description:typeof Q=="string"?Q:void 0})}),We=await X.json().catch(()=>({}));if(!X.ok||We?.success===!1)return{success:!1,error:We?.error||`Failed to create workspace (${X.status})`,code:We?.code};const Je=We?.workspace;if(await Jl(),Je?.id){const tt=await Ys(Je.id);if(!tt.success)return{success:!1,error:tt.error||"Workspace created but failed to activate.",code:tt.code}}return{success:!0,workspace:Je}}catch{return{success:!1,error:"Failed to create workspace."}}},[Jl,Ys,vt]),Su=o.useCallback(async C=>{if(!vt)return{success:!1,error:"Workspace management is unavailable in local mode.",code:"WORKSPACE_MANAGEMENT_DISABLED"};const Q=String(C||"").trim();if(!Q)return{success:!1,error:"workspaceId is required.",code:"WORKSPACE_ID_REQUIRED"};try{const se=await fetch(`/api/taskforce/workspaces/${encodeURIComponent(Q)}`,{method:"DELETE",credentials:"include"}),X=await se.json().catch(()=>({}));if(!se.ok||X?.success===!1)return{success:!1,error:X?.error||`Failed to delete workspace (${se.status})`,code:X?.code};await jn({force:!0}),await Promise.all([go(),Jl()]);const We=typeof X?.nextWorkspaceId=="string"?X.nextWorkspaceId.trim():"";return We&&cn(We),{success:!0,nextWorkspaceId:We||void 0,workspaceSetupRequired:X?.workspaceSetupRequired===!0,cleanupWarnings:Array.isArray(X?.cleanupWarnings)?X.cleanupWarnings.map(Je=>String(Je||"")):[]}}catch{return{success:!1,error:"Failed to delete workspace."}}},[jn,cn,go,Jl,vt]),dl=o.useCallback(async C=>{const Q=C==="operations"?"operations":"core";try{const se=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({setup:{mode:Q}})}),X=await se.json().catch(()=>({}));return!se.ok||X?.success===!1?!1:(await Dc(),!0)}catch{return!1}},[Dc]),Ym=o.useCallback(async C=>{const Q=String(C?.name||"").trim(),se=typeof C?.workspaceId=="string"?C.workspaceId.trim():"";if(!Q)return{success:!1,error:"Workspace name is required.",code:"WORKSPACE_NAME_REQUIRED"};try{const X=await fetch("/api/taskforce/workspace-profile",{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-runtime-mode":z},credentials:"include",body:JSON.stringify({workspaceId:se&&se!=="default"?se:void 0,name:Q,description:typeof C.description=="string"?C.description:void 0,allowCreate:!0})}),We=await X.json().catch(()=>({}));if(!X.ok||We?.success===!1)return{success:!1,error:We?.error||`Failed to save workspace (${X.status})`,code:We?.code};const Je=String(We?.workspace?.id||"").trim();if(Je&&(cn(Je),await new Promise(tt=>window.setTimeout(tt,0)),z==="cloud"&&Dt&&Je!==ct)){const tt=await Ys(Je);if(!tt.success)return{success:!1,error:tt.error||"Workspace saved but failed to activate session workspace.",code:"WORKSPACE_SWITCH_FAILED"}}return await Dc(),{success:!0,workspaceId:Je||void 0}}catch{return{success:!1,error:"Failed to save workspace profile."}}},[cn,Dc,z,Dt,ct,Ys]),Oy=o.useCallback(async(C,Q)=>{if(!F)return{success:!1,error:"Cloud auth endpoint is not configured."};const se=C.trim().toLowerCase(),X=Q;if(!se||!X)return{success:!1,error:"Email and password are required."};try{const We=await fetch(H("/api/taskforce/auth/login"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(xR({email:se,password:X,activeWorkspaceId:wt.current}))}),Je=await We.json().catch(()=>({}));if(!We.ok||!Je?.success)return{success:!1,error:Je?.error||"Sign in failed.",code:Je?.code};Nn("");const tt=await Ai();return tt.success?(xS(),{success:!0,workspaceSetupRequired:tt.workspaceSetupRequired===!0}):{success:!1,error:tt.error||"Unable to resolve workspace after sign in.",code:tt.code}}catch{return{success:!1,error:"Sign in failed."}}},[H,F,wt,Ai]),Zm=o.useCallback((C,Q,se)=>{let X="/";try{const Je=new URL(String(Q||"/"),"https://taskforce.local");Je.origin==="https://taskforce.local"&&String(Q||"/").startsWith("/")&&!String(Q||"/").startsWith("//")&&(X=`${Je.pathname}${Je.search}${Je.hash}`)}catch{X="/"}let We=`/api/taskforce/auth/oauth/${encodeURIComponent(C)}/start?return_to=${encodeURIComponent(X)}`;se&&(We+=`&invite_token=${encodeURIComponent(se)}`),window.location.href=H(We)},[H]),By=o.useCallback(async(C,Q,se)=>{if(!F)return{success:!1,error:"Cloud auth endpoint is not configured."};const X=C.trim().toLowerCase(),We=Q;if(!X||!We)return{success:!1,error:"Email and password are required."};try{const Je=await fetch(H("/api/taskforce/auth/register"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:X,password:We,...typeof se?.displayName=="string"&&se.displayName.trim()?{displayName:se.displayName.trim()}:{},...typeof se?.planId=="string"&&se.planId.trim()?{planId:se.planId.trim()}:{},...typeof se?.planVersionId=="string"&&se.planVersionId.trim()?{planVersionId:se.planVersionId.trim()}:{},...typeof se?.interval=="string"&&se.interval.trim()?{interval:se.interval.trim()}:{}})}),tt=await Je.json().catch(()=>({}));if(!Je.ok||!tt?.success)return{success:!1,error:tt?.error||"Create account failed.",code:tt?.code,verificationRequired:!!tt?.verificationRequired,verificationToken:typeof tt?.verificationToken=="string"?tt.verificationToken:void 0,emailSent:tt?.emailSent!==!1,emailError:typeof tt?.emailError=="string"?tt.emailError:void 0};const Ht=tt?.planSelectionRequired===!0,ur=tt?.checkoutPending===!0,Tr=typeof tt?.commercialState=="string"?tt.commercialState:null,Br=!!tt?.verificationRequired;if(!Br){if(Nn(""),!!(Ht||ur||Tr==="pending_plan_selection"||Tr==="checkout_pending"))return await jn({force:!0})?{success:!0,workspaceSetupRequired:!1,planSelectionRequired:Ht,checkoutPending:ur,commercialState:Tr,verificationRequired:Br,verificationToken:typeof tt?.verificationToken=="string"?tt.verificationToken:void 0,emailSent:tt?.emailSent!==!1,emailError:typeof tt?.emailError=="string"?tt.emailError:void 0}:{success:!1,error:"Unable to resolve workspace after registration.",code:"AUTH_REQUIRED"};const zn=await Ai({allowCommercialGate:!1});return zn.success?{success:!0,workspaceSetupRequired:zn.workspaceSetupRequired===!0,planSelectionRequired:Ht,checkoutPending:ur,commercialState:Tr,verificationRequired:Br,verificationToken:typeof tt?.verificationToken=="string"?tt.verificationToken:void 0,emailSent:tt?.emailSent!==!1,emailError:typeof tt?.emailError=="string"?tt.emailError:void 0}:{success:!1,error:zn.error||"Unable to resolve workspace after registration.",code:zn.code}}return{success:!0,workspaceSetupRequired:!!tt?.workspaceSetupRequired,planSelectionRequired:Ht,checkoutPending:ur,commercialState:Tr,verificationRequired:Br,verificationToken:typeof tt?.verificationToken=="string"?tt.verificationToken:void 0,emailSent:tt?.emailSent!==!1,emailError:typeof tt?.emailError=="string"?tt.emailError:void 0}}catch{return{success:!1,error:"Create account failed."}}},[jn,H,F,Ai]),Wy=o.useCallback(async C=>{if(!F)return{success:!1,error:"Cloud auth endpoint is not configured."};const Q=String(C.displayName||"").trim(),se=typeof C.avatarDraftId=="string"?C.avatarDraftId.trim():"",X=C.clearAvatar===!0;if(!Q)return{success:!1,error:"Display name is required."};try{const We=await fetch(H("/api/taskforce/auth/profile"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({displayName:Q,...se?{avatarDraftId:se}:{},...X?{clearAvatar:!0}:{}})}),Je=await We.json().catch(()=>({}));if(!We.ok||!Je?.success)return{success:!1,error:Je?.error||"Failed to update profile.",code:Je?.code};const tt={userId:typeof Je?.profile?.userId=="string"?Je.profile.userId:Rr,email:typeof Je?.profile?.email=="string"?Je.profile.email:rt,displayName:typeof Je?.profile?.displayName=="string"?Je.profile.displayName:null,avatarUrl:typeof Je?.profile?.avatarUrl=="string"?Je.profile.avatarUrl:null};return At(tt.displayName||""),Ct(tt.avatarUrl||""),{success:!0,profile:tt}}catch{return{success:!1,error:"Failed to update profile."}}},[H,F,rt,Rr]),$y=o.useCallback(async C=>{if(!F)return{success:!1,error:"Cloud auth endpoint is not configured."};const Q=C.trim().toLowerCase();if(!Q)return{success:!1,error:"Email is required."};try{const se=await fetch(H("/api/taskforce/auth/verify-email/request"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:Q})}),X=await se.json().catch(()=>({}));return!se.ok||!X?.success?{success:!1,error:X?.error||"Failed to request verification email.",code:X?.code}:{success:!0,verificationToken:X?.verificationToken??null,emailSent:X?.emailSent!==!1,deliveryAttempted:X?.deliveryAttempted===!0||typeof X?.verificationToken=="string"&&X.verificationToken.trim().length>0,emailError:typeof X?.emailError=="string"?X.emailError:void 0}}catch{return{success:!1,error:"Failed to request verification email."}}},[H,F]),Fy=o.useCallback(async C=>{if(!F)return{success:!1,error:"Cloud auth endpoint is not configured."};const Q=C.trim();if(!Q)return{success:!1,error:"Token is required."};try{const se=await fetch(H("/api/taskforce/auth/verify-email/confirm"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:Q})}),X=await se.json().catch(()=>({}));return!se.ok||!X?.success?{success:!1,error:X?.error||"Verification failed.",code:X?.code}:{success:!0}}catch{return{success:!1,error:"Verification failed."}}},[H,F]),Uy=o.useCallback(async C=>{if(!F)return{success:!1,error:"Cloud auth endpoint is not configured."};const Q=C.trim().toLowerCase();if(!Q)return{success:!1,error:"Email is required."};try{const se=await fetch(H("/api/taskforce/auth/password-reset/request"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:Q})}),X=await se.json().catch(()=>({}));return!se.ok||!X?.success?{success:!1,error:X?.error||"Failed to request password reset.",code:X?.code}:{success:!0,resetToken:X?.resetToken??null,emailSent:X?.emailSent!==!1,deliveryAttempted:X?.deliveryAttempted===!0||typeof X?.resetToken=="string"&&X.resetToken.trim().length>0,emailError:typeof X?.emailError=="string"?X.emailError:void 0}}catch{return{success:!1,error:"Failed to request password reset."}}},[H,F]),zy=o.useCallback(async(C,Q)=>{if(!F)return{success:!1,error:"Cloud auth endpoint is not configured."};const se=C.trim(),X=Q;if(!se||!X)return{success:!1,error:"Token and password are required."};try{const We=await fetch(H("/api/taskforce/auth/password-reset/confirm"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:se,password:X})}),Je=await We.json().catch(()=>({}));return!We.ok||!Je?.success?{success:!1,error:Je?.error||"Failed to reset password.",code:Je?.code}:{success:!0}}catch{return{success:!1,error:"Failed to reset password."}}},[H,F]),Ea=o.useCallback(async C=>{if(!F)return{success:!1,error:"Cloud auth endpoint is not configured."};const Q=C.trim();if(!Q)return{success:!1,error:"Token is required."};try{const se=await fetch(H("/api/taskforce/auth/invite/inspect"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:Q})}),X=await se.json().catch(()=>({}));return!se.ok||!X?.success?{success:!1,error:X?.error||"Invite inspection failed.",code:X?.code,state:X?.state}:{success:!0,state:X?.state,email:typeof X?.email=="string"?X.email:void 0,workspaceId:typeof X?.workspaceId=="string"?X.workspaceId:void 0,inviteeKind:X?.inviteeKind==="existing_user"?"existing_user":"new_user",passwordRequired:X?.passwordRequired===!0,inviteeState:X?.inviteeState==="existing_account"?"existing_account":"pending_setup",availableMethods:Array.isArray(X?.availableMethods)?X.availableMethods:[]}}catch{return{success:!1,error:"Invite inspection failed."}}},[H,F]),Kp=o.useCallback(async(C,Q)=>{if(!F)return{success:!1,error:"Cloud auth endpoint is not configured."};const se=C.trim(),X=Q;if(!se||!X)return{success:!1,error:"Token and password are required."};try{const We=await fetch(H("/api/taskforce/auth/invite/accept"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:se,password:X})}),Je=await We.json().catch(()=>({}));if(!We.ok||!Je?.success)return{success:!1,error:Je?.error||"Invite acceptance failed.",code:Je?.code};Nn("");const tt=typeof Je?.workspaceId=="string"?Je.workspaceId:null;if(tt&&vt){const ur=await Ys(tt,{hydrate:!1});if(!ur.success)return{success:!1,error:ur.error||"Unable to resolve workspace after invite acceptance.",code:ur.code}}const Ht=await Ai({preferredWorkspaceId:tt});return Ht.success?(tt&&wt.current!==tt&&cn(tt,{clearExplicitSelection:!1}),{success:!0,workspaceSetupRequired:Ht.workspaceSetupRequired===!0}):{success:!1,error:Ht.error||"Unable to resolve workspace after invite acceptance.",code:Ht.code}}catch{return{success:!1,error:"Invite acceptance failed."}}},[cn,H,F,wt,Ai,Ys,vt]),Jm=o.useCallback(async C=>{if(!F)return{success:!1,error:"Cloud auth endpoint is not configured."};const Q=C.trim();if(!Q)return{success:!1,error:"Token is required."};try{const se=await fetch(H("/api/taskforce/auth/invite/join"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:Q})}),X=await se.json().catch(()=>({}));if(!se.ok||!X?.success)return{success:!1,error:X?.error||"Invite join failed.",code:X?.code};Nn("");const We=typeof X?.workspaceId=="string"?X.workspaceId:null;if(We&&vt){const tt=await Ys(We,{hydrate:!1});if(!tt.success)return{success:!1,error:tt.error||"Unable to resolve workspace after invite join.",code:tt.code}}const Je=await Ai({preferredWorkspaceId:We});return Je.success?(We&&wt.current!==We&&cn(We,{clearExplicitSelection:!1}),{success:!0,workspaceSetupRequired:Je.workspaceSetupRequired===!0}):{success:!1,error:Je.error||"Unable to resolve workspace after invite join.",code:Je.code}}catch{return{success:!1,error:"Invite join failed."}}},[cn,H,F,wt,Ai,Ys,vt]),Xm=o.useCallback(async()=>{if(!F)return{success:!1,error:"Cloud auth not configured."};try{const C=await fetch(H("/api/taskforce/auth/login-methods"),{credentials:"include"}),Q=await C.json().catch(()=>({}));return!C.ok||!Q?.success?{success:!1,error:Q?.error||"Failed to fetch login methods."}:{success:!0,methods:Array.isArray(Q?.methods)?Q.methods:[]}}catch{return{success:!1,error:"Failed to fetch login methods."}}},[H,F]),Qm=o.useCallback(async C=>{if(!F)return{success:!1,error:"Cloud auth not configured."};try{const Q=await fetch(H(`/api/taskforce/auth/login-methods/${encodeURIComponent(C)}`),{method:"DELETE",credentials:"include"}),se=await Q.json().catch(()=>({}));return!Q.ok||!se?.success?{success:!1,error:se?.error||"Unlink failed.",code:se?.code}:{success:!0}}catch{return{success:!1,error:"Unlink failed."}}},[H,F]),qp=o.useCallback(async C=>{if(!F)return{success:!1,error:"Cloud auth not configured."};try{const Q=await fetch(H("/api/taskforce/auth/login-methods/password"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({password:C})}),se=await Q.json().catch(()=>({}));return!Q.ok||!se?.success?{success:!1,error:se?.error||"Failed to add password.",code:se?.code}:{success:!0}}catch{return{success:!1,error:"Failed to add password."}}},[H,F]),eg=o.useCallback(async(C,Q)=>{if(!F)return{success:!1,error:"Cloud auth not configured."};try{const se=await fetch(H("/api/taskforce/auth/password/change"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({currentPassword:C,newPassword:Q})}),X=await se.json().catch(()=>({}));return!se.ok||!X?.success?{success:!1,error:X?.error||"Failed to change password.",code:X?.code}:(await jn({force:!0}),xS(),{success:!0})}catch{return{success:!1,error:"Failed to change password."}}},[H,F,jn]),Au=o.useCallback((C,Q)=>{const se=Q&&/^\/[A-Za-z0-9_\-./?=&%]*$/.test(Q)?Q:"/",X=`/api/taskforce/auth/oauth/${encodeURIComponent(C)}/start?flow=link&return_to=${encodeURIComponent(se)}`;window.location.href=H(X)},[H]),tg=o.useCallback(()=>{Yt(),Lo.current=null,ql.current="",Fp.current="",Yl.current="",qs.current="",us.current="",jc({clearLoaded:!0}),Wi(!1),nr(xl()),M(!1),vn([]),sr([]),Ln([]),qn([]),kn([]),$s([]),ka(Vk()),Fn(!1)},[Yt,jc,Ln,sr]),Xi=o.useCallback(async()=>{try{F&&await fetch(H("/api/taskforce/auth/logout"),{method:"POST",credentials:"include"})}catch{}finally{if(Yt(),yn.current+=1,Ge.current=null,ir.current=!1,Kr.current=Date.now(),lr(!1),Qr(!0),Lr("anonymous"),Me(""),Nf(null),pt(""),At(""),Ct(""),Zn("disconnected"),Ya(null),Ot(!0),Et(""),is(!1),Wi(!1),pn(null),Gt("idle"),en(null),jc({clearLoaded:!0}),z!=="local"&&Yb(mt),or(z==="cloud"&&Mt),cn("default"),Rt([]),Zl.current=!1,xt(null),z==="local"){await Promise.allSettled([go({ignoreAuthGuard:!0}),ds(!0,{ignoreAuthGuard:!0}),Nr({ignoreAuthGuard:!0}),ku({ignoreAuthGuard:!0,force:!0})]);return}Up.current=!1,tg()}},[Yt,Mt,Yb,cn,H,F,mt,z,go,Nr,ku,ds,tg]),Mc=o.useRef(null),ps=o.useCallback(async(C,Q,se)=>{if(!globalThis.crypto?.randomUUID)throw new Error("Secure initiative operation identity generation is unavailable.");const X=se||`operation-${globalThis.crypto.randomUUID()}`,We={...Q,headers:{...Q.headers||{},"x-taskforce-operation-id":X}};try{return await fetch(C,We)}catch{return fetch(C,We)}},[]),da=o.useMemo(()=>OD(),[]),Cu=o.useCallback(async C=>{try{const Q=JSON.stringify(C);if(Mc.current?.requestBody!==Q){if(!globalThis.crypto?.randomUUID)throw new Error("Secure initiative operation identity generation is unavailable.");Mc.current={requestBody:Q,operationId:`operation-${globalThis.crypto.randomUUID()}`}}const se=await ps("/api/taskforce/initiative-templates/create",{method:"POST",headers:{"Content-Type":"application/json"},body:Q},Mc.current.operationId),X=await se.json().catch(()=>({}));return!se.ok||!X?.success?{success:!1,error:X?.error||`Create failed (${se.status})`}:(Mc.current=null,await ds(!0),{success:!0,result:X?.results})}catch(Q){return{success:!1,error:Q.message}}},[ds,ps]),Xl=o.useCallback(async C=>{if(!globalThis.crypto?.randomUUID)throw new Error("Secure initiative identity generation is unavailable.");const Q={...C||{},id:C?.id||`initiative-${globalThis.crypto.randomUUID()}`,createdAt:C?.createdAt||new Date().toISOString()},se=await ps("/api/taskforce/initiative",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Q)}),X=await se.json().catch(()=>({}));if(!se.ok)throw new Error(X?.error||`Failed to create initiative (${se.status})`);return await Nr(),qn(We=>ni(We,X)),X},[Nr,ps]),Hy=o.useCallback(async(C,Q)=>{const se=await ps(`/api/taskforce/initiative/${encodeURIComponent(C)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(Q||{})}),X=await se.json().catch(()=>({}));if(!se.ok)throw new Error(X?.error||`Failed to update initiative (${se.status})`);return await Nr(),qn(We=>ni(We,X)),X},[Nr,ps]),Yp=o.useCallback(async(C,Q,se)=>{const X=await ps(`/api/taskforce/${C}/${encodeURIComponent(Q)}/identity`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(se)}),We=await X.json().catch(()=>({}));if(!X.ok)throw new Error(We?.error||`Failed to update ${C} identity (${X.status})`);return C==="initiative"?qn(Je=>ni(Je,We)):kn(Je=>ni(Je,We)),Nr(),We},[Nr,ps]),Ql=o.useCallback(()=>{Nr()},[Nr]),Zp=o.useCallback(async C=>{const Q=await ps(`/api/taskforce/initiative/${encodeURIComponent(C)}/archive`,{method:"POST"}),se=await Q.json().catch(()=>({}));if(!Q.ok)throw new Error(se?.error||`Failed to archive initiative (${Q.status})`);return qn(X=>ni(X,se)),Ql(),se},[Ql,ps]),ul=o.useCallback(async C=>{const Q=await ps(`/api/taskforce/initiative/${encodeURIComponent(C)}/unarchive`,{method:"POST"}),se=await Q.json().catch(()=>({}));if(!Q.ok)throw new Error(se?.error||`Failed to unarchive initiative (${Q.status})`);return qn(X=>ni(X,se)),Ql(),se},[Ql,ps]),Zs=o.useCallback(async C=>{const Q=await da.prepareCreate(wt.current||"default",C||{}),se=await _f("/api/taskforce/workstream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Q.body)},Q.operationId),X=!se.ok&&await If(se),We=await se.json().catch(()=>({}));if(!se.ok){X&&await da.abandonCreate(Q.fingerprint,Q.operationId);const Je=We?.retryAt?` Retry after ${We.retryAt}.`:"";throw new Error(`${We?.error||`Failed to create workstream (${se.status})`}${Je}`)}if(We?.id!==Q.body.id)throw new Error("Created workstream identity did not match the retained request identity.");return await da.confirmCreate(Q.fingerprint,Q.operationId),await Nr(),kn(Je=>{const tt=LD(Je,We);return tt?ni(Je,tt):Je}),We},[wt,Nr,da]),pl=o.useCallback(async(C,Q)=>{const se=`/api/taskforce/workstream/${encodeURIComponent(C)}`,X=Q||{},We=Pn.find(Br=>Br.id===C),Je=We?{updatedAt:We.updatedAt||null,initiativeId:We.initiativeId||null,ownerId:We.ownerId||null,isArchived:!!We.isArchived}:null,tt=await da.prepareMutation(wt.current||"default",se,X,Je),Ht=await _f(se,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(X)},tt.operationId),ur=!Ht.ok&&await If(Ht),Tr=await Ht.json().catch(()=>({}));if(!Ht.ok){ur&&await da.abandonMutation(tt.fingerprint,tt.operationId);const Br=Tr?.retryAt?` Retry after ${Tr.retryAt}.`:"";throw new Error(`${Tr?.error||`Failed to update workstream (${Ht.status})`}${Br}`)}if(Tr?.id!==C)throw new Error("Updated workstream identity did not match the requested workstream.");return await da.confirmMutation(tt.fingerprint,tt.operationId),await Nr(),kn(Br=>ni(Br,Tr)),Tr},[wt,Nr,da,Pn]),rg=o.useCallback(async(C,Q)=>{const se=`/api/taskforce/workstream/${encodeURIComponent(C)}/task-order`,X={taskIds:Q},We=Pn.find(Br=>Br.id===C),Je=await da.prepareMutation(wt.current||"default",se,X,{updatedAt:We?.updatedAt||null,workstreamId:C}),tt=await _f(se,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(X)},Je.operationId),Ht=!tt.ok&&await If(tt),ur=await tt.json().catch(()=>({}));if(!tt.ok){Ht&&await da.abandonMutation(Je.fingerprint,Je.operationId);const Br=ur?.retryAt?` Retry after ${ur.retryAt}.`:"";throw new Error(`${ur?.error||`Failed to reorder workstream tasks (${tt.status})`}${Br}`)}if(ur?.workstreamId!==C||!Array.isArray(ur?.taskIds))throw new Error("Reordered workstream task response did not match the request.");await da.confirmMutation(Je.fingerprint,Je.operationId);const Tr=new Map(ur.taskIds.map((Br,Wr)=>[Br,(Wr+1)*1024]));sr(Br=>Br.map(Wr=>Tr.has(Wr.id)?{...Wr,workstreamOrder:Tr.get(Wr.id)}:Wr)),await Nr()},[wt,Nr,da,Pn]),ng=o.useCallback(async C=>{const Q=`/api/taskforce/workstream/${encodeURIComponent(C)}/archive`,se=Pn.find(Ht=>Ht.id===C),X=await da.prepareMutation(wt.current||"default",Q,{},se?{updatedAt:se.updatedAt||null,isArchived:!!se.isArchived}:null),We=await _f(Q,{method:"POST"},X.operationId),Je=!We.ok&&await If(We),tt=await We.json().catch(()=>({}));if(!We.ok){Je&&await da.abandonMutation(X.fingerprint,X.operationId);const Ht=tt?.retryAt?` Retry after ${tt.retryAt}.`:"";throw new Error(`${tt?.error||`Failed to archive workstream (${We.status})`}${Ht}`)}if(tt?.id!==C)throw new Error("Archived workstream identity did not match the requested workstream.");return await da.confirmMutation(X.fingerprint,X.operationId),await Nr(),kn(Ht=>ni(Ht,tt)),tt},[wt,Nr,da,Pn]),Vy=o.useCallback(async C=>{const Q=`/api/taskforce/workstream/${encodeURIComponent(C)}/unarchive`,se=Pn.find(Ht=>Ht.id===C),X=await da.prepareMutation(wt.current||"default",Q,{},se?{updatedAt:se.updatedAt||null,isArchived:!!se.isArchived}:null),We=await _f(Q,{method:"POST"},X.operationId),Je=!We.ok&&await If(We),tt=await We.json().catch(()=>({}));if(!We.ok){Je&&await da.abandonMutation(X.fingerprint,X.operationId);const Ht=tt?.retryAt?` Retry after ${tt.retryAt}.`:"";throw new Error(`${tt?.error||`Failed to unarchive workstream (${We.status})`}${Ht}`)}if(tt?.id!==C)throw new Error("Unarchived workstream identity did not match the requested workstream.");return await da.confirmMutation(X.fingerprint,X.operationId),await Nr(),kn(Ht=>ni(Ht,tt)),tt},[wt,Nr,da,Pn]),Iu=o.useRef(!1);o.useEffect(()=>{ft(!0),!Iu.current&&(Iu.current=!0,jn())},[jn]),o.useEffect(()=>{R&&jn()},[R,jn]),o.useEffect(()=>{if(!F)return;let C=!1;const Q=new AbortController,se=typeof window<"u"?window.setTimeout(()=>Q.abort(),5e3):null;return fetch(H("/api/taskforce/auth/providers"),{credentials:"include",signal:Q.signal}).then(X=>X.ok?X.json():null).then(X=>{!C&&Array.isArray(X?.providers)&&Tt(X.providers)}).catch(()=>{}).finally(()=>{se!==null&&typeof window<"u"&&window.clearTimeout(se)}),()=>{C=!0,Q.abort()}},[F,H]),o.useEffect(()=>{if(z!=="local"||!Ae||typeof window>"u")return;const C=()=>{jn()},Q=()=>{document.visibilityState==="visible"&&C()};window.addEventListener("focus",C),window.addEventListener("online",C),document.addEventListener("visibilitychange",Q);const se=window.setInterval(C,3e4);return()=>{window.removeEventListener("focus",C),window.removeEventListener("online",C),document.removeEventListener("visibilitychange",Q),window.clearInterval(se)}},[z,Ae,jn]),o.useEffect(()=>{s&&s(Vt.length)},[Vt.length,s]);const ua=o.useMemo(()=>{const C=String(t||"").trim();return C?[String(n||"").trim(),C,String(r||"").trim()].join(":"):""},[r,t,n]),Xa=o.useRef(ua);Xa.current=ua;const ed=o.useRef(null),pa=o.useRef(null),fl=o.useRef(null),Lc=o.useRef(null),Ci=o.useRef(null),td=o.useRef(new Set),Oc=o.useRef(new Set),ml=o.useRef(new Map),Rs=o.useRef(null),ti=o.useRef(null),[ag,Ii]=o.useState(0);o.useEffect(()=>{const C=Lc.current;C&&ss.current?.ownerKey===C&&Ka(),Lc.current=null,ed.current=null,pa.current=null,fl.current=null,Ci.current=null,td.current.clear(),Oc.current.clear(),ml.current.clear(),Rs.current!==null&&typeof window<"u"&&(window.clearTimeout(Rs.current),Rs.current=null),ti.current!==null&&typeof window<"u"&&(window.clearTimeout(ti.current),ti.current=null),Ii(Q=>Q+1)},[Ka,ua]),o.useEffect(()=>()=>{Rs.current!==null&&typeof window<"u"&&(window.clearTimeout(Rs.current),Rs.current=null),ti.current!==null&&typeof window<"u"&&(window.clearTimeout(ti.current),ti.current=null)},[]);const Jp=o.useRef(!1);o.useEffect(()=>{if(!un)return;if(!Jp.current&&mn.length>0){Jp.current=!0;const Q=Wl,se=mn.some(X=>X.label===Q||X.value===Q);if(Q&&se){const X=mn.find(We=>We.label===Q||We.value===Q);zi(X?.value||Q)}else zi(cs(mn));return}const C=mn.some(Q=>Q.value===hi);mn.length>0&&!C&&zi(cs(mn))},[un,mn,hi,cs,Wl]),o.useEffect(()=>{if(!un||!Bi||mn.length===0)return;const C=X=>!mn.some(We=>We.value===X.category),Q=Vt.some(C),se=Ir.some(C);if(Q||se){const X=cs(mn);Q&&sr(We=>We.map(Je=>C(Je)?{...Je,category:X}:Je)),se&&Ln(We=>We.map(Je=>C(Je)?{...Je,category:X}:Je))}},[un,Bi,mn,Vt,Ir,cs]),o.useEffect(()=>{},[gi]);const Gy=o.useCallback(async()=>{await Eo(Dd(["active","archive","deleted","planning"],{ambiguous:!0}))},[Eo]);o.useEffect(()=>{if(typeof window>"u")return;const C=Q=>{const se=Q.detail;(String(se?.workspaceId||"").trim()||"default")===ct&&(se?.authoritativeTask||Eo(Dd(se?.affectedCollections?.length?se.affectedCollections:["active","archive"],{taskIds:se?.taskId?[se.taskId]:[]})))};return window.addEventListener($d,C),()=>{window.removeEventListener($d,C)}},[ct,Eo]);const rd=String(ct||"").trim(),Xp=String(Rr||"").trim(),sg=ae("/taskforce-ws"),Qp=!!(F&&z==="cloud"&&Bt&&Dt&&Xp&&Xp!=="anonymous"&&rd&&!vw(rd)&&sg);o.useEffect(()=>()=>{Nc.current!==null&&typeof window<"u"&&(window.clearTimeout(Nc.current),Nc.current=null)},[ct]);const Ky=o.useCallback(C=>{if(z!=="cloud")return;UI({workspaceId:rd,source:"realtime"});const Q=ND(C.type,C.invalidations);Q.collections.length!==0&&(Eo(Q),!(!Q.ambiguous||typeof window>"u")&&(Nc.current!==null&&window.clearTimeout(Nc.current),Nc.current=window.setTimeout(()=>{Nc.current=null,Eo(Q)},250)))},[rd,z,Eo]);fI({enabled:Qp,workspaceId:rd,websocketUrl:sg,onSignal:Ky,userId:Xp||void 0}),Hj({workspaceId:ct,isOpen:Ue,authBlocked:Zt,authRequiredForApi:Mt,isAuthenticated:Dt,canCallProtectedApi:Zr.canCallProtectedApi,shouldGateProtectedApiCalls:re,authSessionResolvedRef:ll,authRequiredForApiRef:uu,isAuthenticatedRef:Kl,dataVersionRef:cl,refreshTaskCollectionsForDataVersion:Gy,coordinatorDataVersion:Cp});const Qi=o.useMemo(()=>WD(Vt,Ir,Qt,Sr),[Vt,Ir,Qt,Sr]),gl=o.useMemo(()=>cr.map(C=>({...C.taskSnapshot,isDeleted:!0,deletedRecordId:C.id})),[cr]);o.useEffect(()=>{if(!(wn||dt)&&Ue&&!ar){if(Te==="tasks"){const C=`${ct}:${Te}:${He?"archive":"active"}:${me}`,Q=He||me==="archived",se=me==="deleted";if(!du.current){du.current=!0,qs.current=C,Q&&qa(!1),se&&Ks(!1);return}if(qs.current===C)return;qs.current=C,!Q&&!se&&ds(),Nr(),Q&&qa(!1),se&&Ks(!1);return}if(Te==="settings"){const C=`${ct}:${Te}:${Pe}`;if(us.current===C)return;us.current=C,go()}}},[ct,Ue,Te,Pe,He,me,ds,Nr,qa,Ks,go,wn,dt,ar]);const nd=o.useCallback(async(C="")=>{try{const Q=await fetch(`/api/taskforce/folders?path=${encodeURIComponent(C)}`);if(Q.ok){const se=await Q.json();xe(se.folders||[]),de(se.files||[]),at(C)}}catch(Q){console.error("[Taskforce] Failed to fetch folders:",Q)}},[]),ad=o.useCallback(C=>{const Q=[];if(C.path&&Q.push(C.path),C.paths&&C.paths.length>0)for(const se of C.paths)Q.includes(se)||Q.push(se);return Q},[]),{validatePaths:sd,handleUpdateCategory:od,handleSaveCategory:Js,handleAddPath:ec,handleUpdateCategoryIcon:hl,handleUpdateCategoryColor:og,handleRemovePath:ig,handleSelectPath:qy,handleRemoveCategory:ef,handleSaveType:Yy,handleRemoveType:id,handleUpdateType:tf,handleUpdateTaxonomies:cg,handleUpdatePriorities:_u,analyzeSystemTaxonomyPack:rf,handleApplySystemTaxonomyPack:Zy}=zN({activeCategories:mn,activeTab:Te,activeTypes:la,archivedTasks:Ir,browserTarget:Qe,category:hi,configLoaded:un,customCategories:wa,refreshTaskCollections:gi,fetchTasks:ds,filterCategories:Za,getCategoryPaths:ad,normalizePath:St,pathValidation:xs,setBrowserTarget:Ze,setCategory:zi,setCustomCategories:Us,setCustomTypes:xo,setFilterCategories:Qo,setPathValidation:To,setPriorities:Kn,setShowFolderBrowser:Ve,setTaxonomies:kc,tasks:Vt}),_i=o.useCallback(async C=>{const Q=Vs,se={...Q,...C};Oi(se);try{const X=await fetch("/api/taskforce/taxonomy-display-labels",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({displayLabels:C})});if(!X.ok)throw new Error(`Failed to save taxonomy display labels (${X.status})`);const We=await X.json().catch(()=>({}));We?.displayLabels&&typeof We.displayLabels=="object"&&Oi({...se,...We.displayLabels})}catch(X){console.error("[Taskforce] Failed to update taxonomy display labels",X),Oi(Q)}},[Vs]),Tu=o.useCallback(C=>{Te==="tasks"&&os.current&&ye(os.current.scrollTop),Le(C)},[Te]),nf=o.useRef(async()=>!0),af=o.useCallback(C=>{const Q={taskId:C.id,task:C,draft:Ek(C)};Is.current=Q,Di(Q),En.current=null,Ts(null)},[]),{handleNavigation:lg,handleClose:tc,resetForm:sf,resolveWorkstreamIdInput:cd,handleEdit:Bc,applyTaskToEditor:xu,handleOpenTaskById:of,returnToPreviousTask:Oo,clearReturnToParentTask:dg}=JN({activeCategories:mn,activeTypes:la,activeTab:Te,attachments:$p,checklistItems:qi,comments:tu,cancelTaskDetailLoad:Pl,description:Gi,editingTaskId:Sr,flushPendingAutoSave:()=>nf.current(),getDescriptionDraft:eu,getPreferredCategoryValue:cs,getTitleDraft:wi,lastUsedCategory:Wl,loadTaskDetail:$a,newCommentText:Ol,onTaskApplied:af,relationshipTasks:Qi,workstreams:Pn,showArchive:He,taxonomies:Gs,setActiveTab:Tu,setAssignee:ki,setAttachments:$m,setAttachmentsDirty:Si,setCategory:zi,setChecklistItems:Rp,setComments:Pp,setComplexity:yi,setDescription:Ll,setDueDate:po,setEditingTaskId:Cs,setError:Nn,setFormTaxonomies:Bl,setIsOpen:ft,setNewCommentText:bi,setPendingNavigation:As,setWorkstreamInput:vi,setPriority:Jo,setScheduledDate:Qd,setShowArchive:Fe,setStatus:Xd,setTaskReturnTrail:oo,setTitle:Ml,setType:Hi,setUnsavedModalOpen:Er,taskReturnTrail:pi,title:Vi}),rc=o.useCallback(()=>{const C=Xo.trim()?cd(Xo):null;return{title:wi(),description:eu(),category:typeof hi=="string"?hi:String(hi.label||""),type:typeof jo=="string"?jo:String(jo.label||""),priority:Jd,complexity:Number(lo)||3,status:nl,assignee:Ac,scheduledDate:uo,dueDate:Dl,workstreamId:C?.id||Xo.trim(),taxonomies:{...Yi},checklistItems:[...qi],attachments:Rc()}},[Ac,hi,qi,lo,Dl,Yi,Rc,eu,wi,Jd,cd,uo,nl,jo,Xo]);o.useEffect(()=>{const C=String(_o||"").trim();if(!Ja||!C)return;if(Sr===C){Yn(null);return}if(Oa||ar)return;const Q=tt=>tt.id===C||tt.id.endsWith(C);if(Qi.find(Q)){of(C),Yn(null);return}const X=String(wt.current||"default").trim()||"default",We=`${X}:${C}`;if(dn!==X&&!hc.has(We)){qa(!0).finally(()=>{(String(wt.current||"default").trim()||"default")===X&&xa(Ht=>Ht.has(We)?Ht:new Set(Ht).add(We))});return}const Je=gl.find(Q);if(Je){Bc(Je),Yn(null);return}if($n!==X){Ks(!0);return}Yn(null)},[dn,hc,$n,gl,Sr,qa,Ks,Bc,of,Oa,_o,Qi,Ja,ar]),o.useEffect(()=>{const C=String(t||"").trim();if(!C||!ua||ed.current===ua||!R||!un||!Ja||Oa||ar)return;const Q=String(n||"").trim(),se=String(wt.current||"default").trim()||"default",X=()=>{const ur=Lc.current;ur&&ss.current?.ownerKey===ur&&Ka(),Lc.current=null};if(Q&&Q!==se){if(pa.current===ua)return;if(z!=="cloud"||!vt){pa.current!==ua&&(pa.current=ua,ya("This task is unavailable or you do not have access to it.","info",12e3));return}if(!Bt||!Dt||Zt||fl.current===ua||ti.current!==null)return;const ur=ua,Tr=`${ur}:workspace`;fl.current=ur,Ys(Q).then(Br=>{if(Xa.current===ur&&!Br.success){const Wr=(ml.current.get(Tr)||0)+1;if(ml.current.set(Tr,Wr),Wr<2&&typeof window<"u"){ti.current=window.setTimeout(()=>{ti.current=null,Xa.current===ur&&Ii(Ps=>Ps+1)},500);return}pa.current=ur;const zn=`deep-link-workspace:${ur}`;Lc.current=zn,ya("This task is unavailable or you do not have access to it.","info",12e3,{label:"Retry",onAction:()=>{Xa.current===ur&&(Lc.current=null,pa.current=null,ml.current.delete(Tr),Ka(),Ii(Ps=>Ps+1))},ownerKey:zn})}}).finally(()=>{fl.current===ur&&(fl.current=null)});return}const We=ur=>{const Tr=ur.find(Wr=>Wr.id===C);if(Tr||Q)return Tr;const Br=ur.filter(Wr=>Wr.id.endsWith(C));return Br.length===1?Br[0]:void 0},Je=We(Qi);if(Je){X(),ed.current=ua,pa.current=null,Sr!==Je.id&&(Je.isArchived&&Fe(!0),Bc(Je));return}const tt=(ur,Tr,Br)=>{const Wr=`${ua}:${ur}`;if(Ci.current===Wr||Rs.current!==null)return;Ci.current=Wr;const zn=ua;Tr().then(Ps=>{if(Xa.current!==zn)return;if(Ps){Ii(Xs=>Xs+1);return}const yo=(ml.current.get(Wr)||0)+1;if(ml.current.set(Wr,yo),yo>=2){Br.add(zn),Ii(Xs=>Xs+1);return}typeof window<"u"&&(Rs.current=window.setTimeout(()=>{Rs.current=null,Xa.current===zn&&Ii(Xs=>Xs+1)},500))}).finally(()=>{Ci.current===Wr&&(Ci.current=null)})};if(dn!==se&&!td.current.has(ua)){tt("archive",()=>qa(!0),td.current);return}const Ht=We(gl);if(Ht){X(),ed.current=ua,pa.current=null,Bc(Ht);return}if($n!==se&&!Oc.current.has(ua)){tt("deleted",()=>Ks(!0),Oc.current);return}pa.current!==ua&&(pa.current=ua,ya("This task is unavailable or you do not have access to it.","info",12e3))},[dn,Zt,Bt,Ka,un,wt,ag,ua,$n,gl,Sr,qa,Ks,Bc,t,Dt,Oa,ya,Qi,n,R,z,Fe,Ys,Ja,ar,vt]);const Ti=Qj({enabled:v.syncV3TaskMetadataActivation&&z==="local",workspaceId:ct,isAuthenticated:Dt,dispatchEnabled:No}),Jy=dD({localRuntime:z==="local",enabled:v.syncV3TaskCreateActivation&&z==="local",workspaceId:ct,isAuthenticated:Dt,dispatchEnabled:No}),Ru=v.syncV3TaskStatusActivation&&z==="local",Xy=vD({enabled:Ru,workspaceId:ct,isAuthenticated:Dt,dispatchEnabled:No}),ug=AD({enabled:z==="local",workspaceId:ct,isAuthenticated:Dt,dispatchEnabled:No}),cf=v.syncV3TaskDeleteActivation&&z==="local",ld=_D({enabled:cf,workspaceId:ct,isAuthenticated:Dt,dispatchEnabled:No}),Wc=RD({enabled:cf,workspaceId:ct,isAuthenticated:Dt,dispatchEnabled:No}),Pu=o.useCallback(async(C,Q)=>{if(C!==Sr)return{handled:!1};const se=[...Vt,...Ir].find(Je=>Je.id===C);if(!se)return{handled:!1};const X=await $a(se,{force:!0,shouldCommit:()=>Is.current?.taskId===C});if(!X||Is.current?.taskId!==C)return{handled:!1};const We=Mi.current(X,"save");return{handled:!0,retryDetailRevision:We?.conflicts.length===0?X.detailRevision:void 0,retryPatch:We?.conflicts.length===0?Nk(X,We.merged):void 0}},[Ir,Sr,$a,Vt]),lf=o.useCallback(C=>{if(C.id===Sr){if(En.current?.taskId===C.id){Mi.current(C,"refresh");return}af(C)}},[af,Sr]),{copiedId:dd,handleDelete:yl,handleUpdateTask:ud,handleSetStatus:Eu,handleToggleComplete:Nu,handleToggleCancel:df,handleToggleInProgress:$c,handleToggleReview:uf,handleArchiveTask:Fc,handleBulkArchive:Qy,handleUnarchive:ju,handleRestoreDeletedTask:pg,handleRestoreSelectedDeletedTasks:Uc,handlePermanentlyDeleteDeletedTask:fg,handleEmptyDeletedTasks:mg,handleCopyId:gg,queueWorkspaceSyncFromAuthoritativeTaskState:ek}=Nj({tasks:Vt,archivedTasks:Ir,editingTaskId:Sr,editingTaskDetailRevision:Io?.taskId===Sr&&Io.task.detailRevision||null,setTasks:sr,setArchivedTasks:Ln,setDeletedTasks:vn,setError:Nn,resetForm:sf,setActiveTab:Tu,fetchTasks:ds,fetchArchive:qo,fetchDeletedTasks:kp,mergeTaskFromServer:ls,pushNotice:ya,cloudAuthConfigured:F,runtimeMode:z,isAuthenticated:Dt,workspaceCloudSyncEnabled:No,buildWorkspaceSyncSignature:hy,pushWorkspaceChangesToCloud:Yd,workspacePendingSignatureRef:_p,workspaceDeletedTaskIdsRef:xm,workspaceDeletedTaskWatermarksRef:Tp,mutateTaskMetadata:Ti,mutateTaskStatus:Xy,mutateTaskLifecycle:ug,mutateTaskDelete:ld,mutateTaskRestore:Wc,durableTaskMetadataActivationEnabled:v.syncV3TaskMetadataActivation&&z==="local",durableTaskStatusActivationEnabled:Ru,durableTaskDeleteActivationEnabled:cf,durableTaskHttpRootActivationEnabled:v.syncV3TaskCloudHttpRootActivation,workspaceId:ct,onTaskRevisionConflict:Pu,onTaskMutationAccepted:lf}),{resolveDraft:Du}=Ij(ct,Rr),tk=o.useCallback(async()=>{const C=Vl.current;Pc(),await Du({draftUploadId:C,resolution:"promote"})},[Du,Pc]),{autoSaveState:rk,flushAutoSave:ri,scheduleWarningPrompt:nk,handleSubmit:Mu,confirmScheduleWarning:xi,cancelScheduleWarning:pd,handleAddComment:ak}=kj({activeCategories:mn,activeTab:Te,apiEndpoint:f,assignee:Ac,attachments:$p,attachmentsDirty:lu,category:hi,checklistItems:qi,comments:tu,complexity:lo,description:Gi,dueDate:Dl,createTaskDurably:Jy,durableTaskHttpRootActivationEnabled:v.syncV3TaskCloudHttpRootActivation,workspaceId:ct,updateTask:ud,editingTaskId:Sr,editorBaselineDraft:Io?.taskId===Sr?Io.draft:null,revisionConflict:_s?.taskId===Sr,fetchTasks:ds,formTaxonomies:Yi,getAttachmentsDraft:Rc,getDescriptionDraft:eu,getPreferredCategoryValue:cs,getTitleDraft:wi,awaitPendingDescriptionImageUpload:Ec,onTaskCreateAccepted:tk,mergeTaskFromServer:ls,onTaskCreated:Bc,workstreamInput:Xo,priority:Jd,pushNotice:ya,queueWorkspaceSyncFromAuthoritativeTaskState:ek,relationshipTasks:Qi,supplementalTasks:gl,resetForm:sf,resolveWorkstreamIdInput:cd,scheduledDate:uo,setActiveTab:Tu,setAttachmentsDirty:Si,setComments:Pp,setError:Nn,setLastUsedCategory:Mo,setLoading:tl,setNewCommentText:bi,status:nl,title:Vi,taxonomies:Gs,textDraftOccupied:jr,type:jo}),fa=o.useCallback((C,Q)=>{if(!Sr||C.id!==Sr)return null;const se=Is.current?.taskId===Sr?Is.current:{draft:Ek(C)},X=rc(),We=Ek(C),Je=hR(se.draft,X,We),tt=En.current?.taskId===Sr?En.current.reconciliation.conflicts:[],Ht={...Je,conflicts:wR(tt,Je.conflicts,X,We)},ur=Nk(C,Ht.merged),Tr={taskId:Sr,task:C,draft:We};if(Is.current=Tr,Di(Tr),xu(ur,{preserveReturnTrail:!0,adoptAsBaseline:!1}),Si(JSON.stringify(Ht.merged.attachments)!==JSON.stringify(We.attachments)),Nn(""),Ht.conflicts.length>0){const Br={taskId:Sr,detailRevision:C.detailRevision||"unknown",source:Q,reconciliation:Ht,remoteTask:C,remoteDraft:We};En.current=Br,Ts(Br)}else En.current=null,Ts(null),Ht.remoteChangedFields.length>0&&ya("Task updated","info",2200);return Ht},[xu,Sr,ya,rc,Si,Nn]);Mi.current=fa;const ho=o.useCallback(C=>{const Q=_s;if(!Q||Q.taskId!==Sr)return;const se=yR(Q.reconciliation,Q.remoteDraft,C,rc()),X=Nk(Q.remoteTask,se);xu(X,{preserveReturnTrail:!0,adoptAsBaseline:!1}),Si(JSON.stringify(se.attachments)!==JSON.stringify(Q.remoteDraft.attachments)),En.current=null,Ts(null),Nn(""),Ka();const We=Q.reconciliation.conflicts.some(Je=>Je.field==="status");C==="local"&&We&&se.status!==Q.remoteDraft.status&&Eu(Q.remoteTask,se.status)},[xu,Ka,Sr,_s,Eu,rc,Si,Nn]);o.useEffect(()=>{const C=_s;if(!C||C.taskId!==Sr)return;const Q=bR(C.reconciliation.conflicts),se=Q.length>0?Q.join(", "):"task fields";ya(`${se.charAt(0).toUpperCase()}${se.slice(1)} also changed elsewhere.`,"info",void 0,{label:"Use latest",primary:!0,onAction:()=>ho("latest"),secondaryLabel:"Keep mine",onSecondaryAction:()=>ho("local"),dismissible:!1,ownerKey:`task-editor-conflict:${C.taskId}:${C.detailRevision}`})},[Sr,_s,ya,ho]),o.useEffect(()=>{if(!Sr){Fs.current=null,Ts(null),En.current=null,Is.current=null,Di(null);return}const C=Pt[Sr];if(!C){Fs.current=null;return}const Q=[...Vt,...Ir].find(X=>X.id===Sr);if(!Q)return;const se=`${Sr}:${C}`;Fs.current!==se&&(Fs.current=se,$a(Q,{shouldCommit:()=>Is.current?.taskId===Sr}).then(X=>{if(Is.current?.taskId===Sr){if(!X){Nn("The latest task update could not be loaded. Your local draft has been preserved.");return}fa(X,"refresh")}}).finally(()=>{Fs.current===se&&(Fs.current=null)}))},[Ir,Sr,$a,fa,Nn,Pt,Vt]);const pf=o.useCallback(async()=>{const C=Vl.current;Pc();try{await Ec()}catch(Q){console.warn("[Taskforce] Description image upload failed while the draft was being discarded.",Q)}try{await Du({draftUploadId:C,resolution:"discard"})}catch(Q){console.warn("[Taskforce] Failed to clean discarded Description image uploads.",Q)}},[Ec,Du,Pc]);o.useEffect(()=>{nf.current=ri},[ri]);const{handleSetWorkstreamForCurrentTask:sk}=_j({editingTaskId:Sr,workstreamInput:Xo,pushNotice:ya,relationshipTasks:Qi,resolveWorkstreamIdInput:cd,setError:Nn,updateTask:ud}),{currentTask:ok,currentTaskWorkstream:ik,currentTaskInitiative:hg}=KN({editingTaskId:Sr,relationshipTasks:Qi,initiatives:Ta,workstreams:Pn,workstreamInput:Xo,resolveWorkstreamIdInput:cd,supplementalTasks:gl,assignee:Ac,setAssignee:ki,setChecklistItems:Rp,setComments:Pp}),yg=FN({resolveCloudAuthUrl:H,currentWorkspaceId:ct,normalizedCloudAuthBaseUrl:he,normalizedCloudMcpBaseUrl:B,mergedConfig:l,availableWorkspaces:u,currentTheme:A,configLoaded:un,globalTheme:_e,themeUseGlobalDefault:Ee,keyShortcut:Lt,jsonBackupEnabled:Ho,globalJsonBackupEnabled:aa,globalWeekStartsOn:sa,locale:ro,supportedLocales:ws,jsonBackupUseGlobalDefault:ma,manualComplexityEnabled:no,checklistDropdownEnabled:ao,showTaskCardStatusLabel:as,showTaskCardDescription:ja,showTaskCardAttachments:bs,showTaskCardChecklistProgress:Va,showTaskCardLatestActivity:Ma,tintTaskCardActivityBackground:Ss,pathSaved:q,settingsSection:Pe,setupState:Cr,buildInfo:Sn,saveSetupMode:dl,saveWorkspaceProfile:Ym,setCurrentTheme:G,handleSaveTheme:pu,handleSaveGlobalTheme:fu,handleUseGlobalThemeDefault:zm,setKeyShortcut:Pr,handleJsonBackupEnabledChange:Hm,handleSaveGlobalJsonBackupEnabled:zp,handleUseGlobalJsonBackupDefault:xy,handleSaveGlobalWeekStartsOn:Hp,handleSaveLocale:Vm,handleManualComplexityEnabledChange:Gm,handleChecklistDropdownEnabledChange:Ry,handleShowTaskCardStatusLabelChange:mu,handleShowTaskCardDescriptionChange:gu,handleShowTaskCardAttachmentsChange:hu,handleShowTaskCardChecklistProgressChange:Km,handleShowTaskCardLatestActivityChange:yu,handleTintTaskCardActivityBackgroundChange:Py,handleSaveSettings:Um,initiativeTemplates:Os,fetchInitiativeTemplates:so,createInitiativeFromTemplate:Cu,setShowFolderBrowser:Ve,setBrowserTarget:Ze,fetchFolders:nd,activeCategories:mn,pathValidation:xs,taxonomyDisplayLabels:Vs,handleUpdateCategory:od,handleRemoveCategory:ef,handleSaveCategory:Js,handleAddPath:ec,handleRemovePath:ig,handleUpdateCategoryIcon:hl,handleUpdateCategoryColor:og,activeTypes:la,handleSaveType:Yy,handleRemoveType:id,handleUpdateType:tf,taxonomies:Gs,handleUpdateTaxonomies:cg,priorities:fn,handleUpdatePriorities:_u,analyzeSystemTaxonomyPack:rf,handleApplySystemTaxonomyPack:Zy,handleUpdateTaxonomyDisplayLabels:_i,projectRoot:it,projectName:bt,mcpHostRoot:na,serverHostRoot:kr,mcpScriptPath:qt,tenantId:Y,runtimeMode:z,workspaceSwitchingEnabled:vt,deleteWorkspace:Su,setMcpHostRoot:er,isAuthenticated:Dt});o.useEffect(()=>{typeof window<"u"&&(window.__TASKFORCE_DEBUG__={tasks:Vt,archivedTasks:Ir,runtimeMode:z,currentWorkspaceId:ct,isAuthenticated:Dt,workspaceCloudSyncEnabled:No,realtimeSyncEnabled:yt,fetchTasks:ds,fetchArchive:Ko,retryWorkspaceCloudSync:Nl,resetWorkspaceSyncCursorAndPull:Ui,getSyncDiagnostics:jl,__dispatch:{handleUpdateTask:ud,handleToggleComplete:Nu,handleArchiveTask:Fc,handleToggleCancel:df,handleToggleInProgress:$c,handleToggleReview:uf,handleSubmit:Mu,handleDelete:yl}})},[Vt,Ir,z,ct,Dt,No,yt,ds,Ko,Nl,Ui,jl,ud,Nu,Fc,df,$c,uf,Mu,yl]);const kg=_a&&_a.tone!=="error"?{message:_a.message,type:"info"}:null,vg=String(y||v.wsBaseUrl||ge||"").trim().replace(/\/+$/,"");return{config:{...l,cloudEnvironment:v.cloudEnvironment||l.cloudEnvironment||"",appGates:v.appGates||l.appGates,apiBaseUrl:ge||l.apiBaseUrl,cloudAuthBaseUrl:he||l.cloudAuthBaseUrl,wsBaseUrl:vg||l.wsBaseUrl},isOpen:Ue,setIsOpen:ft,activeTab:Te,setActiveTab:Tu,currentTheme:A,setCurrentTheme:G,configLoaded:un,storagePath:nt,saveSettings:Um,pathSaved:q,keyShortcut:Lt,setKeyShortcut:Pr,globalWeekStartsOn:sa,locale:ro,supportedLocales:ws,saveLocale:Vm,jsonBackupEnabled:Ho,setJsonBackupEnabled:Ca,manualComplexityEnabled:no,checklistDropdownEnabled:ao,showTaskCardStatusLabel:as,showTaskCardDescription:ja,showTaskCardAttachments:bs,showTaskCardChecklistProgress:Va,showTaskCardLatestActivity:Ma,tintTaskCardActivityBackground:Ss,setManualComplexityEnabled:An,mcpHostRoot:na,setMcpHostRoot:er,settingsSection:Pe,setSettingsSection:gt,runtimeMode:z,workspaceMode:It,workspaceSwitchingEnabled:vt,cloudAuthConfigured:F,authRequiredForApi:Mt,authBlocked:Zt,isAuthenticated:Dt,authUserId:Rr,authUserEmail:rt,authUserDisplayName:ht,authUserAvatarUrl:$t,authWorkspaceId:Dr,userGlobalSyncStatus:Kd,workspaceLastPullAt:vm,workspaceLastPushAt:wm,workspaceLastErrorAt:bm,userGlobalSyncError:On,workspaceLastErrorMessage:qd,workspaceLastSuccessfulSyncAt:vp,workspaceSyncPhase:wp,workspaceSyncSetupIntent:Sm,workspaceSyncStatus:bp,workspaceSyncSummary:Am,workspaceSyncRecommendedAction:Sp,workspaceSyncBusy:Cm,workspaceSyncPendingChanges:Ap,localCoordinatorStatus:_m,transferLocalCoordinatorOwnership:Tm,retryUserGlobalSettingsSync:Fi,retryWorkspaceCloudSync:Nl,resetWorkspaceSyncCursorAndPull:Ui,getWorkspaceSyncDiagnostics:jl,hasBetaAccess:Wt,realtimeSyncEnabled:yt,realtimeSyncFlagSource:Xt,currentWorkspaceId:ct,currentWorkspaceRole:Dy,availableWorkspaces:u,assigneeOptions:pr,workspaceCloudSyncEnabled:No,saveWorkspaceCloudSyncSettings:xp,applyWorkspaceSyncStateSnapshot:gy,bootstrapState:mi,authSessionResolved:Bt,workspaceBootstrapPending:ar,bootstrapPhase:xr,bootstrapError:Fr,bootstrapStartedAt:ln,setupState:Cr,runtimeCapabilities:pe,refreshSetupContext:Dc,retryBootstrapChecks:wu,continueAfterCommercialOnboarding:My,saveWorkspaceProfile:Ym,fetchWorkspaces:Jl,createWorkspace:Ly,deleteWorkspace:Su,switchWorkspace:Ys,loginWithCredentials:Oy,beginOAuthLogin:Zm,availableAuthProviders:Ft,fetchLoginMethods:Xm,unlinkLoginMethod:Qm,addPasswordToAccount:qp,changePassword:eg,beginOAuthLink:Au,registerWithCredentials:By,updateCurrentUserProfile:Wy,requestEmailVerification:$y,confirmEmailVerification:Fy,requestPasswordReset:Uy,confirmPasswordReset:zy,inspectInviteAcceptance:Ea,acceptInviteWithToken:Kp,joinInviteWithToken:Jm,logout:Xi,showFolderBrowser:be,setShowFolderBrowser:Ve,folders:Ce,files:Ie,currentBrowsePath:Be,fetchFolders:nd,browserTarget:Qe,setBrowserTarget:Ze,groupBy:ou,setGroupBy:Mp,activeWorkspaceModule:mo,setActiveWorkspaceModule:Ny,emptyColumnMode:zl,setEmptyColumnMode:Lp,zenMode:Bs,setZenMode:ca,handleSelectPath:qy,handleAddPath:ec,handleRemovePath:ig,tasks:Vt,loadingTasks:Oa,archivedTasks:Ir,archiveHydratedWorkspaceId:dn,initiatives:Ta,workstreams:Pn,planningBootstrapTaskSummaries:fi,planningLoadState:gc,workspaceTaskRelationships:Im,deletedTasks:cr,activeCategories:mn,activeTypes:la,priorities:fn,taxonomyDisplayLabels:Vs,taxonomies:Gs,searchQuery:Ep,setSearchQuery:Fl,filterCategories:Za,setFilterCategories:Qo,filterTypes:ei,setFilterTypes:Zi,filterPriorities:Dm,setFilterPriorities:Mm,filterStatus:nu,setFilterStatus:Ul,filterAssignees:Np,setFilterAssignees:jp,filterTaxonomies:_c,setFilterTaxonomies:au,hasInitedFilters:Dp,sortBy:Tc,setSortBy:xc,sortOrder:su,setSortOrder:Kt,toggleSortOrder:Bm,showArchive:He,setShowArchive:Fe,taskScope:me,setTaskScope:ve,compressedCards:ot,setCompressedCards:Oe,clearFilters:ky,filteredTasks:vy,searchAgnosticTasks:wy,filteredArchive:by,groupedTasks:Sy,collapsedCategories:iu,setCollapsedCategories:Op,fetchTasks:ds,fetchArchive:Ko,ensureArchiveHydrated:qa,fetchDeletedTasks:Un,fetchPlanningEntities:Nr,fetchPlanningEntityDetail:Vd,fetchAssigneeOptions:vu,createInitiative:Xl,updateInitiative:Hy,updatePlanningIdentity:Yp,archiveInitiative:Zp,unarchiveInitiative:ul,createWorkstream:Zs,updateWorkstream:pl,archiveWorkstream:ng,unarchiveWorkstream:Vy,reorderWorkstreamTasks:rg,handleEdit:Bc,handleDelete:yl,handleCopyId:gg,handleToggleComplete:Nu,handleToggleCancel:df,handleToggleInProgress:$c,handleToggleReview:uf,handleArchiveTask:Fc,handleBulkArchive:Qy,handleUnarchive:ju,handleRestoreDeletedTask:pg,handleRestoreSelectedDeletedTasks:Uc,handlePermanentlyDeleteDeletedTask:fg,handleEmptyDeletedTasks:mg,handleUpdateTask:ud,handleSetStatus:Eu,editingTaskId:Sr,loading:co,error:zd,clearTaskError:Hd,title:Vi,setTitle:Ml,setTitleDraft:al,description:Gi,setDescription:Ll,setDescriptionDraft:Cc,checklistItems:qi,setChecklistItems:Rp,category:hi,setCategory:zi,type:jo,setType:Hi,priority:Jd,setPriority:Jo,complexity:lo,setComplexity:yi,status:nl,setStatus:Xd,assignee:Ac,setAssignee:ki,scheduledDate:uo,setScheduledDate:Qd,dueDate:Dl,setDueDate:po,workstreamInput:Xo,setWorkstreamInput:vi,formTaxonomies:Yi,setFormTaxonomies:Bl,comments:tu,newCommentText:Ol,setNewCommentText:bi,attachments:$p,setAttachments:$m,attachmentsDirty:lu,setAttachmentsDirty:Si,descriptionImageUploadPending:Ty,descriptionImageDraftId:cu,registerDescriptionImageUpload:Fm,descriptionFocused:Wm,setDescriptionFocused:Ji,showMarkdownHelp:io,setShowMarkdownHelp:Ba,isCapturingScreenshot:Cy,setIsCapturingScreenshot:Iy,handleSubmit:Mu,resetForm:sf,discardDescriptionImageDraft:pf,handleAddComment:ak,handleSetWorkstreamForCurrentTask:sk,handleOpenTaskById:of,returnToPreviousTask:Oo,autoSaveState:rk,unsavedModalOpen:Rn,setUnsavedModalOpen:Er,pendingNavigation:Ga,handleNavigation:lg,handleClose:tc,uiNotice:_a,pushNotice:ya,clearNotice:Ka,successBanner:kg,taskReturnTrail:pi,clearReturnToParentTask:dg,copiedId:dd,recentlyChangedTaskIds:Re,scheduleWarningPrompt:nk,confirmScheduleWarning:xi,cancelScheduleWarning:pd,tasksScrollRef:os,setTasksScrollPos:ye,taskforceAgentId:Nm,setTaskforceAgentId:jm,taskforceAgentConversationId:ru,setTaskforceAgentConversationId:Ic,taskforceAgentConversationByAgentId:$l,setTaskforceAgentConversationByAgentId:yy,uiStateReady:Ja,handleUpdateCategory:od,handleRemoveCategory:ef,handleSaveCategory:Js,handleUpdateCategoryIcon:hl,handleUpdateCategoryColor:og,handleSaveType:Yy,handleRemoveType:id,handleUpdateType:tf,handleUpdateTaxonomies:cg,handleUpdatePriorities:_u,handleUpdateTaxonomyDisplayLabels:_i,pathValidation:xs,validatePaths:sd,getCategoryPaths:ad,customCategories:wa,setCustomCategories:Us,projectRoot:it,projectName:bt,mcpScriptPath:qt,serverHostRoot:kr,commentsEndRef:Em,currentTask:ok,currentTaskWorkstream:ik,currentTaskInitiative:hg,initiativeTemplates:Os,fetchInitiativeTemplates:so,createInitiativeFromTemplate:Cu,settingsModel:yg}}const UD="modulepreload",zD=function(e){return"/taskforce/"+e},ZS={},zo=function(t,r,n){let s=Promise.resolve();if(r&&r.length>0){let d=function(f){return Promise.all(f.map(p=>Promise.resolve(p).then(g=>({status:"fulfilled",value:g}),g=>({status:"rejected",reason:g}))))};document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),c=l?.nonce||l?.getAttribute("nonce");s=d(r.map(f=>{if(f=zD(f),f in ZS)return;ZS[f]=!0;const p=f.endsWith(".css"),g=p?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${f}"]${g}`))return;const h=document.createElement("link");if(h.rel=p?"stylesheet":UD,p||(h.as="script"),h.crossOrigin="",h.href=f,c&&h.setAttribute("nonce",c),document.head.appendChild(h),p)return new Promise((y,k)=>{h.addEventListener("load",y),h.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${f}`)))})}))}function i(l){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=l,window.dispatchEvent(c),!c.defaultPrevented)throw l}return s.then(l=>{for(const c of l||[])c.status==="rejected"&&i(c.reason);return t().catch(i)})},HD="_filterGlow_17dgg_8",VD="_floatingButton_17dgg_18",GD="_badge_17dgg_49",KD="_configBadge_17dgg_66",qD="_configBadgeActive_17dgg_76",YD="_configBadgeRevoked_17dgg_82",ZD="_configBadgeExpired_17dgg_88",JD="_coreModal_17dgg_97",XD="_header_17dgg_103",QD="_headerTitle_17dgg_118",eM="_brandIcon_17dgg_136",tM="_brandHomeButton_17dgg_142",rM="_brandHomeStatic_17dgg_143",nM="_brandCloudSuffix_17dgg_169",aM="_projectSlash_17dgg_174",sM="_projectNameGroup_17dgg_180",oM="_projectNameGroupHidden_17dgg_188",iM="_projectName_17dgg_180",cM="_projectNameCopied_17dgg_232",lM="_projectNameCopyFeedback_17dgg_236",dM="_taskCountBadge_17dgg_248",uM="_taskCountBadgeIcon_17dgg_265",pM="_taskCountBadgeButton_17dgg_269",fM="_taskCountBadgeActive_17dgg_287",mM="_taskCountBadgeAlert_17dgg_293",gM="_headerActions_17dgg_299",hM="_sortDirectionBtn_17dgg_306",yM="_sortDirectionBtnWidget_17dgg_313",kM="_form_17dgg_321",vM="_topRow_17dgg_333",wM="_field_17dgg_339",bM="_labelRow_17dgg_345",SM="_label_17dgg_345",AM="_manageLink_17dgg_359",CM="_input_17dgg_378",IM="_select_17dgg_379",_M="_textarea_17dgg_380",TM="_taskIdInlineLink_17dgg_414",xM="_readOnly_17dgg_433",RM="_selectWithConfig_17dgg_441",PM="_configBtn_17dgg_451",EM="_configBtnActive_17dgg_481",NM="_hasPath_17dgg_489",jM="_pathIndicator_17dgg_494",DM="_formActions_17dgg_500",MM="_hasCancel_17dgg_507",LM="_submitBtn_17dgg_511",OM="_cancelBtn_17dgg_527",BM="_successMessage_17dgg_559",WM="_errorMessage_17dgg_565",$M="_successIcon_17dgg_577",FM="_spinner_17dgg_597",UM="_spin_17dgg_597",zM="_boardRefreshIndicator_17dgg_601",HM="_destructiveBtn_17dgg_631",VM="_warningBtn_17dgg_654",GM="_viewTab_17dgg_677",KM="_loading_17dgg_688",qM="_emptyState_17dgg_694",YM="_taskList_17dgg_704",ZM="_referenceBadge_17dgg_710",JM="_referenceBadgeLabel_17dgg_731",XM="_referenceBadgeStatic_17dgg_740",QM="_provisionalReferenceBadge_17dgg_754",e2="_copiedReference_17dgg_776",t2="_highlight_17dgg_788",r2="_modal_17dgg_800",n2="_priorityEmoji_17dgg_808",a2="_metaItem_17dgg_812",s2="_taskFormDateInput_17dgg_826",o2="_metaBadge_17dgg_836",i2="_complexityPill_17dgg_851",c2="_complexityDots_17dgg_855",l2="_dot_17dgg_861",d2="_dotFilled_17dgg_869",u2="_typePill_17dgg_875",p2="_type_bug_17dgg_879",f2="_type_feature_17dgg_883",m2="_type_chore_17dgg_887",g2="_type_refactor_17dgg_891",h2="_type_documentation_17dgg_895",y2="_type_research_17dgg_899",k2="_type_security_17dgg_907",v2="_statusActionsGroup_17dgg_911",w2="_statusActionsGroupCompact_17dgg_917",b2="_statusSelectWrap_17dgg_921",S2="_statusTaxonomyDropdownWrap_17dgg_927",A2="_statusTaxonomyDropdown_17dgg_927",C2="_statusTaxonomyDropdownCompact_17dgg_935",I2="_statusTaxonomyDropdownIconOnly_17dgg_939",_2="_taxonomyDropdownButton_17dgg_944",T2="_taxonomyDropdownButtonContent_17dgg_961",x2="_statusTaxonomyDropdownIconOnlyPanel_17dgg_965",R2="_actionBtn_17dgg_971",P2="_restoreTaskBtn_17dgg_995",E2="_startWorkBtn_17dgg_1004",N2="_workingBtn_17dgg_1013",j2="_pulse_17dgg_1",D2="_reviewBtn_17dgg_1019",M2="_reviewActiveBtn_17dgg_1029",L2="_reviewPill_17dgg_1035",O2="_bulkArchiveBtn_17dgg_1042",B2="_bulkDeleteBtn_17dgg_1064",W2="_deleteBtn_17dgg_1093",$2="_completeBtn_17dgg_1105",F2="_completeActiveBtn_17dgg_1115",U2="_deleteActiveBtn_17dgg_1121",z2="_disabledBtn_17dgg_1127",H2="_archiveList_17dgg_1134",V2="_archiveHeader_17dgg_1142",G2="_settingsTab_17dgg_1153",K2="_settingsTabMcpOnly_17dgg_1162",q2="_settingsTabs_17dgg_1171",Y2="_settingsLayout_17dgg_1204",Z2="_settingsLayoutMcpOnly_17dgg_1211",J2="_settingsSidebar_17dgg_1217",X2="_settingsSidebarHeader_17dgg_1227",Q2="_settingsSidebarNav_17dgg_1236",eL="_settingsSidebarBtn_17dgg_1245",tL="_settingsSidebarBtnActive_17dgg_1269",rL="_settingsSidebarGroup_17dgg_1276",nL="_settingsSidebarGroupBtn_17dgg_1282",aL="_settingsSidebarGroupLabel_17dgg_1286",sL="_settingsSidebarGroupChevron_17dgg_1290",oL="_settingsSidebarSubnav_17dgg_1296",iL="_settingsSidebarSubBtn_17dgg_1303",cL="_appScrollbar_17dgg_1326",lL="_settingsTabBtn_17dgg_1330",dL="_settingsTabBtnActive_17dgg_1355",uL="_settingsContent_17dgg_1384",pL="_mcpRegistrationHint_17dgg_1408",fL="_mcpRegistrationPrompt_17dgg_1419",mL="_mcpCodexTrustNote_17dgg_1438",gL="_mcpCodexTrustHeader_17dgg_1449",hL="_mcpCodexTrustTitle_17dgg_1456",yL="_mcpCodexTrustCode_17dgg_1462",kL="_mcpAuthRequiredCard_17dgg_1477",vL="_mcpAuthRequiredIcon_17dgg_1489",wL="_mcpAuthRequiredBody_17dgg_1502",bL="_mcpAuthRequiredActions_17dgg_1509",SL="_settingsToast_17dgg_1553",AL="_settingsToastSuccess_17dgg_1570",CL="_settingsToastError_17dgg_1576",IL="_inputWithPrefix_17dgg_1582",_L="_pathHint_17dgg_1589",TL="_settingGroup_17dgg_1602",xL="_taskCardSettingsLayout_17dgg_1608",RL="_taskCardDependentSetting_17dgg_1616",PL="_taskCardSettingWithHelp_17dgg_1620",EL="_taskCardSettingHelp_17dgg_1626",NL="_taskCardSettingsPreview_17dgg_1633",jL="_taskCardSettingsPreviewFrame_17dgg_1640",DL="_workspaceIdentity_17dgg_1657",ML="_workspaceIdentityValueRow_17dgg_1666",LL="_workspaceIdentityValue_17dgg_1666",OL="_workspaceProfileForm_17dgg_1682",BL="_workspaceProfileTextareaLabel_17dgg_1689",WL="_workspaceProfileActions_17dgg_1694",$L="_settingTitle_17dgg_1718",FL="_settingTitleRow_17dgg_1727",UL="_settingTitleActionBtn_17dgg_1734",zL="_themeOptions_17dgg_1754",HL="_buttonGrid_17dgg_1759",VL="_themeBtn_17dgg_1771",GL="_activeTheme_17dgg_1795",KL="_pathInputGroup_17dgg_1803",qL="_saveSettingsBtn_17dgg_1812",YL="_shortcutInputWrapper_17dgg_1833",ZL="_inputIcon_17dgg_1838",JL="_settingHelper_17dgg_1847",XL="_browseBtn_17dgg_1854",QL="_inlineCategoryManager_17dgg_1873",eO="_categoryManager_17dgg_1884",tO="_categoryList_17dgg_1890",rO="_categoryChip_17dgg_1902",nO="_categoryChipLabel_17dgg_1915",aO="_chipActionBtn_17dgg_1923",sO="_removeCategoryBtn_17dgg_1943",oO="_addCategoryForm_17dgg_1963",iO="_addCategoryBtn_17dgg_1968",cO="_filesList_17dgg_1993",lO="_helpLink_17dgg_2020",dO="_taskChildrenSummaryBadges_17dgg_2039",uO="_taskChildrenProgressBar_17dgg_2047",pO="_taskChildrenProgressBarSegmentDone_17dgg_2058",fO="_taskChildrenProgressBarSegmentReview_17dgg_2064",mO="_taskChildrenProgressBarSegmentInProgress_17dgg_2070",gO="_taskChildrenProgressBarSegmentBlocked_17dgg_2076",hO="_taskChildrenProgressText_17dgg_2082",yO="_taskChildUnlinkBtn_17dgg_2091",kO="_aboutText_17dgg_2109",vO="_versionInfo_17dgg_2116",wO="_filterBar_17dgg_2124",bO="_kanbanHintText_17dgg_2138",SO="_searchContainer_17dgg_2144",AO="_searchIcon_17dgg_2151",CO="_searchInput_17dgg_2159",IO="_searchActive_17dgg_2185",_O="_searchCount_17dgg_2190",TO="_clearSearchBtn_17dgg_2206",xO="_filterRow_17dgg_2228",RO="_sortLabel_17dgg_2234",PO="_archiveToggle_17dgg_2242",EO="_filterContainer_17dgg_2279",NO="_filterButton_17dgg_2284",jO="_filterActive_17dgg_2309",DO="_filterDropdown_17dgg_2315",MO="_filterSearch_17dgg_2330",LO="_filterSearchIcon_17dgg_2338",OO="_filterSearchInput_17dgg_2347",BO="_filterEmpty_17dgg_2359",WO="_filterOption_17dgg_2366",$O="_filterDivider_17dgg_2396",FO="_filterSelect_17dgg_2402",UO="_filterToggleBtn_17dgg_2443",zO="_inProgressToggle_17dgg_2465",HO="_activeInProgress_17dgg_2483",VO="_activeFilter_17dgg_2492",GO="_resetFiltersBtn_17dgg_2502",KO="_categoryChip_disabled_17dgg_2535",qO="_categoryVisibilityToggle_17dgg_2545",YO="_editCategoryInput_17dgg_2558",ZO="_categoryChipActionBtn_17dgg_2569",JO="_categoryChipActionBtn_active_17dgg_2587",XO="_categoryGroup_17dgg_2592",QO="_categoryHeader_17dgg_2600",eB="_categoryTitle_17dgg_2614",tB="_categoryCount_17dgg_2624",rB="_categoryItems_17dgg_2630",nB="_selectPriority_low_17dgg_2647",aB="_selectPriority_medium_17dgg_2652",sB="_selectPriority_high_17dgg_2657",oB="_selectPriority_critical_17dgg_2662",iB="_levelSelect_17dgg_2671",cB="_levelOption_17dgg_2684",lB="_levelOptionFilled_17dgg_2701",dB="_levelOption_priority_low_17dgg_2708",uB="_levelOption_priority_medium_17dgg_2713",pB="_levelOption_priority_high_17dgg_2718",fB="_levelOption_priority_critical_17dgg_2723",mB="_levelOption_complexity_tiny_17dgg_2730",gB="_levelOption_complexity_low_17dgg_2735",hB="_levelOption_complexity_medium_17dgg_2740",yB="_levelOption_complexity_high_17dgg_2745",kB="_levelOption_complexity_epic_17dgg_2750",vB="_levelOptionActive_17dgg_2757",wB="_levelOptionSelected_17dgg_2762",bB="_levelLabel_17dgg_2770",SB="_levelLabelFadeIn_17dgg_1",AB="_closeConfigBtn_17dgg_2795",CB="_configItem_17dgg_2817",IB="_settingsLabel_17dgg_2823",_B="_settingsHint_17dgg_2832",TB="_pathList_17dgg_2839",xB="_pathChip_17dgg_2846",RB="_pathValid_17dgg_2859",PB="_pathInvalid_17dgg_2864",EB="_pathValidIcon_17dgg_2869",NB="_pathInvalidIcon_17dgg_2874",jB="_pathText_17dgg_2879",DB="_removePathBtn_17dgg_2886",MB="_pathCount_17dgg_2908",LB="_specialistSection_17dgg_2919",OB="_toggleHeading_17dgg_2927",BB="_dropdownList_17dgg_2967",WB="_specialistBadge_17dgg_2976",$B="_iconGrid_17dgg_3006",FB="_iconPickerBtn_17dgg_3017",UB="_iconPickerBtnActive_17dgg_3036",zB="_categorySubConfig_17dgg_3043",HB="_colorPickerRow_17dgg_3051",VB="_colorPickerGrid_17dgg_3057",GB="_colorSwatch_17dgg_3064",KB="_colorSwatchActive_17dgg_3083",qB="_categoryChipIcon_17dgg_3089",YB="_fieldIconWrapper_17dgg_3094",ZB="_fieldIcon_17dgg_3094",JB="_field_dynamic_17dgg_3116",XB="_fieldIcon_dynamic_17dgg_3122",QB="_categoryTitleIcon_17dgg_3126",eW="_editActionsGroup_17dgg_3131",tW="_stickyActionHeader_17dgg_3138",rW="_taskNoticeAnchor_17dgg_3155",nW="_taskHierarchyHeader_17dgg_3161",aW="_taskHierarchyBadgeRow_17dgg_3168",sW="_taskHierarchyDivider_17dgg_3176",oW="_taskHierarchySegment_17dgg_3182",iW="_taskHierarchyMeta_17dgg_3189",cW="_taskHierarchyActionBtn_17dgg_3202",lW="_taskWorkstreamPicker_17dgg_3208",dW="_taskWorkstreamPickerIcon_17dgg_3263",uW="_taskWorkstreamPickerPanel_17dgg_3269",pW="_taskWorkstreamPickerOption_17dgg_3273",fW="_taskSaveStatus_17dgg_3295",mW="_taskSaveStatusCenter_17dgg_3306",gW="_taskSaveStatusError_17dgg_3314",hW="_primaryUpdateBtn_17dgg_3318",yW="_secondaryHeaderBtn_17dgg_3346",kW="_secondaryHeaderBtnDestructive_17dgg_3367",vW="_attachmentCaptureContainer_17dgg_3379",wW="_capturePrompt_17dgg_3387",bW="_previewContainer_17dgg_3401",SW="_previewHeader_17dgg_3407",AW="_attachmentCapturePreview_17dgg_3417",CW="_actions_17dgg_3424",IW="_primaryButton_17dgg_3430",_W="_secondaryButton_17dgg_3445",TW="_iconButton_17dgg_3460",xW="_attachmentGrid_17dgg_3482",RW="_attachmentCard_17dgg_3488",PW="_attachmentPreviewContainer_17dgg_3502",EW="_attachmentPreviewButton_17dgg_3519",NW="_contextFileLink_17dgg_3537",jW="_attachmentActions_17dgg_3563",DW="_attachmentActionBtn_17dgg_3578",MW="_attachmentActionBtnActive_17dgg_3600",LW="_attachmentCaptionInput_17dgg_3606",OW="_documentAttachmentCaptionInput_17dgg_3607",BW="_hiddenInput_17dgg_3627",WW="_contextMenuControl_17dgg_3631",$W="_contextMenu_17dgg_3631",FW="_contextAddMenu_17dgg_3677",UW="_contextActionsMenu_17dgg_3682",zW="_attachmentImageActionsMenu_17dgg_3686",HW="_contextDestructiveMenuItem_17dgg_3695",VW="_contextContent_17dgg_3699",GW="_contextContentDropActive_17dgg_3709",KW="_contextDropOverlay_17dgg_3713",qW="_contextLinkComposer_17dgg_3730",YW="_contextEmptyState_17dgg_3737",ZW="_contextGroupLabel_17dgg_3747",JW="_contextNotice_17dgg_3756",XW="_contextCaptionEditor_17dgg_3761",QW="_attachmentCaptionLabel_17dgg_3769",e$="_documentAttachmentList_17dgg_3795",t$="_documentAttachmentItem_17dgg_3801",r$="_documentAttachmentRow_17dgg_3807",n$="_documentAttachmentLink_17dgg_3816",a$="_documentAttachmentMain_17dgg_3830",s$="_documentAttachmentReference_17dgg_3838",o$="_documentAttachmentName_17dgg_3843",i$="_brokenImage_17dgg_3852",c$="_brokenImagePlaceholder_17dgg_3860",l$="_regionOverlay_17dgg_3874",d$="_selectionBox_17dgg_3885",u$="_exportRow_17dgg_3893",p$="_exportItem_17dgg_3898",f$="_taxonomyDrillDown_17dgg_3907",m$="_drillDownList_17dgg_3917",g$="_drillDownSection_17dgg_3925",h$="_drillDownSectionHeader_17dgg_3931",y$="_drillDownSectionTitle_17dgg_3938",k$="_drillDownItem_17dgg_3947",v$="_drillDownItemDimmed_17dgg_3969",w$="_drillDownItemActive_17dgg_3977",b$="_drillDownItemInfo_17dgg_3982",S$="_drillDownItemText_17dgg_3988",A$="_drillDownItemLabel_17dgg_3993",C$="_drillDownItemSubtext_17dgg_3998",I$="_addTaxonomyBtnSmall_17dgg_4003",_$="_taxonomyDetailView_17dgg_4025",T$="_slideIn_17dgg_1",x$="_detailHeader_17dgg_4045",R$="_detailTitle_17dgg_4054",P$="_detailContent_17dgg_4061",E$="_createOverlay_17dgg_4068",N$="_createDialog_17dgg_4080",j$="_zoomIn_17dgg_1",D$="_dialogActions_17dgg_4108",M$="_settingsGroup_17dgg_4126",L$="_settingsItem_17dgg_4132",O$="_mcpHealthCompactAlert_17dgg_4138",B$="_mcpHealthUpdateRow_17dgg_4139",W$="_mcpHealthBlockingAlert_17dgg_4140",$$="_mcpHealthUpdateIcon_17dgg_4168",F$="_mcpHealthCompactBody_17dgg_4174",U$="_mcpHealthCompactActions_17dgg_4191",z$="_mcpHealthStableAction_17dgg_4197",H$="_mcpUpdateDialog_17dgg_4202",V$="_mcpUpdateDialogIntro_17dgg_4211",G$="_mcpUpdateRestartGuidance_17dgg_4212",K$="_mcpUpdateVersionGrid_17dgg_4219",q$="_mcpUpdateDiagnostics_17dgg_4235",Y$="_mcpUpdateLoading_17dgg_4251",Z$="_mcpUpdateNotice_17dgg_4252",J$="_mcpUpdateCommands_17dgg_4267",X$="_mcpUpdateSectionLabel_17dgg_4273",Q$="_mcpHealthCommandRow_17dgg_4279",eF="_mcpHealthCommand_17dgg_4279",tF="_mcpUpdateDialogActions_17dgg_4322",rF="_mcpHealthCopyError_17dgg_4328",nF="_settingLabelGroup_17dgg_4362",aF="_settingLabel_17dgg_4362",sF="_settingDescription_17dgg_4374",oF="_settingInput_17dgg_4381",iF="_codeBlockWrapper_17dgg_4404",cF="_codeHeader_17dgg_4413",lF="_codeHeaderActions_17dgg_4424",dF="_codeLabel_17dgg_4431",uF="_codeHeaderDescription_17dgg_4439",pF="_mcpTokenCardBody_17dgg_4447",fF="_mcpTokenFormGrid_17dgg_4455",mF="_mcpTokenOutputWrap_17dgg_4462",gF="_mcpTokenValueField_17dgg_4469",hF="_mcpTokenValueText_17dgg_4479",yF="_mcpTokenValueInput_17dgg_4492",kF="_mcpTokenActionRow_17dgg_4497",vF="_settingsCodeBlock_17dgg_4505",wF="_copyBtn_17dgg_4520",bF="_copyBtnActive_17dgg_4541",SF="_copyBtnNeutralActive_17dgg_4547",AF="_headerDivider_17dgg_4565",CF="_groupByContainer_17dgg_4571",IF="_groupByLabel_17dgg_4579",_F="_groupBySelect_17dgg_4584",TF="_viewSwitcher_17dgg_4606",xF="_selectWithIcon_17dgg_4614",RF="_marginBottom16_17dgg_4618",PF="_headerDraggable_17dgg_4623",EF="_headerDragging_17dgg_4627",NF="_filterSelectSort_17dgg_4635",jF="_archiveRow_17dgg_4639",DF="_taskScopeToggle_17dgg_4645",MF="_taskScopeTabs_17dgg_4658",LF="_taskScopeTab_17dgg_4658",OF="_taskScopeTabActive_17dgg_4703",BF="_taskToolbarAction_17dgg_4711",WF="_overlayHighZ_17dgg_4727",$F="_savedText_17dgg_4737",FF="_shortcutInput_17dgg_1833",UF="_saveSettingsBtnWrapper_17dgg_4745",zF="_marginBottom12_17dgg_4749",HF="_exportRowGrid_17dgg_4753",VF="_settingSubtitleCustom_17dgg_4758",GF="_capitalize_17dgg_4764",KF="_marginTop12_17dgg_4768",qF="_marginTop16_17dgg_4772",YF="_labelGroupFlex_17dgg_4776",ZF="_codeBlockWrapperCustom_17dgg_4782",JF="_kanbanWrapper_17dgg_4788",XF="_kanbanContainer_17dgg_4796",QF="_kanbanTopScroll_17dgg_4818",e3="_kanbanTopScrollSpacer_17dgg_4827",t3="_kanbanColumn_17dgg_4831",r3="_kanbanColumnSticky_17dgg_4847",n3="_kanbanColumnCollapsed_17dgg_4853",a3="_kanbanColumnPast_17dgg_4858",s3="_kanbanColumnSelectedDay_17dgg_4863",o3="_kanbanHeader_17dgg_4870",i3="_kanbanCount_17dgg_4880",c3="_kanbanHeaderDraggable_17dgg_4900",l3="_kanbanHeaderPanning_17dgg_4904",d3="_kanbanQuickAdd_17dgg_4908",u3="_kanbanColorDot_17dgg_4929",p3="_kanbanDroppable_17dgg_4941",f3="_kanbanDroppableScroll_17dgg_4950",m3="_kanbanDroppableScrollVirtualized_17dgg_4960",g3="_kanbanVirtualCanvas_17dgg_4966",h3="_kanbanVirtualRow_17dgg_4971",y3="_kanbanEmpty_17dgg_4977",k3="_kanbanCard_17dgg_4987",v3="_kanbanCardWrapper_17dgg_4997",w3="_taxonomyDropdownActive_17dgg_5005",b3="_kanbanCardWrapperRaised_17dgg_5009",S3="_kanbanCardTitle_17dgg_5013",A3="_kanbanBadges_17dgg_5017",C3="_kanbanBadge_17dgg_5017",I3="_headerFlex_17dgg_5033",_3="_marginBottom8_17dgg_5040",T3="_marginBottom20_17dgg_5044",x3="_configPanel_17dgg_5048",R3="_configPanelLarge_17dgg_5057",P3="_subLabelBlock_17dgg_5061",E3="_subLabelBlock12_17dgg_5068",N3="_flexBetween_17dgg_5072",j3="_flexBetweenCenter_17dgg_5079",D3="_deleteBtnSmall_17dgg_5084",M3="_deleteBtnMedium_17dgg_5090",L3="_trashIcon_17dgg_5097",O3="_gridConfig_17dgg_5101",B3="_flexColGap4_17dgg_5108",W3="_flexColGap4Center_17dgg_5114",$3="_flex1_17dgg_5121",F3="_flexCol_17dgg_5108",U3="_flexGrow1_17dgg_5131",z3="_inputLabel_17dgg_5135",H3="_inputLabelBlock_17dgg_5139",V3="_checkboxInput_17dgg_5145",G3="_configDividerMargin_17dgg_5151",K3="_configDividerMargin24_17dgg_5156",q3="_pathListMargin_17dgg_5161",Y3="_cancelBtnRed_17dgg_5165",Z3="_code_17dgg_4404",J3="_workflowList_17dgg_5192",X3="_workflowActions_17dgg_5200",Q3="_textBtn_17dgg_5209",e4="_workflowGrid_17dgg_5223",t4="_checkboxLabel_17dgg_5231",r4="_checkboxSmall_17dgg_5245",n4="_docWorkspace_17dgg_5264",a4="_docIndexPanel_17dgg_5275",s4="_docWorkspaceTrayMode_17dgg_5287",o4="_docViewerPanel_17dgg_5287",i4="_docWorkspaceTrayOpen_17dgg_5292",c4="_docTrayPanel_17dgg_5296",l4="_docTrayPanelOpen_17dgg_5320",d4="_docSpinning_17dgg_5328",u4="_docSpin_17dgg_5328",p4="_docViewerEmpty_17dgg_5347",f4="_agentsModuleRoot_17dgg_5362",m4="_agentsModuleWithTray_17dgg_5374",g4="_agentsModuleTrayOpen_17dgg_5378",h4="_agentTrayPanel_17dgg_5382",y4="_agentTrayPanelOpen_17dgg_5405",k4="_agentTrayHeader_17dgg_5413",v4="_agentTrayTitle_17dgg_5428",w4="_agentTrayContent_17dgg_5440",b4="_agentTrayContentInner_17dgg_5448",S4="_agentsModuleContent_17dgg_5452",A4="_taskforceAgentsModuleRoot_17dgg_5460",C4="_taskforceAgentsModuleMain_17dgg_5471",I4="_taskforceAgentsModuleTrayOpen_17dgg_5479",_4="_taskforceAgentRosterHeader_17dgg_5483",T4="_taskforceAgentRosterTitle_17dgg_5496",x4="_taskforceAgentRosterContent_17dgg_5508",R4="_taskforceAgentLibraryPortal_17dgg_5516",P4="_taskforceAgentBuilderNavigation_17dgg_5522",E4="_taskforceAgentBuilderTabs_17dgg_5545",N4="_taskforceAgentBuilderCreateBtn_17dgg_5562",j4="_taskforceAgentBuilderTab_17dgg_5545",D4="_taskforceAgentBuilderTabActive_17dgg_5603",M4="_taskforceAgentBuilderPanel_17dgg_5621",L4="_taskforceAgentBuilderEmpty_17dgg_5629",O4="_taskforceAgentBuilderEmptyIcon_17dgg_5638",B4="_taskforceAgentTestGrid_17dgg_5650",W4="_taskforceAgentContextBanner_17dgg_5657",$4="_taskforceAgentContextActions_17dgg_5676",F4="_taskforceAssistantWorkspace_17dgg_5700",U4="_taskforceAssistantWorkspaceContent_17dgg_5710",z4="_taskforceAssistantWorkspaceOpen_17dgg_5719",H4="_taskforceAssistantWorkspaceCollapsed_17dgg_5723",V4="_taskforceModalWithAssistantPanel_17dgg_5727",G4="_taskforceModalWithAssistantPanelCollapsed_17dgg_5732",K4="_taskforceTaskModalOverlay_17dgg_5736",q4="_taskforceAgentDrawerOverlay_17dgg_5757",Y4="_taskforceAgentDrawerOverlayCollapsed_17dgg_5767",Z4="_taskforceAgentDrawerPanel_17dgg_5771",J4="_taskforceAgentDrawerHeader_17dgg_5783",X4="_taskforceAgentDrawerAgentHeader_17dgg_5793",Q4="_taskforceAgentDrawerHeaderFallback_17dgg_5794",e7="_taskforceAgentDrawerAgentAvatar_17dgg_5802",t7="_taskforceAgentDrawerFallbackAvatar_17dgg_5803",r7="_taskforceAgentDrawerAgentAvatarButton_17dgg_5825",n7="_taskforceAgentDrawerAgentPicker_17dgg_5849",a7="_taskforceAgentDrawerHeaderActions_17dgg_5869",s7="_taskforceAgentDrawerLoading_17dgg_5875",o7="_taskforceAgentDrawerSurface_17dgg_5883",i7="_taskforceAgentDrawerControls_17dgg_5893",c7="_taskforceAgentProfileTray_17dgg_5900",l7="_taskforceAgentProfileTrayIn_17dgg_1",d7="_taskforceAgentProfileTrayHeader_17dgg_5912",u7="_taskforceAgentProfileTrayIdentity_17dgg_5920",p7="_taskforceAgentProfileTrayDetails_17dgg_5928",f7="_taskforceAgentDrawerChatControls_17dgg_5994",m7="_taskforceAgentConversationRename_17dgg_6002",g7="_taskforceAgentConversationRenameError_17dgg_6014",h7="_taskforceAgentDrawerConversationList_17dgg_6021",y7="_taskforceAgentDrawerPrompt_17dgg_6027",k7="_taskforceAgentDrawerPromptStatus_17dgg_6047",v7="_taskforceAgentDrawerMetrics_17dgg_6055",w7="_taskforceAgentOutputStack_17dgg_6080",b7="_taskforceAgentOutputPanel_17dgg_6087",S7="_taskforceAgentTestTitle_17dgg_6098",A7="_taskforceAgentTestNotice_17dgg_6125",C7="_taskforceAgentTestError_17dgg_6126",I7="_taskforceAgentTestPending_17dgg_6127",_7="_taskforceAgentTestActions_17dgg_6160",T7="_taskforceAgentTestRestriction_17dgg_6171",x7="_taskforceAgentTestResult_17dgg_6178",R7="_taskforceAgentTestResultHeader_17dgg_6188",P7="_taskforceAgentTestResponse_17dgg_6206",E7="_taskforceAgentReadonlyField_17dgg_6222",N7="_taskforceAgentAvatarPanel_17dgg_6235",j7="_taskforceAgentAvatarEditControl_17dgg_6247",D7="_taskforceAgentAvatarPreview_17dgg_6253",M7="_taskforceAgentListAvatar_17dgg_6254",L7="_taskforceAgentAvatarSyncing_17dgg_6279",O7="_taskforceAgentAvatarSyncIcon_17dgg_6283",B7="_taskforceAgentAvatarCopy_17dgg_6296",W7="_taskforceAgentAvatarRole_17dgg_6314",$7="_taskforceAgentToolbar_17dgg_6334",F7="_taskforceAgentConversationSelect_17dgg_6344",U7="_taskforceAgentList_17dgg_6254",z7="_taskforceAgentListEmpty_17dgg_6361",H7="_taskforceAgentSignatureColorField_17dgg_6368",V7="_aiProfileColorPicker_17dgg_6387",G7="_taskforceAgentBehaviorGrid_17dgg_6392",K7="_taskforceAgentBehaviorWide_17dgg_6398",q7="_taskforceAgentFieldHelper_17dgg_6402",Y7="_taskforceAgentPresentationGroup_17dgg_6409",Z7="_taskforceAgentLogList_17dgg_6424",J7="_taskforceAgentLogEntry_17dgg_6430",X7="_taskforceAgentToolDetails_17dgg_6441",Q7="_taskforceAgentToolActivity_17dgg_6455",e5="_taskforceAgentToolActivityList_17dgg_6483",t5="_taskforceAgentToolCall_17dgg_6490",r5="_taskforceAgentToolCallFailed_17dgg_6506",n5="_taskforceAgentToolCallName_17dgg_6510",a5="_taskforceAgentToolCallStatus_17dgg_6520",s5="_taskforceAgentToolDetailsGrid_17dgg_6526",o5="_taskforceAgentLogSuccess_17dgg_6561",i5="_taskforceAgentLogError_17dgg_6565",c5="_taskforceAgentLogTime_17dgg_6569",l5="_taskforceAgentConversationList_17dgg_6575",d5="_taskforceAgentConversationBody_17dgg_6594",u5="_taskforceAgentConversationMessage_17dgg_6595",p5="_taskforceAgentConversationEmpty_17dgg_6600",f5="_taskforceAgentConversationMessageUser_17dgg_6641",m5="_taskforceAgentConversationMessageAssistant_17dgg_6653",g5="_taskforceAgentMetaGrid_17dgg_6668",h5="_marginTop24_17dgg_6696",y5="_settingSubTitle_17dgg_6700",k5="_dangerBtn_17dgg_6709",v5="_aiProfilesExplorer_17dgg_6725",w5="_aiProfilesRosterPanel_17dgg_6734",b5="_aiProfilesRosterSummary_17dgg_6745",S5="_aiProfileSeatSummary_17dgg_6754",A5="_aiProfilesRosterState_17dgg_6758",C5="_aiProfilesListPane_17dgg_6770",I5="_aiProfilesList_17dgg_6770",_5="_aiProfilesDetailViewport_17dgg_6790",T5="_aiProfilesSection_17dgg_6797",x5="_aiProfilesSectionHeader_17dgg_6803",R5="_aiProfileGroup_17dgg_6811",P5="_aiProfileGroupSelected_17dgg_6834",E5="_aiProfileGroupDuplicate_17dgg_6841",N5="_aiProfileGroupHeader_17dgg_6846",j5="_aiProfileGroupAvatar_17dgg_6854",D5="_aiProfileGroupAvatarLogo_17dgg_6876",M5="_aiProfileGroupIdentity_17dgg_6888",L5="_aiProfileName_17dgg_6897",O5="_aiProfileHandle_17dgg_6905",B5="_aiProfileRole_17dgg_6906",W5="_aiProfileSeatScopeIcon_17dgg_6926",$5="_aiProfileGroupSignatureSwatch_17dgg_6937",F5="_aiProfileSeatScopeIconDetail_17dgg_6943",U5="_aiProfileSeatScopeIconCloud_17dgg_6948",z5="_aiProfileSeatScopeIconLocal_17dgg_6952",H5="_aiProfileDuplicateBadge_17dgg_6956",V5="_aiProfileMergeSection_17dgg_6968",G5="_aiProfileMergeRow_17dgg_6975",K5="_aiProfileIdChip_17dgg_6982",q5="_aiProfileKeepBadge_17dgg_6994",Y5="_aiProfileMergeActions_17dgg_7008",Z5="_aiProfileDetailPane_17dgg_7015",J5="_aiProfileDetailCard_17dgg_7021",X5="_aiProfileDetailHero_17dgg_7034",Q5="_aiProfileDetailIcon_17dgg_7040",eU="_aiProfileDetailAvatar_17dgg_7054",tU="_aiProfileDetailAvatarLogo_17dgg_7058",rU="_aiProfileDetailHeading_17dgg_7076",nU="_aiProfileDetailTitleRow_17dgg_7081",aU="_aiProfileDetailTitle_17dgg_7081",sU="_aiProfileDetailMetaRow_17dgg_7096",oU="_aiProfileDetailHandle_17dgg_7104",iU="_aiProfileDetailRole_17dgg_7109",cU="_aiProfileDetailLinkedCount_17dgg_7116",lU="_aiProfileDetailDescription_17dgg_7121",dU="_aiProfileSignatureColor_17dgg_7128",uU="_aiProfileSignatureSwatch_17dgg_7138",pU="_aiProfileSignatureColorButton_17dgg_7156",fU="_aiProfileColorOption_17dgg_7183",mU="_aiProfileDetailDataList_17dgg_7197",gU="_aiProfileDetailDataGroup_17dgg_7206",hU="_aiProfileDetailDateGroup_17dgg_7213",yU="_aiProfileDetailDataRow_17dgg_7218",kU="_aiProfileDetailDataLabel_17dgg_7227",vU="_aiProfileDetailDataValue_17dgg_7234",wU="_aiProfileStatusSelect_17dgg_7240",bU="_aiProfileInstanceSection_17dgg_7282",SU="_aiProfileInstanceSectionHeader_17dgg_7288",AU="_aiProfileInstanceList_17dgg_7298",CU="_aiProfileInstanceCard_17dgg_7304",IU="_aiProfileIdFooter_17dgg_7317",_U="_aiProfileIdFooterValue_17dgg_7327",TU="_aiProfileDangerTextButton_17dgg_7337",xU="_aiProfileInstanceTopRow_17dgg_7369",RU="_aiProfileInstanceName_17dgg_7376",PU="_aiProfileInstanceMeta_17dgg_7383",EU="_aiProfileInlineError_17dgg_7391",E={filterGlow:HD,floatingButton:VD,badge:GD,configBadge:KD,configBadgeActive:qD,configBadgeRevoked:YD,configBadgeExpired:ZD,coreModal:JD,header:XD,headerTitle:QD,brandIcon:eM,brandHomeButton:tM,brandHomeStatic:rM,brandCloudSuffix:nM,projectSlash:aM,projectNameGroup:sM,projectNameGroupHidden:oM,projectName:iM,projectNameCopied:cM,projectNameCopyFeedback:lM,taskCountBadge:dM,taskCountBadgeIcon:uM,taskCountBadgeButton:pM,taskCountBadgeActive:fM,taskCountBadgeAlert:mM,headerActions:gM,sortDirectionBtn:hM,sortDirectionBtnWidget:yM,form:kM,topRow:vM,field:wM,labelRow:bM,label:SM,manageLink:AM,input:CM,select:IM,textarea:_M,taskIdInlineLink:TM,readOnly:xM,selectWithConfig:RM,configBtn:PM,configBtnActive:EM,hasPath:NM,pathIndicator:jM,formActions:DM,hasCancel:MM,submitBtn:LM,cancelBtn:OM,successMessage:BM,errorMessage:WM,successIcon:$M,spinner:FM,spin:UM,boardRefreshIndicator:zM,destructiveBtn:HM,warningBtn:VM,viewTab:GM,loading:KM,emptyState:qM,taskList:YM,referenceBadge:ZM,referenceBadgeLabel:JM,referenceBadgeStatic:XM,provisionalReferenceBadge:QM,copiedReference:e2,highlight:t2,modal:r2,priorityEmoji:n2,metaItem:a2,taskFormDateInput:s2,metaBadge:o2,complexityPill:i2,complexityDots:c2,dot:l2,dotFilled:d2,typePill:u2,type_bug:p2,type_feature:f2,type_chore:m2,type_refactor:g2,type_documentation:h2,type_research:y2,"type_ui-ux":"_type_ui-ux_17dgg_903",type_security:k2,statusActionsGroup:v2,statusActionsGroupCompact:w2,statusSelectWrap:b2,statusTaxonomyDropdownWrap:S2,statusTaxonomyDropdown:A2,statusTaxonomyDropdownCompact:C2,statusTaxonomyDropdownIconOnly:I2,taxonomyDropdownButton:_2,taxonomyDropdownButtonContent:T2,statusTaxonomyDropdownIconOnlyPanel:x2,actionBtn:R2,restoreTaskBtn:P2,startWorkBtn:E2,workingBtn:N2,pulse:j2,reviewBtn:D2,reviewActiveBtn:M2,reviewPill:L2,bulkArchiveBtn:O2,bulkDeleteBtn:B2,deleteBtn:W2,completeBtn:$2,completeActiveBtn:F2,deleteActiveBtn:U2,disabledBtn:z2,archiveList:H2,archiveHeader:V2,settingsTab:G2,settingsTabMcpOnly:K2,settingsTabs:q2,settingsLayout:Y2,settingsLayoutMcpOnly:Z2,settingsSidebar:J2,settingsSidebarHeader:X2,settingsSidebarNav:Q2,settingsSidebarBtn:eL,settingsSidebarBtnActive:tL,settingsSidebarGroup:rL,settingsSidebarGroupBtn:nL,settingsSidebarGroupLabel:aL,settingsSidebarGroupChevron:sL,settingsSidebarSubnav:oL,settingsSidebarSubBtn:iL,appScrollbar:cL,settingsTabBtn:lL,settingsTabBtnActive:dL,settingsContent:uL,mcpRegistrationHint:pL,mcpRegistrationPrompt:fL,mcpCodexTrustNote:mL,mcpCodexTrustHeader:gL,mcpCodexTrustTitle:hL,mcpCodexTrustCode:yL,mcpAuthRequiredCard:kL,mcpAuthRequiredIcon:vL,mcpAuthRequiredBody:wL,mcpAuthRequiredActions:bL,settingsToast:SL,settingsToastSuccess:AL,settingsToastError:CL,inputWithPrefix:IL,pathHint:_L,settingGroup:TL,taskCardSettingsLayout:xL,taskCardDependentSetting:RL,taskCardSettingWithHelp:PL,taskCardSettingHelp:EL,taskCardSettingsPreview:NL,taskCardSettingsPreviewFrame:jL,workspaceIdentity:DL,workspaceIdentityValueRow:ML,workspaceIdentityValue:LL,workspaceProfileForm:OL,workspaceProfileTextareaLabel:BL,workspaceProfileActions:WL,settingTitle:$L,settingTitleRow:FL,settingTitleActionBtn:UL,themeOptions:zL,buttonGrid:HL,themeBtn:VL,activeTheme:GL,pathInputGroup:KL,saveSettingsBtn:qL,shortcutInputWrapper:YL,inputIcon:ZL,settingHelper:JL,browseBtn:XL,inlineCategoryManager:QL,categoryManager:eO,categoryList:tO,categoryChip:rO,categoryChipLabel:nO,chipActionBtn:aO,removeCategoryBtn:sO,addCategoryForm:oO,addCategoryBtn:iO,filesList:cO,helpLink:lO,taskChildrenSummaryBadges:dO,taskChildrenProgressBar:uO,taskChildrenProgressBarSegmentDone:pO,taskChildrenProgressBarSegmentReview:fO,taskChildrenProgressBarSegmentInProgress:mO,taskChildrenProgressBarSegmentBlocked:gO,taskChildrenProgressText:hO,taskChildUnlinkBtn:yO,aboutText:kO,versionInfo:vO,filterBar:wO,kanbanHintText:bO,searchContainer:SO,searchIcon:AO,searchInput:CO,searchActive:IO,searchCount:_O,clearSearchBtn:TO,filterRow:xO,sortLabel:RO,archiveToggle:PO,filterContainer:EO,filterButton:NO,filterActive:jO,filterDropdown:DO,filterSearch:MO,filterSearchIcon:LO,filterSearchInput:OO,filterEmpty:BO,filterOption:WO,filterDivider:$O,filterSelect:FO,filterToggleBtn:UO,inProgressToggle:zO,activeInProgress:HO,activeFilter:VO,resetFiltersBtn:GO,categoryChip_disabled:KO,categoryVisibilityToggle:qO,editCategoryInput:YO,categoryChipActionBtn:ZO,categoryChipActionBtn_active:JO,categoryGroup:XO,categoryHeader:QO,categoryTitle:eB,categoryCount:tB,categoryItems:rB,selectPriority_low:nB,selectPriority_medium:aB,selectPriority_high:sB,selectPriority_critical:oB,"critical-glow":"_critical-glow_17dgg_1",levelSelect:iB,levelOption:cB,levelOptionFilled:lB,levelOption_priority_low:dB,levelOption_priority_medium:uB,levelOption_priority_high:pB,levelOption_priority_critical:fB,levelOption_complexity_tiny:mB,levelOption_complexity_low:gB,levelOption_complexity_medium:hB,levelOption_complexity_high:yB,levelOption_complexity_epic:kB,levelOptionActive:vB,levelOptionSelected:wB,levelLabel:bB,levelLabelFadeIn:SB,closeConfigBtn:AB,configItem:CB,settingsLabel:IB,settingsHint:_B,pathList:TB,pathChip:xB,pathValid:RB,pathInvalid:PB,pathValidIcon:EB,pathInvalidIcon:NB,pathText:jB,removePathBtn:DB,pathCount:MB,specialistSection:LB,toggleHeading:OB,dropdownList:BB,specialistBadge:WB,iconGrid:$B,iconPickerBtn:FB,iconPickerBtnActive:UB,categorySubConfig:zB,colorPickerRow:HB,colorPickerGrid:VB,colorSwatch:GB,colorSwatchActive:KB,categoryChipIcon:qB,fieldIconWrapper:YB,fieldIcon:ZB,field_dynamic:JB,fieldIcon_dynamic:XB,categoryTitleIcon:QB,editActionsGroup:eW,stickyActionHeader:tW,taskNoticeAnchor:rW,taskHierarchyHeader:nW,taskHierarchyBadgeRow:aW,taskHierarchyDivider:sW,taskHierarchySegment:oW,taskHierarchyMeta:iW,taskHierarchyActionBtn:cW,taskWorkstreamPicker:lW,taskWorkstreamPickerIcon:dW,taskWorkstreamPickerPanel:uW,taskWorkstreamPickerOption:pW,taskSaveStatus:fW,taskSaveStatusCenter:mW,taskSaveStatusError:gW,primaryUpdateBtn:hW,secondaryHeaderBtn:yW,secondaryHeaderBtnDestructive:kW,attachmentCaptureContainer:vW,capturePrompt:wW,previewContainer:bW,previewHeader:SW,attachmentCapturePreview:AW,actions:CW,primaryButton:IW,secondaryButton:_W,iconButton:TW,attachmentGrid:xW,attachmentCard:RW,attachmentPreviewContainer:PW,attachmentPreviewButton:EW,contextFileLink:NW,attachmentActions:jW,attachmentActionBtn:DW,attachmentActionBtnActive:MW,attachmentCaptionInput:LW,documentAttachmentCaptionInput:OW,hiddenInput:BW,contextMenuControl:WW,contextMenu:$W,contextAddMenu:FW,contextActionsMenu:UW,attachmentImageActionsMenu:zW,contextDestructiveMenuItem:HW,contextContent:VW,contextContentDropActive:GW,contextDropOverlay:KW,contextLinkComposer:qW,contextEmptyState:YW,contextGroupLabel:ZW,contextNotice:JW,contextCaptionEditor:XW,attachmentCaptionLabel:QW,documentAttachmentList:e$,documentAttachmentItem:t$,documentAttachmentRow:r$,documentAttachmentLink:n$,documentAttachmentMain:a$,documentAttachmentReference:s$,documentAttachmentName:o$,brokenImage:i$,brokenImagePlaceholder:c$,regionOverlay:l$,selectionBox:d$,exportRow:u$,exportItem:p$,taxonomyDrillDown:f$,drillDownList:m$,drillDownSection:g$,drillDownSectionHeader:h$,drillDownSectionTitle:y$,drillDownItem:k$,drillDownItemDimmed:v$,drillDownItemActive:w$,drillDownItemInfo:b$,drillDownItemText:S$,drillDownItemLabel:A$,drillDownItemSubtext:C$,addTaxonomyBtnSmall:I$,taxonomyDetailView:_$,slideIn:T$,detailHeader:x$,detailTitle:R$,detailContent:P$,createOverlay:E$,createDialog:N$,zoomIn:j$,dialogActions:D$,settingsGroup:M$,settingsItem:L$,mcpHealthCompactAlert:O$,mcpHealthUpdateRow:B$,mcpHealthBlockingAlert:W$,mcpHealthUpdateIcon:$$,mcpHealthCompactBody:F$,mcpHealthCompactActions:U$,mcpHealthStableAction:z$,mcpUpdateDialog:H$,mcpUpdateDialogIntro:V$,mcpUpdateRestartGuidance:G$,mcpUpdateVersionGrid:K$,mcpUpdateDiagnostics:q$,mcpUpdateLoading:Y$,mcpUpdateNotice:Z$,mcpUpdateCommands:J$,mcpUpdateSectionLabel:X$,mcpHealthCommandRow:Q$,mcpHealthCommand:eF,mcpUpdateDialogActions:tF,mcpHealthCopyError:rF,settingLabelGroup:nF,settingLabel:aF,settingDescription:sF,settingInput:oF,codeBlockWrapper:iF,codeHeader:cF,codeHeaderActions:lF,codeLabel:dF,codeHeaderDescription:uF,mcpTokenCardBody:pF,mcpTokenFormGrid:fF,mcpTokenOutputWrap:mF,mcpTokenValueField:gF,mcpTokenValueText:hF,mcpTokenValueInput:yF,mcpTokenActionRow:kF,settingsCodeBlock:vF,copyBtn:wF,copyBtnActive:bF,copyBtnNeutralActive:SF,headerDivider:AF,groupByContainer:CF,groupByLabel:IF,groupBySelect:_F,viewSwitcher:TF,selectWithIcon:xF,marginBottom16:RF,headerDraggable:PF,headerDragging:EF,filterSelectSort:NF,archiveRow:jF,taskScopeToggle:DF,taskScopeTabs:MF,taskScopeTab:LF,taskScopeTabActive:OF,taskToolbarAction:BF,overlayHighZ:WF,savedText:$F,shortcutInput:FF,saveSettingsBtnWrapper:UF,marginBottom12:zF,exportRowGrid:HF,settingSubtitleCustom:VF,capitalize:GF,marginTop12:KF,marginTop16:qF,labelGroupFlex:YF,codeBlockWrapperCustom:ZF,kanbanWrapper:JF,kanbanContainer:XF,kanbanTopScroll:QF,kanbanTopScrollSpacer:e3,kanbanColumn:t3,kanbanColumnSticky:r3,kanbanColumnCollapsed:n3,kanbanColumnPast:a3,kanbanColumnSelectedDay:s3,kanbanHeader:o3,kanbanCount:i3,kanbanHeaderDraggable:c3,kanbanHeaderPanning:l3,kanbanQuickAdd:d3,kanbanColorDot:u3,kanbanDroppable:p3,kanbanDroppableScroll:f3,kanbanDroppableScrollVirtualized:m3,kanbanVirtualCanvas:g3,kanbanVirtualRow:h3,kanbanEmpty:y3,kanbanCard:k3,kanbanCardWrapper:v3,taxonomyDropdownActive:w3,kanbanCardWrapperRaised:b3,kanbanCardTitle:S3,kanbanBadges:A3,kanbanBadge:C3,headerFlex:I3,marginBottom8:_3,marginBottom20:T3,configPanel:x3,configPanelLarge:R3,subLabelBlock:P3,subLabelBlock12:E3,flexBetween:N3,flexBetweenCenter:j3,deleteBtnSmall:D3,deleteBtnMedium:M3,trashIcon:L3,gridConfig:O3,flexColGap4:B3,flexColGap4Center:W3,flex1:$3,flexCol:F3,flexGrow1:U3,inputLabel:z3,inputLabelBlock:H3,checkboxInput:V3,configDividerMargin:G3,configDividerMargin24:K3,pathListMargin:q3,cancelBtnRed:Y3,code:Z3,workflowList:J3,workflowActions:X3,textBtn:Q3,workflowGrid:e4,checkboxLabel:t4,checkboxSmall:r4,docWorkspace:n4,docIndexPanel:a4,docWorkspaceTrayMode:s4,docViewerPanel:o4,docWorkspaceTrayOpen:i4,docTrayPanel:c4,docTrayPanelOpen:l4,docSpinning:d4,docSpin:u4,docViewerEmpty:p4,agentsModuleRoot:f4,agentsModuleWithTray:m4,agentsModuleTrayOpen:g4,agentTrayPanel:h4,agentTrayPanelOpen:y4,agentTrayHeader:k4,agentTrayTitle:v4,agentTrayContent:w4,agentTrayContentInner:b4,agentsModuleContent:S4,taskforceAgentsModuleRoot:A4,taskforceAgentsModuleMain:C4,taskforceAgentsModuleTrayOpen:I4,taskforceAgentRosterHeader:_4,taskforceAgentRosterTitle:T4,taskforceAgentRosterContent:x4,taskforceAgentLibraryPortal:R4,taskforceAgentBuilderNavigation:P4,taskforceAgentBuilderTabs:E4,taskforceAgentBuilderCreateBtn:N4,taskforceAgentBuilderTab:j4,taskforceAgentBuilderTabActive:D4,taskforceAgentBuilderPanel:M4,taskforceAgentBuilderEmpty:L4,taskforceAgentBuilderEmptyIcon:O4,taskforceAgentTestGrid:B4,taskforceAgentContextBanner:W4,taskforceAgentContextActions:$4,taskforceAssistantWorkspace:F4,taskforceAssistantWorkspaceContent:U4,taskforceAssistantWorkspaceOpen:z4,taskforceAssistantWorkspaceCollapsed:H4,taskforceModalWithAssistantPanel:V4,taskforceModalWithAssistantPanelCollapsed:G4,taskforceTaskModalOverlay:K4,taskforceAgentDrawerOverlay:q4,taskforceAgentDrawerOverlayCollapsed:Y4,taskforceAgentDrawerPanel:Z4,taskforceAgentDrawerHeader:J4,taskforceAgentDrawerAgentHeader:X4,taskforceAgentDrawerHeaderFallback:Q4,taskforceAgentDrawerAgentAvatar:e7,taskforceAgentDrawerFallbackAvatar:t7,taskforceAgentDrawerAgentAvatarButton:r7,taskforceAgentDrawerAgentPicker:n7,taskforceAgentDrawerHeaderActions:a7,taskforceAgentDrawerLoading:s7,taskforceAgentDrawerSurface:o7,taskforceAgentDrawerControls:i7,taskforceAgentProfileTray:c7,taskforceAgentProfileTrayIn:l7,taskforceAgentProfileTrayHeader:d7,taskforceAgentProfileTrayIdentity:u7,taskforceAgentProfileTrayDetails:p7,taskforceAgentDrawerChatControls:f7,taskforceAgentConversationRename:m7,taskforceAgentConversationRenameError:g7,taskforceAgentDrawerConversationList:h7,taskforceAgentDrawerPrompt:y7,taskforceAgentDrawerPromptStatus:k7,taskforceAgentDrawerMetrics:v7,taskforceAgentOutputStack:w7,taskforceAgentOutputPanel:b7,taskforceAgentTestTitle:S7,taskforceAgentTestNotice:A7,taskforceAgentTestError:C7,taskforceAgentTestPending:I7,taskforceAgentTestActions:_7,taskforceAgentTestRestriction:T7,taskforceAgentTestResult:x7,taskforceAgentTestResultHeader:R7,taskforceAgentTestResponse:P7,taskforceAgentReadonlyField:E7,taskforceAgentAvatarPanel:N7,taskforceAgentAvatarEditControl:j7,taskforceAgentAvatarPreview:D7,taskforceAgentListAvatar:M7,taskforceAgentAvatarSyncing:L7,taskforceAgentAvatarSyncIcon:O7,taskforceAgentAvatarCopy:B7,taskforceAgentAvatarRole:W7,taskforceAgentToolbar:$7,taskforceAgentConversationSelect:F7,taskforceAgentList:U7,taskforceAgentListEmpty:z7,taskforceAgentSignatureColorField:H7,aiProfileColorPicker:V7,taskforceAgentBehaviorGrid:G7,taskforceAgentBehaviorWide:K7,taskforceAgentFieldHelper:q7,taskforceAgentPresentationGroup:Y7,taskforceAgentLogList:Z7,taskforceAgentLogEntry:J7,taskforceAgentToolDetails:X7,taskforceAgentToolActivity:Q7,taskforceAgentToolActivityList:e5,taskforceAgentToolCall:t5,taskforceAgentToolCallFailed:r5,taskforceAgentToolCallName:n5,taskforceAgentToolCallStatus:a5,taskforceAgentToolDetailsGrid:s5,taskforceAgentLogSuccess:o5,taskforceAgentLogError:i5,taskforceAgentLogTime:c5,taskforceAgentConversationList:l5,taskforceAgentConversationBody:d5,taskforceAgentConversationMessage:u5,taskforceAgentConversationEmpty:p5,taskforceAgentConversationMessageUser:f5,taskforceAgentConversationMessageAssistant:m5,taskforceAgentMetaGrid:g5,marginTop24:h5,settingSubTitle:y5,dangerBtn:k5,aiProfilesExplorer:v5,aiProfilesRosterPanel:w5,aiProfilesRosterSummary:b5,aiProfileSeatSummary:S5,aiProfilesRosterState:A5,aiProfilesListPane:C5,aiProfilesList:I5,aiProfilesDetailViewport:_5,aiProfilesSection:T5,aiProfilesSectionHeader:x5,aiProfileGroup:R5,aiProfileGroupSelected:P5,aiProfileGroupDuplicate:E5,aiProfileGroupHeader:N5,aiProfileGroupAvatar:j5,aiProfileGroupAvatarLogo:D5,aiProfileGroupIdentity:M5,aiProfileName:L5,aiProfileHandle:O5,aiProfileRole:B5,aiProfileSeatScopeIcon:W5,aiProfileGroupSignatureSwatch:$5,aiProfileSeatScopeIconDetail:F5,aiProfileSeatScopeIconCloud:U5,aiProfileSeatScopeIconLocal:z5,aiProfileDuplicateBadge:H5,aiProfileMergeSection:V5,aiProfileMergeRow:G5,aiProfileIdChip:K5,aiProfileKeepBadge:q5,aiProfileMergeActions:Y5,aiProfileDetailPane:Z5,aiProfileDetailCard:J5,aiProfileDetailHero:X5,aiProfileDetailIcon:Q5,aiProfileDetailAvatar:eU,aiProfileDetailAvatarLogo:tU,aiProfileDetailHeading:rU,aiProfileDetailTitleRow:nU,aiProfileDetailTitle:aU,aiProfileDetailMetaRow:sU,aiProfileDetailHandle:oU,aiProfileDetailRole:iU,aiProfileDetailLinkedCount:cU,aiProfileDetailDescription:lU,aiProfileSignatureColor:dU,aiProfileSignatureSwatch:uU,aiProfileSignatureColorButton:pU,aiProfileColorOption:fU,aiProfileDetailDataList:mU,aiProfileDetailDataGroup:gU,aiProfileDetailDateGroup:hU,aiProfileDetailDataRow:yU,aiProfileDetailDataLabel:kU,aiProfileDetailDataValue:vU,aiProfileStatusSelect:wU,aiProfileInstanceSection:bU,aiProfileInstanceSectionHeader:SU,aiProfileInstanceList:AU,aiProfileInstanceCard:CU,aiProfileIdFooter:IU,aiProfileIdFooterValue:_U,aiProfileDangerTextButton:TU,aiProfileInstanceTopRow:xU,aiProfileInstanceName:RU,aiProfileInstanceMeta:PU,aiProfileInlineError:EU},NU="_standaloneWrapper_128c3_1",jU="_standalonePage_128c3_11",DU="_standaloneHeader_128c3_21",MU="_standaloneTitle_128c3_27",LU="_standaloneContent_128c3_31",OU="_workspaceToolRail_128c3_37",BU="_workspaceToolRailLeft_128c3_48",WU="_workspaceToolRailRight_128c3_57",$U="_workspaceToolRailMain_128c3_64",FU="_workspaceToolRailBottom_128c3_72",UU="_workspaceToolRailDivider_128c3_82",zU="_workspaceToolButton_128c3_89",HU="_headerTitleWidget_128c3_124",Xr={standaloneWrapper:NU,standalonePage:jU,standaloneHeader:DU,standaloneTitle:MU,standaloneContent:LU,workspaceToolRail:OU,workspaceToolRailLeft:BU,workspaceToolRailRight:WU,workspaceToolRailMain:$U,workspaceToolRailBottom:FU,workspaceToolRailDivider:UU,workspaceToolButton:zU,headerTitleWidget:HU},VU="_overlay_11v7l_1",GU="_browser_11v7l_16",KU="_header_11v7l_27",qU="_pathInfo_11v7l_36",YU="_actions_11v7l_52",ZU="_list_11v7l_57",JU="_item_11v7l_63",XU="_itemCurrent_11v7l_80",QU="_itemFile_11v7l_86",e6="_empty_11v7l_90",Mn={overlay:VU,browser:GU,header:KU,pathInfo:qU,actions:YU,list:ZU,item:JU,itemCurrent:XU,itemFile:QU,empty:e6},t6="_overlay_1hk7m_2",r6="_overlayHighZ_1hk7m_15",n6="_modal_1hk7m_20",a6="_draggableModal_1hk7m_46",s6="_draggableHeader_1hk7m_53",o6="_headerActions_1hk7m_61",i6="_modalContent_1hk7m_69",c6="_form_1hk7m_80",l6="_formActions_1hk7m_91",d6="_modalFooter_1hk7m_98",u6="_modalSizeSm_1hk7m_104",p6="_modalSizeMd_1hk7m_108",f6="_modalSizeMdWide_1hk7m_112",m6="_modalSizeLg_1hk7m_116",g6="_modalSizeXl_1hk7m_120",h6="_modalSizeFull_1hk7m_124",y6="_settingsViewModal_1hk7m_129",k6="_unsavedOverlay_1hk7m_148",v6="_unsavedModal_1hk7m_153",w6="_unsavedHeader_1hk7m_159",b6="_unsavedTitle_1hk7m_164",S6="_unsavedContent_1hk7m_168",A6="_unsavedText_1hk7m_172",C6="_unsavedActions_1hk7m_177",mr={overlay:t6,overlayHighZ:r6,modal:n6,draggableModal:a6,draggableHeader:s6,headerActions:o6,modalContent:i6,form:c6,formActions:l6,modalFooter:d6,modalSizeSm:u6,modalSizeMd:p6,modalSizeMdWide:f6,modalSizeLg:m6,modalSizeXl:g6,modalSizeFull:h6,settingsViewModal:y6,unsavedOverlay:k6,unsavedModal:v6,unsavedHeader:w6,unsavedTitle:b6,unsavedContent:S6,unsavedText:A6,unsavedActions:C6},I6=90;function qI(e){const t=Date.parse(String(e||"").trim());return Number.isFinite(t)?new Date(t+I6*24*60*60*1e3).toISOString():null}function YI(e,t){const r=o.useRef(t);o.useLayoutEffect(()=>{r.current=t},[t]);const n=o.useMemo(()=>Nx(e),[e]),s=o.useMemo(()=>n,[n.revision]);return o.useMemo(()=>({resolve:s.resolve,activate:i=>r.current(i)}),[s])}function ZI(e,t,r){const[n,s]=o.useState(()=>new Set),i=o.useMemo(()=>new Map(e.map(h=>[h.taskId,h])),[e]),l=o.useMemo(()=>t.map(h=>i.get(h)).filter(h=>!!h),[t,i]),c=o.useMemo(()=>new Set(l.map(h=>h.id)),[l]);o.useEffect(()=>{s(h=>{const y=r?new Set(Array.from(h).filter(k=>c.has(k))):new Set;return y.size===h.size&&Array.from(y).every(k=>h.has(k))?h:y})},[r,c]);const d=o.useMemo(()=>l.filter(h=>n.has(h.id)),[l,n]),f=o.useCallback((h,y)=>{s(k=>{const w=new Set(k);return y?w.add(h):w.delete(h),w})},[]),p=o.useCallback(()=>{s(new Set(l.map(h=>h.id)))},[l]),g=o.useCallback(()=>s(new Set),[]);return{selectedIds:n,selectedRecords:d,matchingRecords:l,selectedCount:d.length,allMatchingSelected:l.length>0&&d.length===l.length,someMatchingSelected:d.length>0&&d.length<l.length,toggle:f,selectAllMatching:p,clear:g}}const Uv="taskforce:preview-context-attachment";function om(e,t){const r=new CustomEvent(Uv,{detail:{attachment:e,...t},cancelable:!0});return!window.dispatchEvent(r)}async function JI(e,t){const r=t.fetcher||fetch,n=new URLSearchParams({workspaceId:t.workspaceId});if(e.kind==="image"){const c=await r(`/api/taskforce/annotated-attachments/images/${encodeURIComponent(e.token)}?${n.toString()}`,{credentials:"include",headers:t.headers});if(!c.ok)throw new Error("Image not found");const f=(await c.json()).target;if(!f?.assetId||!f.path)throw new Error("Image target is unavailable");return{path:f.path,assetId:f.assetId,displayName:f.displayName,referenceNumber:e.referenceNumber,referenceLabel:f.imageReferenceLabel||e.token,linkRole:"image"}}const s=await r(`/api/taskforce/documents?${n.toString()}`,{credentials:"include",headers:t.headers});if(!s.ok)throw new Error("Document list unavailable");const l=(await s.json()).documents?.find(c=>c.referenceNumber===e.referenceNumber||String(c.referenceLabel||"").toUpperCase()===e.token);if(!l?.apiUrl)throw new Error("Document not found");return{path:l.apiUrl,fsPath:l.fsPath,assetId:l.assetId,displayName:l.title,originalFilename:l.originalFilename||void 0,referenceNumber:e.referenceNumber,referenceLabel:l.referenceLabel||e.token,linkRole:"reference"}}const Ei={workspaceId:"workspaceId",task:"task",activity:"activity",comment:"comment",initiative:"initiative",workstream:"workstream",image:"image",document:"document"};function _6(e){const t=String(e||"").trim();if(!t)return null;try{const r=new URL(t);return r.protocol!=="http:"&&r.protocol!=="https:"?null:r.origin}catch{return null}}function T6(e){const t=_6(e.applicationBaseUrl),r=String(e.workspaceId).trim(),n=String(e.id||"").trim();if(!t||!r||!n)return null;const s=new URL("/",t);s.searchParams.set(Ei.workspaceId,r),s.searchParams.set(Ei[e.target],n);const i=String(e.activityId||"").trim();return e.target==="task"&&i&&s.searchParams.set(Ei.activity,i),s.toString()}function x6(e){const t=e.charAt(0).toUpperCase()+e.slice(1).toLowerCase(),r={Category:"Categories",Priority:"Priorities",Status:"Statuses"};return r[t]?r[t]:`${e}s`}function Ad({label:e,options:t,selected:r,onChange:n,variant:s="label",containerStyle:i,renderOptionContent:l,searchable:c=!1,searchPlaceholder:d="Search options...",noResultsText:f="No matching options."}){const[p,g]=o.useState(!1),[h,y]=o.useState(""),k=o.useRef(null),w=o.useRef(null),S=o.useRef(null),b=c&&h.trim()?t.filter(x=>x.label.toLocaleLowerCase().includes(h.trim().toLocaleLowerCase())):t;o.useEffect(()=>{const x=V=>{k.current&&!k.current.contains(V.target)&&g(!1)};return document.addEventListener("mousedown",x),()=>document.removeEventListener("mousedown",x)},[]),o.useEffect(()=>{p&&c&&S.current?.focus()},[p,c]);const v=x=>{r.includes(x)?n(r.filter(V=>V!==x)):n([...r,x])},T=t.length>0&&t.every(x=>{const V=s==="label"?x.label:x.value;return r.includes(V)}),R=!t.some(x=>{const V=s==="label"?x.label:x.value;return r.includes(V)}),P=()=>{n(T?[]:t.map(x=>s==="label"?x.label:x.value))},N=t.filter(x=>{const V=s==="label"?x.label:x.value;return r.includes(V)}).length,I=x6(e),$=T?`All ${I}`:R?`No ${I}`:N===1?`1 ${e}`:`${N} ${I}`,j=()=>{y(""),g(x=>!x)};return a.jsxs("div",{className:E.filterContainer,ref:k,style:i,children:[a.jsxs("button",{ref:w,type:"button",className:`${E.filterButton} ${T?"":E.filterActive}`,onClick:j,title:`Filter by ${e}`,"aria-expanded":p,children:[a.jsx("span",{children:$}),a.jsx(Ud,{size:14,style:{transform:p?"rotate(180deg)":"none",transition:"transform 0.2s",opacity:.5}})]}),p&&a.jsxs("div",{className:`${E.filterDropdown} ${E.appScrollbar} tf-scrollbar`,onKeyDown:x=>{x.key==="Escape"&&(x.preventDefault(),g(!1),w.current?.focus())},children:[c?a.jsxs("div",{className:E.filterSearch,children:[a.jsx(Xh,{size:14,className:E.filterSearchIcon,"aria-hidden":"true"}),a.jsx("input",{ref:S,type:"search",role:"searchbox",className:`tf-field-shell ${E.filterSearchInput}`,value:h,placeholder:d,"aria-label":d,onChange:x=>y(x.target.value)})]}):null,a.jsxs("label",{className:E.filterOption,children:[a.jsx("input",{type:"checkbox",checked:T,onChange:P}),a.jsx("span",{style:{fontWeight:600},children:"Toggle All"})]}),a.jsx("div",{className:E.filterDivider}),b.map(x=>{const V=s==="label"?x.label:x.value,U=r.includes(V);return a.jsxs("label",{className:E.filterOption,children:[a.jsx("input",{type:"checkbox",checked:U,onChange:()=>v(V)}),l?l(x):a.jsx("span",{children:x.label})]},x.value)}),b.length===0?a.jsx("div",{className:E.filterEmpty,role:"status",children:f}):null]})]})}const R6="_taskItem_17iu4_1",P6="_compressed_17iu4_25",E6="_taskHeader_17iu4_30",N6="_taskReferenceCluster_17iu4_34",j6="_taskMeta_17iu4_38",D6="_taskTitle_17iu4_43",M6="_taskCover_17iu4_59",L6="_taskItemRecentlyChanged_17iu4_103",O6="_assigneeAvatarShared_17iu4_143",B6="_assigneePicker_17iu4_156",W6="_inProgress_17iu4_216",$6="_onHold_17iu4_217",F6="_readyForReview_17iu4_218",U6="_completed_17iu4_219",z6="_cancelled_17iu4_232",H6="_readOnly_17iu4_243",V6="_archived_17iu4_252",G6="_taskContent_17iu4_262",K6="_kanbanCardOverlay_17iu4_271",q6="_deletedExpiry_17iu4_292",Y6="_taskReferenceDivider_17iu4_315",Z6="_taskReferenceSegment_17iu4_322",J6="_taskActions_17iu4_329",X6="_taskMetaCompact_17iu4_352",Q6="_taskMetaRow_17iu4_359",ez="_taskMetaBadgeGroup_17iu4_369",tz="_taskMetaIdentityGroup_17iu4_382",rz="_taskDescription_17iu4_390",nz="_taskLatestComment_17iu4_399",az="_taskLatestCommentTinted_17iu4_414",sz="_taskLatestCommentHeader_17iu4_418",oz="_taskLatestActivityHeading_17iu4_435",iz="_taskLatestActivityActor_17iu4_443",cz="_taskCommentCount_17iu4_454",lz="_taskLatestCommentText_17iu4_464",dz="_taskMetaCategory_17iu4_474",uz="_taskMetaType_17iu4_480",pz="_taskMetaPriority_17iu4_486",fz="_taskComplexityLabel_17iu4_490",mz="_taskCancellationReason_17iu4_495",gz="_archiveBadge_17iu4_648",hz="_attachmentThumbnails_17iu4_653",yz="_attachmentImageRow_17iu4_660",kz="_attachmentDocumentList_17iu4_667",vz="_attachmentThumbnail_17iu4_653",wz="_contextDocThumb_17iu4_702",bz="_contextDocMain_17iu4_728",Sz="_contextDocName_17iu4_735",Az="_taskSpecialists_17iu4_745",Cz="_taxonomiesList_17iu4_754",Iz="_selected_17iu4_815",_z="_selectionControl_17iu4_820",hr={taskItem:R6,compressed:P6,taskHeader:E6,taskReferenceCluster:N6,taskMeta:j6,taskTitle:D6,taskCover:M6,taskItemRecentlyChanged:L6,assigneeAvatarShared:O6,assigneePicker:B6,inProgress:W6,onHold:$6,readyForReview:F6,completed:U6,cancelled:z6,readOnly:H6,archived:V6,taskContent:G6,kanbanCardOverlay:K6,deletedExpiry:q6,taskReferenceDivider:Y6,taskReferenceSegment:Z6,taskActions:J6,taskMetaCompact:X6,taskMetaRow:Q6,taskMetaBadgeGroup:ez,taskMetaIdentityGroup:tz,taskDescription:rz,taskLatestComment:nz,taskLatestCommentTinted:az,taskLatestCommentHeader:sz,taskLatestActivityHeading:oz,taskLatestActivityActor:iz,taskCommentCount:cz,taskLatestCommentText:lz,taskMetaCategory:dz,taskMetaType:uz,taskMetaPriority:pz,taskComplexityLabel:fz,taskCancellationReason:mz,archiveBadge:gz,attachmentThumbnails:hz,attachmentImageRow:yz,attachmentDocumentList:kz,attachmentThumbnail:vz,contextDocThumb:wz,contextDocMain:bz,contextDocName:Sz,taskSpecialists:Az,taxonomiesList:Cz,selected:Iz,selectionControl:_z};function Tz(e){return function(t){return ax(t,e)}}const xz="I-",Rz=new RegExp("(?<![\\w-])(I-\\d+)(?![\\w-])","gi");function im(e){return pm(xz,e)}const Pz="_prose_1rd59_1",Ez="_taskReference_1rd59_56",Nz="_tableScroll_1rd59_72",jz="_blockScroll_1rd59_99",Dz="_compactCodePreview_1rd59_115",Mz="_taskList_1rd59_194",Lz="_taskListItem_1rd59_198",Oz="_taskCheckbox_1rd59_202",Bz="_compact_1rd59_115",Wz="_compactHeading_1rd59_231",$z="_codeLanguage_1rd59_262",Fz="_contentIndicator_1rd59_271",Uz="_detail_1rd59_277",zz="_conversation_1rd59_300",Hz="_conversationHeading_1rd59_313",Vz="_document_1rd59_321",es={prose:Pz,taskReference:Ez,tableScroll:Nz,blockScroll:jz,compactCodePreview:Dz,taskList:Mz,taskListItem:Lz,taskCheckbox:Oz,compact:Bz,compactHeading:Wz,codeLanguage:$z,contentIndicator:Fz,detail:Uz,conversation:zz,conversationHeading:Hz,document:Vz};function Gz(e){const t=e.trim();if(!t)return"";if(/^(?:#|\/|\.\/|\.\.\/)/.test(t))return t;const r=t.match(/^([a-z][a-z0-9+.-]*):/i)?.[1]?.toLowerCase();return r?r==="http"||r==="https"||r==="mailto"?t:"":t}function JS(e){return/^(?:https?:)?\/\//i.test(String(e||""))}function Kz(e){return String(e||"").match(/(?:^|\s)language-([\w-]+)/)?.[1]||""}const qz=({children:e,variant:t,className:r,taskReferences:n,imageReferences:s,documentOverrides:i})=>{if(!e)return null;if(i&&t!=="document")throw new Error("documentOverrides are only supported by the document Markdown variant.");const l=g=>{if(typeof g=="string"){const k=(S,b,v,T)=>{const R=Array.from(S.matchAll(b));if(!R.length)return[S];const P=[];let N=0;return R.forEach((I,$)=>{const j=I[1],x=I.index??-1;if(x<N)return;x>N&&P.push(S.slice(N,x));const V=v(j);P.push(V?T(V,j,`${j}-${x}-${$}`):j),N=x+j.length}),N<S.length&&P.push(S.slice(N)),P};let w=[g];if(n&&(w=w.flatMap(S=>typeof S=="string"?k(S,Px,n.resolve,(b,v,T)=>a.jsx("button",{type:"button",className:es.taskReference,onClick:R=>{R.preventDefault(),R.stopPropagation(),n.activate(b)},children:v},`task-${T}`)):[S])),s&&(w=w.flatMap(S=>typeof S=="string"?k(S,Rz,s.resolve,(b,v,T)=>a.jsx("button",{type:"button",className:es.taskReference,onClick:R=>{R.preventDefault(),R.stopPropagation(),s.activate(b)},children:v},`image-${T}`)):[S])),n?.entityReferences){const S=n.entityReferences;w=w.flatMap(b=>typeof b=="string"?k(b,_x,S.resolve,(v,T,R)=>a.jsx("button",{type:"button",className:es.taskReference,title:`Open ${v.kind} ${v.token}`,onClick:P=>{P.preventDefault(),P.stopPropagation(),S.activate(v)},children:T},`entity-${R}`)):[b])}return w.length===1?w[0]:w}if(Array.isArray(g))return g.map(l);if(!te.isValidElement(g))return g;const h=g.props,y=typeof g.type=="string"?g.type:h.node?.tagName||"";return y==="a"||y==="button"||y==="code"||y==="pre"||y==="p"||h.children===void 0?g:te.cloneElement(g,void 0,te.Children.map(h.children,l))},c=(g,h)=>{const y=l(h);return t==="compact"?a.jsx("div",{className:es.compactHeading,children:y}):t==="conversation"?a.jsx("h3",{className:es.conversationHeading,children:y}):te.createElement(`h${g}`,void 0,y)},d={h1:({children:g})=>c(1,g),h2:({children:g})=>c(2,g),h3:({children:g})=>c(3,g),h4:({children:g})=>c(4,g),h5:({children:g})=>c(5,g),h6:({children:g})=>c(6,g),p:({children:g})=>a.jsx("p",{children:l(g)}),ul:({children:g,className:h,node:y,...k})=>a.jsx("ul",{...k,className:`${h||""} ${String(h||"").includes("contains-task-list")?es.taskList:""}`.trim(),children:g}),ol:({children:g,className:h,node:y,...k})=>a.jsx("ol",{...k,className:`${h||""} ${String(h||"").includes("contains-task-list")?es.taskList:""}`.trim(),children:g}),li:({children:g,className:h,node:y,...k})=>{const w=String(h||"").includes("task-list-item");return a.jsx("li",{...k,className:`${h||""} ${w?es.taskListItem:""}`.trim(),children:l(g)})},input:({type:g,checked:h,node:y,...k})=>g!=="checkbox"?a.jsx("input",{type:g,checked:h,readOnly:!0,...k}):a.jsx("input",{...k,type:"checkbox",checked:!!h,readOnly:!0,className:es.taskCheckbox}),a:({href:g,children:h,node:y,...k})=>{if(!g)return a.jsx("span",{children:h});const w=JS(g);return a.jsx("a",{...k,href:g,...w?{target:"_blank",rel:"noopener noreferrer"}:{},onClick:S=>S.stopPropagation(),children:h})},strong:({children:g})=>a.jsx("strong",{children:g}),em:({children:g})=>a.jsx("em",{children:g}),code:({children:g,className:h,node:y,...k})=>a.jsx("code",{className:h,...k,children:g}),pre:({children:g})=>{const h=te.Children.toArray(g).find(te.isValidElement),y=Kz(h?.props.className);return t==="compact"?a.jsxs("div",{className:es.compactCodePreview,children:[y?a.jsx("span",{className:es.codeLanguage,children:y}):null,a.jsx("pre",{children:g})]}):a.jsx("div",{className:es.blockScroll,children:a.jsx("pre",{children:g})})},blockquote:({children:g})=>a.jsx("blockquote",{children:g}),table:({children:g,node:h,...y})=>t==="compact"?a.jsx("span",{className:es.contentIndicator,children:"[Table]"}):a.jsx("div",{className:es.tableScroll,role:"region","aria-label":"Scrollable table",tabIndex:0,children:a.jsx("table",{...y,children:g})}),img:({src:g,alt:h})=>{const y=String(h||"").trim();if(t==="compact"||t==="conversation"){if(!y)return null;const k=`[Image: ${y}]`;if(!g)return a.jsx("span",{className:es.contentIndicator,children:k});const w=JS(g);return a.jsx("a",{href:g,className:es.contentIndicator,...w?{target:"_blank",rel:"noopener noreferrer"}:{},onClick:S=>S.stopPropagation(),children:k})}return a.jsx("img",{src:g,alt:y})},hr:()=>t==="compact"?null:a.jsx("hr",{})},f=t==="document"&&i?{...d,...i}:d,p=t==="document"?[jb]:[jb,ox];return a.jsx("div",{className:`${es.prose} ${es[t]} ${r||""}`.trim(),"data-markdown-surface":t,children:a.jsx(sx,{skipHtml:!0,remarkPlugins:p,rehypePlugins:[Tz],urlTransform:Gz,components:f,children:e})})},uy=te.memo(qz);function Kw({label:e,title:t,ariaLabel:r,copied:n=!1,disabled:s=!1,className:i="",onClick:l,children:c}){return a.jsx("button",{type:"button",className:`${E.referenceBadge} ${n?E.copiedReference:""} ${i}`.trim(),onClick:l,disabled:s,title:t,"aria-label":r,children:a.jsx("span",{className:E.referenceBadgeLabel,children:c??e})})}function ip({copied:e,disabled:t=!1,label:r,onClick:n,title:s="Copy task reference",ariaLabel:i,className:l="",provisional:c=!1}){return a.jsx(Kw,{copied:e,disabled:t,label:"",onClick:n,title:s,ariaLabel:i,className:`${c?E.provisionalReferenceBadge:""} ${l}`.trim(),children:r})}const Yz=(e,t=10)=>{const r=Oh[e?.toLowerCase()]||{icon:"FileCode"},n=eo[r.icon]||c0;return a.jsx(n,{size:t})},qg=(e,t)=>{if(!e)return null;const r=t.trim();if(!r)return e;const s=dy(r)?.match(/^(lt|t)-(\d+)$/),i=s?`${s[1]==="lt"?"l\\s*t":"t"}\\s*(?:-|\\s)?\\s*${s[2]}`:r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),l=new RegExp(`^${i}$`,"i"),c=e.split(new RegExp(`(${i})`,"gi"));return a.jsx(a.Fragment,{children:c.map((d,f)=>l.test(d)?a.jsx("mark",{className:E.highlight,children:d},f):d)})};function cm(e){return e.trim().replace(/\\/g,"/")}function XI(e){return e.split("?")[0].split("#")[0]}function py(e){return typeof e=="string"?e:String(e.path||"").trim()}function QI(e){const r=XI(cm(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 e_(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?cm(r):null}catch{return null}}function Zz(e,t){const r=(t||(typeof e=="string"?"":e.fsPath||"")).trim();if(r)return cm(r);const n=py(e),s=e_(n);return s?cm(s):null}function Jz(e,t){const r=String(typeof e=="string"?"":e.assetId||"").trim();if(r)return r;const n=py(e);return QI(n)}function t_(e,t){const r=py(e);return QI(r)?!0:[(t||(typeof e=="string"?"":e.fsPath||"")).trim(),typeof e=="string"?"":String(e.originalFilename||"").trim(),typeof e=="string"?"":String(e.displayName||"").trim(),typeof e=="string"?"":String(e.caption||"").trim(),e_(r)||"",r].some(s=>{if(!s)return!1;const i=XI(cm(s)).toLowerCase();return i.endsWith(".md")||i.endsWith(".markdown")})}function r_(e,t){const r=py(e),n=Zz(e,t),s=Jz(e);if(!n&&!s||!t_(e,n||void 0))return!1;const i=new CustomEvent("taskforce:open-markdown-document",{detail:{path:r,...n?{fsPath:n}:{},...s?{assetId:s}:{},...typeof e!="string"&&e.taskId?{taskId:e.taskId}:{}},cancelable:!0});return!window.dispatchEvent(i)}function n_(e,t){return e?JSON.stringify([String(e.taskId||"").trim(),String(e.assetId||"").trim(),String(t||"").trim()]):""}function Xz(e){const t=n_(e.currentTarget,e.currentSessionId);return!t||t===e.lastHydratedIdentity}function Qz(e){return e.trim().replace(/\\/g,"/")}function a_(e){return typeof e=="string"?e:String(e.path||"").trim()}function e8(e){return/\.(png|jpe?g|webp|gif)(\?|#|$)/i.test(e)}function t8(e){return typeof e=="string"?Qz(e).split("/").pop()||"Image attachment":String(e.caption||e.displayName||e.originalFilename||e.fsPath||e.path.split("/").pop()||"Image attachment").trim()}function s_(e,t){if(typeof e=="string")return!1;const r=String(e.assetId||"").trim(),n=a_(e);return!!(r&&n&&e8(n))}function zv(e,t){if(!s_(e))return!1;const r=e,n=String(t?.taskId||r.taskId||"").trim(),s=String(t?.taskReferenceLabel||"").trim(),i=String(r.assetId||"").trim(),l=im(r),c=String(t?.sessionId||"").trim(),d=a_(e),f=new CustomEvent("taskforce:open-annotated-attachment",{detail:{...n?{taskId:n}:{},...s?{taskReferenceLabel:s}:{},assetId:i,...l?{imageReferenceLabel:l}:{},...c?{sessionId:c}:{},path:d,displayName:t8(e)},cancelable:!0});return!window.dispatchEvent(f)}function XS(e,t){if(!e)return null;const r=String(e.taskId||"").trim(),n=String(e.assetId||"").trim(),s=String(e.path||"").trim(),i=String(e.displayName||"").trim()||"Image attachment";if(!n||!s)return null;const l=String(e.taskReferenceLabel||"").trim(),c=r?t.find(f=>f.id===r):void 0,d=r?l||ys(c)||r:void 0;return{...r?{taskId:r}:{},...d?{taskReferenceLabel:d}:{},assetId:n,imageReferenceLabel:String(e.imageReferenceLabel||"").trim()||void 0,sessionId:String(e.sessionId||"").trim()||void 0,path:s,displayName:i}}function Uh(e){const t=String(e||"").trim().replace(/\\/g,"/");if(!t)return"";const r=t.split("/").filter(Boolean);return r[r.length-1]||""}function qw(e){const t=String(e||"").trim(),r=t.lastIndexOf(".");return r<=0?{stem:t,ext:""}:{stem:t.slice(0,r),ext:t.slice(r)}}function o_(e,t){const r=String(e||"").trim(),n=String(t||"").trim();return r?n&&r.startsWith(`${n}-`)?r.slice(n.length+1):r.replace(/^asset-[a-z0-9-]+-/i,""):""}function r8(e){return String(e||"").replace(/-\d{13,}$/g,"").replace(/[_-]+/g," ").replace(/\s+/g," ").trim()}function QS(e,t){const{stem:r,ext:n}=qw(Uh(e)),s=o_(r,t),i=r8(s||r);return i?`${i}${n}`:Uh(e)||"Untitled document"}function qk(e,t){const r=String(e||"").trim();if(!r)return!0;const n=Uh(r),{stem:s}=qw(n),i=String(t||"").trim();if(i&&s.toLowerCase()===i.toLowerCase())return!0;const l=o_(s,t);return l?l!==s:!0}function n8(e){const t=String(e.title||"").trim();if(t&&!qk(t,e.assetId))return t;const r=String(e.logicalName||"").trim();if(r&&!qk(r,e.assetId))return r;const n=String(e.displayName||"").trim();if(n&&!qk(n,e.assetId))return n;const s=String(e.originalFilename||"").trim();if(s)return QS(s,e.assetId);const i=String(e.fsPath||"").trim();return i?QS(i,e.assetId):"Untitled document"}function a8(e){return n8(e)}function s8(e){const t=a8(e),r=String(e.originalFilename||e.fsPath||"").trim(),n=qw(Uh(r)).ext;return n?t.toLowerCase().endsWith(n.toLowerCase())?t:`${t}${n}`:t}const o8="_taxonomyDropdown_1qrdm_1",i8="_taxonomyDropdownActive_1qrdm_6",c8="_taxonomyDropdownButton_1qrdm_11",l8="_taxonomyDropdownOpen_1qrdm_50",d8="_taxonomyDropdownButtonContent_1qrdm_56",u8="_taxonomyDropdownIcon_1qrdm_64",p8="_taxonomyDropdownLabel_1qrdm_72",f8="_taxonomyDropdownChevron_1qrdm_81",m8="_taxonomyDropdownChevronOpen_1qrdm_87",g8="_taxonomyDropdownPanel_1qrdm_91",h8="_taxonomyDropdownOptions_1qrdm_111",y8="_taxonomyDropdownSearch_1qrdm_117",k8="_taxonomyDropdownSearchIcon_1qrdm_125",v8="_taxonomyDropdownSearchInput_1qrdm_134",w8="_taxonomyDropdownEmpty_1qrdm_148",b8="_taxonomyDropdownActions_1qrdm_155",S8="_taxonomyDropdownAction_1qrdm_155",A8="_taxonomyDropdownPanelPortal_1qrdm_195",C8="_taxonomyDropdownOption_1qrdm_111",I8="_taxonomyDropdownOptionHighlighted_1qrdm_245",_8="_taxonomyDropdownOptionSelected_1qrdm_251",Xn={taxonomyDropdown:o8,taxonomyDropdownActive:i8,taxonomyDropdownButton:c8,taxonomyDropdownOpen:l8,taxonomyDropdownButtonContent:d8,taxonomyDropdownIcon:u8,taxonomyDropdownLabel:p8,taxonomyDropdownChevron:f8,taxonomyDropdownChevronOpen:m8,taxonomyDropdownPanel:g8,taxonomyDropdownOptions:h8,taxonomyDropdownSearch:y8,taxonomyDropdownSearchIcon:k8,taxonomyDropdownSearchInput:v8,taxonomyDropdownEmpty:w8,taxonomyDropdownActions:b8,taxonomyDropdownAction:S8,taxonomyDropdownPanelPortal:A8,taxonomyDropdownOption:C8,taxonomyDropdownOptionHighlighted:I8,taxonomyDropdownOptionSelected:_8};function Yk(e,t){const r=e||"var(--brand-primary)";return/^#[0-9a-f]{6}$/i.test(r)?`${r}${Math.round(t*255).toString(16).padStart(2,"0")}`:`color-mix(in srgb, ${r} ${Math.round(t*100)}%, transparent)`}function li({value:e,options:t,onChange:r,placeholder:n="Select...",required:s=!1,disabled:i=!1,className:l="",ariaLabelledBy:c,ariaLabel:d,title:f,hideSelectedLabel:p=!1,hideChevron:g=!1,panelClassName:h="",portalPanel:y=!1,panelMinWidth:k,panelAlign:w="end",renderOptionContent:S,triggerContent:b,optionLabelColor:v,searchable:T=!1,searchPlaceholder:R="Search options...",noResultsText:P="No matching options.",panelActions:N=[]}){const[I,$]=o.useState(!1),[j,x]=o.useState(-1),[V,U]=o.useState({}),[ne,L]=o.useState(),[ie,J]=o.useState(""),ue=o.useRef(null),oe=o.useRef(null),ge=o.useRef(null),je=o.useRef(null),qe=o.useRef([]),Ye=o.useRef([]),he=o.useRef(null),ce=`taxonomy-listbox-${te.useId().replace(/:/g,"")}`,B=t.find(Z=>String(Z.value)===String(e)),K=te.useMemo(()=>{const Z=ie.trim().toLocaleLowerCase();return!T||!Z?t:t.filter(H=>H.label.toLocaleLowerCase().includes(Z))},[t,ie,T]);o.useEffect(()=>{if(!I)return;const Z=H=>{const ae=H.target,Te=!!ue.current?.contains(ae),Le=!!ge.current?.contains(ae);!Te&&!Le&&($(!1),x(-1))};return document.addEventListener("mousedown",Z),()=>document.removeEventListener("mousedown",Z)},[I]),o.useEffect(()=>{if(!I)x(-1);else{const Z=K.findIndex(H=>String(H.value)===String(e));x(Z>=0?Z:K.length>0?0:-1)}},[I,e,K]),o.useEffect(()=>{I&&T&&he.current?.focus()},[I,T]),o.useEffect(()=>{!I||j<0||qe.current[j]?.scrollIntoView?.({block:"nearest"})},[j,I]),o.useEffect(()=>{if(!I||!y)return;const Z=Te=>{const Le=oe.current;if(!Le)return;const Ue=Le.getBoundingClientRect(),ft=8,He=window.innerWidth,Fe=window.innerHeight,me=Math.max(0,He-ft*2);(Te||je.current===null)&&(je.current=Math.min(Math.max(k||0,Ue.width),me));const ve=Math.min(je.current,me),ot=w==="start"?Ue.left:Ue.right-ve,Oe=Math.min(Math.max(ft,ot),Math.max(ft,He-ve-ft)),A=Math.max(0,Fe-Ue.bottom-ft),G=Math.max(0,Ue.top-ft),_e=Math.min(ge.current?.scrollHeight||280,280),Ne=A>=_e||A>=G,Ee=Ne?A:G;U({position:"fixed",top:Ne?Ue.bottom:void 0,bottom:Ne?void 0:Fe-Ue.top,left:Oe,width:ve,minWidth:ve,maxWidth:me,maxHeight:Math.min(_e,Ee),zIndex:2e3})},H=Te=>{const Le=Te.target;Le instanceof Node&&ge.current?.contains(Le)||Z(!1)},ae=()=>Z(!0);return je.current=null,Z(!0),window.addEventListener("resize",ae),window.addEventListener("scroll",H,!0),()=>{window.removeEventListener("resize",ae),window.removeEventListener("scroll",H,!0),je.current=null}},[I,w,y,k]);const Ae=()=>{if(T&&J(""),y){const Z=ue.current?.closest("[data-theme]");L(Z?.dataset.theme)}$(!0)},re=()=>{if(!i){if(I){$(!1);return}Ae()}},F=Z=>{r(Z.value),J(""),$(!1),oe.current?.focus()},D=Z=>{Z.disabled||(Z.onSelect(),J(""),$(!1),oe.current?.focus())},z=Z=>{if(i)return;const H=Z.currentTarget===he.current;switch(Z.key){case"Enter":if(Z.preventDefault(),!I)Ae();else if(j>=0){const ae=K[j];ae&&F(ae)}break;case" ":if(H)return;if(Z.preventDefault(),!I)Ae();else if(j>=0){const ae=K[j];ae&&F(ae)}break;case"Escape":Z.preventDefault(),$(!1),oe.current?.focus();break;case"ArrowDown":Z.preventDefault(),I?K.length===0?x(-1):x(ae=>ae<K.length-1?ae+1:0):Ae();break;case"ArrowUp":Z.preventDefault(),I?K.length===0?x(-1):x(ae=>ae>0?ae-1:K.length-1):Ae();break;case"Home":if(H)return;Z.preventDefault(),I&&x(K.length>0?0:-1);break;case"End":if(H)return;Z.preventDefault(),I&&x(K.length>0?K.length-1:-1);break;case"Tab":if(I&&!Z.shiftKey&&N.length>0){Z.preventDefault(),Ye.current[0]?.focus();break}$(!1);break}},we=(Z,H)=>{const ae=Z.icon&&eo[Z.icon]?eo[Z.icon]:Ld,Te=Z.color?Jn(Z.color):"var(--text-secondary)",Le=H?.hideLabel===!0;return a.jsxs(a.Fragment,{children:[a.jsx("span",{className:`taxonomyDropdownIcon ${Xn.taxonomyDropdownIcon}`,style:{color:Te},children:a.jsx(ae,{size:16})}),!Le&&a.jsx("span",{className:`taxonomyDropdownLabel ${Xn.taxonomyDropdownLabel}`,style:H?.labelColor?{color:H.labelColor}:void 0,children:Z.label})]})},ke=(Z,H)=>!H?.hideLabel&&S?S(Z):we(Z,H),ee=I?a.jsxs("div",{ref:ge,id:`${ce}-panel`,className:`taxonomyDropdownPanel ${Xn.taxonomyDropdownPanel} ${y?Xn.taxonomyDropdownPanelPortal:""} ${h}`,"data-theme":y?ne:void 0,style:y?V:void 0,children:[T?a.jsxs("div",{className:Xn.taxonomyDropdownSearch,children:[a.jsx(Xh,{size:15,className:Xn.taxonomyDropdownSearchIcon,"aria-hidden":"true"}),a.jsx("input",{ref:he,type:"search",role:"searchbox",className:`tf-field-shell ${Xn.taxonomyDropdownSearchInput}`,value:ie,placeholder:R,"aria-label":R,"aria-controls":ce,"aria-activedescendant":j>=0?`${ce}-option-${j}`:void 0,onChange:Z=>J(Z.target.value),onKeyDown:z})]}):null,a.jsx("div",{id:ce,className:`tf-scrollbar tf-scrollbar--compact ${Xn.taxonomyDropdownOptions}`,role:"listbox","aria-labelledby":c,"aria-label":d,children:K.map((Z,H)=>{const ae=String(Z.value)===String(e),Te=H===j;return a.jsx("div",{ref:Le=>{qe.current[H]=Le},id:`${ce}-option-${H}`,className:`taxonomyDropdownOption ${Xn.taxonomyDropdownOption} ${ae?`taxonomyDropdownOptionSelected ${Xn.taxonomyDropdownOptionSelected}`:""} ${Te?`taxonomyDropdownOptionHighlighted ${Xn.taxonomyDropdownOptionHighlighted}`:""}`,role:"option","aria-selected":ae,onClick:()=>F(Z),onMouseEnter:()=>x(H),style:(()=>{const Le=Z.color,ft=Jn(Le)||"var(--brand-primary)";return{"--option-color":ft,"--option-border":Yk(ft,.18),"--option-bg":Yk(ft,.06)}})(),children:ke(Z,{labelColor:v})},String(Z.value))})}),K.length===0?a.jsx("div",{className:Xn.taxonomyDropdownEmpty,role:"status",children:P}):null,N.length>0?a.jsx("div",{className:Xn.taxonomyDropdownActions,role:"group","aria-label":"Actions",children:N.map((Z,H)=>{const ae=Z.icon&&eo[Z.icon]?eo[Z.icon]:null;return a.jsxs("button",{ref:Te=>{Ye.current[H]=Te},type:"button",className:Xn.taxonomyDropdownAction,disabled:Z.disabled,onClick:()=>D(Z),onKeyDown:Te=>{Te.key==="Escape"?(Te.preventDefault(),$(!1),oe.current?.focus()):Te.key==="Tab"&&!Te.shiftKey&&$(!1)},children:[ae?a.jsx(ae,{size:16,"aria-hidden":"true"}):null,a.jsx("span",{children:Z.label})]},Z.id)})}):null]}):null;return a.jsxs("div",{ref:ue,className:`taxonomyDropdown ${Xn.taxonomyDropdown} ${I?`taxonomyDropdownActive ${Xn.taxonomyDropdownActive}`:""} ${l}`,children:[a.jsxs("button",{ref:oe,type:"button",className:`taxonomyDropdownButton ${Xn.taxonomyDropdownButton} ${I?`taxonomyDropdownOpen ${Xn.taxonomyDropdownOpen}`:""}`,onClick:re,onKeyDown:z,disabled:i,role:"combobox","aria-haspopup":"listbox","aria-expanded":I,"aria-controls":ce,"aria-activedescendant":I&&j>=0?`${ce}-option-${j}`:void 0,"aria-labelledby":c,"aria-label":d,title:f,style:(()=>{if(!B)return{};const Z=B.color,H=Jn(Z);return{"--field-bg":Yk(H,.06)}})(),children:[a.jsx("span",{className:`taxonomyDropdownButtonContent ${Xn.taxonomyDropdownButtonContent}`,children:b??(B?ke(B,{hideLabel:p}):a.jsxs(a.Fragment,{children:[a.jsx("span",{className:`taxonomyDropdownIcon ${Xn.taxonomyDropdownIcon}`,children:a.jsx(Ld,{size:16})}),a.jsx("span",{className:`taxonomyDropdownLabel ${Xn.taxonomyDropdownLabel}`,children:n})]}))}),!g&&a.jsx(Ud,{size:16,className:`taxonomyDropdownChevron ${Xn.taxonomyDropdownChevron} ${I?`taxonomyDropdownChevronOpen ${Xn.taxonomyDropdownChevronOpen}`:""}`})]}),y?ee?pc.createPortal(ee,document.body):null:ee]})}function zh({task:e,status:t,disabled:r=!1,actionDisabled:n,statusDisabled:s,compressed:i=!1,shortLabels:l=!1,showLabel:c=!0,onSetStatus:d,onStatusChange:f,onArchiveTask:p,onUnarchiveTask:g,archiveActionMode:h="auto"}){const y=e?.status||t||"task",w=h==="auto"?!!e&&(y==="done"||y==="cancelled")?"archive":"none":h,S=n??r,b=s??r,v=xd.map(N=>({...N,label:(i||l)&&N.shortLabel||N.label})),T=Jn(xd.find(N=>N.value===y)?.color)||"var(--text-secondary)",R={"--field-border":T,"--field-text":T,"--field-hover-border":T,"--field-focus-border":T,"--field-focus-ring":`color-mix(in srgb, ${T} 18%, transparent)`},P=w==="archive"&&e?[{id:"archive-task",label:"Archive task",icon:"Archive",disabled:S||!p,onSelect:()=>p?.(e)}]:[];return a.jsxs("div",{className:`${E.statusActionsGroup} ${i?E.statusActionsGroupCompact:""}`,children:[w==="unarchive"&&a.jsx("button",{type:"button",className:`${E.actionBtn} ${E.restoreTaskBtn}`,onClick:()=>e&&!S&&g?.(e),disabled:S,title:"Unarchive task","aria-label":"Unarchive task",children:a.jsx(Ni,{size:i?12:16})}),a.jsx("div",{className:`${E.statusSelectWrap} ${E.statusTaxonomyDropdownWrap}`,style:R,children:a.jsx(li,{value:y,options:v,disabled:b||!e&&!f,ariaLabel:"Status",optionLabelColor:"var(--text-primary)",hideSelectedLabel:!c,hideChevron:!c,className:`${E.statusTaxonomyDropdown} ${i?E.statusTaxonomyDropdownCompact:""} ${c?"":E.statusTaxonomyDropdownIconOnly}`,panelClassName:c?"":E.statusTaxonomyDropdownIconOnlyPanel,portalPanel:!c,panelMinWidth:c?void 0:144,panelActions:P,onChange:N=>{const I=N;if(e){d?.(e,I);return}f?.(I)}})})]})}const i_="/taskforce/assets/antigravity-DRKQga2U.png",c_="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20viewBox='0%200%202406%202406'%3e%3cpath%20d='M1%20578.4C1%20259.5%20259.5%201%20578.4%201h1249.1c319%200%20577.5%20258.5%20577.5%20577.4V2406H578.4C259.5%202406%201%202147.5%201%201828.6V578.4z'%20fill='%2374aa9c'/%3e%3cpath%20id='a'%20d='M1107.3%20299.1c-197.999%200-373.9%20127.3-435.2%20315.3L650%20743.5v427.9c0%2021.4%2011%2040.4%2029.4%2051.4l344.5%20198.515V833.3h.1v-27.9L1372.7%20604c33.715-19.52%2070.44-32.857%20108.47-39.828L1447.6%20450.3C1361%20353.5%201237.1%20298.5%201107.3%20299.1zm0%20117.5-.6.6c79.699%200%20156.3%2027.5%20217.6%2078.4-2.5%201.2-7.4%204.3-11%206.1L952.8%20709.3c-18.4%2010.4-29.4%2030-29.4%2051.4V1248l-155.1-89.4V755.8c-.1-187.099%20151.601-338.9%20339-339.2z'%20fill='%23fff'/%3e%3cuse%20xlink:href='%23a'%20transform='rotate(60%201203%201203)'/%3e%3cuse%20xlink:href='%23a'%20transform='rotate(120%201203%201203)'/%3e%3cuse%20xlink:href='%23a'%20transform='rotate(180%201203%201203)'/%3e%3cuse%20xlink:href='%23a'%20transform='rotate(240%201203%201203)'/%3e%3cuse%20xlink:href='%23a'%20transform='rotate(300%201203%201203)'/%3e%3c/svg%3e",l_="data:image/svg+xml,%3csvg%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eClaude%3c/title%3e%3cpath%20d='M4.709%2015.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0%2011.784l.055-.352.48-.321.686.06%201.52.103%202.278.158%201.652.097%202.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686%201.908%201.476%202.491%201.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97%202.97%200%2001-.104-.729L6.283.134%206.696%200l.996.134.42.364.62%201.414%201.002%202.229%201.555%203.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286%201.851-.559%202.903-.364%201.942h.212l.243-.242.985-1.306%201.652-2.064.73-.82.85-.904.547-.431h1.033l.76%201.129-.34%201.166-1.064%201.347-.881%201.142-1.264%201.7-.79%201.36.073.11.188-.02%202.856-.606%201.543-.28%201.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061%201.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093%201.068%202.006%201.81%202.509%202.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649%202.345%203.521.122%201.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674%207.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434%201.967-2.18%202.945-1.726%201.845-.414.164-.717-.37.067-.662.401-.589%202.388-3.036%201.44-1.882.93-1.086-.006-.158h-.055L4.132%2018.56l-1.13.146-.487-.456.061-.746.231-.243%201.908-1.312-.006.006z'%20fill='%23D97757'%20fill-rule='nonzero'%3e%3c/path%3e%3c/svg%3e",d_="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiByb2xlPSJpbWciIGFyaWEtbGFiZWxsZWRieT0idGl0bGUiPgogIDx0aXRsZSBpZD0idGl0bGUiPkNsYXVkZSBDb2RlIENsYXcnZCBtYXNjb3Q8L3RpdGxlPgogIDxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiBmaWxsPSIjZDk3NzU3Ii8+CiAgPGcKICAgIGZpbGw9IiNmN2YzZWUiCiAgICBmb250LWZhbWlseT0iTWVubG8sIE1vbmFjbywgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBtb25vc3BhY2UiCiAgICBmb250LXNpemU9IjM1IgogICAgZm9udC13ZWlnaHQ9IjcwMCIKICAgIHRleHQtYW5jaG9yPSJtaWRkbGUiCiAgPgogICAgPHRleHQgeD0iMTI4IiB5PSIxMDIiPiYjeDI1OTA7JiN4MjU5QjsmI3gyNTg4OyYjeDI1ODg7JiN4MjU4ODsmI3gyNTlDOyYjeDI1OEM7PC90ZXh0PgogICAgPHRleHQgeD0iMTI4IiB5PSIxMzciPiYjeDI1OUQ7JiN4MjU5QzsmI3gyNTg4OyYjeDI1ODg7JiN4MjU4ODsmI3gyNTg4OyYjeDI1ODg7JiN4MjU5QjsmI3gyNTk4OzwvdGV4dD4KICAgIDx0ZXh0IHg9IjEyOCIgeT0iMTcyIiB4bWw6c3BhY2U9InByZXNlcnZlIj4gICYjeDI1OTg7JiN4MjU5ODsgJiN4MjU5RDsmI3gyNTlEOyAgPC90ZXh0PgogIDwvZz4KPC9zdmc+Cg==",u_="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='92px'%20height='96px'%20viewBox='0%200%2092%2096'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3eGroup%20Copy%202%3c/title%3e%3cg%20id='Page-1'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='icon-copy'%20transform='translate(-34,%20-40)'%20fill='%2324292F'%3e%3cg%20id='Group-Copy-2'%20transform='translate(34,%2040.5)'%3e%3cg%20id='Group-3-Copy-4'%20transform='translate(0,%200)'%3e%3cpath%20d='M65.4492701,16.3%20C76.3374701,16.3%2085.1635558,25.16479%2085.1635558,36.1%20L85.1635558,42.7%20L90.9027661,54.1647464%20C91.4694141,55.2966923%2091.4668177,56.6300535%2090.8957658,57.7597839%20L85.1635558,69.1%20L85.1635558,75.7%20C85.1635558,86.63554%2076.3374701,95.5%2065.4492701,95.5%20L26.0206986,95.5%20C15.1328272,95.5%206.30641291,86.63554%206.30641291,75.7%20L6.30641291,69.1%20L0.448507752,57.7954874%20C-0.14693501,56.6464093%20-0.149634367,55.2802504%200.441262896,54.1288283%20L6.30641291,42.7%20L6.30641291,36.1%20C6.30641291,25.16479%2015.1328272,16.3%2026.0206986,16.3%20L65.4492701,16.3%20Z%20M62.9301895,22%20L29.189529,22%20C19.8723267,22%2012.3191987,29.5552188%2012.3191987,38.875%20L12.3191987,44.5%20L7.44288578,53.9634655%20C6.84794449,55.1180686%206.85066096,56.4896598%207.45017099,57.6418974%20L12.3191987,67%20L12.3191987,72.625%20C12.3191987,81.9450625%2019.8723267,89.5%2029.189529,89.5%20L62.9301895,89.5%20C72.2476729,89.5%2079.8005198,81.9450625%2079.8005198,72.625%20L79.8005198,67%20L84.5682187,57.6061395%20C85.1432011,56.473244%2085.1458141,55.1345713%2084.5752587,53.9994398%20L79.8005198,44.5%20L79.8005198,38.875%20C79.8005198,29.5552188%2072.2476729,22%2062.9301895,22%20Z'%20id='Combined-Shape'%20fill-rule='nonzero'%3e%3c/path%3e%3ccircle%20id='Oval'%20cx='45.7349843'%20cy='11'%20r='11'%3e%3c/circle%3e%3c/g%3e%3crect%20id='Rectangle-Copy'%20stroke='%2324292F'%20stroke-width='8'%20x='31'%20y='44.5'%20width='5'%20height='22'%20rx='2.5'%3e%3c/rect%3e%3crect%20id='Rectangle-Copy-2'%20stroke='%2324292F'%20stroke-width='8'%20x='55'%20y='44.5'%20width='5'%20height='22'%20rx='2.5'%3e%3c/rect%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",p_="data:image/svg+xml,%3csvg%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eCodex%3c/title%3e%3cpath%20d='M19.503%200H4.496A4.496%204.496%200%20000%204.496v15.007A4.496%204.496%200%20004.496%2024h15.007A4.496%204.496%200%200024%2019.503V4.496A4.496%204.496%200%200019.503%200z'%20fill='%23fff'%3e%3c/path%3e%3cpath%20d='M9.064%203.344a4.578%204.578%200%20012.285-.312c1%20.115%201.891.54%202.673%201.275.01.01.024.017.037.021a.09.09%200%2000.043%200%204.55%204.55%200%20013.046.275l.047.022.116.057a4.581%204.581%200%20012.188%202.399c.209.51.313%201.041.315%201.595a4.24%204.24%200%2001-.134%201.223.123.123%200%2000.03.115c.594.607.988%201.33%201.183%202.17.289%201.425-.007%202.71-.887%203.854l-.136.166a4.548%204.548%200%2001-2.201%201.388.123.123%200%2000-.081.076c-.191.551-.383%201.023-.74%201.494-.9%201.187-2.222%201.846-3.711%201.838-1.187-.006-2.239-.44-3.157-1.302a.107.107%200%2000-.105-.024c-.388.125-.78.143-1.204.138a4.441%204.441%200%2001-1.945-.466%204.544%204.544%200%2001-1.61-1.335c-.152-.202-.303-.392-.414-.617a5.81%205.81%200%2001-.37-.961%204.582%204.582%200%2001-.014-2.298.124.124%200%2000.006-.056.085.085%200%2000-.027-.048%204.467%204.467%200%2001-1.034-1.651%203.896%203.896%200%2001-.251-1.192%205.189%205.189%200%2001.141-1.6c.337-1.112.982-1.985%201.933-2.618.212-.141.413-.251.601-.33.215-.089.43-.164.646-.227a.098.098%200%2000.065-.066%204.51%204.51%200%2001.829-1.615%204.535%204.535%200%20011.837-1.388zm3.482%2010.565a.637.637%200%20000%201.272h3.636a.637.637%200%20100-1.272h-3.636zM8.462%209.23a.637.637%200%2000-1.106.631l1.272%202.224-1.266%202.136a.636.636%200%20101.095.649l1.454-2.455a.636.636%200%2000.005-.64L8.462%209.23z'%20fill='url(%23lobe-icons-codex-_R_0_)'%3e%3c/path%3e%3cdefs%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20id='lobe-icons-codex-_R_0_'%20x1='12'%20x2='12'%20y1='3'%20y2='21'%3e%3cstop%20stop-color='%23B1A7FF'%3e%3c/stop%3e%3cstop%20offset='.5'%20stop-color='%237A9DFF'%3e%3c/stop%3e%3cstop%20offset='1'%20stop-color='%233941FF'%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e",f_="/taskforce/assets/cursor-BM_3k4Y4.svg",m_="/taskforce/assets/gemini-cli-icon-dBAVjCcn.png",T8="data:image/svg+xml,%3csvg%20width='28'%20height='28'%20viewBox='0%200%2028%2028'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M14%2028C14%2026.0633%2013.6267%2024.2433%2012.88%2022.54C12.1567%2020.8367%2011.165%2019.355%209.905%2018.095C8.645%2016.835%207.16333%2015.8433%205.46%2015.12C3.75667%2014.3733%201.93667%2014%200%2014C1.93667%2014%203.75667%2013.6383%205.46%2012.915C7.16333%2012.1683%208.645%2011.165%209.905%209.905C11.165%208.645%2012.1567%207.16333%2012.88%205.46C13.6267%203.75667%2014%201.93667%2014%200C14%201.93667%2014.3617%203.75667%2015.085%205.46C15.8317%207.16333%2016.835%208.645%2018.095%209.905C19.355%2011.165%2020.8367%2012.1683%2022.54%2012.915C24.2433%2013.6383%2026.0633%2014%2028%2014C26.0633%2014%2024.2433%2014.3733%2022.54%2015.12C20.8367%2015.8433%2019.355%2016.835%2018.095%2018.095C16.835%2019.355%2015.8317%2020.8367%2015.085%2022.54C14.3617%2024.2433%2014%2026.0633%2014%2028Z'%20fill='url(%23gemini-gradient)'/%3e%3cdefs%3e%3cradialGradient%20id='gemini-gradient'%20cx='0'%20cy='0'%20r='1'%20gradientUnits='userSpaceOnUse'%20gradientTransform='translate(2.77876%2011.3795)%20rotate(18.6832)%20scale(29.8025%20238.737)'%3e%3cstop%20offset='0.0671246'%20stop-color='%239168C0'/%3e%3cstop%20offset='0.342551'%20stop-color='%235684D1'/%3e%3cstop%20offset='0.672076'%20stop-color='%231BA1E3'/%3e%3c/radialGradient%3e%3c/defs%3e%3c/svg%3e",Hv="/taskforce/assets/grok-BuodbWaG.svg",g_="data:image/svg+xml,%3csvg%20width='1200'%20height='1200'%20viewBox='0%200%201200%201200'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20width='1200'%20height='1200'%20rx='260'%20fill='%239046FF'/%3e%3cmask%20id='mask0_1106_4856'%20style='mask-type:luminance'%20maskUnits='userSpaceOnUse'%20x='272'%20y='202'%20width='655'%20height='796'%3e%3cpath%20d='M926.578%20202.793H272.637V997.857H926.578V202.793Z'%20fill='white'/%3e%3c/mask%3e%3cg%20mask='url(%23mask0_1106_4856)'%3e%3cpath%20d='M398.554%20818.914C316.315%201001.03%20491.477%201046.74%20620.672%20940.156C658.687%201059.66%20801.052%20970.473%20852.234%20877.795C964.787%20673.567%20919.318%20465.357%20907.64%20422.374C827.637%20129.443%20427.623%20128.946%20358.8%20423.865C342.651%20475.544%20342.402%20534.18%20333.458%20595.051C328.986%20625.86%20325.507%20645.488%20313.83%20677.785C306.873%20696.424%20297.68%20712.819%20282.773%20740.645C259.915%20783.881%20269.604%20867.113%20387.87%20823.883L399.051%20818.914H398.554Z'%20fill='white'/%3e%3cpath%20d='M636.123%20549.353C603.328%20549.353%20598.359%20510.097%20598.359%20486.742C598.359%20465.623%20602.086%20448.977%20609.293%20438.293C615.504%20428.852%20624.697%20424.131%20636.123%20424.131C647.555%20424.131%20657.492%20428.852%20664.447%20438.541C672.398%20449.474%20676.623%20466.12%20676.623%20486.742C676.623%20525.998%20661.471%20549.353%20636.375%20549.353H636.123Z'%20fill='black'/%3e%3cpath%20d='M771.24%20549.353C738.445%20549.353%20733.477%20510.097%20733.477%20486.742C733.477%20465.623%20737.203%20448.977%20744.41%20438.293C750.621%20428.852%20759.814%20424.131%20771.24%20424.131C782.672%20424.131%20792.609%20428.852%20799.564%20438.541C807.516%20449.474%20811.74%20466.12%20811.74%20486.742C811.74%20525.998%20796.588%20549.353%20771.492%20549.353H771.24Z'%20fill='black'/%3e%3c/g%3e%3c/svg%3e",h_="data:image/svg+xml,%3csvg%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eMistral%3c/title%3e%3cpath%20d='M3.428%203.4h3.429v3.428H3.428V3.4zm13.714%200h3.43v3.428h-3.43V3.4z'%20fill='gold'%3e%3c/path%3e%3cpath%20d='M3.428%206.828h6.857v3.429H3.429V6.828zm10.286%200h6.857v3.429h-6.857V6.828z'%20fill='%23FFAF00'%3e%3c/path%3e%3cpath%20d='M3.428%2010.258h17.144v3.428H3.428v-3.428z'%20fill='%23FF8205'%3e%3c/path%3e%3cpath%20d='M3.428%2013.686h3.429v3.428H3.428v-3.428zm6.858%200h3.429v3.428h-3.429v-3.428zm6.856%200h3.43v3.428h-3.43v-3.428z'%20fill='%23FA500F'%3e%3c/path%3e%3cpath%20d='M0%2017.114h10.286v3.429H0v-3.429zm13.714%200H24v3.429H13.714v-3.429z'%20fill='%23E10500'%3e%3c/path%3e%3c/svg%3e",y_="data:image/svg+xml,%3csvg%20fill='%231FB8CD'%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3ePerplexity%3c/title%3e%3cpath%20d='M22.3977%207.0896h-2.3106V.0676l-7.5094%206.3542V.1577h-1.1554v6.1966L4.4904%200v7.0896H1.6023v10.3976h2.8882V24l6.932-6.3591v6.2005h1.1554v-6.0469l6.9318%206.1807v-6.4879h2.8882V7.0896zm-3.4657-4.531v4.531h-5.355l5.355-4.531zm-13.2862.0676%204.8691%204.4634H5.6458V2.6262zM2.7576%2016.332V8.245h7.8476l-6.1149%206.1147v1.9723H2.7576zm2.8882%205.0404v-3.8852h.0001v-2.6488l5.7763-5.7764v7.0111l-5.7764%205.2993zm12.7086.0248-5.7766-5.1509V9.0618l5.7766%205.7766v6.5588zm2.8882-5.0652h-1.733v-1.9723L13.3948%208.245h7.8478v8.087z'/%3e%3c/svg%3e",k_="/taskforce/assets/vscode-C_7wk1WI.svg",v_="data:image/svg+xml,%3csvg%20width='1024'%20height='1024'%20viewBox='0%200%201024%201024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_109_63)'%3e%3crect%20width='1024'%20height='1024'%20fill='%23F9F3E9'/%3e%3cpath%20d='M897.246%20286.869H889.819C850.735%20286.808%20819.017%20318.46%20819.017%20357.539V515.589C819.017%20547.15%20792.93%20572.716%20761.882%20572.716C743.436%20572.716%20725.02%20563.433%20714.093%20547.85L552.673%20317.304C539.28%20298.16%20517.486%20286.747%20493.895%20286.747C457.094%20286.747%20423.976%20318.034%20423.976%20356.657V515.619C423.976%20547.181%20398.103%20572.746%20366.842%20572.746C348.335%20572.746%20329.949%20563.463%20319.021%20547.881L138.395%20289.882C134.316%20284.038%20125.154%20286.93%20125.154%20294.052V431.892C125.154%20438.862%20127.285%20445.619%20131.272%20451.34L309.037%20705.2C319.539%20720.204%20335.033%20731.344%20352.9%20735.392C397.616%20745.557%20438.77%20711.135%20438.77%20667.278V508.406C438.77%20476.845%20464.339%20451.279%20495.904%20451.279H495.995C515.02%20451.279%20532.857%20460.562%20543.785%20476.145L705.235%20706.661C718.659%20725.835%20739.327%20737.218%20763.983%20737.218C801.606%20737.218%20833.841%20705.9%20833.841%20667.308V508.376C833.841%20476.815%20859.41%20451.249%20890.975%20451.249H897.276C901.233%20451.249%20904.43%20448.053%20904.43%20444.097V294.021C904.43%20290.065%20901.233%20286.869%20897.276%20286.869H897.246Z'%20fill='%230B100F'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_109_63'%3e%3crect%20width='1024'%20height='1024'%20rx='100'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e",Yw={general:{id:"general",label:"General",generatedOption:!0},antigravity:{id:"antigravity",label:"Antigravity",logoKey:"antigravity",surfaceHint:"coding_tool",generatedOption:!0,signatureColor:"#e49d25"},"claude-code":{id:"claude-code",label:"Claude Code CLI",logoKey:"claude-code",surfaceHint:"cli",generatedOption:!0,signatureColor:"#d97757"},"claude-chat":{id:"claude-chat",label:"Claude Chat",logoKey:"claude-chat",surfaceHint:"chat_app",signatureColor:"#d97757"},cline:{id:"cline",label:"Cline",logoKey:"cline",surfaceHint:"ide",generatedOption:!0,signatureColor:"#25a9e4"},codex:{id:"codex",label:"Codex",logoKey:"codex",surfaceHint:"cli",generatedOption:!0,signatureColor:"#6366f1"},cursor:{id:"cursor",label:"Cursor",logoKey:"cursor",surfaceHint:"ide",generatedOption:!0,signatureColor:"#186e95"},"gemini-cli":{id:"gemini-cli",label:"Gemini CLI",logoKey:"gemini-cli",surfaceHint:"cli",generatedOption:!0,signatureColor:"#4285f4"},grok:{id:"grok",label:"Grok CLI",logoKey:"grok",surfaceHint:"cli",generatedOption:!0,signatureColor:"#181b95"},"grok-chat":{id:"grok-chat",label:"Grok",logoKey:"grok-chat",surfaceHint:"chat_app",signatureColor:"#181b95"},"gemini-chat":{id:"gemini-chat",label:"Gemini Spark",logoKey:"gemini-chat",surfaceHint:"chat_app",signatureColor:"#4285f4"},"mistral-chat":{id:"mistral-chat",label:"Mistral Vibe",logoKey:"mistral-chat",surfaceHint:"chat_app",signatureColor:"#fa520f"},"perplexity-chat":{id:"perplexity-chat",label:"Perplexity",logoKey:"perplexity-chat",surfaceHint:"chat_app",signatureColor:"#1fb8cd"},kiro:{id:"kiro",label:"Kiro",logoKey:"kiro",surfaceHint:"ide",generatedOption:!0,signatureColor:"#7c3aed"},openclaw:{id:"openclaw",label:"OpenClaw",surfaceHint:"agent",generatedOption:!0},vscode:{id:"vscode",label:"VS Code / Copilot",logoKey:"vscode",surfaceHint:"ide",generatedOption:!0,signatureColor:"#256ee4"},windsurf:{id:"windsurf",label:"Windsurf",logoKey:"windsurf",surfaceHint:"ide",generatedOption:!0,signatureColor:"#189587"},"chatgpt-desktop":{id:"chatgpt-desktop",label:"ChatGPT Desktop",logoKey:"chatgpt-desktop",surfaceHint:"chat_app",signatureColor:"#10a37f"}};function x8(e){const t=String(e||"").trim().toLowerCase();return t==="claude-desktop"?"claude-chat":Object.prototype.hasOwnProperty.call(Yw,t)?t:null}function w_(e){const t=x8(e);return t?Yw[t]:null}function hre(){return Object.values(Yw).filter(e=>e.generatedOption).map(({id:e,label:t})=>({id:e,label:t}))}function R8(e){const t=e?.providerMetadata?.taskforce;return!t||typeof t!="object"||Array.isArray(t)?"":String(t.taskforceAgentId||"").trim()}function b_(e){return!!R8(e)}function yre(e){if(!e||e.archivedAt||e.mergedIntoProfileId||b_(e)||e.surfaceType!=="agent")return!1;const t=e.providerMetadata?.connection,r=t&&typeof t=="object"&&!Array.isArray(t)?t.clientId:null,n=w_(r);return!(n?.logoKey||n?.surfaceHint&&n.surfaceHint!=="agent")}const P8={antigravity:i_,"chatgpt-desktop":c_,"claude-code":d_,"claude-chat":l_,"grok-chat":Hv,"gemini-chat":T8,"mistral-chat":h_,"perplexity-chat":y_,cline:u_,codex:p_,cursor:f_,"gemini-cli":m_,grok:Hv,kiro:g_,vscode:k_,windsurf:v_};function E8(e){if(!e||b_(e))return"";const t=e.providerMetadata?.connection,r=t&&typeof t=="object"&&!Array.isArray(t)?t.clientId:null,n=w_(r);if(n?.logoKey)return P8[n.logoKey];if(!["chat_app","ide","cli","coding_tool"].includes(String(e.surfaceType||"")))return"";const s=[e.username,e.name].map(i=>String(i||"").toLowerCase()).join(" ");return!s.trim()||s.includes("openclaw")||s.includes("hermes agent")?"":s.includes("chatgpt")?c_:s.includes("claude code")?d_:s.includes("claude desktop")?l_:s.includes("cline")?u_:s.includes("codex")?p_:s.includes("cursor")?f_:s.includes("cascade")||s.includes("windsurf")?v_:s.includes("antigravity")?i_:s.includes("gemini")?m_:s.includes("grok")?Hv:s.includes("mistral")||s.includes("le chat")?h_:s.includes("perplexity")?y_:s.includes("kiro")?g_:s.includes("visual studio code")||s.includes("vs code")||s.includes("vscode")?k_:""}function N8(e,t,r){const n=typeof e=="string"?e.trim():"";if(!n||n.startsWith("data:")||n.startsWith("blob:"))return n;const s=Number(t),i=Number.isFinite(s)&&s>0?String(Math.floor(s)):typeof r=="string"&&r.trim().length>0?r.trim():"";if(!i)return n;const[l,c=""]=n.split("#"),d=l.includes("?")?"&":"?";return`${l}${d}v=${encodeURIComponent(i)}${c?`#${c}`:""}`}function S_(e,t){const r=String(e||"").trim(),n=String(t||"").trim(),[s,i]=o.useState(r||n);return o.useEffect(()=>{i(r||n)},[r,n]),{activeImageUrl:s,handleImageError:()=>{if(s&&n&&s!==n){i(n);return}i("")}}}const j8="_identity_1owqe_1",D8="_avatar_1owqe_9",M8="_person_1owqe_17",L8="_provider_1owqe_21",O8="_unassigned_1owqe_25",B8="_card_1owqe_31",W8="_label_1owqe_51",Cd={identity:j8,avatar:D8,person:M8,provider:L8,unassigned:O8,card:B8,label:W8};function fy({option:e,size:t=22,variant:r="default",unassignedIcon:n}){const s=Sw(e.value),i=s?"":N8(e.avatarUrl,e.avatarRevision,e.avatarUpdatedAt),l=!s&&e.kind==="agent"?E8({name:e.label,username:e.username,surfaceType:e.surfaceType,providerMetadata:e.providerMetadata}):"",{activeImageUrl:c,handleImageError:d}=S_(i,l),f=eo,p=s?fm:e.icon,g=s&&n?n:p&&f[p]?f[p]:Ld,h=s?Math.max(13,Math.round(t*.56)):Math.max(14,t-6),y=Jn(e.color)||(e.kind==="member"?"var(--color-green-500, #22c55e)":"var(--text-secondary, #888)");return a.jsx("span",{className:`${Cd.avatar} ${l?Cd.provider:Cd.person} ${s?Cd.unassigned:""} ${r==="card"?Cd.card:""}`.trim(),style:{width:t,height:t,color:c?void 0:y,"--assignee-avatar-color":y},"data-assignee-avatar":r,"aria-hidden":"true",children:c?a.jsx("img",{src:c,alt:"",onError:d}):a.jsx(g,{size:h,strokeWidth:s?1.6:void 0})})}function yp({option:e,size:t=22}){return a.jsxs("span",{className:Cd.identity,children:[a.jsx(fy,{option:e,size:t}),a.jsx("span",{className:Cd.label,children:e.label})]})}const A_=Object.freeze(["Target","Route","Flag","Rocket","Briefcase","Folder","Layers","Map","Compass","Landmark","BookOpen","Lightbulb","Wrench","Shield","Bug","Palette","Camera","Music","Heart","Globe","Users","Sparkles","FlaskConical","Code"]),C_=Object.freeze(["red","orange","amber","green","teal","sky","blue","indigo","violet"]),$8=new Set(A_),F8=new Set(C_);function U8(e){if(e==null||e==="")return null;const t=typeof e=="string"?e.trim():"";return $8.has(t)?t:null}function z8(e){if(e==null||e==="")return null;const t=typeof e=="string"?e.trim().toLowerCase():"";return F8.has(t)?t:null}function H8(e){const t=U8(e.icon),r=z8(e.color);return{icon:t||(e.entityType==="initiative"?"Target":"Route"),color:r,customized:!!(t||r)}}function eA(e){return e?`var(--planning-identity-${e})`:"var(--planning-progress-empty)"}const V8="_root_kfvfr_1",G8="_trigger_kfvfr_6",K8="_marker_kfvfr_20",q8="_card_kfvfr_31",Y8="_inline_kfvfr_32",Z8="_detail_kfvfr_33",J8="_disabled_kfvfr_34",X8="_popover_kfvfr_36",Q8="_colorGrid_kfvfr_48",e9="_colorOption_kfvfr_55",t9="_iconOption_kfvfr_66",r9="_iconGrid_kfvfr_70",n9="_selected_kfvfr_91",a9="_divider_kfvfr_100",s9="_reset_kfvfr_106",Qs={root:V8,trigger:G8,marker:K8,card:q8,inline:Y8,detail:Z8,disabled:J8,popover:X8,colorGrid:Q8,colorOption:e9,iconOption:t9,iconGrid:r9,selected:n9,divider:a9,reset:s9},tA={Target:x0,Route:T0,Flag:_0,Rocket:I0,Briefcase:C0,Folder:lc,Layers:Ah,Map:A0,Compass:S0,Landmark:b0,BookOpen:w0,Lightbulb:v0,Wrench:k0,Shield:y0,Bug:h0,Palette:g0,Camera:m0,Music:f0,Heart:p0,Globe:u0,Users:dh,Sparkles:zA,FlaskConical:d0,Code:l0};function ym({entityType:e,entityId:t,icon:r,color:n,disabled:s=!1,size:i="card",onChange:l}){const[c,d]=te.useState(!1),[f,p]=te.useState(!1),[g,h]=te.useState(null),[y,k]=te.useState(),[w,S]=te.useState({top:0,left:0}),b=te.useRef(null),v=te.useRef(null),T=te.useRef(null),R=g&&Object.prototype.hasOwnProperty.call(g,"icon")?g.icon:r,P=g&&Object.prototype.hasOwnProperty.call(g,"color")?g.color:n,N=H8({entityType:e,icon:R,color:P}),I=tA[N.icon],$=!s&&!!l;te.useEffect(()=>{if(!c)return;const V=U=>{const ne=U.target;!b.current?.contains(ne)&&!T.current?.contains(ne)&&d(!1)};return document.addEventListener("pointerdown",V),()=>document.removeEventListener("pointerdown",V)},[c]),te.useLayoutEffect(()=>{if(!c)return;const V=()=>{const U=v.current?.getBoundingClientRect();if(!U)return;k(v.current?.closest("[data-theme]")?.dataset.theme);const ne=T.current?.getBoundingClientRect(),L=ne?.width||248,ie=ne?.height||320,J=8,ue=8,oe=Math.max(ue,Math.min(U.left,window.innerWidth-L-ue)),ge=U.bottom+J,je=ge+ie<=window.innerHeight-ue?ge:Math.max(ue,U.top-ie-J);S({top:je,left:oe})};return V(),window.addEventListener("resize",V),window.addEventListener("scroll",V,!0),()=>{window.removeEventListener("resize",V),window.removeEventListener("scroll",V,!0)}},[c]),te.useEffect(()=>{if(!g)return;const V=!Object.prototype.hasOwnProperty.call(g,"icon")||(g.icon??null)===(r??null),U=!Object.prototype.hasOwnProperty.call(g,"color")||(g.color??null)===(n??null);V&&U&&h(null)},[n,r,g]);const j=async V=>{if(!(!l||f)){h(U=>({...U,...V})),p(!0);try{await l(V)}catch{h(null)}finally{p(!1)}}},x=a.jsx("span",{className:`${Qs.marker} ${Qs[i]} ${s?Qs.disabled:""}`.trim(),style:{color:eA(N.color)},"aria-hidden":"true",children:a.jsx(I,{size:i==="detail"?26:i==="inline"?18:24,strokeWidth:1.9})});return $?a.jsxs("div",{ref:b,className:Qs.root,onClick:V=>V.stopPropagation(),children:[a.jsx("button",{ref:v,type:"button",className:Qs.trigger,onClick:()=>d(V=>!V),onKeyDown:V=>V.stopPropagation(),"aria-label":`Change ${e} icon and color`,"aria-expanded":c,disabled:f,children:x}),c?pc.createPortal(a.jsxs("div",{ref:T,className:Qs.popover,role:"dialog","aria-label":`${e} icon and color`,"aria-busy":f,"data-theme":y,style:w,onClick:V=>V.stopPropagation(),onKeyDown:V=>V.stopPropagation(),children:[a.jsx("div",{className:Qs.colorGrid,"aria-label":"Colors",children:C_.map(V=>a.jsx("button",{type:"button",className:`${Qs.colorOption} ${N.color===V?Qs.selected:""}`.trim(),style:{backgroundColor:eA(V)},onClick:()=>{j({color:V})},"aria-label":`${V} color`,"aria-pressed":N.color===V,disabled:f},V))}),a.jsx("div",{className:Qs.divider}),a.jsx("div",{className:Qs.iconGrid,"aria-label":"Icons",children:A_.map(V=>{const U=tA[V];return a.jsx("button",{type:"button",className:`${Qs.iconOption} ${N.icon===V?Qs.selected:""}`.trim(),onClick:()=>{j({icon:V})},"aria-label":V,"aria-pressed":N.icon===V,disabled:f,children:a.jsx(U,{size:18,strokeWidth:1.8})},V)})}),a.jsx("div",{className:Qs.divider}),a.jsx("button",{type:"button",className:Qs.reset,onClick:()=>{j({icon:null,color:null})},disabled:!N.customized||f,children:"Reset to default"})]}),document.body):null]}):x}function I_({workstreams:e,onSelect:t,disabled:r=!1}){const n=te.useMemo(()=>e.filter(l=>!l.isArchived),[e]),s=te.useMemo(()=>new Map(n.map(l=>[l.id,l])),[n]),i=te.useMemo(()=>n.map(l=>({value:l.id,label:`${pp(l)||l.id} — ${l.title}`})),[n]);return a.jsx(li,{value:"",options:i,onChange:l=>{const c=s.get(String(l));c&&t(c)},placeholder:"Select workstream…",ariaLabel:"Link task to workstream",title:i.length>0?"Link to workstream":"No workstreams available",disabled:r||i.length===0,className:E.taskWorkstreamPicker,panelClassName:E.taskWorkstreamPickerPanel,portalPanel:!0,panelAlign:"start",panelMinWidth:280,searchable:!0,searchPlaceholder:"Search workstreams…",noResultsText:"No matching workstreams.",hideChevron:!0,triggerContent:a.jsx("span",{className:E.taskWorkstreamPickerIcon,children:a.jsx(Zf,{size:13,"aria-hidden":"true"})}),renderOptionContent:l=>{const c=s.get(String(l.value));return c?a.jsxs("span",{className:E.taskWorkstreamPickerOption,children:[a.jsx(ym,{entityType:"workstream",entityId:c.id,icon:c.icon,color:c.color,size:"inline",disabled:!0}),a.jsx("span",{children:pp(c)||c.id}),a.jsx("span",{children:c.title})]}):l.label}})}const o9="_root_evk0k_1",i9="_compact_evk0k_21",c9="_outline_evk0k_26",l9="_foldFill_evk0k_47",d9="_foldLine_evk0k_56",u9="_label_evk0k_60",Ku={root:o9,compact:i9,outline:c9,foldFill:l9,foldLine:d9,label:u9};function p9({label:e,compact:t=!1,accentColor:r}){const n=r?{"--document-type-accent":r}:void 0;return a.jsxs("span",{className:`${Ku.root} ${t?Ku.compact:""}`.trim(),style:n,"aria-hidden":"true",children:[a.jsxs("svg",{className:Ku.outline,viewBox:"0 0 28 28",focusable:"false",children:[a.jsx("path",{d:"M2 0.75h18.25l7 7V26q0 1.25-1.25 1.25H2Q0.75 27.25 0.75 26V2Q0.75 0.75 2 0.75Z"}),a.jsx("path",{className:Ku.foldFill,d:"M20.25 0.75v7h7Z"}),a.jsx("path",{className:Ku.foldLine,d:"M20.25 0.75v7h7"})]}),a.jsx("span",{className:Ku.label,children:e})]})}const{MessageSquare:f9,Gauge:m9,ClipboardList:g9,HelpCircle:h9}=eo;function y9(e,t){if(!e)return null;const r=String(e.type==="comment"?e.comment.author:e.event.actor).trim(),n=e.type==="comment"?e.comment.actor:e.event.actorProfile;if(!r&&!n)return null;const s=r.toLowerCase(),i=t.find(w=>String(w.value||"").trim().toLowerCase()===s),l=e.type==="comment"?n?.kind==="ai"?"ai":n?.kind==="human"?"human":i?.kind==="agent"?"ai":i?.kind==="member"?"human":null:e.event.actorType,c=l==="system"||s==="system"?"system":l==="ai"||n?.kind==="ai"||i?.kind==="agent"?"agent":"member";if(c==="system")return{label:"System"};const d=String(n?.label||"").trim(),f=String(i?.label||"").trim(),p=!s||s==="user"||s==="human"||s==="ai",g=/^(?:ai-profile|user|member)-[0-9a-f-]{8,}$/i.test(r)||/^[0-9a-f]{16,}$/i.test(r),h=r.replace(/[-_]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,w=>w.toUpperCase()),y=d||f||(c==="agent"&&(p||g)?"AI Agent":"")||(p||g?"Workspace member":h)||(c==="agent"?"AI Agent":"Workspace member"),k=Jn(n?.color||i?.color);return{label:y,color:k}}const k9=({task:e,searchQuery:t="",copiedId:r=null,taxonomies:n=[],types:s=[],priorities:i=[],categories:l=[],assigneeOptions:c=[],workstreams:d=[],taskWorkstream:f=null,taskInitiative:p=null,workspaceId:g=null,isOverlay:h=!1,isArchived:y=!1,readOnlyMode:k=null,isRecentlyChanged:w=!1,selectable:S=!1,selected:b=!1,onSelectionChange:v,onClick:T,onCopyId:R,onToggleInProgress:P,onToggleReview:N,onToggleComplete:I,onToggleCancel:$,onSetStatus:j,onArchiveTask:x,onUnarchive:V,onDelete:U,deleteActionTitle:ne,taskReferences:L,onAssigneeChange:ie,onWorkstreamChange:J,compressed:ue=!1,showStatusLabel:oe=!1,showDescription:ge=!0,showAttachments:je=!0,showChecklistProgress:qe=!0,showLatestActivity:Ye=!0,tintActivityBackground:he=!1})=>{const ce=gw(e),B=ce.label||(ce.isProvisional?"Pending":""),K=ce.isProvisional,Ae=!!ce.label,re=pp(f)||f?.id||"",F=LI(p)||p?.id||"",D=i.find(Y=>String(Y.value)===String(e.priority)),z=$o(e.status),we=Jn(z.color),ke=l.find(Y=>Y.value===e.category||Y.label===e.category),ee=typeof e.complexity=="number"?e.complexity:Number(e.complexity??3),Z=Number.isFinite(ee)?Math.max(1,Math.min(5,Math.round(ee))):3,H={1:"Tiny",2:"Low",3:"Mid",4:"High",5:"Epic"},ae={1:"tiny",2:"low",3:"medium",4:"high",5:"epic"},Te=H[Z],Le=`var(--complexity-${ae[Z]})`,Ue=rm(e.assignee,c),ft=te.useMemo(()=>{const Y=String(e.assignee||"").trim();if(!Y||Y===jd.value)return jd;const le=xC(c,e.assignee).find(It=>String(It.value||"").trim()===Y);if(le)return le;const Ke=hv(Y);return{...jd,value:Y,label:Ue,icon:Ke==="agent"?"Bot":"User",color:Ke==="agent"?"#8b5cf6":"#22c55e",kind:Ke}},[Ue,c,e.assignee]),He=te.useMemo(()=>e.latestActivity??yC(e),[e]),Fe=te.useMemo(()=>y9(He,c),[c,He]),me=k||(e.isDeleted?"deleted":y?"archived":null),ve=me!==null,ot=te.useMemo(()=>{if(me!=="deleted"||!e.deletedExpiresAt)return"";const Y=new Date(e.deletedExpiresAt);return Number.isNaN(Y.getTime())?"":`Trash expires ${Y.toLocaleString()}`},[me,e.deletedExpiresAt]),Oe=!ve&&!h&&!!ie&&c.length>0,A=!ve&&!h&&!!J,[G,_e]=te.useState(!1),Ne=te.useCallback((Y,le)=>{const Ke=String(le||"").trim();if(Ke){if(Y==="assignee")return rm(Ke,c);if(Y==="workstreamId"&&Ke===f?.id)return re||f.id;if(Y==="initiativeId"&&Ke===p?.id)return F||p.id}},[c,F,p,f,re]),Ee=te.useMemo(()=>zx(He,Ne),[Ne,He]),fe=te.useMemo(()=>e.commentCount??yw(e).filter(Y=>Y.type==="comment").length,[e]),nt=[hr.taskItem,e.status==="on-hold"?hr.onHold:"",e.status==="in-progress"?hr.inProgress:"",e.status==="review"?hr.readyForReview:"",e.status==="done"?hr.completed:"",e.status==="cancelled"?hr.cancelled:"",w?hr.taskItemRecentlyChanged:"",h?hr.kanbanCardOverlay:"",ve?hr.readOnly:"",y?hr.archived:"",ue?hr.compressed:"",b?hr.selected:""].filter(Boolean).join(" "),q=Jn(D?.color),be=s.find(Y=>Y.value===e.type),Ve=Jn(be?.color)||sj(e.type),Ce=Y=>{const le=typeof Y=="string"?Y:Y.path,Ke=typeof Y=="string"?"":(Y.fsPath||"").trim(),It=typeof Y=="string"?"":(Y.displayName||"").trim(),vt=typeof Y=="string"?"":(Y.originalFilename||"").trim(),Mt=typeof Y=="string"?"":(Y.caption||"").trim();return[Ke,vt,It,Mt,le].some(Zt=>/\.(png|jpe?g|webp|gif)(\?|#|$)/i.test(Zt))},xe=Y=>{const le=typeof Y=="string"?Y:Y.path,Ke=le.includes("/api/taskforce/documents/"),It=typeof Y=="string"?"":(Y.displayName||"").trim();if(Ke&&typeof Y!="string")return s8({displayName:Y.displayName,originalFilename:Y.originalFilename,fsPath:Y.fsPath,assetId:Y.assetId||null});const vt=typeof Y=="string"?"":(Y.caption||"").trim();if(vt)return vt;if(It)return It;const Mt=typeof Y=="string"?"":(Y.originalFilename||"").trim();return Mt||le.split("?")[0].split("#")[0].split("/").pop()||"Context file"},Ie=Y=>{const le=typeof Y=="string"?Y:Y.path,Ke=typeof Y=="string"?"":(Y.fsPath||"").trim(),It=typeof Y=="string"?"":(Y.caption||"").trim(),vt=typeof Y=="string"?"":(Y.originalFilename||"").trim(),Mt=[];if(Ke&&Mt.push(Ke),vt&&Mt.push(vt),It&&Mt.push(It),le.includes("/api/taskforce/context-link?path="))try{const Zt=new URL(le,"http://localhost").searchParams.get("path");Zt&&Mt.push(Zt)}catch{}Mt.push(le);for(const gr of Mt){const or=gr.split("?")[0].split("#")[0].split("/").pop()||"",Dt=or.lastIndexOf(".");if(Dt<=0||Dt===or.length-1)continue;const lr=or.slice(Dt+1);if(lr)return lr.slice(0,5).toUpperCase()}return"FILE"},de={"--task-status-color":we||"var(--border-primary)","--task-card-tint-color":ve?"transparent":we||"transparent","--task-change-glow-color":we||"var(--brand-primary)",...we?{borderColor:we}:{}},Be=Y=>Y.replace(/\b\w/g,le=>le.toUpperCase()),at=hm(n,[e]),Qe=e.checklistItems||[],Ze=e.checklistCount??Qe.length,Pe=e.completedChecklistCount??(Ze>0?Qe.filter(Y=>Y.isCompleted).length:0),gt=(Y,le)=>{Y.stopPropagation(),R?.(Y,le)},it=async Y=>{if(!J||G)return!1;_e(!0);try{return await J(e,Y)!==!1}finally{_e(!1)}},De=Y=>{const le=typeof Y=="string"?Y:Y.path;return/^https?:\/\//i.test(le)?(window.open(le,"_blank"),!0):om(Y,{ownerType:"task",ownerId:e.id,ownerReferenceLabel:B,workspaceId:g})},bt=ue||h||!e.cardCoverAssetId?null:e.cardCoverAttachment&&typeof e.cardCoverAttachment!="string"&&e.cardCoverAttachment.assetId===e.cardCoverAssetId?e.cardCoverAttachment:(e.attachments||[]).find(Y=>typeof Y!="string"&&String(Y.assetId||"").trim()===e.cardCoverAssetId&&Y.linkRole==="image"&&Ce(Y))||null,Et=bt?`${bt.assetId||""}:${bt.path}`:"",mt=(e.attachments||[]).filter(Y=>!bt||typeof Y=="string"||Y.assetId!==bt.assetId),[qt,et]=te.useState(!1);return te.useEffect(()=>{et(!1)},[Et]),a.jsxs("div",{className:nt,onClick:()=>T?.(e),style:de,"data-task-card":"true",children:[a.jsxs("div",{className:hr.taskHeader,children:[S&&a.jsx("label",{className:hr.selectionControl,onClick:Y=>Y.stopPropagation(),onPointerDown:Y=>Y.stopPropagation(),children:a.jsx("input",{type:"checkbox",checked:b,onChange:Y=>v?.(Y.target.checked),"aria-label":`Select ${B||e.title} for restore`})}),a.jsxs("div",{className:hr.taskReferenceCluster,children:[p?a.jsxs(a.Fragment,{children:[a.jsx(ip,{copied:r===F,onClick:Y=>gt(Y,F),disabled:!F,title:p.title,ariaLabel:`Copy initiative reference ${F}: ${p.title}`,className:y?hr.archiveBadge:"",label:F}),a.jsx("span",{className:hr.taskReferenceDivider,children:"/"})]}):null,f?a.jsxs(a.Fragment,{children:[a.jsx(ip,{copied:r===re,onClick:Y=>gt(Y,re),disabled:!re,title:f.title,ariaLabel:`Copy workstream reference ${re}: ${f.title}`,className:y?hr.archiveBadge:"",label:re}),a.jsx("span",{className:hr.taskReferenceDivider,children:"/"})]}):null,A&&!f?a.jsx("div",{className:hr.taskReferenceSegment,onClick:Y=>Y.stopPropagation(),onPointerDown:Y=>Y.stopPropagation(),onKeyDown:Y=>Y.stopPropagation(),children:a.jsx(I_,{workstreams:d,disabled:G,onSelect:Y=>{it(Y.id)}})}):null,B?a.jsx("div",{className:hr.taskReferenceSegment,onClick:Y=>Y.stopPropagation(),onPointerDown:Y=>Y.stopPropagation(),onKeyDown:Y=>Y.stopPropagation(),children:a.jsx(ip,{copied:Ae&&r===ce.label,onClick:Y=>gt(Y,ce.label),disabled:!Ae,title:K?"Temporary identifier — replaced after synchronization.":"Copy task reference",ariaLabel:K?`Copy temporary task reference ${B}`:void 0,className:y?hr.archiveBadge:"",label:qg(B,t),provisional:K})}):null]}),a.jsx("div",{className:hr.taskActions,onClick:Y=>Y.stopPropagation(),children:ve?V||U?a.jsxs(a.Fragment,{children:[V&&a.jsx("button",{type:"button",className:E.actionBtn,onClick:()=>V(e.id),title:me==="deleted"?`Restore to ${e.isArchived===!0?"Archived":"Active"}`:"Restore archived task",children:a.jsx(Ni,{size:16})}),U&&a.jsx("button",{type:"button",className:`${E.actionBtn} ${E.deleteBtn}`,onClick:()=>U(e.id),title:ne||(me==="deleted"?"Delete Permanently":"Move to Trash"),children:a.jsx(um,{size:16})})]}):null:a.jsx(zh,{task:e,compressed:ue,shortLabels:!0,showLabel:oe,onSetStatus:(Y,le)=>{if(j){j(Y,le);return}if(le==="in-progress"){P?.(Y);return}if(le==="review"){N?.(Y);return}if(le==="done"){I?.(Y);return}le==="cancelled"&&$?.(Y)},onArchiveTask:x})})]}),bt&&!qt&&a.jsx("button",{type:"button",className:hr.taskCover,"aria-label":`Preview ${xe(bt)}`,onPointerDown:Y=>Y.stopPropagation(),onClick:Y=>{Y.stopPropagation(),!De(bt)&&(zv(bt,{taskId:e.id,taskReferenceLabel:B})||window.open(bt.path,"_blank"))},children:a.jsx("img",{src:bt.path,alt:bt.caption||bt.displayName||bt.originalFilename||e.title,loading:"lazy",decoding:"async",onError:()=>et(!0)})}),a.jsxs("div",{className:hr.taskContent,children:[ve&&a.jsx("div",{className:`${hr.taskMeta} ${hr.taskMetaCompact}`}),a.jsxs("div",{children:[a.jsxs("div",{className:hr.taskTitle,style:ue?{fontSize:"13px",lineHeight:"1.4"}:{},children:[me==="archived"&&"✓ ",me==="deleted"&&"Deleted: ",qg(e.title,t)]}),ot&&a.jsx("div",{className:hr.deletedExpiry,title:"Trash items are permanently deleted 90 days after deletion.",children:ot}),ge&&e.description&&!ve&&!ue&&a.jsx("div",{className:hr.taskDescription,children:a.jsx(uy,{variant:"compact",taskReferences:L,children:e.description})})]}),je&&mt.length>0&&!ve&&!ue&&a.jsxs("div",{className:hr.attachmentThumbnails,children:[a.jsx("div",{className:hr.attachmentImageRow,children:mt.map((Y,le)=>{const Ke=typeof Y=="string"?Y:Y.path;return Ce(Y)?a.jsx("button",{type:"button",className:hr.attachmentThumbnail,"aria-label":`Preview ${xe(Y)}`,onPointerDown:It=>It.stopPropagation(),onClick:It=>{It.stopPropagation(),!De(Y)&&(zv(typeof Y=="string"?{path:Ke}:Y,{taskId:e.id,taskReferenceLabel:B})||window.open(Ke,"_blank"))},children:a.jsx("img",{src:Ke,alt:`Attachment ${le}`})},le):null})}),a.jsx("div",{className:hr.attachmentDocumentList,children:mt.map((Y,le)=>{const Ke=typeof Y=="string"?Y:Y.path,It=typeof Y=="string"?void 0:Y.fsPath,vt=xe(Y);if(Ce(Y))return null;const Mt=Ie(Y),gr=oj(Mt);return a.jsxs("button",{type:"button",className:hr.contextDocThumb,onPointerDown:Zt=>Zt.stopPropagation(),onClick:Zt=>{if(Zt.stopPropagation(),De(Y))return;const or=typeof Y=="string"?{path:Y,taskId:e.id}:{...Y,taskId:e.id};r_(or,It)||window.open(Ke,"_blank")},title:vt,"aria-label":`${vt} ${Mt}`,style:{"--context-doc-accent":gr},children:[a.jsx(p9,{label:Mt,accentColor:gr,compact:!0}),a.jsx("span",{className:hr.contextDocMain,children:a.jsx("span",{className:hr.contextDocName,children:vt})})]},le)})})]}),e.status==="cancelled"&&e.canceledReason&&!ue&&a.jsxs("div",{className:hr.taskCancellationReason,children:[a.jsx("strong",{children:"Cancellation Reason:"})," ",qg(e.canceledReason,t)]}),Ye&&(Ee||fe>0)&&!ve&&!ue&&a.jsxs("div",{className:`${hr.taskLatestComment} ${he&&Fe?.color?hr.taskLatestCommentTinted:""}`,"data-task-activity-summary":"true",style:Fe?.color?{"--task-activity-accent":Fe.color}:void 0,children:[a.jsxs("div",{className:hr.taskLatestCommentHeader,children:[a.jsxs("div",{className:hr.taskLatestActivityHeading,children:[a.jsx("strong",{children:Ee?"Latest Activity:":"Activity:"}),Ee&&Fe?a.jsx("span",{className:hr.taskLatestActivityActor,title:Fe.label,children:Fe.label}):null]}),fe>0&&a.jsxs("span",{className:`${E.metaBadge} ${hr.taskCommentCount}`,title:`${fe} ${fe===1?"comment":"comments"}`,"aria-label":`${fe} ${fe===1?"comment":"comments"}`,children:[a.jsx(f9,{size:12,"aria-hidden":"true"}),a.jsx("span",{children:fe})]})]}),Ee&&a.jsx("div",{className:hr.taskLatestCommentText,title:Ee,children:qg(Ee,t)})]}),!ve&&at.length>0&&!ue&&a.jsx("div",{className:`${hr.taskSpecialists} ${hr.taxonomiesList}`,children:at.map(Y=>{const le=e.taxonomies?.[Y.id];return le?(Array.isArray(le)?le:[le]).map(It=>{const vt=Y.options.find(Dt=>Dt.value===It);if(!vt)return null;const Mt=eo[vt.icon||"Layers"]||Ah,gr=Jn(vt.color)||"var(--text-primary)",Zt=Y.status==="retired"?`${Y.label} (Retired)`:Y.label,or=vt.status==="retired"?`${vt.label} (Retired)`:vt.label;return a.jsx("span",{className:E.specialistBadge,style:{borderColor:`${gr}50`,backgroundColor:`${gr}15`,color:gr},title:`${Zt}: ${Be(or)}`,children:a.jsx(Mt,{size:10})},`${Y.id}-${It}`)}):null})}),a.jsx("div",{className:hr.taskMeta,children:ve?a.jsx("span",{children:e.category}):a.jsx(a.Fragment,{children:a.jsxs("div",{className:hr.taskMetaRow,style:ue?{marginBottom:0}:void 0,children:[a.jsxs("div",{className:hr.taskMetaBadgeGroup,"data-task-meta-primary":"true",children:[(()=>{const Y=Jn(ke?.color),le=ke?.icon||"Folder",Ke=eo[le]||lc;return a.jsx("span",{className:`${E.metaBadge} ${hr.taskMetaCategory}`,title:Be(e.category),style:{color:Y||"var(--text-secondary)",backgroundColor:Y?`${Y}15`:"var(--bg-tertiary)",borderColor:Y?`${Y}40`:"transparent"},children:a.jsx(Ke,{size:14})})})(),a.jsx("span",{className:`${E.metaBadge} ${hr.taskMetaType} ${E[`type_${e.type}`]||""}`,title:Be(e.type||So),style:{color:`var(--type-color, ${Ve})`,backgroundColor:`color-mix(in srgb, var(--type-color, ${Ve}), transparent 90%)`,borderColor:`color-mix(in srgb, var(--type-color, ${Ve}), transparent 75%)`},children:be?.icon?(()=>{const Y=eo[be.icon]||h9;return a.jsx(Y,{size:14})})():Yz(e.type,14)}),D&&a.jsx("span",{className:`${E.metaBadge} ${hr.taskMetaPriority}`,style:{color:q||"var(--text-secondary)",backgroundColor:q?`${q}15`:"var(--bg-tertiary)",borderColor:q?`${q}40`:"var(--border-color)"},title:`${D.label}`,children:(()=>{const Y=D.icon||"AlertCircle",le=eo[Y]||R0;return a.jsx(le,{size:14})})()}),qe&&Ze>0&&a.jsxs("span",{className:E.metaBadge,title:`${Pe}/${Ze} checklist items complete`,style:{color:"var(--text-muted)",backgroundColor:"var(--bg-tertiary)",borderColor:"var(--border-primary)",gap:"4px",padding:"0 8px"},children:[a.jsx(g9,{size:14}),a.jsx("span",{children:`${Pe}/${Ze}`})]})]}),a.jsxs("div",{className:hr.taskMetaIdentityGroup,"data-task-meta-identity":"true",children:[a.jsxs("span",{className:E.metaBadge,title:`AI-estimated complexity: ${Te} (${Z}/5)`,style:{color:Le,backgroundColor:`color-mix(in srgb, ${Le}, transparent 88%)`,borderColor:`color-mix(in srgb, ${Le}, transparent 72%)`,gap:"4px",padding:"0 8px"},children:[a.jsx(m9,{size:14}),!ue&&a.jsx("span",{className:hr.taskComplexityLabel,children:Te})]}),(()=>{const Y=ft.kind==="unassigned",le=a.jsx("span",{className:hr.assigneeAvatarShared,"data-task-assignee":"true","aria-hidden":Oe?"true":void 0,"aria-label":Oe?void 0:Y?"Unassigned":`Assigned to ${Ue}`,children:a.jsx(fy,{option:ft,size:ue?32:36,variant:"card",unassignedIcon:Oe?ci:void 0})});return Oe?a.jsx("div",{className:hr.assigneePicker,title:Y?"Assign task":Ue,onClick:Ke=>Ke.stopPropagation(),onPointerDown:Ke=>Ke.stopPropagation(),onKeyDown:Ke=>Ke.stopPropagation(),children:a.jsx(li,{value:e.assignee||"unassigned",options:c,onChange:Ke=>ie?.(e,String(Ke)),ariaLabel:Y?"Assign task":`Reassign task currently assigned to ${Ue}`,hideChevron:!0,portalPanel:!0,panelMinWidth:240,searchable:!0,searchPlaceholder:"Search assignees...",noResultsText:"No assignees found.",renderOptionContent:Ke=>{const It=c.find(vt=>String(vt.value)===String(Ke.value));return It?a.jsx(yp,{option:It}):Ke.label},triggerContent:le})}):a.jsx("span",{title:Ue,children:le})})()]})]})})})]})]})},lm=te.memo(k9),Hh="168px",qu=[{value:"open",label:"Open"},{value:"archived",label:"Archived"},{value:"deleted",label:"Deleted"}];function v9(){return a.jsx("span",{style:{fontSize:"12px",fontWeight:600,color:"var(--text-secondary)",marginRight:"4px"},children:_t("standalone.filtersCaps")})}function Tf({label:e,options:t,selected:r,onChange:n,variant:s="label",renderOptionContent:i,searchable:l=!1,searchPlaceholder:c,noResultsText:d}){return a.jsx(Ad,{label:e,options:t,selected:r,onChange:n,variant:s,renderOptionContent:i,searchable:l,searchPlaceholder:c,noResultsText:d,containerStyle:{flex:`0 0 ${Hh}`,maxWidth:Hh}})}function w9({onClick:e,disabled:t,label:r="Reset filters"}){return a.jsx("button",{type:"button",className:"tf-control-icon",onClick:e,disabled:t,"aria-label":r,title:r,children:a.jsx(Ni,{size:14,"aria-hidden":"true"})})}function rA({label:e,options:t,selected:r,onChange:n,allLabel:s,title:i}){const[l,c]=te.useState(!1),d=te.useRef(null),f=t.find(h=>h.value===r),p=f?.selectedLabel||f?.label||s;te.useEffect(()=>{const h=y=>{d.current&&!d.current.contains(y.target)&&c(!1)};return document.addEventListener("mousedown",h),()=>document.removeEventListener("mousedown",h)},[]);const g=h=>{n(h),c(!1)};return a.jsxs("div",{className:E.filterContainer,ref:d,style:{flex:`0 0 ${Hh}`,maxWidth:Hh},children:[a.jsxs("button",{type:"button",className:`${E.filterButton} ${r?E.filterActive:""}`,onClick:()=>c(h=>!h),title:i||`Filter by ${e}`,"aria-haspopup":"listbox","aria-expanded":l,children:[a.jsx("span",{children:p}),a.jsx(Ud,{size:14,style:{transform:l?"rotate(180deg)":"none",transition:"transform 0.2s",opacity:.5}})]}),l&&a.jsxs("div",{className:`${E.filterDropdown} ${E.appScrollbar} tf-scrollbar`,role:"listbox","aria-label":e,children:[a.jsxs("button",{type:"button",className:E.filterOption,onClick:()=>g(""),"aria-selected":!r,children:[a.jsx(ji,{size:14,style:{opacity:r?0:1}}),a.jsx("span",{style:{fontWeight:r?500:600},children:s})]}),a.jsx("div",{className:E.filterDivider}),t.map(h=>{const y=h.value===r;return a.jsxs("button",{type:"button",className:E.filterOption,onClick:()=>g(h.value),"aria-selected":y,children:[a.jsx(ji,{size:14,style:{opacity:y?1:0}}),a.jsx("span",{style:{fontWeight:y?600:500},children:h.label})]},h.value)})]})]})}function __({scope:e,onScopeChange:t,className:r,labelClassName:n}){const s=te.useRef([]),i=(l,c)=>{let d;l.key==="ArrowRight"?d=(c+1)%qu.length:l.key==="ArrowLeft"?d=(c-1+qu.length)%qu.length:l.key==="Home"?d=0:l.key==="End"&&(d=qu.length-1),d!==void 0&&(l.preventDefault(),s.current[d]?.focus(),t(qu[d].value))};return a.jsxs("div",{className:[E.taskScopeToggle,r].filter(Boolean).join(" "),children:[a.jsx("span",{className:n,children:"Scope"}),a.jsx("div",{className:E.taskScopeTabs,role:"tablist","aria-label":"Task scope",children:qu.map((l,c)=>{const d=e===l.value;return a.jsx("button",{ref:f=>{s.current[c]=f},type:"button",className:`${E.taskScopeTab} ${d?E.taskScopeTabActive:""}`,onClick:()=>t(l.value),onKeyDown:f=>i(f,c),role:"tab","aria-selected":d,tabIndex:d?0:-1,title:`Show ${l.label.toLowerCase()} tasks`,children:l.label},l.value)})})]})}function b9({onClick:e,disabled:t=!1,className:r,title:n="Permanently delete all deleted tasks",children:s="Delete All Permanently"}){return a.jsxs("button",{type:"button",className:r,onClick:e,disabled:t,title:n,children:[a.jsx(um,{size:14}),s]})}const{Search:nA,ClipboardList:S9,ChevronRight:A9,ChevronDown:C9,Folder:I9,Archive:_9,RotateCcw:T9,X:x9,Plus:R9,ArrowUpDown:P9,Trash2:E9}=eo,N9=new Map,j9=new Set,T_=o.forwardRef((e,t)=>{const{tasks:r,archivedTasks:n,categories:s,types:i,priorities:l,taxonomyDisplayLabels:c,assigneeOptions:d=[],workstreams:f=[],initiatives:p=[],workspaceId:g=null,searchQuery:h,filterCategories:y,filterTypes:k,filterPriorities:w,filterStatus:S,filterAssignees:b=[],filterTaxonomies:v,sortBy:T,sortOrder:R,showArchive:P,taskScope:N,collapsedCategories:I,loadingTasks:$,filteredTasks:j,filteredArchive:x,groupedTasks:V,filteredDeletedTasks:U=[],groupedDeletedTasks:ne={},copiedId:L,recentlyChangedTaskIds:ie=[],showTaskCardStatusLabel:J=!1,showTaskCardDescription:ue=!0,showTaskCardAttachments:oe=!0,showTaskCardChecklistProgress:ge=!0,showTaskCardLatestActivity:je=!0,tintTaskCardActivityBackground:qe=!1,deletedTaskRecordByTaskId:Ye=N9,selectedDeletedRecordIds:he=j9,onDeletedSelectionChange:ce,trashControls:B,onSearchChange:K,onFilterCategoriesChange:Ae,onFilterTypesChange:re,onFilterPrioritiesChange:F,onFilterStatusChange:D,onFilterAssigneesChange:z,onTaxonomyFilterChange:we,onSortByChange:ke,onSortOrderChange:ee,onShowArchiveChange:Z,onTaskScopeChange:H,onClearFilters:ae,onToggleCategory:Te,onEditTask:Le,onUpdateTask:Ue,taskReferences:ft,onCopyId:He,onToggleInProgress:Fe,onToggleReview:me,onToggleComplete:ve,onToggleCancel:ot,onSetStatus:Oe,onArchiveTask:A,onBulkArchive:G,onUnarchive:_e,onDelete:Ne,onFetchArchive:Ee,onAddTaskToCategory:fe,supplementalTasks:nt=[],taxonomies:q}=e,be=te.useMemo(()=>new Set(ie),[ie]),Ve=te.useMemo(()=>new Map(f.map(et=>[et.id,et])),[f]),Ce=te.useMemo(()=>new Map(p.map(et=>[et.id,et])),[p]),xe=te.useCallback(et=>{const Y=et.workstreamId&&Ve.get(et.workstreamId)||null,le=Y?.initiativeId&&Ce.get(Y.initiativeId)||null;return{taskWorkstream:Y,taskInitiative:le}},[Ce,Ve]),Ie=te.useMemo(()=>[...r,...n,...nt],[n,nt,r]),de=te.useCallback((et,Y)=>Ue(et.id,{assignee:Y}),[Ue]),Be=!!H,at=H,Qe=N??(P?"archived":"open"),Ze=Be?Qe==="archived"?x:Qe==="deleted"?U:j:j,Pe=Be?Qe==="archived"?{Archived:x}:Qe==="deleted"?ne:V:V,gt=Be?Qe==="deleted"?"deleted":Qe==="archived"?"archived":null:null,it=dy(h),De=h?it?`No task found for ${it.toUpperCase()}`:_t("taskList.noMatchingTasks"):Qe==="archived"?"No archived tasks found.":Qe==="deleted"?"No deleted tasks found.":_t("taskList.noActiveTasks"),bt=te.useMemo(()=>{const et=s.filter(le=>!le.disabled),Y=s.filter(le=>le.disabled&&Ie.some(Ke=>Ke.category===le.value));return[...et,...Y.filter(le=>!et.some(Ke=>Ke.value===le.value))].map(le=>({value:le.value,label:le.disabled?`${le.label} (Legacy)`:le.label}))},[s,Ie]),Et=te.useMemo(()=>{const et=i.filter(le=>le.status!=="retired"),Y=i.filter(le=>le.status==="retired"&&Ie.some(Ke=>Ke.type===le.value));return[...et,...Y.filter(le=>!et.some(Ke=>Ke.value===le.value))].map(le=>({value:le.value,label:le.status==="retired"?`${le.label} (Retired)`:le.label}))},[Ie,i]),mt=te.useMemo(()=>hm(q,Ie).filter(et=>et.filterEnabled!==!1).map(et=>({...et,options:Fw(et,Ie)})),[Ie,q]),qt=te.useMemo(()=>[{value:"created",label:_t("taskList.sortCreated")},{value:"updated",label:_t("taskList.sortUpdated")},{value:"priority",label:_t("taskList.sortPriority")},...WI(q,Ie)],[Ie,_t,q]);return a.jsxs("div",{className:E.viewTab,ref:t,children:[a.jsxs("div",{className:E.filterBar,children:[a.jsxs("div",{className:E.searchContainer,children:[a.jsx(nA,{size:16,className:E.searchIcon}),a.jsx("input",{type:"text",className:E.searchInput,placeholder:_t("taskList.searchPlaceholder"),value:h,onChange:et=>K(et.target.value)}),h&&a.jsx("button",{className:E.clearSearchBtn,onClick:()=>K(""),title:_t("taskList.clearSearchTitle"),children:a.jsx(x9,{size:14})})]}),a.jsxs("div",{className:E.filterRow,children:[a.jsx(Ad,{label:c?.category||_t("taskList.categoryLabel"),options:bt,selected:y,onChange:Ae,variant:"value"}),a.jsx(Ad,{label:c?.type||_t("taskList.typeLabel"),options:Et,selected:k,onChange:re,variant:"value"})]}),a.jsxs("div",{className:E.filterRow,children:[a.jsx(Ad,{label:c?.priority||_t("taskList.priorityLabel"),options:l,selected:w,onChange:F,variant:"value"}),a.jsx(Ad,{label:_t("taskList.statusLabel"),options:fc,selected:S,onChange:D,variant:"value"}),a.jsx(Ad,{label:_t("taskList.assigneeLabel"),options:d,selected:b,onChange:et=>z?.(et),variant:"value",renderOptionContent:et=>{const Y=d.find(le=>String(le.value)===String(et.value));return Y?a.jsx(yp,{option:Y,size:20}):et.label}})]}),mt.map(et=>a.jsx(Ad,{label:et.status==="retired"?`${et.label} (Retired)`:et.label,options:et.options.map(Y=>({...Y,label:Y.status==="retired"?`${Y.label} (Retired)`:Y.label})),selected:v[et.id]||[],onChange:Y=>we(et.id,Y),variant:"value"},et.id)),a.jsxs("div",{className:E.filterRow,children:[a.jsxs("div",{className:E.sortLabel,children:[a.jsx(P9,{size:14,style:{marginRight:"4px"}})," ",_t("taskList.sortByLabel")]}),a.jsx("select",{value:T,onChange:et=>ke(et.target.value),className:`${E.filterSelect} ${E.filterSelectSort} `,children:qt.map(et=>a.jsx("option",{value:et.value,children:et.label},et.value))}),a.jsx("button",{className:`${E.resetFiltersBtn} ${E.sortDirectionBtnWidget}`,onClick:ee,title:_t(R==="desc"?"taskList.sortDirectionDescTitle":"taskList.sortDirectionAscTitle"),children:R==="desc"?a.jsx(rw,{size:14}):a.jsx(HA,{size:14})}),a.jsx("button",{className:E.resetFiltersBtn,onClick:ae,title:_t("taskList.resetFiltersTitle"),children:a.jsx(T9,{size:14})})]}),a.jsxs("div",{className:`${E.filterRow} ${E.archiveRow} `,children:[Qe==="open"?a.jsxs("button",{className:`${E.bulkArchiveBtn} ${r.some(et=>et.status==="done"||et.status==="cancelled")?"":E.disabledBtn} `,onClick:()=>r.some(et=>et.status==="done"||et.status==="cancelled")&&G(),disabled:!r.some(et=>et.status==="done"||et.status==="cancelled"),title:r.some(et=>et.status==="done"||et.status==="cancelled")?_t("taskList.archiveAllTitle"):_t("taskList.noTasksToArchiveTitle"),children:[a.jsx(_9,{size:12}),a.jsx("span",{children:_t("taskList.archiveFinished")})]}):Qe==="deleted"?a.jsx("div",{}):a.jsx("div",{}),Be?a.jsx(__,{scope:Qe,onScopeChange:et=>{at?.(et),et==="archived"?Z(!0):P&&Z(!1)},className:E.archiveToggle}):a.jsxs("label",{className:E.archiveToggle,children:[a.jsx("input",{type:"checkbox","aria-label":"Archived",checked:P,onChange:et=>{Z(et.target.checked),et.target.checked&&Ee()}}),a.jsx("span",{children:"Include Archive"})]})]}),Qe==="deleted"&&B]}),$&&r.length===0?a.jsx("div",{className:E.loading,children:a.jsx(Hn,{size:24,className:E.spinner})}):Ze.length===0&&!$?a.jsxs("div",{className:E.emptyState,children:[h?a.jsx(nA,{size:48}):Qe==="deleted"?a.jsx(E9,{size:48}):a.jsx(S9,{size:48}),a.jsx("p",{children:De})]}):a.jsx("div",{className:E.taskList,style:{opacity:$?.6:1,transition:"opacity 0.2s ease"},children:Object.entries(Pe).map(([et,Y])=>{if(Y.length===0)return null;const le=I[et];return a.jsxs("div",{className:E.categoryGroup,children:[a.jsx("div",{className:E.categoryHeader,onClick:()=>Te(et),children:a.jsxs("div",{className:E.categoryTitle,children:[le?a.jsx(A9,{size:16}):a.jsx(C9,{size:16}),(()=>{const Ke=s.find(Mt=>Mt.label===et),It=Ke?.icon&&fp[Ke.icon]?fp[Ke.icon]:I9,vt=Jn(Ke?.color)||"var(--color-purple, #8b5cf6)";return a.jsx(It,{size:16,className:E.categoryTitleIcon,style:{color:vt}})})(),et,a.jsxs("span",{className:E.categoryCount,children:["(",Y.length,")"]}),fe&&a.jsx("button",{className:E.kanbanQuickAdd,onClick:Ke=>{Ke.stopPropagation(),fe(et)},title:_t("taskList.addTaskToCategoryTitle",{category:et}),style:{marginLeft:"auto"},disabled:gt!==null,children:a.jsx(R9,{size:14})})]})}),!le&&a.jsx("div",{className:E.categoryItems,children:Y.map(Ke=>(()=>{const{taskWorkstream:It,taskInitiative:vt}=xe(Ke),Mt=gt==="deleted"?Ye.get(Ke.id):void 0;return a.jsx(lm,{task:Ke,taskWorkstream:It,taskInitiative:vt,workspaceId:g,searchQuery:h,copiedId:L,taxonomies:q,types:i,priorities:l,assigneeOptions:d,workstreams:f,onClick:Le,onAssigneeChange:de,onWorkstreamChange:(gr,Zt)=>Ue(gr.id,{workstreamId:Zt}),taskReferences:ft,onCopyId:He,onToggleInProgress:Fe,onToggleReview:me,onToggleComplete:ve,onToggleCancel:ot,onSetStatus:Oe,onArchiveTask:A,onUnarchive:gt?_e:void 0,onDelete:gt?Ne:void 0,categories:s,isRecentlyChanged:be.has(Ke.id),readOnlyMode:gt,selectable:!!(Mt&&ce),selected:!!(Mt&&he.has(Mt.id)),onSelectionChange:Mt?gr=>ce?.(Mt.id,gr):void 0,showStatusLabel:J,showDescription:ue,showAttachments:oe,showChecklistProgress:ge,showLatestActivity:je,tintActivityBackground:qe},Ke.id)})())})]},et)})}),!Be&&P&&x.length>0&&a.jsxs("div",{className:E.archiveList,children:[a.jsx("div",{className:E.archiveHeader,children:"Archived"}),x.map(et=>(()=>{const{taskWorkstream:Y,taskInitiative:le}=xe(et);return a.jsx(lm,{task:et,taskWorkstream:Y,taskInitiative:le,workspaceId:g,searchQuery:h,copiedId:L,isArchived:!0,types:i,assigneeOptions:d,workstreams:f,onClick:Le,onCopyId:He,onSetStatus:Oe,onUnarchive:_e,onDelete:Ne,deleteActionTitle:"Delete Permanently",taskReferences:ft,categories:s,showStatusLabel:J,showDescription:ue,showAttachments:oe,showChecklistProgress:ge,showLatestActivity:je,tintActivityBackground:qe},et.id)})())]})]})});T_.displayName="TaskList";const D9="_formNotice_1h100_1",M9="_markdownPreview_1h100_12",L9="_descriptionField_1h100_18",O9="_descriptionImageStatus_1h100_22",B9="_descriptionImageError_1h100_23",W9="_taskFormLifecycle_1h100_46",$9="_taskFormMetaDivider_1h100_51",F9="_taskFormMetaGrid_1h100_58",U9="_compactMetaGrid_1h100_59",z9="_compactMetaSection_1h100_65",H9="_compactMetaField_1h100_71",V9="_compactMetaFieldHint_1h100_85",G9="_workflowAssignmentField_1h100_89",K9="_workflowAssignmentLabels_1h100_93",q9="_workflowAssignmentControls_1h100_94",Y9="_workflowAssignmentSelector_1h100_101",Z9="_workflowAssignmentError_1h100_110",J9="_workflowExecutionToggle_1h100_121",X9="_workflowExecutionVersion_1h100_147",Q9="_workflowExecutionPanel_1h100_168",eH="_workflowExecutionHeader_1h100_176",tH="_workflowExecutionEyebrow_1h100_195",rH="_workflowExecutionSummary_1h100_196",nH="_workflowExecutionSpinner_1h100_206",aH="_workflowExecutionSteps_1h100_239",sH="_workflowExecutionStepCurrent_1h100_261",oH="_workflowExecutionStepMarker_1h100_266",iH="_workflowExecutionStepCompleted_1h100_277",cH="_workflowExecutionStepState_1h100_278",lH="_workflowExecutionStepBody_1h100_282",dH="_workflowExecutionStepTitle_1h100_286",uH="_workflowExecutionStepMeta_1h100_308",pH="_workflowExecutionEmpty_1h100_310",fH="_formFieldsetReset_1h100_350",mH="_formLayoutWithSidebar_1h100_357",gH="_formMainColumn_1h100_365",hH="_activitySidebar_1h100_372",yH="_activitySidebarHeader_1h100_382",kH="_activitySidebarTitle_1h100_389",vH="_taskFormDateRow_1h100_398",wH="_taskFormDateLabel_1h100_405",bH="_taskFormDateValue_1h100_413",SH="_taskFormMetaStack_1h100_421",AH="_taskFormMetaActor_1h100_427",CH="_taskFormDateWarning_1h100_433",IH="_taskFormDateError_1h100_439",_H="_helpHeader_1h100_445",TH="_helpClose_1h100_456",xH="_markdownHelp_1h100_470",RH="_helpGrid_1h100_479",PH="_helpGridItem_1h100_485",EH="_settingsHint_1h100_497",NH="_sectionBlock_1h100_503",jH="_specialistSectionWithoutTaxonomies_1h100_509",DH="_softSectionSurface_1h100_514",MH="_stackedList_1h100_521",LH="_stackedListSpaced_1h100_526",OH="_checklistInputGroup_1h100_530",BH="_checklistRow_1h100_537",WH="_checklistRowDragging_1h100_546",$H="_checklistHandleBtn_1h100_550",FH="_checklistCheckboxBtn_1h100_573",UH="_checklistCheckboxBtnChecked_1h100_593",zH="_checklistItemText_1h100_598",HH="_checklistItemTextCompleted_1h100_606",VH="_checklistRemoveBtn_1h100_611",GH="_specialistChip_1h100_643",KH="_specialistChipActive_1h100_666",qH="_commentPanel_1h100_676",YH="_activitySidebarPanel_1h100_690",ZH="_commentThread_1h100_698",JH="_activityTimelineRegion_1h100_702",XH="_activityLoadingThread_1h100_711",QH="_newActivityNotice_1h100_715",eV="_newActivityButton_1h100_723",tV="_emptyComments_1h100_767",rV="_activitySkeletonItem_1h100_781",nV="_activitySkeletonMeta_1h100_787",aV="_activitySkeletonBody_1h100_788",sV="_commentInputArea_1h100_912",oV="_commentInput_1h100_912",iV="_sendCommentBtn_1h100_955",cV="_taxonomyFieldsGrid_1h100_998",lV="_markdownPreviewContainer_1h100_1005",dV="_descriptionSurface_1h100_1010",kt={formNotice:D9,markdownPreview:M9,descriptionField:L9,descriptionImageStatus:O9,descriptionImageError:B9,taskFormLifecycle:W9,taskFormMetaDivider:$9,taskFormMetaGrid:F9,compactMetaGrid:U9,compactMetaSection:z9,compactMetaField:H9,compactMetaFieldHint:V9,workflowAssignmentField:G9,workflowAssignmentLabels:K9,workflowAssignmentControls:q9,workflowAssignmentSelector:Y9,workflowAssignmentError:Z9,workflowExecutionToggle:J9,workflowExecutionVersion:X9,workflowExecutionPanel:Q9,workflowExecutionHeader:eH,workflowExecutionEyebrow:tH,workflowExecutionSummary:rH,workflowExecutionSpinner:nH,workflowExecutionSteps:aH,workflowExecutionStepCurrent:sH,workflowExecutionStepMarker:oH,workflowExecutionStepCompleted:iH,workflowExecutionStepState:cH,workflowExecutionStepBody:lH,workflowExecutionStepTitle:dH,workflowExecutionStepMeta:uH,workflowExecutionEmpty:pH,formFieldsetReset:fH,formLayoutWithSidebar:mH,formMainColumn:gH,activitySidebar:hH,activitySidebarHeader:yH,activitySidebarTitle:kH,taskFormDateRow:vH,taskFormDateLabel:wH,taskFormDateValue:bH,taskFormMetaStack:SH,taskFormMetaActor:AH,taskFormDateWarning:CH,taskFormDateError:IH,helpHeader:_H,helpClose:TH,markdownHelp:xH,helpGrid:RH,helpGridItem:PH,settingsHint:EH,sectionBlock:NH,specialistSectionWithoutTaxonomies:jH,softSectionSurface:DH,stackedList:MH,stackedListSpaced:LH,checklistInputGroup:OH,checklistRow:BH,checklistRowDragging:WH,checklistHandleBtn:$H,checklistCheckboxBtn:FH,checklistCheckboxBtnChecked:UH,checklistItemText:zH,checklistItemTextCompleted:HH,checklistRemoveBtn:VH,specialistChip:GH,specialistChipActive:KH,commentPanel:qH,activitySidebarPanel:YH,commentThread:ZH,activityTimelineRegion:JH,activityLoadingThread:XH,newActivityNotice:QH,newActivityButton:eV,emptyComments:tV,activitySkeletonItem:rV,activitySkeletonMeta:nV,activitySkeletonBody:aV,commentInputArea:sV,commentInput:oV,sendCommentBtn:iV,taxonomyFieldsGrid:cV,markdownPreviewContainer:lV,descriptionSurface:dV};function Zk({label:e,value:t,options:r,onChange:n,type:s="priority",hideLabel:i=!1,showSelectedLabel:l=!0}){const c=r.find(d=>String(d.value)===String(t));return a.jsxs("div",{className:E.field,children:[!i&&a.jsxs("div",{className:E.labelRow,children:[a.jsx("label",{className:E.label,children:e}),l&&c&&a.jsx("span",{className:E.levelLabel,style:{color:Jn(c.color)||(s==="priority"?`var(--priority-${t})`:s==="complexity"?`var(--complexity-${t})`:"var(--text-secondary)"),backgroundColor:(Jn(c.color)?`${Jn(c.color)}25`:void 0)||(s==="priority"?`color-mix(in srgb, var(--priority-${t}), transparent 85%)`:s==="complexity"?`color-mix(in srgb, var(--complexity-${t}), transparent 85%)`:"rgba(255,255,255,0.05)")},children:c.label})]}),a.jsx("div",{className:E.levelSelect,children:r.map((d,f)=>{const p=r.findIndex(y=>String(y.value)===String(t)),g=f<=p,h=String(d.value)===String(t);return a.jsx("button",{type:"button",className:`${E.levelOption} ${g?E.levelOptionFilled:""} ${g?E[`levelOption_${s}_${d.value}`]:""} ${h?E.levelOptionSelected:""}`,onClick:()=>n(d.value),title:d.label,style:{opacity:g?1:.15,backgroundColor:g?Jn(d.color)||(s==="priority"?`var(--priority-${d.value})`:s==="complexity"?`var(--complexity-${d.value})`:"var(--text-primary)"):void 0,color:g?s==="priority"&&String(d.value).toLowerCase()==="medium"?"black":"white":void 0,boxShadow:g&&(s==="priority"&&(String(d.value).toLowerCase()==="critical"||d.value===4)||s==="complexity"&&(String(d.value).toLowerCase()==="epic"||d.value===5))?`0 0 12px ${s==="priority"?"rgba(239, 68, 68, 0.6)":"rgba(217, 70, 239, 0.6)"}`:void 0}},String(d.value))})})]})}const aA=new Map;function uV(e){const t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?null:t}function pV(e,t){const r=Object.entries(t).sort(([n],[s])=>n.localeCompare(s));return JSON.stringify([e,r])}function Vh(e,t,r){const n=uV(e);if(!n)return"";const s=r??bC(),i=pV(s,t);let l=aA.get(i);return l||(l=new Intl.DateTimeFormat(s,t),aA.set(i,l)),l.format(n)}function fV(e){return new Promise((t,r)=>{const n=new FileReader;n.onload=()=>t(String(n.result||"")),n.onerror=()=>r(n.error||new Error("Failed to read file")),n.readAsDataURL(e)})}async function Yg(e,t){try{const n=await(typeof e.clone=="function"?e.clone():e).json().catch(()=>null),s=String(n?.error||n?.message||"").trim();if(s)return s}catch{}try{const n=(await(typeof e.clone=="function"?e.clone():e).text().catch(()=>"")).trim();if(n)return n}catch{}return t}async function mV(e,t){const r=String(t.workspaceId||"").trim(),n=String(t.ownerId||"").trim(),s={ownerType:t.ownerType,ownerId:n||null,taskId:t.ownerType==="task"&&n||null},i=String(t.draftUploadId||"").trim(),l=i&&t.uploadPurpose?{draftUploadId:i,uploadPurpose:t.uploadPurpose}:{},c=globalThis.crypto?.randomUUID?.()||`context-upload-${Date.now()}-${Math.random().toString(16).slice(2)}`,d=()=>({"Content-Type":"application/json",...r?{"x-taskforce-workspace-id":r}:{},"x-taskforce-operation-id":c});let f=null,p=null;const g=await fetch("/api/taskforce/context-upload/init",{method:"POST",headers:d(),body:JSON.stringify({originalName:e.name,mimeType:e.type||"application/octet-stream",size:e.size,...s,...l,workspaceId:r||null})});if(g.ok){const h=await g.json();if(h?.success&&typeof h?.uploadUrl=="string"&&typeof h?.path=="string"){let y=!1;try{const k=await fetch(h.uploadUrl,{method:String(h.method||"PUT"),headers:h.headers||{"Content-Type":e.type||"application/octet-stream"},body:e});if(!k.ok)p=await Yg(k,`Upload failed for ${e.name}`);else{y=!0;const w=await fetch("/api/taskforce/context-upload/finalize",{method:"POST",headers:d(),body:JSON.stringify({relativePath:h.relativePath,mimeType:e.type||"application/octet-stream",originalName:e.name,size:e.size,...s,...l,workspaceId:r||null})});if(!w.ok)throw new Error(await Yg(w,`Upload failed for ${e.name}`));f=await w.json().catch(()=>null)}}catch(k){if(y)throw k;p=k instanceof Error?k.message:`Upload failed for ${e.name}`}}else h?.success&&typeof h?.path=="string"&&(f=h)}else p=await Yg(g,`Upload failed for ${e.name}`);if(!f){const h=await fV(e),y=await fetch("/api/taskforce/context-upload",{method:"POST",headers:d(),body:JSON.stringify({file:h,originalName:e.name,...s,...l,workspaceId:r||null})});if(!y.ok){const k=await Yg(y,`Upload failed for ${e.name}`);throw new Error(p&&p!==k?`${k} (${p})`:k)}f=await y.json()}if(!f?.success||!f?.path)throw new Error(`Upload failed for ${e.name}`);return{path:f.path,fsPath:f.fsPath,caption:typeof f.caption=="string"&&f.caption.trim().length>0?f.caption:e.name,displayName:typeof f.displayName=="string"?f.displayName:void 0,originalFilename:typeof f.originalFilename=="string"?f.originalFilename:e.name,assetId:typeof f.assetId=="string"?f.assetId:void 0,referenceNumber:typeof f.referenceNumber=="number"?f.referenceNumber:null,referenceLabel:typeof f.referenceLabel=="string"?f.referenceLabel:void 0,taskId:t.ownerType==="task"&&typeof f.taskId=="string"?f.taskId:null,timestamp:typeof f.timestamp=="string"&&f.timestamp.trim().length>0?f.timestamp:new Date().toISOString()}}class Qc extends Error{constructor(t,r){super(t),this.code=r,this.name="WorkflowManagerApiError"}}async function ui(e,t,r){const n=new Headers(t?.headers||void 0);t?.body&&n.set("Content-Type","application/json");const s=String(r?.workspaceId||"").trim();s&&s!=="default"&&n.set("x-taskforce-workspace-id",s);const i=await YR(e,{credentials:"include",...t,headers:n},r?.apiBaseUrl),l=await i.json().catch(()=>({}));if(!i.ok||l.success===!1)throw new Qc(String(l.error||`Workflow request failed (${i.status}).`),l.code);return l}async function gV(e){const t=await ui("/api/taskforce/workflows",void 0,e);return Array.isArray(t.workflows)?t.workflows:[]}async function Zg(e,t){return(await ui(`/api/taskforce/tasks/${encodeURIComponent(e)}/workflow`,void 0,t)).assignment||null}async function hV(e,t){if(t?.runtimeMode!=="local"||!e.assignmentSnapshot)return e.taskSnapshot||null;try{return(await ui(`/api/taskforce/workflow-executions/${encodeURIComponent(e.executionId)}/apply-cloud-state`,{method:"POST",body:JSON.stringify({assignment:e.assignmentSnapshot,taskAuthoritative:e.taskAuthoritative})},{workspaceId:t?.workspaceId})).task||null}catch{return null}}async function yV(e,t,r,n,s){const i=await ui(`/api/taskforce/workflow-executions/${encodeURIComponent(e)}/complete-step?taskforceCloud=1`,{method:"POST",body:JSON.stringify({idempotencyKey:t,...n?{evidenceCommentId:n}:{},...s?{expectedStepId:s}:{}})},r);if(!i.result)throw new Qc("The workflow step result was not returned.");let l=i.result.taskSnapshot||null;return i.result.assignmentSnapshot&&i.result.route!=="local-outbox"&&(l=await hV({executionId:e,taskId:i.result.execution.taskId,assignmentSnapshot:i.result.assignmentSnapshot,taskSnapshot:i.result.taskSnapshot,taskAuthoritative:i.result.taskAuthoritative},r)),i.result.taskSnapshot&&xj({workspaceId:r?.workspaceId,taskId:i.result.taskSnapshot.id,reason:"workflow-step",...l?{authoritativeTask:l}:{}}),i.result}async function sA(e,t,r){const n=await ui(`/api/taskforce/tasks/${encodeURIComponent(e)}/workflow`,{method:"POST",body:JSON.stringify(t)},r);if(!n.assignment)throw new Qc("The workflow assignment was not returned.");return n.assignment}async function kV(e,t,r){const n=await ui(`/api/taskforce/tasks/${encodeURIComponent(e)}/workflow`,{method:"PUT",body:JSON.stringify(t)},r);if(!n.assignment)throw new Qc("The workflow assignment was not returned.");return n.assignment}async function vV(e,t){await ui(`/api/taskforce/tasks/${encodeURIComponent(e)}/workflow`,{method:"DELETE"},t)}async function kre(e){const t=await ui(`/api/taskforce/workflows/${encodeURIComponent(e)}`);if(!t.workflow)throw new Qc("Workflow details were not returned.");return t.workflow}async function vre(e){const t=await ui("/api/taskforce/workflows",{method:"POST",body:JSON.stringify(e)});if(!t.workflow)throw new Qc("The new workflow was not returned.");return t.workflow}async function wre(e,t){const r=await ui(`/api/taskforce/workflows/${encodeURIComponent(e)}/draft`,{method:"PUT",body:JSON.stringify(t)});if(!r.workflow)throw new Qc("The saved workflow draft was not returned.");return r.workflow}async function bre(e){const t=await ui(`/api/taskforce/workflows/${encodeURIComponent(e)}/publish`,{method:"POST"});if(!t.workflow)throw new Qc("The published workflow was not returned.");return t.workflow}async function Sre(e){const t=await ui(`/api/taskforce/workflows/${encodeURIComponent(e)}/draft`,{method:"POST"});if(!t.workflow)throw new Qc("The new workflow draft was not returned.");return t.workflow}const Jk="__none__";function wV(e){return e.charAt(0).toUpperCase()+e.slice(1)}function bV({taskId:e,workspaceId:t,taskStatus:r,taskUpdatedAt:n,comments:s=[],assigneeOptions:i=[],currentActorId:l,apiBaseUrl:c,runtimeMode:d="local",disabled:f=!1,onActivatePendingWorkflow:p,onActiveOwnerChange:g}){const[h,y]=te.useState([]),[k,w]=te.useState(null),[S,b]=te.useState(!0),[v,T]=te.useState(!1),[R,P]=te.useState(!1),[N,I]=te.useState(!1),[$,j]=te.useState(0),[x,V]=te.useState(""),U=te.useRef(0),ne=te.useRef(null),L=te.useRef({taskId:e,revision:`${e}:${n||""}`}),ie=te.useMemo(()=>({workspaceId:t,apiBaseUrl:c,runtimeMode:d}),[c,d,t]);te.useEffect(()=>{const He=++U.current;return b(!0),T(!1),P(!1),V(""),y([]),w(null),I(!1),j(0),ne.current=null,Promise.allSettled([gV(ie),Zg(e,ie)]).then(([Fe,me])=>{He===U.current&&(Fe.status==="fulfilled"&&y(Fe.value.filter(ve=>ve.template.status==="active"&&!!ve.latestPublishedVersion)),me.status==="fulfilled"&&w(me.value),me.status==="rejected"?V(String(me.reason?.message||"Unable to load workflow assignment.")):!me.value&&Fe.status==="rejected"&&V(String(Fe.reason?.message||"Unable to load workflows.")),b(!1))}),()=>{U.current+=1}},[ie,e]);const J=k?.execution.taskId===e?k:null,ue=J?["pending","running","paused"].includes(J.execution.status):!1,oe=ue?J:null,ge=J&&!h.some(({template:He})=>He.id===J.template.id)?[{template:J.template,draftVersionId:null,latestPublishedVersion:{id:J.version.id,versionNumber:J.version.versionNumber,publishedAt:J.version.publishedAt}},...h]:h,je=[...!J||ue?[{value:Jk,label:"None"}]:[],...ge.map(({template:He})=>({value:He.id,label:He.name}))],qe=oe?.execution.status==="pending",Ye=!f&&!S&&!v&&(!oe||qe),he=J?.template.id||Jk,ce=te.useMemo(()=>[...J?.steps||[]].sort((He,Fe)=>He.position-Fe.position),[J?.steps]),B=J?.execution.currentStepId&&ce.find(He=>He.id===J.execution.currentStepId)||null,K=J?.execution.currentStepId?ce.findIndex(He=>He.id===J.execution.currentStepId):-1,Ae=J?.execution.status==="completed",re=te.useMemo(()=>new Set((J?.events||[]).filter(He=>He.eventType==="step-completed"&&He.stepId).map(He=>He.stepId)),[J?.events]),F=oe?.execution.status==="pending"?(ce.find(He=>He.isRequired)||ce[0])?.id:null,D=`task-workflow-execution-${e}`,z=S?"Loading...":x&&!J?"Unavailable":J?wV(J.execution.status):"Not assigned",we=J?.version.versionNumber?`V${J.version.versionNumber}`:null,ke=z.replace(/\.+$/,""),ee=J?`Status: ${ke}${we?`, ${we}`:""}. ${N?"Hide":"View"} workflow execution.`:`Status: ${ke}.`,Z=!f&&!R&&oe?.execution.status==="running"&&B?.ownerType==="user"&&!!l&&B.ownerId===l,H=Ae&&h.find(({template:He})=>He.id===J?.template.id)||null,ae=!!(!f&&!v&&H?.latestPublishedVersion);te.useEffect(()=>{const He=oe?.execution.id||null;if(!He||oe?.execution.status!=="pending"||r!=="in-progress"||!p||ne.current===He)return;ne.current=He;const Fe=U.current;T(!0),V(""),Promise.resolve(p()).then(async()=>{const me=await Zg(e,ie);if(Fe!==U.current)return;if(me?.execution.status==="pending")throw new Error("Workflow is still pending. Retry to start it.");const ve=me?.steps.find(ot=>ot.id===me.execution.currentStepId);ve?.ownerId&&g?.(ve.ownerId),w(me)}).catch(me=>{Fe===U.current&&(ne.current=null,V(String(me?.message||"Unable to start workflow.")))}).finally(()=>{Fe===U.current&&T(!1)})},[$,oe,p,g,ie,e,r]);const Te=te.useCallback(He=>He?rm(He,i):"Unassigned",[i]);te.useEffect(()=>{L.current.taskId!==e&&(L.current={taskId:e,revision:`${e}:${n||""}`})},[e,n]),te.useEffect(()=>{const He=`${e}:${n||""}`;if(He===L.current.revision||r!=="in-progress"||!qe)return;L.current={taskId:e,revision:He};const Fe=U.current;Zg(e,ie).then(me=>{Fe===U.current&&w(me)}).catch(me=>{Fe===U.current&&V(String(me?.message||"Unable to refresh workflow assignment."))})},[qe,ie,e,r,n]),te.useEffect(()=>{if(typeof window>"u")return;const He=Fe=>{const me=Fe.detail;if(me?.reason!=="workflow-step")return;const ve=String(me.workspaceId||"").trim(),ot=String(t||"").trim();if(ot&&ve!==ot||String(me.taskId||"").trim()!==e)return;const A=++U.current;Zg(e,ie).then(G=>{A===U.current&&(w(G),V(""))}).catch(G=>{A===U.current&&V(String(G?.message||"Unable to refresh workflow assignment."))})};return window.addEventListener($d,He),()=>window.removeEventListener($d,He)},[ie,e,t]);const Le=async He=>{const Fe=String(He);if(!Ye||Fe===he)return;const me=U.current;T(!0),V("");try{if(Fe===Jk){if(await vV(e,ie),me!==U.current)return;w(null);return}const ve=h.find(({template:G})=>G.id===Fe),ot=ve?.latestPublishedVersion;if(!ve||!ot)return;const Oe={workflowTemplateId:ve.template.id,workflowVersionId:ot.id},A=oe?await kV(e,Oe,ie):await sA(e,Oe,ie);if(me!==U.current)return;w(A)}catch(ve){if(me!==U.current)return;V(String(ve?.message||"Unable to assign workflow."))}finally{me===U.current&&T(!1)}},Ue=async()=>{if(!oe||!Z)return;const He=[...oe.events||[]].reverse().find(ve=>ve.eventType==="step-started"&&ve.stepId===B?.id)?.createdAt||oe.execution.startedAt||oe.execution.createdAt,Fe=B?.requiresCommentEvidence&&[...s].reverse().find(ve=>ve.author===l&&ve.text.trim().length>0&&Date.parse(ve.timestamp)>=Date.parse(He))||null;if(B?.requiresCommentEvidence&&!Fe){V("Add a task comment for this workflow step before completing it.");return}const me=U.current;P(!0),V("");try{const ve=typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`,ot=await yV(oe.execution.id,ve,ie,Fe?.id,B?.id);if(me!==U.current)return;w(Oe=>Oe&&{...Oe,execution:ot.execution,events:ot.events})}catch(ve){if(me!==U.current)return;V(String(ve?.message||"Unable to complete workflow step."))}finally{me===U.current&&P(!1)}},ft=async()=>{const He=H?.latestPublishedVersion;if(!ae||!H||!He)return;const Fe=U.current;T(!0),V("");try{const me=await sA(e,{workflowTemplateId:H.template.id,workflowVersionId:He.id},ie);if(Fe!==U.current)return;w(me)}catch(me){if(Fe!==U.current)return;V(String(me?.message||"Unable to run workflow again."))}finally{Fe===U.current&&T(!1)}};return a.jsxs("div",{className:`${E.field} ${kt.compactMetaField} ${kt.workflowAssignmentField}`,children:[a.jsxs("div",{className:kt.workflowAssignmentLabels,children:[a.jsx("label",{id:"task-workflow-label",className:E.label,children:"Workflow"}),a.jsx("span",{id:"task-workflow-status-label",className:E.label,children:"Status"})]}),a.jsxs("div",{className:kt.workflowAssignmentControls,children:[a.jsx(li,{value:he,options:je,onChange:He=>{Le(He)},placeholder:S?"Loading workflows...":"None",ariaLabelledBy:"task-workflow-label",disabled:!Ye||je.length===1&&!oe,portalPanel:!0,panelMinWidth:280,panelAlign:"start",className:kt.workflowAssignmentSelector}),a.jsxs("button",{type:"button",className:kt.workflowExecutionToggle,onClick:()=>I(He=>!He),"aria-expanded":J?N:void 0,"aria-controls":J?D:void 0,"aria-label":ee,disabled:!J,children:[a.jsxs("span",{children:[z,we?a.jsxs("span",{className:kt.workflowExecutionVersion,children:[" · ",we]}):null]}),J?N?a.jsx(Ud,{size:13,"aria-hidden":"true"}):a.jsx(Od,{size:13,"aria-hidden":"true"}):null]})]}),J&&N?a.jsxs("section",{id:D,className:kt.workflowExecutionPanel,"aria-label":"Workflow execution",children:[a.jsxs("div",{className:kt.workflowExecutionHeader,children:[a.jsxs("div",{children:[a.jsx("span",{className:kt.workflowExecutionEyebrow,children:"Workflow execution"}),a.jsx("strong",{children:J.version.name||J.template.name})]}),Ae&&H?a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{ft()},disabled:!ae,children:[v?a.jsx(Hn,{size:14,className:kt.workflowExecutionSpinner,"aria-hidden":"true"}):a.jsx(Ni,{size:14,"aria-hidden":"true"}),"Run again"]}):null]}),a.jsxs("dl",{className:kt.workflowExecutionSummary,children:[a.jsxs("div",{children:[a.jsx("dt",{children:"Current step"}),a.jsx("dd",{children:Ae?"Completed":B?.name||(J.execution.status==="pending"?"Not started":"Not available")})]}),a.jsxs("div",{children:[a.jsx("dt",{children:"Owner"}),a.jsx("dd",{children:!Ae&&B?Te(B.ownerId):"Unassigned"})]}),a.jsxs("div",{children:[a.jsx("dt",{children:"Version"}),a.jsx("dd",{children:J.version.versionNumber?`V${J.version.versionNumber}`:"Published"})]})]}),a.jsx("ol",{className:`${kt.workflowExecutionSteps} tf-scrollbar`,children:ce.map((He,Fe)=>{const me=re.has(He.id),ve=!Ae&&He.id===J.execution.currentStepId,ot=!me&&!ve&&K>=0&&Fe<K,Oe=[me?kt.workflowExecutionStepCompleted:"",ve?kt.workflowExecutionStepCurrent:""].filter(Boolean).join(" ")||void 0;return a.jsxs("li",{className:Oe,"aria-current":ve?"step":void 0,children:[a.jsx("span",{className:kt.workflowExecutionStepMarker,"aria-hidden":"true",children:me?a.jsx(P0,{size:16}):ve?a.jsx(E0,{size:17}):a.jsx(N0,{size:15})}),a.jsxs("span",{className:kt.workflowExecutionStepBody,children:[a.jsxs("span",{className:kt.workflowExecutionStepTitle,children:[a.jsx("span",{children:Fe+1}),a.jsx("strong",{children:He.name})]}),a.jsxs("span",{className:kt.workflowExecutionStepMeta,children:[Te(He.ownerId)," · ",He.isRequired?"Required":"Optional"]})]}),a.jsx("span",{className:kt.workflowExecutionStepState,children:me?"Completed":ot?"Skipped":ve&&(Z||R)?a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{Ue()},disabled:R,children:[R?a.jsx(Hn,{size:14,className:kt.workflowExecutionSpinner,"aria-hidden":"true"}):a.jsx(ji,{size:14,"aria-hidden":"true"}),"Complete Step"]}):ve?"Current":He.id===F?"Starts here":"Upcoming"})]},He.id)})}),ce.length===0?a.jsx("p",{className:kt.workflowExecutionEmpty,children:"No steps are available for this workflow version."}):null]}):null,x?a.jsxs("span",{className:kt.workflowAssignmentError,role:"alert",children:[x,qe&&r==="in-progress"&&p?a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>j(He=>He+1),disabled:v,children:"Retry"}):null]}):null]})}const SV="_header_g17dz_1",AV="_title_g17dz_15",CV="_actions_g17dz_24",IV="_toggle_g17dz_30",Jg={header:SV,title:AV,actions:CV,toggle:IV};function Gf({label:e,count:t,showZeroCount:r=!1,actions:n,expanded:s,expandedTitle:i,collapsedTitle:l,onToggle:c,className:d="",controlsId:f}){const p=typeof t=="number"&&(r||t>0),g=s?Ud:Od;return a.jsxs("div",{className:`${Jg.header} ${d}`.trim(),children:[a.jsxs("span",{className:Jg.title,children:[e,p?` (${t})`:""]}),n?a.jsx("span",{className:Jg.actions,children:n}):null,a.jsx("button",{type:"button",className:`tf-control-icon ${Jg.toggle}`.trim(),onClick:c,"aria-expanded":s,"aria-controls":f,"aria-label":s?i:l,title:s?i:l,children:a.jsx(g,{size:14,"aria-hidden":"true"})})]})}const _V="system:unverified-comment-import",x_="Imported comment",R_="This comment was recovered during synchronization, but its author could not be verified.";function P_(e){return String(e||"").trim().toLowerCase()===_V}const Xk=280,TV=48,xV=te.lazy(()=>zo(()=>import("./EntityActivityTimeline-BVFvCB5R.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.EntityActivityTimeline}))),RV=te.lazy(()=>zo(()=>import("./TaskContextUpload-DZxTVesW.js"),__vite__mapDeps([7,1,8,2,3,4,5,9])).then(e=>({default:e.TaskContextUpload})));function PV({count:e}){const t=Math.max(2,Math.min(e||3,4));return a.jsx("div",{className:`${kt.commentThread} ${kt.activityLoadingThread}`.trim(),"aria-busy":"true","aria-live":"polite","aria-label":"Loading activity",children:Array.from({length:t},(r,n)=>a.jsxs("div",{className:kt.activitySkeletonItem,children:[a.jsx("div",{className:kt.activitySkeletonMeta}),a.jsx("div",{className:kt.activitySkeletonBody})]},n))})}function EV({id:e,item:t,onToggle:r,onRemove:n}){const{attributes:s,listeners:i,setNodeRef:l,transform:c,transition:d,isDragging:f}=uw({id:e}),p={transform:Qh.Transform.toString(c),transition:d,opacity:f?.88:1};return a.jsxs("div",{ref:l,style:p,className:`${kt.checklistRow} ${f?kt.checklistRowDragging:""}`.trim(),children:[a.jsx("button",{type:"button",className:kt.checklistHandleBtn,title:"Reorder checklist item","aria-label":"Reorder checklist item",...s,...i,children:a.jsx(nw,{size:14})}),a.jsx("button",{type:"button",className:`${kt.checklistCheckboxBtn} ${t.isCompleted?kt.checklistCheckboxBtnChecked:""}`.trim(),onClick:r,title:t.isCompleted?"Mark incomplete":"Mark complete","aria-label":t.isCompleted?"Mark checklist item incomplete":"Mark checklist item complete",children:t.isCompleted?a.jsx(ji,{size:14,strokeWidth:2.1}):null}),a.jsx("span",{className:`${kt.checklistItemText} ${t.isCompleted?kt.checklistItemTextCompleted:""}`.trim(),children:t.title}),a.jsx("button",{type:"button",className:kt.checklistRemoveBtn,onClick:n,title:"Remove checklist item","aria-label":"Remove checklist item",children:a.jsx(di,{size:15,strokeWidth:1.9})})]})}function E_(e){const{editingTaskId:t,initialActivityEntryId:r,title:n,description:s,category:i,type:l,priority:c,complexity:d,manualComplexityEnabled:f=!1,assignee:p,scheduledDate:g,dueDate:h,checklistItems:y,comments:k,newCommentText:w,contextFiles:S,currentWorkspaceId:b,descriptionImageDraftId:v,currentActorId:T,apiBaseUrl:R,runtimeMode:P="local",showImageReviews:N=!1,descriptionFocused:I,showMarkdownHelp:$,checklistEnabled:j=!0,formTaxonomies:x,onTaxonomyChange:V,onOpenSettings:U,categories:ne,types:L,priorities:ie,taxonomyDisplayLabels:J,assigneeOptions:ue,taxonomies:oe,workstreams:ge=[],initiatives:je=[],copiedId:qe,onTitleChange:Ye,onTitleDraftChange:he,onDescriptionChange:ce,onDescriptionDraftChange:B,onCategoryChange:K,onTypeChange:Ae,onPriorityChange:re,onComplexityChange:F,onAssigneeChange:D,onScheduledDateChange:z,onDueDateChange:we,onChecklistItemsChange:ke,onNewCommentTextChange:ee,onDescriptionFocusedChange:Z,onShowMarkdownHelpChange:H,onSubmit:ae,onAddComment:Te,onDescriptionImageUploadStart:Le,onAddContextFile:Ue,onRemoveContextFile:ft,onUpdateContextCaption:He,onSetCardCover:Fe,cardCoverDisabled:me,onOpenContextImage:ve,onCopyId:ot,onToggleInProgress:Oe,onToggleReview:A,onToggleComplete:G,onToggleCancel:_e,onSetStatus:Ne,onArchiveTask:Ee,onUnarchive:fe,taskReferences:nt,currentTask:q,commentsEndRef:be}=e,Ve=he||Ye,Ce=B||ce,xe=ys(q),Ie=te.useRef(null),de=te.useRef(null),Be=te.useRef(s),at=te.useRef(t),Qe=`${String(b||"").trim()}\0${t||""}`,Ze=te.useRef(Qe),Pe=te.useRef(0);Ze.current!==Qe&&(Ze.current=Qe,Pe.current+=1);const[gt,it]=te.useState(!1),De=te.useRef(null),[bt,Et]=te.useState(null);te.useLayoutEffect(()=>{const pe=at.current!==t;Ie.current&&(pe||document.activeElement!==Ie.current)&&(Ie.current.value=n),de.current&&(pe||document.activeElement!==de.current)&&(de.current.value=s,Be.current=s),at.current=t},[s,t,n]),te.useEffect(()=>(De.current=null,it(!1),Et(null),()=>{Pe.current+=1}),[Qe]);const mt=te.useMemo(()=>{if(!ve)return;const pe=new Map;return S.forEach(st=>{if(typeof st=="string")return;const yt=im(st);yt&&pe.set(yt.toLowerCase(),st)}),{resolve:st=>pe.get(st.toLowerCase())||null,activate:ve}},[S,ve]),qt=te.useMemo(()=>ZN(oe,x),[oe,x]),et=te.useMemo(()=>{const pe=ne.find(yr=>yr.value===op),st={value:op,label:pe?.label||ey,icon:pe?.icon||"HelpCircle",color:pe?.color||"var(--text-secondary)"},yt=ne.find(yr=>yr.value===i),Xt=ne.filter(yr=>!yr.disabled||yr.value===yt?.value).filter(yr=>yr.value!==op).map(yr=>({value:yr.value,label:yr.disabled?`${yr.label} (Legacy)`:yr.label,icon:yr.icon,color:yr.color}));return[st,...Xt]},[ne,i]),Y=te.useMemo(()=>{const pe=L.find(yt=>yt.value===l);return L.filter(yt=>yt.status!=="retired"||yt.value===pe?.value).map(yt=>({value:yt.value,label:yt.status==="retired"?`${yt.label} (Retired)`:yt.label,icon:yt.icon||"Box",color:yt.color||"violet-500"}))},[L,l]),le=pe=>pe&&Vh(pe,{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"})||null,Ke=le(q?.createdAt),It=le(q?.updatedAt||q?.createdAt),vt=le(q?.completedAt),Mt=te.useMemo(()=>{const pe=new Date,st=pe.getFullYear(),yt=String(pe.getMonth()+1).padStart(2,"0"),Jt=String(pe.getDate()).padStart(2,"0");return`${st}-${yt}-${Jt}`},[]),gr=!!(h&&g&&h<g),Zt=!!(h&&h<Mt&&(!q||q.status!=="done"&&q.status!=="cancelled")),or=y.filter(pe=>pe.isCompleted).length,[Dt,lr]=te.useState(""),[Rr,Lr]=te.useState(!0),[Dr,Me]=te.useState(!1),rt=te.useRef(null),pt=te.useRef(null),ht=!!q?.isArchived,At=!!q?.isDeleted,Ft=ht||At,Tt=te.useRef(null),$t=te.useRef(null),Ct=te.useRef(null),Wt=te.useRef(null),Ot=te.useRef(null),vr=te.useRef(null),xt=te.useRef(null),ct=te.useRef(!0),[tr,$r]=te.useState(!1),u=te.useRef(new Map),Rt=te.useRef(void 0),pr=te.useRef(0),nr=ow(Qf(iw,{activationConstraint:{distance:6}}));te.useLayoutEffect(()=>{const pe=Tt.current;if(!pe)return;const st=Rt.current;if(st===t)return;st!==void 0&&u.current.set(st,pr.current);const yt=u.current.get(t)??0;pe.scrollTop=yt,pr.current=yt,Rt.current=t},[t]),te.useLayoutEffect(()=>{Lr(!0)},[t]),te.useEffect(()=>{Dr&&rt.current?.focus()},[Dr]),te.useEffect(()=>{Me(!1),lr("")},[t]),te.useEffect(()=>{Rr||(Me(!1),lr(""))},[Rr]);const ar=te.useCallback(pe=>{const st=pe.currentTarget.scrollTop;pr.current=st,u.current.set(t,st)},[t]),an=()=>{const pe=Dt.trim();if(!pe)return;const st=new Date().toISOString();ke([...y,{id:`checklist-draft-${st}-${y.length}`,taskId:t||"",title:pe,isCompleted:!1,order:y.length,createdAt:st,updatedAt:st}]),lr(""),Me(!1),window.requestAnimationFrame(()=>pt.current?.focus())},Bt=()=>{if(Dr){rt.current?.focus();return}Rr||Lr(!0),Me(!0)},Qr=(pe=!0)=>{Me(!1),lr(""),pe&&window.requestAnimationFrame(()=>pt.current?.focus())},xr=async(pe,st,yt)=>{const Jt=Pe.current,Xt=t,yr=()=>Pe.current===Jt&&Ze.current===Qe;Et(null);const Sn=[];let br=0,Lt=null;for(const Pr of pe){if(Pr.size>10*1024*1024){br+=1,Lt="Images must be 10 MB or smaller.";continue}try{const fn=await mV(Pr,{ownerType:"task",ownerId:Xt,workspaceId:b,...!Xt&&v?{draftUploadId:v,uploadPurpose:"task-description-draft"}:{}});if(!yr())return;const Kn=im(fn);if(!Kn)throw new Error("The uploaded image did not receive an image reference.");Ue(fn),UP({workspaceId:String(b||"").trim()||"default",ownerType:"task",ownerId:Xt,taskId:Xt,reason:"upload"}),Sn.push(Kn)}catch(fn){br+=1,Lt=fn instanceof Error?fn.message:"The image could not be added."}}if(yr()){if(Sn.length>0){const Pr=Be.current,fn=Math.min(st,Pr.length),Kn=Math.min(Math.max(yt,fn),Pr.length),na=Pr.slice(0,fn),er=Pr.slice(Kn),Ho=na&&!/\s$/.test(na)?`
3
+ `:"",Ca=er&&!/^\s/.test(er)?`
4
+ `:"",aa=`${Ho}${Sn.join(`
5
+ `)}${Ca}`,Ha=`${na}${aa}${er}`,ma=na.length+aa.length;Be.current=Ha,de.current&&(de.current.value=Ha),Ce(Ha),ce(Ha),window.requestAnimationFrame(()=>{de.current?.focus(),de.current?.setSelectionRange(ma,ma)})}if(br>0){const Pr=Sn.length>0?`${br} image${br===1?"":"s"} could not be added.`:Lt||(pe.length===1?"The image could not be added.":"The images could not be added.");Et(Pr)}}},Gt=(pe,st,yt)=>{if(pe.length===0||De.current)return De.current||Promise.resolve();it(!0);const Jt=xr(pe,st,yt);return De.current=Jt,Le?.(Jt),Jt.then(()=>{De.current===Jt&&(De.current=null,it(!1))},()=>{De.current===Jt&&(De.current=null,it(!1))}),Jt},Fr=pe=>Array.from(pe.items).filter(st=>st.kind==="file"&&/^(?:image\/(?:png|jpeg|webp))$/i.test(st.type)).map(st=>st.getAsFile()).filter(st=>!!st),en=pe=>Array.from(pe.files).filter(st=>/^(?:image\/(?:png|jpeg|webp))$/i.test(st.type)),ln=pe=>Array.from(pe.items||[]).some(st=>st.kind==="file"&&/^(?:image\/(?:png|jpeg|webp))$/i.test(st.type))||en(pe).length>0,tn=pe=>{ln(pe.dataTransfer)&&(pe.preventDefault(),pe.dataTransfer.dropEffect="copy")},Ge=te.useCallback(pe=>{const{active:st,over:yt}=pe;if(!yt||st.id===yt.id)return;const Jt=y.findIndex(br=>br.id===st.id),Xt=y.findIndex(br=>br.id===yt.id);if(Jt<0||Xt<0)return;const yr=new Date().toISOString(),Sn=tC(y,Jt,Xt).map((br,Lt)=>({...br,order:Lt,updatedAt:yr}));ke(Sn)},[y,ke]),yn=pe=>{const st=String(pe||"").trim(),yt=pe.trim().replace(/^ai-profile-/i,"").replace(/[-_]+/g," ").replace(/\s+/g," ");return!yt||yt==="ai"||st.toLowerCase().startsWith("ai-profile-")?"AI Agent":`AI Agent - ${yt.split(" ").map(Xt=>Xt.charAt(0).toUpperCase()+Xt.slice(1)).join(" ")}`},Kr=xC(ue,p),ir=te.useMemo(()=>new Map(Kr.map(pe=>[String(pe.value),pe])),[Kr]),wt=te.useMemo(()=>{const pe=[q?.assigneeActor,q?.createdByActor].filter(Boolean);return new Map(pe.map(st=>[String(st.id),st]))},[q?.assigneeActor,q?.createdByActor]),Gr=te.useMemo(()=>new Map(ge.map(pe=>[pe.id,pp(pe)||pe.id])),[ge]),Ut=te.useMemo(()=>new Map(je.map(pe=>[pe.id,LI(pe)||pe.id])),[je]),dr=te.useMemo(()=>yw({activity:q?.activity,comments:k}),[k,q?.activity]),wr=(pe,st)=>{const yt=String(st||"").trim();if(yt){if(pe==="assignee")return rm(yt,Kr);if(pe==="workstreamId")return Gr.get(yt);if(pe==="initiativeId")return Ut.get(yt)}},Ur=te.useCallback((pe,st,yt)=>{if(yt&&yt.trim())return yt.trim();const Jt=String(pe||"").trim();if(!Jt)return st==="ai"?"AI Agent":_t("taskForm.you");const Xt=wt.get(Jt);if(Xt?.label)return Xt.label;const yr=ir.get(Jt)||ir.get(Jt.toLowerCase());return yr?.label?yr.label:st==="ai"?yn(Jt):rm(Jt,Kr)||Jt},[wt,ir,yn,Kr]),vs=te.useCallback(({actorId:pe,actorType:st,actorProfile:yt,fallbackKind:Jt})=>{const Xt=String(pe||"").trim();if(P_(Xt))return{kind:"system",label:x_,ActorIcon:VA,description:R_};const yr=Xt.toLowerCase(),Sn=wt.get(Xt),br=ir.get(Xt)||ir.get(yr),Lt=yt||Sn||br||null,Pr=st==="system"?"system":st==="ai"||Lt?.kind==="ai"?"agent":st==="human"||Lt?.kind==="human"?"member":br?.kind==="agent"?"agent":br?.kind==="member"?"member":Jt||(yr===""||yr==="user"||yr==="human"?"member":"agent"),fn=Pr==="system"?"System":Ur(Xt,Pr==="agent"?"ai":"human",Lt?.label||null),Kn=Lt?.color,na=String(Lt?.icon||(Pr==="agent"?"Bot":Pr==="member"?"User":"ClipboardList")),er=fp[na]||(Pr==="agent"?Id:Pr==="member"?sp:GA);return{kind:Pr,label:fn,color:Kn,ActorIcon:er,isCurrentActorHint:Pr==="member"&&(yr===""||yr==="user"||yr==="human")}},[wt,ir,Ur]),ea=te.useMemo(()=>{const pe=dr[dr.length-1];if(!pe)return null;if(pe.type==="comment"){const yt=pe.comment;return Ur(yt.author,yt.actor?.kind==="ai"?"ai":yt.actor?.kind==="human"?"human":null,yt.actor?.label||null)}const st=pe.event;return Ur(st.actor,st.actorType,st.actorProfile?.label||null)},[Ur,dr]),ta=te.useMemo(()=>{if(!q?.completedAt)return null;for(const st of dr){if(st.type!=="event")continue;const yt=st.event,Jt=yt.details?.changes?.status?.to;if(Jt==="done"||Jt==="cancelled")return Ur(yt.actor,yt.actorType,yt.actorProfile?.label||null)}return ea},[q?.completedAt,ea,Ur,dr]),rn=q?.createdByActor?.label||Ur(q?.createdBy||null,q?.createdByActor?.kind==="ai"?"ai":q?.createdByActor?.kind==="human"?"human":null,q?.createdByActor?.label||null),sn=ea,on=dr.length,Tn=dr.filter(pe=>pe.type==="comment").length,cn=dr[0]?.id||null,Ar=dr[on-1]?.id||null,Or=String(r||"").trim(),qr=t&&Or?`${t}\0${Or}`:null,Yr=te.useCallback(pe=>({taskId:t,count:on,firstItemId:cn,lastItemId:Ar,scrollHeight:pe.scrollHeight,scrollTop:pe.scrollTop}),[on,t,cn,Ar]),ra=te.useCallback(()=>{const pe=$t.current;pe&&(pe.scrollTop=pe.scrollHeight,ct.current=!0,$r(!1),xt.current=Yr(pe))},[Yr]),Gn=te.useCallback(()=>{const pe=$t.current,st=Ct.current;return!pe||!st||!qr||Wt.current===qr?!1:(st.scrollIntoView?.({block:"center",inline:"nearest"}),st.focus({preventScroll:!0}),ct.current=!1,$r(!1),Wt.current=qr,xt.current=Yr(pe),!0)},[qr,Yr]),Yt=te.useCallback(pe=>{Ct.current=pe,pe&&Gn()},[Gn]),Zr=te.useCallback(pe=>{vr.current?.(pe.currentTarget)},[]),wn=te.useCallback(pe=>{const yt=pe.scrollHeight-pe.scrollTop-pe.clientHeight<=TV;ct.current=yt,yt&&$r(!1),xt.current=Yr(pe)},[Yr]);te.useLayoutEffect(()=>{vr.current=wn},[wn]);const dt=te.useCallback(pe=>{if(Ot.current?.disconnect(),Ot.current=null,$t.current=pe,!!pe&&(qr&&Wt.current!==qr?ct.current=!1:(pe.scrollTop=pe.scrollHeight,ct.current=!0),$r(!1),typeof ResizeObserver<"u")){const st=new ResizeObserver(()=>{const yt=$t.current;yt&&vr.current?.(yt)});st.observe(pe),Ot.current=st}},[qr,t]);te.useLayoutEffect(()=>{Wt.current=null},[qr]),te.useLayoutEffect(()=>{if(!t)return;const pe=$t.current;if(!pe)return;const st=xt.current,yt=st?.taskId!==t,Jt=!!(st&&on>st.count),Xt=!!(st&&Jt&&st.lastItemId===Ar&&st.firstItemId!==cn);if(qr&&Gn()){xt.current=Yr(pe);return}yt||ct.current?ra():Xt&&st?pe.scrollTop=st.scrollTop+(pe.scrollHeight-st.scrollHeight):Jt&&$r(!0),xt.current=Yr(pe);const yr=window.requestAnimationFrame(()=>{yt||ct.current?ra():xt.current=Yr(pe)});return()=>window.cancelAnimationFrame(yr)},[on,qr,Yr,t,cn,Ar,ra,Gn]);const Cr=te.useCallback(()=>{ra(),Te()},[Te,ra]),pn=a.jsxs("aside",{className:kt.activitySidebar,"aria-label":_t("taskForm.commentsSectionTitle"),children:[a.jsx("div",{className:kt.activitySidebarHeader,children:a.jsxs("h2",{className:kt.activitySidebarTitle,children:[_t("taskForm.commentsSectionTitle")," (",Tn,")"]})}),a.jsxs("div",{className:`${kt.commentPanel} ${kt.activitySidebarPanel} tf-surface-panel`.trim(),children:[a.jsxs("div",{className:kt.activityTimelineRegion,children:[a.jsx(te.Suspense,{fallback:a.jsx(PV,{count:on}),children:a.jsx(xV,{activity:q?.activity,comments:k,formatFieldValue:wr,resolveActorPresentation:vs,currentActorId:T,taskReferences:nt,emptyMessage:_t(t?"taskForm.noComments":"taskForm.noActivity"),listClassName:kt.commentThread,emptyClassName:kt.emptyComments,listRef:dt,endRef:be,onScroll:Zr,targetEntryId:Or,targetEntryRef:Yt})}),tr?a.jsx("div",{className:kt.newActivityNotice,role:"status","aria-live":"polite",children:a.jsxs("button",{type:"button",className:kt.newActivityButton,onClick:ra,"aria-label":_t("taskForm.newActivityAriaLabel"),children:[a.jsx(rw,{size:14,"aria-hidden":"true"}),a.jsx("span",{children:_t("taskForm.newActivity")})]})}):null]}),a.jsxs("div",{className:kt.commentInputArea,children:[a.jsx("textarea",{className:`${kt.commentInput} tf-field-shell`,placeholder:t?_t("taskForm.commentPlaceholder"):"Comments become available after saving",value:w,onChange:pe=>ee(pe.target.value),disabled:!t||Ft,onKeyDown:pe=>{pe.key==="Enter"&&!pe.shiftKey&&(pe.preventDefault(),Cr())},rows:3}),a.jsx("button",{type:"button",className:`${kt.sendCommentBtn} tf-control-icon`,onClick:Cr,disabled:!t||Ft||!w.trim(),"aria-label":"Send comment",title:"Send comment",children:a.jsx(j0,{size:16,"aria-hidden":"true"})})]})]})]});return a.jsxs("form",{ref:Tt,onSubmit:ae,onScroll:ar,className:`${E.form} ${E.appScrollbar} tf-scrollbar`,children:[Ft&&a.jsx("div",{className:`${kt.formNotice} tf-text-helper`,children:At?"Deleted tasks are read-only. Restore the task to make changes.":"Archived tasks are read-only. Unarchive the task to make changes."}),a.jsxs("div",{className:kt.formLayoutWithSidebar,children:[a.jsx("fieldset",{disabled:Ft,className:kt.formFieldsetReset,children:a.jsxs("div",{className:kt.formMainColumn,children:[a.jsxs("div",{className:E.field,children:[a.jsx("label",{className:E.label,children:"Title"}),a.jsx("input",{ref:Ie,type:"text",defaultValue:n,onChange:pe=>{const st=pe.target.value;Ve(st)},onBlur:pe=>{pe.currentTarget.value!==n&&Ye(pe.currentTarget.value)},placeholder:"What needs to be done?",className:E.input,required:!0,maxLength:255,autoFocus:!0})]}),a.jsxs("div",{className:`${E.field} ${kt.descriptionField}`,children:[a.jsxs("div",{className:E.labelRow,children:[a.jsx("label",{className:E.label,children:"Description"}),a.jsx("button",{type:"button",className:E.helpLink,onClick:()=>H(!$),title:"Markdown Help",tabIndex:-1,children:a.jsx(Ld,{size:14})})]}),$&&a.jsxs("div",{className:kt.markdownHelp,children:[a.jsxs("div",{className:kt.helpHeader,children:[a.jsx("span",{children:"Markdown Guide"}),a.jsx("button",{onClick:()=>H(!1),className:kt.helpClose,children:a.jsx(di,{size:12})})]}),a.jsxs("div",{className:kt.helpGrid,children:[a.jsx("div",{children:a.jsx("code",{children:"**bold**"})}),a.jsx("div",{children:a.jsx("code",{children:"_italic_"})}),a.jsx("div",{children:a.jsx("code",{children:"- list"})}),a.jsx("div",{children:a.jsx("code",{children:"1. list"})}),a.jsx("div",{className:kt.helpGridItem,children:a.jsx("code",{children:"`inline code`"})}),a.jsxs("div",{className:kt.helpGridItem,children:[a.jsx("code",{children:"```"}),a.jsx("br",{}),a.jsx("code",{children:"code block"}),a.jsx("br",{}),a.jsx("code",{children:"```"})]}),a.jsx("div",{children:a.jsx("code",{children:"[link](url)"})})]})]}),I||!s?a.jsx("textarea",{ref:de,className:`${E.textarea} ${kt.descriptionSurface}`,placeholder:"What needs to be done? (Markdown supported)",defaultValue:s,onChange:pe=>{const st=pe.target.value;Be.current=st,Ce(st)},onFocus:()=>Z(!0),onBlur:pe=>{pe.currentTarget.value!==s&&ce(pe.currentTarget.value),Z(!1)},onPaste:pe=>{const st=Fr(pe.clipboardData);if(st.length===0)return;pe.preventDefault();const yt=pe.currentTarget;Gt(st,yt.selectionStart,yt.selectionEnd)},onDragOver:tn,onDrop:pe=>{const st=en(pe.dataTransfer);if(st.length===0)return;pe.preventDefault(),pe.stopPropagation();const yt=pe.currentTarget;Gt(st,yt.selectionStart,yt.selectionEnd)},rows:9,autoFocus:I}):a.jsx("div",{className:`${E.textarea} ${kt.descriptionSurface} ${kt.markdownPreview} ${kt.markdownPreviewContainer}`,onClick:()=>Z(!0),onDragOver:tn,onDrop:pe=>{const st=en(pe.dataTransfer);st.length!==0&&(pe.preventDefault(),pe.stopPropagation(),Z(!0),Gt(st,s.length,s.length))},children:a.jsx(uy,{variant:"detail",taskReferences:nt,imageReferences:mt,children:s})}),gt&&a.jsx("div",{className:kt.descriptionImageStatus,role:"status",children:"Adding image to Context…"}),bt&&a.jsx("div",{className:kt.descriptionImageError,role:"alert",children:bt})]}),a.jsxs("div",{className:kt.compactMetaSection,children:[a.jsxs("div",{className:kt.compactMetaGrid,children:[a.jsxs("div",{className:`${E.field} ${kt.compactMetaField}`,children:[a.jsx("label",{id:"category-label",className:E.label,children:J?.category||"Category"}),a.jsx(li,{value:i,options:et,onChange:pe=>K(String(pe)),required:!0,ariaLabelledBy:"category-label",portalPanel:!0,panelMinWidth:Xk,panelAlign:"start"})]}),a.jsxs("div",{className:`${E.field} ${kt.compactMetaField}`,children:[a.jsx("label",{id:"type-label",className:E.label,children:J?.type||"Type"}),a.jsx(li,{value:l,options:Y,onChange:pe=>Ae(String(pe)),ariaLabelledBy:"type-label",portalPanel:!0,panelMinWidth:Xk,panelAlign:"start"})]}),a.jsxs("div",{className:`${E.field} ${kt.compactMetaField}`,children:[a.jsx("label",{htmlFor:"task-form-scheduled-date",className:E.label,children:_t("taskForm.scheduledLabel")}),a.jsx("input",{id:"task-form-scheduled-date",type:"date",value:g,onChange:pe=>z(pe.target.value),className:`${E.input} ${E.taskFormDateInput}`})]}),a.jsxs("div",{className:`${E.field} ${kt.compactMetaField}`,children:[a.jsx("label",{id:"assignee-label",className:E.label,children:"Assigned To"}),a.jsx(li,{value:p||"unassigned",options:Kr,onChange:pe=>D(String(pe)),ariaLabelledBy:"assignee-label",portalPanel:!0,panelMinWidth:Xk,panelAlign:"start",searchable:!0,searchPlaceholder:"Search assignees...",noResultsText:"No assignees found.",renderOptionContent:pe=>{const st=ir.get(String(pe.value));return st?a.jsx(yp,{option:st}):pe.label}})]}),a.jsx("div",{className:kt.compactMetaField,children:a.jsx(Zk,{label:J?.priority||"Priority",options:ie,value:c,onChange:re,type:"priority",showSelectedLabel:!1})}),a.jsxs("div",{className:`${E.field} ${kt.compactMetaField}`,children:[a.jsx("label",{htmlFor:"task-form-due-date",className:E.label,children:_t("taskForm.dueLabel")}),a.jsx("input",{id:"task-form-due-date",type:"date",value:h,onChange:pe=>we(pe.target.value),className:`${E.input} ${E.taskFormDateInput}`}),gr&&a.jsx("span",{className:`${kt.taskFormDateWarning} ${kt.compactMetaFieldHint}`,children:_t("taskForm.dueBeforeScheduled")}),Zt&&a.jsx("span",{className:`${kt.taskFormDateError} ${kt.compactMetaFieldHint}`,children:_t("taskForm.overdue")})]}),f&&a.jsx("div",{className:kt.compactMetaField,children:a.jsx(Zk,{label:"Complexity",options:[{value:1,label:"Tiny",color:"#10b981",icon:"Gauge"},{value:2,label:"Low",color:"#14b8a6",icon:"Gauge"},{value:3,label:"Medium",color:"#3b82f6",icon:"Gauge"},{value:4,label:"High",color:"#8b5cf6",icon:"Gauge"},{value:5,label:"Epic",color:"#d946ef",icon:"Gauge"}],value:d,onChange:F,type:"general"})})]}),t&&a.jsx(bV,{taskId:t,workspaceId:b,taskStatus:q?.status,taskUpdatedAt:q?.updatedAt,comments:k,assigneeOptions:Kr,currentActorId:T,apiBaseUrl:R,runtimeMode:P,disabled:!!(q?.isArchived||q?.isDeleted),onActivatePendingWorkflow:q&&Ne?()=>Ne(q,"in-progress",{allowSameStatus:!0}):void 0,onActiveOwnerChange:D})]}),a.jsxs("div",{className:kt.sectionBlock,children:[qt.length>0&&a.jsx("div",{className:kt.taxonomyFieldsGrid,children:qt.map(pe=>{const st=x[pe.id],yt=Array.isArray(st)?st.map(Xt=>String(Xt)):st!=null&&st!==""?[String(st)]:[],Jt=pe.options.filter(Xt=>Xt.status!=="retired"||yt.includes(String(Xt.value)));return a.jsxs("div",{className:E.field,children:[a.jsx("label",{className:E.label,children:pe.label}),pe.description&&a.jsx("div",{className:`${kt.settingsHint} tf-text-helper`,children:pe.description}),pe.widgetType==="level"?a.jsx(Zk,{label:pe.label,options:Jt.map(Xt=>({...Xt,label:Xt.status==="retired"?`${Xt.label} (Retired)`:Xt.label})),value:x[pe.id]||"",onChange:Xt=>V(pe.id,Xt),type:"general",hideLabel:!0}):pe.multiSelect?a.jsx("div",{className:`${E.dropdownList} ${kt.softSectionSurface}`,children:Jt.map(Xt=>{const yr=String(Xt.value),Sn=yt.includes(yr);return a.jsxs("button",{type:"button",className:`${kt.specialistChip} ${Sn?kt.specialistChipActive:""}`,onClick:()=>{const br=Sn?yt.filter(Lt=>Lt!==yr):[...yt,yr];V(pe.id,br)},title:Sn?"Click to remove":"Click to add",children:[Sn&&a.jsx(ji,{size:12}),Xt.status==="retired"?`${Xt.label} (Retired)`:Xt.label]},yr)})}):a.jsxs("div",{className:E.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 Xt=pe.options.find(br=>String(br.value)===String(x[pe.id])),yr=Xt?.icon&&eo[Xt.icon]?eo[Xt.icon]:Ld,Sn=Xt?.color||"var(--text-secondary)";return a.jsx("div",{className:E.fieldIcon,style:{color:Jn(Sn)},children:a.jsx(yr,{size:16})})})(),a.jsxs("select",{value:x[pe.id]||"",onChange:Xt=>V(pe.id,Xt.target.value),className:`${E.select} ${E.field_dynamic}`,required:pe.isRequired,children:[a.jsxs("option",{value:"",children:["Select ",pe.label,"..."]}),Jt.map(Xt=>a.jsx("option",{value:Xt.value,children:Xt.status==="retired"?`${Xt.label} (Retired)`:Xt.label},Xt.value))]})]})]},pe.id)})}),j&&a.jsxs("div",{className:`${E.specialistSection} ${qt.length===0?kt.specialistSectionWithoutTaxonomies:""}`.trim(),children:[a.jsx(Gf,{label:`Checklist${y.length>0?` (${or}/${y.length})`:""}`,expanded:Rr,expandedTitle:"Hide checklist",collapsedTitle:"Show checklist",onToggle:()=>{const pe=!Rr;Lr(pe),pe||Qr(!1)},actions:a.jsx("div",{className:E.contextMenuControl,children:a.jsx("button",{ref:pt,type:"button",className:"tf-control-icon","aria-label":"Add checklist item",title:"Add checklist item","aria-expanded":Dr,onClick:Bt,children:a.jsx(ci,{size:14,"aria-hidden":"true"})})})}),Rr&&(Dr||y.length>0)&&a.jsxs("div",{className:`${E.dropdownList} ${kt.stackedList} ${kt.stackedListSpaced}`,children:[Dr&&a.jsxs("div",{className:`${E.pathInputGroup} ${kt.checklistInputGroup}`,children:[a.jsx("input",{ref:rt,type:"text",className:E.input,placeholder:"Add checklist item",value:Dt,onChange:pe=>lr(pe.target.value),onKeyDown:pe=>{pe.key==="Enter"&&(pe.preventDefault(),pe.stopPropagation(),an()),pe.key==="Escape"&&(pe.preventDefault(),pe.stopPropagation(),Qr())}}),a.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",onClick:an,disabled:!Dt.trim(),"aria-label":"Confirm checklist item",title:"Add checklist item",children:a.jsx(ji,{size:14,"aria-hidden":"true"})}),a.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",onClick:()=>Qr(),"aria-label":"Cancel checklist item",title:"Cancel",children:a.jsx(di,{size:14,"aria-hidden":"true"})})]}),y.length>0&&a.jsx(cw,{sensors:nr,collisionDetection:rC,onDragEnd:Ge,children:a.jsx(lw,{items:y.map(pe=>pe.id),strategy:dw,children:y.map((pe,st)=>a.jsx(EV,{id:pe.id||`checklist-${st}`,item:pe,onToggle:()=>{const yt=new Date().toISOString();ke(y.map((Jt,Xt)=>Xt===st?{...Jt,isCompleted:!Jt.isCompleted,updatedAt:yt}:Jt))},onRemove:()=>ke(y.filter((yt,Jt)=>Jt!==st).map((yt,Jt)=>({...yt,order:Jt})))},pe.id||`checklist-${st}`))})})]})]})]}),a.jsxs("div",{children:[a.jsx(te.Suspense,{fallback:null,children:a.jsx(RV,{taskId:t,taskReferenceLabel:xe,workspaceId:b,apiBaseUrl:R,showImageReviews:N&&!!q,contextFiles:S,onAddContextFile:Ue,onRemoveContextFile:ft,onUpdateContextCaption:He,cardCoverAssetId:q?.cardCoverAssetId,onSetCardCover:Fe,cardCoverDisabled:me})}),a.jsx("div",{className:`${kt.taskFormLifecycle} ${kt.taskFormMetaDivider}`,children:a.jsx("div",{className:kt.taskFormMetaGrid,children:q&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:kt.taskFormDateRow,children:[a.jsx("span",{className:kt.taskFormDateLabel,children:_t("taskForm.createdLabel")}),a.jsxs("span",{className:kt.taskFormMetaStack,children:[a.jsx("span",{className:kt.taskFormDateValue,children:Ke||_t("taskForm.emptyValue")}),a.jsx("span",{className:kt.taskFormMetaActor,children:rn?`by ${rn}`:_t("taskForm.emptyValue")})]})]}),a.jsxs("div",{className:kt.taskFormDateRow,children:[a.jsx("span",{className:kt.taskFormDateLabel,children:_t("taskForm.updatedLabel")}),a.jsxs("span",{className:kt.taskFormMetaStack,children:[a.jsx("span",{className:kt.taskFormDateValue,children:It||_t("taskForm.emptyValue")}),a.jsx("span",{className:kt.taskFormMetaActor,children:sn?`by ${sn}`:_t("taskForm.emptyValue")})]})]}),a.jsxs("div",{className:kt.taskFormDateRow,children:[a.jsx("span",{className:kt.taskFormDateLabel,children:_t("taskForm.completedLabel")}),a.jsxs("span",{className:kt.taskFormMetaStack,children:[a.jsx("span",{className:kt.taskFormDateValue,children:vt||_t("taskForm.emptyValue")}),a.jsx("span",{className:kt.taskFormMetaActor,children:ta?`by ${ta}`:_t("taskForm.emptyValue")})]})]})]})})})]})]})}),pn]})]})}function kh({ariaExpanded:e,ariaLabel:t,children:r,disabled:n=!1,onClick:s,title:i}){return a.jsx("button",{type:"button",className:`${E.referenceBadge} ${E.taskHierarchyActionBtn}`,onClick:s,disabled:n,title:i,"aria-label":t,"aria-expanded":e,children:r})}function N_({editingTaskId:e,loading:t,submitDisabled:r=!1,autoSaveState:n="idle",title:s,status:i="task",onStatusChange:l,showCreateSubmit:c=!0,handleSubmit:d,handleCopyId:f,copiedId:p,tasks:g,currentTask:h,currentTaskWorkstream:y,currentTaskInitiative:k,workstreams:w=[],onWorkstreamInputChange:S,onSetWorkstreamForCurrentTask:b,handleToggleInProgress:v,handleToggleReview:T,handleToggleComplete:R,handleToggleCancel:P,handleSetStatus:N,handleArchiveTask:I,handleUnarchiveTask:$,handleRestoreDeletedTask:j,handlePermanentlyDeleteDeletedTask:x,onAskAgent:V}){const U=h??(e&&g.find(K=>K.id===e)||null),ne=!!U?.isArchived,L=!!U?.isDeleted,ie=te.useMemo(()=>{if(!L||!U?.deletedExpiresAt)return"";const K=new Date(U.deletedExpiresAt);return Number.isNaN(K.getTime())?"":`Trash expires ${K.toLocaleString()}`},[U?.deletedExpiresAt,L]),J=gw(U),ue=J.label||(J.isProvisional?"Pending":""),oe=J.isProvisional,ge=!!J.label,je=y?pp(y)||y.id:"",qe=k?gs(k)||k.id:"",Ye=te.useCallback(K=>{S?.(pp(K)||K.id),e&&b?.(K.id)},[e,b,S]),he=te.useCallback(()=>{S?.(""),e&&b?.(null)},[e,b,S]),ce=y?a.jsx(kh,{onClick:he,disabled:t||ne||L,title:"Unlink task from workstream",ariaLabel:"Unlink task from workstream",children:a.jsx(Ff,{size:13})}):null,B=a.jsx("div",{className:E.taskHierarchyHeader,children:a.jsxs("div",{className:E.taskHierarchyBadgeRow,children:[k?a.jsx("span",{className:E.taskHierarchySegment,children:a.jsx(ip,{copied:p===qe,onClick:K=>f(K,qe),disabled:t,title:k.title,ariaLabel:`Copy initiative reference ${qe}: ${k.title}`,label:qe})}):null,y?a.jsxs("span",{className:E.taskHierarchySegment,children:[k?a.jsx("span",{className:E.taskHierarchyDivider,children:"/"}):null,a.jsx(ip,{copied:p===je,onClick:K=>f(K,je),disabled:t,title:y.title,ariaLabel:`Copy workstream reference ${je}: ${y.title}`,label:je})]}):a.jsx(I_,{workstreams:w,onSelect:Ye,disabled:t||ne||L}),!ue&&ce?a.jsxs("span",{className:E.taskHierarchySegment,children:[a.jsx("span",{className:E.taskHierarchyDivider,children:"/"}),ce]}):null,ue?a.jsxs("span",{className:E.taskHierarchySegment,children:[y?a.jsx("span",{className:E.taskHierarchyDivider,children:"/"}):null,ce,a.jsx(ip,{copied:ge&&p===J.label,onClick:K=>f(K,J.label),disabled:t||!ge,title:oe?"Temporary identifier — replaced after synchronization.":_t("actionHeader.copyTaskIdTitle"),ariaLabel:oe?`Copy temporary task reference ${ue}`:void 0,label:ue,provisional:oe})]}):null,ie?a.jsx("span",{className:E.taskHierarchyMeta,title:"Trash items are permanently deleted 90 days after deletion.",children:ie}):null]})});return a.jsxs("div",{className:E.stickyActionHeader,children:[B,e?a.jsxs(a.Fragment,{children:[a.jsx("div",{className:E.taskSaveStatusCenter,children:a.jsx("div",{className:`${E.taskSaveStatus} ${n==="error"?E.taskSaveStatusError:""}`,"aria-live":"polite",children:n==="saving"?a.jsxs(a.Fragment,{children:[a.jsx(Hn,{size:14,className:E.spinner}),a.jsx("span",{children:"Saving…"})]}):n==="saved"?a.jsx("span",{children:"Saved"}):n==="error"?a.jsx("span",{children:"Save failed"}):null})}),a.jsxs("div",{className:E.editActionsGroup,children:[V&&U?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>V(U),disabled:t,title:"Ask a Taskforce Agent about this task","aria-label":"Ask a Taskforce Agent about this task",children:a.jsx(Id,{size:16})}):null,L&&U?.deletedRecordId?a.jsxs(a.Fragment,{children:[j&&a.jsx("button",{type:"button",className:E.actionBtn,onClick:()=>j(U.deletedRecordId||""),disabled:t,title:"Restore deleted task","aria-label":"Restore deleted task",children:a.jsx(Ni,{size:16})}),x&&a.jsx("button",{type:"button",className:`${E.actionBtn} ${E.deleteBtn}`,onClick:()=>x(U.deletedRecordId||""),disabled:t,title:"Permanently delete deleted task","aria-label":"Permanently delete deleted task",children:a.jsx(um,{size:16})})]}):a.jsx(zh,{task:U,disabled:t,statusDisabled:t||ne,archiveActionMode:ne?"unarchive":"auto",onSetStatus:(K,Ae)=>{if(N){N(K,Ae);return}if(Ae==="in-progress"){v(K);return}if(Ae==="review"){T(K);return}if(Ae==="done"){R(K);return}Ae==="cancelled"&&P(K)},onArchiveTask:I,onUnarchiveTask:K=>$?.(K.id)})]})]}):a.jsxs(a.Fragment,{children:[a.jsx("div",{className:E.taskSaveStatusCenter}),a.jsxs("div",{className:E.editActionsGroup,children:[a.jsx(zh,{status:i,disabled:t,archiveActionMode:"none",onStatusChange:l}),c?a.jsxs("button",{type:"button",onClick:K=>d(K),disabled:t||r||!s.trim(),className:E.primaryUpdateBtn,title:_t("actionHeader.addTaskTitle"),children:[t?a.jsx(Hn,{size:16,className:E.spinner}):a.jsx(ci,{size:16}),_t("actionHeader.addTask")]}):null]})]})]})}function NV(e={x:0,y:0}){const[t,r]=o.useState(e),[n,s]=o.useState(!1),[i,l]=o.useState({x:0,y:0}),[c,d]=o.useState(0),f=o.useRef(null),p=o.useCallback(y=>{const k=y.target;if(!(k.closest("button")||k.closest("input")||k.closest("select")||k.closest("textarea")||k.closest('[role="button"]')||k.closest(".no-drag"))){if(f.current){const w=f.current.getBoundingClientRect();d(w.top-t.y)}s(!0),l({x:y.clientX-t.x,y:y.clientY-t.y})}},[t]),g=o.useCallback(y=>{if(n){let k=y.clientX-i.x,w=y.clientY-i.y;w<-c&&(w=-c),r({x:k,y:w})}},[n,i,c]),h=o.useCallback(()=>{s(!1)},[]);return o.useEffect(()=>(n?(window.addEventListener("mousemove",g),window.addEventListener("mouseup",h)):(window.removeEventListener("mousemove",g),window.removeEventListener("mouseup",h)),()=>{window.removeEventListener("mousemove",g),window.removeEventListener("mouseup",h)}),[n,g,h]),{position:t,isDragging:n,handleMouseDown:p,modalRef:f,setPosition:r}}const Kf=[];let xf=0,Qk="";function jV(e){return Kf.push(e),()=>{const t=Kf.lastIndexOf(e);t>=0&&Kf.splice(t,1)}}function DV(){return xf===0&&(Qk=document.body.style.overflow,document.body.style.overflow="hidden"),xf+=1,()=>{xf=Math.max(0,xf-1),xf===0&&(document.body.style.overflow=Qk,Qk="")}}function Uo({isOpen:e,onClose:t,title:r,children:n,footer:s,size:i="md",theme:l=Ch,className:c,overlayStyle:d,headerActions:f,draggable:p=!1,isSettings:g=!1,closeOnOverlayClick:h=!0,closeDisabled:y=!1}){const k=o.useRef(null),w=o.useRef(null),S=o.useRef(t),b=o.useRef(y),v=o.useRef(Symbol("taskforce-modal")),T=o.useId(),{position:R,isDragging:P,handleMouseDown:N,modalRef:I}=NV();if(S.current=t,b.current=y,o.useEffect(()=>{if(e)return jV(v.current)},[e]),o.useEffect(()=>{const j=x=>{if(Kf[Kf.length-1]!==v.current)return;if(x.key==="Escape"&&e&&!b.current){S.current();return}if(x.key!=="Tab"||!e||!I.current)return;const V=Array.from(I.current.querySelectorAll('button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])'));if(V.length===0){x.preventDefault(),I.current.focus();return}const U=V[0],ne=V[V.length-1];x.shiftKey&&document.activeElement===U?(x.preventDefault(),ne.focus()):!x.shiftKey&&document.activeElement===ne&&(x.preventDefault(),U.focus())};return e&&(w.current=document.activeElement instanceof HTMLElement?document.activeElement:null,window.requestAnimationFrame(()=>{(I.current?.querySelector("[data-modal-initial-focus]")??I.current?.querySelector("button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled])")??I.current)?.focus()})),window.addEventListener("keydown",j),()=>{window.removeEventListener("keydown",j),w.current?.focus()}},[e,I]),o.useEffect(()=>{if(e)return DV()},[e]),!e)return null;const $={sm:mr.modalSizeSm,md:mr.modalSizeMd,mdWide:mr.modalSizeMdWide,lg:mr.modalSizeLg,xl:mr.modalSizeXl,full:mr.modalSizeFull};return pc.createPortal(a.jsx("div",{className:`${mr.overlay} ${c||""} ${mr.overlayHighZ}`,style:d,ref:k,onClick:j=>{h&&!y&&j.target===k.current&&t()},children:a.jsxs("div",{ref:I,className:`tf-surface-modal tf-modal-shell ${mr.modal} tf-scrollbar-scope ${$[i]} ${p?mr.draggableModal:""} ${g?mr.settingsViewModal:""}`,role:"dialog","aria-modal":"true","aria-labelledby":T,tabIndex:-1,"data-theme":l,style:{transform:p?`translate(${R.x}px, ${R.y}px)`:void 0,transition:P?"none":"transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease-out"},children:[a.jsxs("div",{className:`tf-modal-header ${p?mr.draggableHeader:""}`,onMouseDown:p?N:void 0,style:{cursor:p?P?"grabbing":"grab":"default"},children:[a.jsx("div",{className:"tf-modal-title",id:T,children:r}),a.jsxs("div",{className:mr.headerActions,children:[f,a.jsx("button",{className:"tf-control-icon",onClick:t,disabled:y,title:"Close","aria-label":"Close",children:a.jsx(di,{size:20})})]})]}),a.jsx("div",{className:mr.modalContent,children:n}),s&&a.jsx("div",{className:`${mr.formActions} ${mr.modalFooter}`,children:s})]})}),document.body)}const MV="_toolbar_1nqyq_1",LV="_masterSelection_1nqyq_13",OV="_selectedCount_1nqyq_32",BV="_actionButton_1nqyq_36",WV="_emptyButton_1nqyq_47",$V="_dialogBody_1nqyq_52",FV="_destinationSummary_1nqyq_62",UV="_hint_1nqyq_66",zV="_progress_1nqyq_70",HV="_failures_1nqyq_77",VV="_spinner_1nqyq_102",Bo={toolbar:MV,masterSelection:LV,selectedCount:OV,actionButton:BV,emptyButton:WV,dialogBody:$V,destinationSummary:FV,hint:UV,progress:zV,failures:HV,spinner:VV};function j_({theme:e,selectedRecords:t,matchingCount:r,allMatchingSelected:n,someMatchingSelected:s,fullTrashCount:i,onSelectAllMatching:l,onClearSelection:c,onRestore:d,onEmptyEntireTrash:f}){const p=o.useRef(null),[g,h]=o.useState(!1),[y,k]=o.useState("previous"),[w,S]=o.useState(!1),[b,v]=o.useState(null),T=o.useMemo(()=>t.filter(x=>x.taskSnapshot.isArchived===!0).length,[t]),R=t.length-T;o.useEffect(()=>{p.current&&(p.current.indeterminate=s)},[s]);const P=async()=>{if(t.length===0||w)return;S(!0),v({requested:t.length,completed:0,succeeded:[],failed:[]});const x=await d(t,y,v);v(x),S(!1),x.failed.length===0&&(h(!1),v(null))},N=x=>{k(x),v(null),h(!0)},I=y==="archive",$=I?t.length:T,j=I?0:R;return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:Bo.toolbar,"aria-label":"Trash restore selection",children:[a.jsxs("label",{className:Bo.masterSelection,children:[a.jsx("input",{ref:p,type:"checkbox",checked:n,disabled:r===0||w,onChange:x=>{x.target.checked?l():c()},"aria-label":"Select all matching deleted tasks"}),a.jsxs("span",{className:Bo.selectedCount,children:[t.length," selected"]})]}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:c,disabled:t.length===0||w,"aria-label":"Clear selected tasks",title:"Clear selection",children:a.jsx(di,{size:15,"aria-hidden":"true"})}),a.jsxs("button",{type:"button",className:`tf-control-icon ${Bo.actionButton}`,onClick:()=>N("previous"),disabled:t.length===0||w,children:[a.jsx(Ni,{size:15,"aria-hidden":"true"}),"Restore"]}),a.jsxs("button",{type:"button",className:`tf-control-icon ${Bo.actionButton}`,onClick:()=>N("archive"),disabled:t.length===0||w,title:"Restore selected tasks directly to Archive",children:[a.jsx(Ed,{size:15,"aria-hidden":"true"}),"Restore to archive"]}),f&&a.jsxs("button",{type:"button",className:`tf-control-icon ${Bo.actionButton} ${Bo.emptyButton}`,onClick:f,disabled:i===0||w,title:i>0?`Permanently delete all ${i} tasks in Trash; filters and selection do not limit this action.`:"Trash is already empty",children:[a.jsx(um,{size:14,"aria-hidden":"true"}),"Empty Trash"]})]}),a.jsx(Uo,{isOpen:g,onClose:()=>{w||(h(!1),v(null))},closeDisabled:w,closeOnOverlayClick:!w,size:"sm",theme:e,title:I?"Restore selected tasks to Archive?":"Restore selected tasks?",footer:a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{h(!1),v(null)},disabled:w,children:"Cancel"}),a.jsxs("button",{type:"button",className:"tf-button-primary tf-button-compact","data-modal-initial-focus":!0,onClick:()=>{P()},disabled:w||t.length===0,children:[w?a.jsx(Hn,{size:15,className:Bo.spinner}):I?a.jsx(Ed,{size:15}):a.jsx(Ni,{size:15}),b?.failed.length?"Retry failed":I?"Restore to archive":"Restore"]})]}),children:a.jsxs("div",{className:Bo.dialogBody,children:[a.jsxs("p",{children:["Restore ",t.length," task",t.length===1?"":"s","?"]}),a.jsxs("p",{className:Bo.destinationSummary,children:[$," to Archived · ",j," to Active"]}),a.jsx("p",{className:Bo.hint,children:I?"Active tasks will be marked Done and restored directly to Archive. Cancelled tasks remain Cancelled.":"Each task returns to the lifecycle state it had before deletion."}),b&&a.jsxs("div",{className:Bo.progress,"aria-live":"polite",children:[a.jsxs("strong",{children:[b.completed," / ",b.requested," completed"]}),b.failed.length>0&&a.jsxs("div",{className:Bo.failures,children:[a.jsxs("p",{children:[b.failed.length," failed and remain selected:"]}),a.jsx("ul",{children:b.failed.slice(0,8).map(x=>a.jsxs("li",{children:[a.jsx("span",{children:x.title||x.taskId}),a.jsx("span",{children:x.message})]},x.deletedRecordId))}),b.failed.length>8&&a.jsxs("p",{children:["And ",b.failed.length-8," more."]})]})]})]})})]})}const GV="_topNoticeLayer_1yiif_1",KV="_taskNoticeLayer_1yiif_13",qV="_topNotice_1yiif_1",YV="_topNoticeMessage_1yiif_37",ZV="_topNoticeSuccess_1yiif_43",JV="_topNoticeError_1yiif_44",XV="_topNoticeInfo_1yiif_45",QV="_topNoticeDismiss_1yiif_63",Kc={topNoticeLayer:GV,taskNoticeLayer:KV,topNotice:qV,topNoticeMessage:YV,topNoticeSuccess:ZV,topNoticeError:JV,topNoticeInfo:XV,topNoticeDismiss:QV};function Gh({notice:e,onDismiss:t,placement:r="top"}){if(!e)return null;const n=e.tone==="error"?Kc.topNoticeError:e.tone==="success"?Kc.topNoticeSuccess:Kc.topNoticeInfo,s=e.tone==="error"?"alert":"status",i=r==="task"?`${Kc.topNoticeLayer} ${Kc.taskNoticeLayer}`:Kc.topNoticeLayer;return a.jsx("div",{className:i,children:a.jsxs("div",{className:`${Kc.topNotice} ${n}`,role:s,"aria-live":e.tone==="error"?"assertive":"polite",children:[e.tone==="error"?a.jsx(Bd,{size:14}):e.tone==="success"?a.jsx(ji,{size:14}):a.jsx(D0,{size:14}),a.jsx("span",{className:Kc.topNoticeMessage,children:e.message}),e.actionLabel&&e.onAction&&a.jsx("button",{type:"button",className:`${e.actionPrimary?"tf-button-primary":"tf-button-ghost"} tf-button-compact`,onClick:e.onAction,children:e.actionLabel}),e.secondaryActionLabel&&e.onSecondaryAction&&a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",onClick:e.onSecondaryAction,children:e.secondaryActionLabel}),t&&e.dismissible!==!1&&a.jsx("button",{type:"button",className:Kc.topNoticeDismiss,onClick:t,"aria-label":"Dismiss notice",title:"Dismiss notice",children:a.jsx(di,{size:14})})]})})}const eG="D-";function tG(e){return pm(eG,e)}const rG="_overlay_ey7rx_1",nG="_dialog_ey7rx_13",aG="_header_ey7rx_32",sG="_footer_ey7rx_33",oG="_titleGroup_ey7rx_53",iG="_secondaryActions_ey7rx_54",cG="_typeIcon_ey7rx_61",lG="_titleText_ey7rx_66",dG="_title_ey7rx_53",uG="_referenceBadge_ey7rx_79",pG="_content_ey7rx_83",fG="_image_ey7rx_93",mG="_pdf_ey7rx_100",gG="_textPreview_ey7rx_107",hG="_codePreview_ey7rx_108",yG="_message_ey7rx_125",kG="_unavailable_ey7rx_126",vG="_secondaryLink_ey7rx_145",Na={overlay:rG,dialog:nG,header:aG,footer:sG,titleGroup:oG,secondaryActions:iG,typeIcon:cG,titleText:lG,title:dG,referenceBadge:uG,content:pG,image:fG,pdf:mG,textPreview:gG,codePreview:hG,message:yG,unavailable:kG,secondaryLink:vG},wG=/\.(?:md|markdown|txt|csv|json|js|ts|tsx|css|py|java|go|rs|sh)(?:[?#]|$)/i,bG=/\.(?:png|jpe?g|webp|gif)(?:[?#]|$)/i,SG=/\.pdf(?:[?#]|$)/i;function AG(e){return typeof e=="string"?e:e.path}function CG(e){return typeof e=="string"?e.split("/").pop()||"Context attachment":e.caption||e.displayName||e.originalFilename||e.fsPath?.split("/").pop()||e.path.split("/").pop()||"Context attachment"}function IG(e){return typeof e=="string"?[e]:[e.path,e.fsPath,e.originalFilename,e.displayName,e.caption].filter(t=>!!t)}function _G(e,t){const r=e.includes("?")?"&":"?";return`${e}${r}download=1&filename=${encodeURIComponent(t)}`}function TG(e){return e.ownerType!=="task"?e.attachment:typeof e.attachment=="string"?{path:e.attachment,taskId:e.ownerId||null}:{...e.attachment,taskId:e.ownerId||e.attachment.taskId||null}}function D_({theme:e}){const[t,r]=o.useState(null),[n,s]=o.useState(""),[i,l]=o.useState(!1),[c,d]=o.useState(null),[f,p]=o.useState(!1),g=o.useRef(null),h=o.useRef(null),y=o.useRef(null),k=o.useRef(0),w=o.useId();o.useEffect(()=>{const ie=J=>{const ue=J;ue.detail?.attachment&&(ue.preventDefault(),k.current+=1,y.current!==null&&(window.clearTimeout(y.current),y.current=null),p(!1),r(ue.detail))};return window.addEventListener(Uv,ie),()=>window.removeEventListener(Uv,ie)},[]),o.useEffect(()=>()=>{k.current+=1,y.current!==null&&window.clearTimeout(y.current)},[]),o.useEffect(()=>{if(!t)return;h.current=document.activeElement instanceof HTMLElement?document.activeElement:null;const ie=J=>{if(J.key==="Escape"){J.preventDefault(),J.stopPropagation(),r(null);return}if(J.key!=="Tab"||!g.current)return;const ue=Array.from(g.current.querySelectorAll('button:not([disabled]), [href], iframe, [tabindex]:not([tabindex="-1"])'));if(ue.length===0){J.preventDefault(),g.current.focus();return}const oe=ue[0],ge=ue[ue.length-1];J.shiftKey&&document.activeElement===oe?(J.preventDefault(),ge.focus()):!J.shiftKey&&document.activeElement===ge&&(J.preventDefault(),oe.focus())};return window.addEventListener("keydown",ie,!0),window.requestAnimationFrame(()=>g.current?.focus()),()=>{window.removeEventListener("keydown",ie,!0),h.current?.focus()}},[t]);const S=t?AG(t.attachment):"",b=t?IG(t.attachment):[],v=/^https?:\/\//i.test(S),T=b.some(ie=>bG.test(ie)),R=b.some(ie=>SG.test(ie)),P=b.some(ie=>wG.test(ie))&&!v,N=b.some(ie=>/\.(?:md|markdown)(?:[?#]|$)/i.test(ie));if(o.useEffect(()=>{if(s(""),d(null),!t||!P){l(!1);return}const ie=new AbortController;return l(!0),fetch(S,{signal:ie.signal,headers:t.workspaceId?{"x-taskforce-workspace-id":t.workspaceId}:void 0}).then(async J=>{if(!J.ok)throw new Error("Preview unavailable");s(await J.text())}).catch(J=>{J instanceof DOMException&&J.name==="AbortError"||d(J instanceof Error?J.message:"Preview unavailable")}).finally(()=>{ie.signal.aborted||l(!1)}),()=>ie.abort()},[P,S,t]),!t)return null;const I=CG(t.attachment),$=typeof t.attachment=="string"?null:t.attachment,j=T?im($):tG($),x=TG(t),V=T&&s_(x,{taskId:t.ownerType==="task"?t.ownerId:null,taskReferenceLabel:t.ownerReferenceLabel}),U=!T&&t_(x,typeof x=="string"?void 0:x.fsPath),ne=async()=>{if(!j)return;const ie=k.current;try{await navigator.clipboard.writeText(j)}catch{if(k.current!==ie)return;const J=document.createElement("textarea");J.value=j,document.body.appendChild(J),J.select(),document.execCommand("copy"),J.remove()}k.current===ie&&(p(!0),y.current!==null&&window.clearTimeout(y.current),y.current=window.setTimeout(()=>{k.current===ie&&(p(!1),y.current=null)},1200))},L=()=>{if(V?zv(x,{taskId:t.ownerType==="task"?t.ownerId:null,taskReferenceLabel:t.ownerReferenceLabel}):r_(x,typeof x=="string"?void 0:x.fsPath)){r(null);return}window.open(S,"_blank","noopener,noreferrer")};return pc.createPortal(a.jsx("div",{className:Na.overlay,"data-theme":e,onMouseDown:ie=>{ie.target===ie.currentTarget&&r(null)},children:a.jsxs("div",{ref:g,className:Na.dialog,role:"dialog","aria-modal":"true","aria-labelledby":w,tabIndex:-1,children:[a.jsxs("header",{className:Na.header,children:[a.jsxs("div",{className:Na.titleGroup,children:[a.jsx("span",{className:Na.typeIcon,"aria-hidden":"true",children:T?a.jsx(KA,{size:16}):a.jsx(Jf,{size:16})}),a.jsxs("div",{className:Na.titleText,children:[a.jsx("div",{className:Na.title,id:w,children:I}),j&&a.jsx(Kw,{label:j,copied:f,onClick:()=>{ne()},title:I,ariaLabel:f?`Copied ${j}`:`Copy ${j}`,className:Na.referenceBadge})]})]}),a.jsx("button",{type:"button",className:"tf-control-icon","aria-label":"Close preview",title:"Close preview",onClick:()=>r(null),children:a.jsx(di,{size:18})})]}),a.jsxs("div",{className:Na.content,children:[T&&a.jsx("img",{className:Na.image,src:S,alt:I}),R&&a.jsx("iframe",{className:Na.pdf,src:S,title:`Preview ${I}`}),P&&i&&a.jsx("div",{className:Na.message,children:"Loading preview…"}),P&&c&&a.jsx("div",{className:Na.message,children:c}),P&&!i&&!c&&(N?a.jsx("div",{className:Na.textPreview,children:a.jsx(uy,{variant:"detail",children:n})}):a.jsx("pre",{className:Na.codePreview,children:n})),!T&&!R&&!P&&a.jsxs("div",{className:Na.unavailable,children:[a.jsx(Jf,{size:34,"aria-hidden":"true"}),a.jsx("strong",{children:"Preview unavailable"}),a.jsx("span",{children:"This file type can be opened or downloaded instead."})]})]}),a.jsxs("footer",{className:Na.footer,children:[a.jsxs("div",{className:Na.secondaryActions,children:[!v&&a.jsxs("a",{className:Na.secondaryLink,href:_G(S,I),target:"_blank",rel:"noreferrer",children:[a.jsx(M0,{size:14})," Download"]}),(v||!V&&!U)&&a.jsxs("a",{className:Na.secondaryLink,href:S,target:"_blank",rel:"noreferrer",children:[a.jsx(Rb,{size:14})," Open original"]})]}),(V||U)&&a.jsxs("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:L,children:[V?a.jsx(L0,{size:14}):a.jsx(Rb,{size:14}),V?"Open in Image Notes":"Open"]})]})]})}),document.body)}const xG=te.lazy(()=>zo(()=>import("./TaskSettings-BeWAuyZj.js"),__vite__mapDeps([10,1,2,3,4,5,11])).then(e=>({default:e.TaskSettings})));function RG(e){const{activeTab:t,setActiveTab:r,isOpen:n,setIsOpen:s,currentTheme:i,setCurrentTheme:l,saveSettings:c,pathSaved:d,keyShortcut:f,setKeyShortcut:p,jsonBackupEnabled:g,setJsonBackupEnabled:h,mcpHostRoot:y,setMcpHostRoot:k,settingsSection:w,setSettingsSection:S,projectRoot:b,projectName:v,mcpScriptPath:T,serverHostRoot:R,showFolderBrowser:P,setShowFolderBrowser:N,folders:I,files:$,currentBrowsePath:j,fetchFolders:x,browserTarget:V,setBrowserTarget:U,handleSelectPath:ne,handleAddPath:L,handleRemovePath:ie,tasks:J,loadingTasks:ue,archivedTasks:oe,deletedTasks:ge,activeCategories:je,activeTypes:qe,priorities:Ye,taxonomyDisplayLabels:he,taxonomies:ce,searchQuery:B,setSearchQuery:K,filterCategories:Ae,setFilterCategories:re,filterTypes:F,setFilterTypes:D,filterPriorities:z,setFilterPriorities:we,filterStatus:ke,setFilterStatus:ee,filterAssignees:Z,setFilterAssignees:H,assigneeOptions:ae,filterTaxonomies:Te,setFilterTaxonomies:Le,sortBy:Ue,setSortBy:ft,sortOrder:He,toggleSortOrder:Fe,showArchive:me,setShowArchive:ve,taskScope:ot,setTaskScope:Oe,clearFilters:A,filteredTasks:G,filteredArchive:_e,groupedTasks:Ne,collapsedCategories:Ee,setCollapsedCategories:fe,handleEdit:nt,handleDelete:q,handleCopyId:be,handleUpdateTask:Ve,handleToggleComplete:Ce,handleToggleCancel:xe,handleToggleInProgress:Ie,handleToggleReview:de,handleSetStatus:Be,handleArchiveTask:at,handleBulkArchive:Qe,handleUnarchive:Ze,handleRestoreDeletedTask:Pe,handleRestoreSelectedDeletedTasks:gt,handlePermanentlyDeleteDeletedTask:it,handleEmptyDeletedTasks:De,fetchArchive:bt,editingTaskId:Et,loading:mt,error:qt,clearTaskError:et,title:Y,setTitle:le,setTitleDraft:Ke,description:It,setDescription:vt,setDescriptionDraft:Mt,checklistItems:gr,setChecklistItems:Zt,category:or,setCategory:Dt,type:lr,setType:Rr,priority:Lr,setPriority:Dr,complexity:Me,setComplexity:rt,status:pt,setStatus:ht,manualComplexityEnabled:At,checklistDropdownEnabled:Ft,showTaskCardStatusLabel:Tt,showTaskCardDescription:$t,showTaskCardAttachments:Ct,showTaskCardChecklistProgress:Wt,showTaskCardLatestActivity:Ot,tintTaskCardActivityBackground:vr,assignee:xt,setAssignee:ct,scheduledDate:tr,setScheduledDate:$r,dueDate:u,setDueDate:Rt,workstreamInput:pr,setWorkstreamInput:nr,formTaxonomies:ar,setFormTaxonomies:an,comments:Bt,newCommentText:Qr,setNewCommentText:xr,attachments:Gt,setAttachments:Fr,setAttachmentsDirty:en,descriptionImageUploadPending:ln,descriptionImageDraftId:tn,registerDescriptionImageUpload:Ge,descriptionFocused:yn,setDescriptionFocused:Kr,showMarkdownHelp:ir,setShowMarkdownHelp:wt,handleSubmit:Gr,resetForm:Ut,discardDescriptionImageDraft:dr,handleAddComment:wr,handleSetWorkstreamForCurrentTask:Ur,handleOpenTaskById:vs,autoSaveState:ea,unsavedModalOpen:ta,setUnsavedModalOpen:rn,pendingNavigation:sn,handleNavigation:on,handleClose:Tn,scheduleWarningPrompt:cn,confirmScheduleWarning:Ar,cancelScheduleWarning:Or,uiNotice:qr,pushNotice:Yr,clearNotice:ra,taskReturnTrail:Gn,clearReturnToParentTask:Yt,returnToPreviousTask:Zr,copiedId:wn,recentlyChangedTaskIds:dt,tasksScrollRef:Cr,setTasksScrollPos:pn,currentTask:pe,currentTaskWorkstream:st,currentTaskInitiative:yt,handleUpdateCategory:Jt,handleRemoveCategory:Xt,handleSaveCategory:yr,handleUpdateCategoryIcon:Sn,handleUpdateCategoryColor:br,handleSaveType:Lt,handleRemoveType:Pr,handleUpdateTaxonomies:fn,handleUpdatePriorities:Kn,pathValidation:na,validatePaths:er,getCategoryPaths:Ho,commentsEndRef:Ca,currentWorkspaceId:aa,authUserId:Ha,runtimeMode:ma,settingsModel:Ms,onHeaderMouseDown:ro,isDragging:Ls}=e,ws=YI(J,vs),sa=o.useCallback(ut=>{if(ut.kind==="initiative"||ut.kind==="workstream"){const Jr=ut.kind==="initiative"?e.initiatives.find(In=>In.referenceNumber===ut.referenceNumber):e.workstreams.find(In=>In.referenceNumber===ut.referenceNumber);if(!Jr){Yr(`${ut.token} could not be found.`,"error");return}const Cn=T6({applicationBaseUrl:window.location.origin,workspaceId:String(aa||"default").trim()||"default",target:ut.kind,id:Jr.id});if(!Cn){Yr(`${ut.token} could not be opened.`,"error");return}window.open(Cn,"_blank","noopener,noreferrer");return}const kr=String(aa||"default").trim()||"default";JI(ut,{workspaceId:kr}).then(Jr=>{om(Jr,{ownerType:"task",ownerId:pe?.id||null,ownerReferenceLabel:ys(pe),workspaceId:kr})}).catch(()=>{Yr(`${ut.token} could not be opened.`,"error")})},[pe,aa,e.initiatives,e.workstreams,Yr]),xn=o.useMemo(()=>({...ws,entityReferences:{resolve:uC,activate:sa}}),[sa,ws]),no=o.useRef(null),[An,ao]=te.useState(0);o.useLayoutEffect(()=>{if(t==="tasks"&&Cr.current&&An>0){const ut=setTimeout(()=>{Cr.current&&(Cr.current.scrollTop=An)},50);return()=>clearTimeout(ut)}},[t,An,J]);const Ia=ut=>{ft(ut)},as=()=>{on(()=>{if(t==="add"||t==="settings"){if(t==="add"&&Zr())return;t==="add"&&Gn.length>0&&Yt(),t==="add"&&Ut(),r("tasks")}else e.onClose?e.onClose():Tn()})},Wn=()=>{rn(!1),t==="add"&&!Et&&dr(),sn?(t==="add"&&Ut(),sn()):r("tasks")},ja=async()=>{await Gr({preventDefault:()=>{}}),rn(!1),sn&&sn()},oa=(ut,kr)=>{an(Jr=>({...Jr,[ut]:kr}))},bs=o.useCallback(ut=>{Ut(),Dt(ut),on(()=>{r("add")})},[Ut,Dt,r,on]),ga=te.useMemo(()=>ge.map(ut=>({...ut.taskSnapshot,isDeleted:!0,deletedRecordId:ut.id,deletedAt:ut.deletedAt,deletedExpiresAt:qI(ut.deletedAt)})),[ge]),Va=te.useMemo(()=>new globalThis.Map(ge.map(ut=>[ut.taskId,ut])),[ge]),Da=te.useMemo(()=>{const ut=gm(B),kr={categories:je,types:qe,priorities:Ye,assigneeOptions:ae,taxonomies:ce},Jr=je.every(Er=>Ae.includes(Er.value)),Cn=qe.every(Er=>F.includes(Er.value)),In=Array.from(new Set(z.map(Er=>Number(Er)).filter(Er=>Number.isFinite(Er)))),so=Ye.map(Er=>Number(Er.value)).filter(Er=>Number.isFinite(Er)).every(Er=>In.includes(Er)),ha=["task","in-progress","review","done","cancelled","on-hold"].every(Er=>ke.includes(Er)),ca=ae.length>0&&ae.every(Er=>Z.includes(Er.value)),Rn=hm(ce,ga);return ga.filter(Er=>{const Ga=Bh(Er,ut,kr),As=Jr||Ae.includes(Er.category),_a=so||In.includes(xh(Er.priority)),ya=Cn||F.includes(Er.type||So),Ka=ha||ke.includes(Er.status),ss=ca||Z.includes(Er.assignee||"unassigned"),pi=Object.entries(Te).every(([oo,os])=>{const Ws=Rn.find(sr=>sr.id===oo);if(!Ws||Fw(Ws,ga).every(sr=>os.includes(sr.value)))return!0;const Vt=Er.taxonomies?.[oo];return Vt?Array.isArray(Vt)?Vt.some(sr=>os.includes(sr)):os.includes(Vt):os.includes("")});return Ga&&As&&_a&&ya&&Ka&&ss&&pi}).sort((Er,Ga)=>Wh(Er,Ga,Ue,He,ce))},[je,qe,oe,ae,ga,Z,Ae,z,ke,Te,F,Ye,B,Ue,He,ce,J]),Ma=te.useMemo(()=>{const ut={};return Da.forEach(kr=>{const Cn=je.find(In=>In.value===kr.category||In.label===kr.category)?.label||kr.category||"General";ut[Cn]||(ut[Cn]=[]),ut[Cn].push(kr)}),ut},[je,Da]),ia=ZI(ge,Da.map(ut=>ut.id),ot==="deleted"),Ss=ot==="archived"?_e.length:ot==="deleted"?Da.length:G.length;return a.jsxs(a.Fragment,{children:[a.jsxs("div",{ref:no,className:`${mr.modal} ${E.coreModal} ${t==="settings"?mr.settingsViewModal:""}`,"data-theme":i,children:[a.jsxs("div",{className:"tf-modal-header",onMouseDown:ro,style:{cursor:ro?Ls?"grabbing":"grab":"default"},children:[a.jsxs("div",{className:`tf-modal-title ${Xr.headerTitleWidget}`,children:["Taskforce",v&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:E.projectSlash,children:"/"}),a.jsx("span",{className:E.projectName,style:{fontSize:"14px",padding:"1px 6px"},children:v})]}),a.jsx("span",{className:E.taskCountBadge,title:ot==="deleted"?"Trash tasks — automatically deleted after 90 days":`${ot.charAt(0).toUpperCase()+ot.slice(1)} tasks`,children:Ss})]}),a.jsxs("div",{className:mr.headerActions,children:[t==="tasks"&&a.jsx(a.Fragment,{children:a.jsx("button",{className:"tf-control-icon",onClick:()=>{on(()=>{Ut(),r("add")})},title:"Add New Task","aria-label":"Add New Task",children:a.jsx(ci,{size:18})})}),a.jsx("button",{className:`tf-control-icon ${t==="settings"?"tf-control-icon-active":""}`,onClick:()=>{t!=="settings"&&on(()=>{r("settings")})},title:"Settings","aria-label":"Settings",children:a.jsx(Xf,{size:18})}),a.jsx("button",{className:"tf-control-icon",onClick:as,title:t==="tasks"?"Close":"Back to Tasks","aria-label":t==="tasks"?"Close":"Back to Tasks",children:t==="tasks"?a.jsx(di,{size:20}):a.jsx(O0,{size:20})})]})]}),a.jsx(Gh,{notice:t==="add"?null:qr,onDismiss:ra}),a.jsx(D_,{theme:i}),t==="add"&&a.jsxs("div",{className:E.taskNoticeAnchor,children:[a.jsx(N_,{editingTaskId:Et,loading:mt,submitDisabled:ln,autoSaveState:ea,title:Y,status:pt,onStatusChange:ht,currentTask:pe,currentTaskWorkstream:st,currentTaskInitiative:yt,workstreams:e.workstreams,onWorkstreamInputChange:nr,onSetWorkstreamForCurrentTask:Ur,handleSubmit:Gr,handleCopyId:be,copiedId:wn,tasks:J,handleToggleInProgress:Ie,handleToggleReview:de,handleToggleComplete:Ce,handleToggleCancel:xe,handleSetStatus:Be,handleArchiveTask:at,handleUnarchiveTask:ut=>{if(pe?.isDeleted){const kr=Va.get(ut);kr&&Pe(kr.id,kr.taskId);return}Ze(ut)},handleRestoreDeletedTask:ut=>{const kr=ge.find(Jr=>Jr.id===ut);Pe(ut,kr?.taskId)},handlePermanentlyDeleteDeletedTask:ut=>{it(ut)}}),a.jsx(Gh,{notice:qt?{message:qt,tone:"error"}:qr,onDismiss:()=>{et(),ra()},placement:"task"})]}),t==="tasks"&&a.jsx(T_,{ref:Cr,tasks:J,archivedTasks:oe,categories:je,types:qe,priorities:Ye,workspaceId:aa,taxonomyDisplayLabels:he,taxonomies:ce,searchQuery:B,filterCategories:Ae,filterTypes:F,filterPriorities:z,filterStatus:ke,filterAssignees:Z,assigneeOptions:ae,filterTaxonomies:Te,sortBy:Ue,sortOrder:He,showArchive:me,taskScope:ot,collapsedCategories:Ee,loadingTasks:ue,filteredTasks:G,filteredArchive:_e,groupedTasks:Ne,filteredDeletedTasks:Da,groupedDeletedTasks:Ma,deletedTaskRecordByTaskId:Va,selectedDeletedRecordIds:ia.selectedIds,onDeletedSelectionChange:ia.toggle,trashControls:a.jsx(j_,{theme:i,selectedRecords:ia.selectedRecords,matchingCount:ia.matchingRecords.length,allMatchingSelected:ia.allMatchingSelected,someMatchingSelected:ia.someMatchingSelected,fullTrashCount:ge.length,onSelectAllMatching:ia.selectAllMatching,onClearSelection:ia.clear,onRestore:gt,onEmptyEntireTrash:()=>{confirm(`Permanently delete all ${ge.length} tasks in Trash? Filters and selection do not limit this action. This cannot be undone.`)&&De()}}),copiedId:wn,recentlyChangedTaskIds:dt,showTaskCardStatusLabel:Tt,showTaskCardDescription:ma!=="cloud"&&$t,showTaskCardAttachments:Ct,showTaskCardChecklistProgress:Wt,showTaskCardLatestActivity:Ot,tintTaskCardActivityBackground:vr,workstreams:e.workstreams,initiatives:e.initiatives,onSearchChange:K,onFilterCategoriesChange:ut=>re(ut),onFilterTypesChange:ut=>D(ut),onFilterPrioritiesChange:we,onFilterStatusChange:ee,onFilterAssigneesChange:ut=>H(ut),onTaxonomyFilterChange:(ut,kr)=>Le(Jr=>({...Jr,[ut]:kr})),onSortByChange:Ia,onSortOrderChange:Fe,onShowArchiveChange:ve,onTaskScopeChange:Oe,onClearFilters:A,onToggleCategory:ut=>fe(kr=>({...kr,[ut]:!kr[ut]})),onEditTask:nt,onUpdateTask:Ve,taskReferences:xn,onCopyId:be,onToggleInProgress:Ie,onToggleReview:de,onToggleComplete:Ce,onToggleCancel:xe,onSetStatus:Be,onArchiveTask:at,onBulkArchive:Qe,onUnarchive:ut=>{const kr=Va.get(ut);if(kr){Pe(kr.id,kr.taskId);return}Ze(ut)},onDelete:ut=>{const kr=Va.get(ut);if(kr){it(kr.id);return}q(ut)},onDeleteAllDeleted:()=>{De()},onFetchArchive:bt,onAddTaskToCategory:bs,supplementalTasks:ga}),t==="add"&&a.jsx(E_,{editingTaskId:Et,initialActivityEntryId:e.initialActivityEntryId,title:Y,description:It,checklistItems:gr,category:or,type:lr,priority:Lr,complexity:Me,manualComplexityEnabled:At,assignee:xt,scheduledDate:tr,dueDate:u,formTaxonomies:ar,onTaxonomyChange:oa,taxonomies:ce,comments:Bt,newCommentText:Qr,contextFiles:Gt,currentWorkspaceId:aa,descriptionImageDraftId:tn,currentActorId:Ha,apiBaseUrl:"",descriptionFocused:yn,showMarkdownHelp:ir,checklistEnabled:Ft,categories:je,types:qe,priorities:Ye,taxonomyDisplayLabels:he,assigneeOptions:ae,workstreams:e.workstreams,initiatives:e.initiatives,copiedId:wn,onTitleChange:le,onTitleDraftChange:Ke,onDescriptionChange:vt,onDescriptionDraftChange:Mt,onChecklistItemsChange:Zt,onCategoryChange:Dt,onTypeChange:Rr,onPriorityChange:Dr,onComplexityChange:rt,onAssigneeChange:ct,onScheduledDateChange:$r,onDueDateChange:Rt,onNewCommentTextChange:xr,onDescriptionFocusedChange:Kr,onShowMarkdownHelpChange:wt,onOpenSettings:ut=>{on(()=>{S(ut),r("settings")})},onSubmit:Gr,onDescriptionImageUploadStart:Ge,commentsEndRef:Ca,onAddComment:()=>wr(Qr),taskReferences:xn,onAddContextFile:ut=>{en(!0),Fr(kr=>[...kr,ut])},onRemoveContextFile:async ut=>{en(!0),Fr(kr=>kr.filter((Jr,Cn)=>Cn!==ut))},onUpdateContextCaption:(ut,kr)=>{en(!0),Fr(Jr=>Jr.map((Cn,In)=>In!==ut?Cn:typeof Cn=="string"?{path:Cn,caption:kr,timestamp:new Date().toISOString()}:{...Cn,caption:kr}))},onOpenContextImage:ut=>{om(ut,{ownerType:"task",ownerId:Et,ownerReferenceLabel:ys(pe),workspaceId:aa})},onCopyId:be,onToggleInProgress:Ie,onToggleReview:de,onToggleComplete:Ce,onToggleCancel:xe,onArchiveTask:at,onUnarchive:ut=>{if(pe?.isDeleted){const kr=Va.get(ut);kr&&Pe(kr.id,kr.taskId);return}Ze(ut)},currentTask:pe}),t==="settings"&&a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"2rem"},children:a.jsx(Hn,{size:20,className:E.spinner})}),children:a.jsx(xG,{settingsModel:Ms,onSectionChange:S})})]}),P&&pc.createPortal(a.jsx("div",{className:Mn.overlay,children:a.jsxs("div",{className:Mn.browser,children:[a.jsxs("div",{className:Mn.header,children:[a.jsxs("div",{className:Mn.pathInfo,children:[a.jsx(lc,{size:14}),a.jsx("span",{children:j||"Project Root"})]}),a.jsxs("div",{className:Mn.actions,children:[j&&a.jsx("button",{className:E.helpLink,onClick:()=>{const ut=j.split("/").filter(Boolean);ut.pop(),x(ut.length?ut.join("/")+"/":"")},children:"Back"}),a.jsx("button",{className:E.helpLink,onClick:()=>N(!1),children:"Close"})]})]}),a.jsxs("div",{className:Mn.list,children:[V&&typeof V=="object"&&a.jsxs("div",{className:`${Mn.item} ${Mn.itemCurrent}`,onClick:()=>ne(j),children:[a.jsx(ji,{size:14})," Select Current: ./",j||"(root)"]}),I.map(ut=>a.jsxs("div",{className:Mn.item,onClick:()=>x(j+ut+"/"),children:[a.jsx(lc,{size:14})," ",ut,"/"]},ut)),$.map(ut=>a.jsxs("div",{className:`${Mn.item} ${Mn.itemFile}`,onClick:()=>ne(j+ut),children:[a.jsx(Jf,{size:14})," ",ut]},ut)),I.length===0&&$.length===0&&a.jsx("div",{className:`${Mn.item} ${Mn.empty}`,children:"No items found"})]})]})}),document.body),ta&&a.jsx("div",{className:`${mr.overlay} ${mr.unsavedOverlay}`,children:a.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${mr.modal} ${mr.unsavedModal}`,"data-theme":i,children:[a.jsx("div",{className:`tf-modal-header ${mr.unsavedHeader}`,children:a.jsxs("div",{className:`tf-modal-title ${mr.unsavedTitle}`,children:[a.jsx(Bd,{size:20}),"Unsaved Changes"]})}),a.jsx("div",{className:`${mr.form} ${mr.unsavedContent}`,children:a.jsx("p",{className:mr.unsavedText,children:"You have unsaved changes. Would you like to save them?"})}),a.jsxs("div",{className:`${mr.formActions} ${mr.unsavedActions}`,children:[a.jsx("button",{className:E.cancelBtn,onClick:()=>rn(!1),title:"Close dialog and continue editing",children:"Keep Editing"}),a.jsx("button",{className:E.destructiveBtn,onClick:Wn,title:"Discard unsaved changes and leave",children:"Discard"}),a.jsxs("button",{className:E.submitBtn,onClick:ja,disabled:mt,title:"Save changes and leave",children:[mt?a.jsx(Hn,{size:16,className:E.spinner}):a.jsx(qA,{size:16}),"Save"]})]})]})}),cn&&a.jsx("div",{className:`${mr.overlay} ${mr.unsavedOverlay}`,children:a.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${mr.modal} ${mr.unsavedModal}`,"data-theme":i,children:[a.jsx("div",{className:`tf-modal-header ${mr.unsavedHeader}`,children:a.jsxs("div",{className:`tf-modal-title ${mr.unsavedTitle}`,children:[a.jsx(Bd,{size:20}),"Date Warning"]})}),a.jsxs("div",{className:`${mr.form} ${mr.unsavedContent}`,children:[a.jsx("p",{className:mr.unsavedText,children:"Due date is before scheduled date."}),a.jsxs("p",{style:{margin:0,fontSize:"12px",color:"var(--text-muted)"},children:["Due: ",cn.dueDate," · Scheduled: ",cn.scheduledDate]})]}),a.jsxs("div",{className:`${mr.formActions} ${mr.unsavedActions}`,children:[a.jsx("button",{className:E.cancelBtn,onClick:Or,children:"Go Back"}),a.jsx("button",{className:E.submitBtn,onClick:Ar,children:"Save Anyway"})]})]})})]})}const PG="_accountMenuWrap_1mocf_1",EG="_avatarBtn_1mocf_5",NG="_avatarBadge_1mocf_9",jG="_avatarImage_1mocf_24",DG="_avatarIcon_1mocf_30",MG="_accountMenu_1mocf_1",LG="_accountMenuItem_1mocf_48",OG="_accountMenuItemActive_1mocf_68",BG="_accountMenuSection_1mocf_73",WG="_accountMenuSectionLabel_1mocf_79",$G="_accountMenuMeta_1mocf_88",FG="_accountMenuHint_1mocf_93",UG="_accountIdentityEmail_1mocf_99",zG="_accountIdentityBlock_1mocf_104",HG="_accountIdentityMetaLine_1mocf_109",VG="_accountIdentityMetaAction_1mocf_116",GG="_accountIdentityMetaValue_1mocf_125",KG="_accountIdentityMetaLabel_1mocf_130",qG="_accountMenuError_1mocf_159",YG="_accountHubCard_1mocf_165",ZG="_profileAvatarEditor_1mocf_172",JG="_profileEditLayout_1mocf_178",XG="_profileFieldStack_1mocf_185",QG="_profileFieldLabel_1mocf_191",fr={accountMenuWrap:PG,avatarBtn:EG,avatarBadge:NG,avatarImage:jG,avatarIcon:DG,accountMenu:MG,accountMenuItem:LG,accountMenuItemActive:OG,accountMenuSection:BG,accountMenuSectionLabel:WG,accountMenuMeta:$G,accountMenuHint:FG,accountIdentityEmail:UG,accountIdentityBlock:zG,accountIdentityMetaLine:HG,accountIdentityMetaAction:VG,accountIdentityMetaValue:GG,accountIdentityMetaLabel:KG,accountMenuError:qG,accountHubCard:YG,profileAvatarEditor:ZG,profileEditLayout:JG,profileFieldStack:XG,profileFieldLabel:QG},eK="_authBlockedBanner_1virb_1",tK="_loginView_1virb_10",rK="_loginCard_1virb_20",nK="_loginCloseBtn_1virb_34",aK="_loginLogo_1virb_56",sK="_authBrandRow_1virb_62",oK="_setupHeaderRow_1virb_68",iK="_runtimeIconBadge_1virb_75",cK="_loginTitle_1virb_94",lK="_loginTitleAccent_1virb_105",dK="_loginSubtitle_1virb_109",uK="_loginError_1virb_115",pK="_loginField_1virb_121",fK="_loginFieldLabel_1virb_126",mK="_loginInput_1virb_133",gK="_loginPrimaryBtn_1virb_149",hK="_authPrimaryActions_1virb_154",yK="_registerConsent_1virb_159",kK="_registerConsentLink_1virb_167",vK="_authModeSwitch_1virb_177",wK="_authModeSwitchLink_1virb_184",bK="_authModeLinks_1virb_199",SK="_authSecondaryActions_1virb_207",AK="_authModeLink_1virb_199",CK="_optionGrid_1virb_236",IK="_optionGroup_1virb_242",_K="_optionRow_1virb_247",TK="_inlineHint_1virb_254",xK="_actionRowEnd_1virb_260",RK="_oauthProviders_1virb_267",PK="_oauthDivider_1virb_274",EK="_oauthButtons_1virb_290",NK="_oauthButton_1virb_290",Xe={authBlockedBanner:eK,loginView:tK,loginCard:rK,loginCloseBtn:nK,loginLogo:aK,authBrandRow:sK,setupHeaderRow:oK,runtimeIconBadge:iK,loginTitle:cK,loginTitleAccent:lK,loginSubtitle:dK,loginError:uK,loginField:pK,loginFieldLabel:fK,loginInput:mK,loginPrimaryBtn:gK,authPrimaryActions:hK,registerConsent:yK,registerConsentLink:kK,authModeSwitch:vK,authModeSwitchLink:wK,authModeLinks:bK,authSecondaryActions:SK,authModeLink:AK,optionGrid:CK,optionGroup:IK,optionRow:_K,inlineHint:TK,actionRowEnd:xK,oauthProviders:RK,oauthDivider:PK,oauthButtons:EK,oauthButton:NK},jK="_modalBody_xo2lt_1",DK="_mutedText_xo2lt_5",MK="_sectionText_xo2lt_10",LK="_modalActionsEnd_xo2lt_50",OK="_helpModalBody_xo2lt_56",BK="_helpHero_xo2lt_60",WK="_helpHeroIcon_xo2lt_67",$K="_helpHeroCopy_xo2lt_79",FK="_supportContactCard_xo2lt_84",UK="_supportContactHeader_xo2lt_90",zK="_supportEmailAddress_xo2lt_97",HK="_supportActionRow_xo2lt_112",VK="_supportAction_xo2lt_112",GK="_supportPanel_xo2lt_123",KK="_supportPanelHeader_xo2lt_132",qK="_memberRow_xo2lt_150",YK="_memberTitle_xo2lt_156",ZK="_memberActions_xo2lt_160",JK="_selectRole_xo2lt_167",XK="_selectPermission_xo2lt_171",QK="_inviteRow_xo2lt_175",eq="_listHeading_xo2lt_179",tq="_auditList_xo2lt_184",rq="_auditPager_xo2lt_190",nq="_labelFixed_xo2lt_197",Vr={modalBody:jK,mutedText:DK,sectionText:MK,modalActionsEnd:LK,helpModalBody:OK,helpHero:BK,helpHeroIcon:WK,helpHeroCopy:$K,supportContactCard:FK,supportContactHeader:UK,supportEmailAddress:zK,supportActionRow:HK,supportAction:VK,supportPanel:GK,supportPanelHeader:KK,memberRow:qK,memberTitle:YK,memberActions:ZK,selectRole:JK,selectPermission:XK,inviteRow:QK,listHeading:eq,auditList:tq,auditPager:rq,labelFixed:nq};function aq({isOpen:e,theme:t,onClose:r,onConfirm:n}){return a.jsx(Uo,{isOpen:e,onClose:r,title:"New Workspace",size:"sm",theme:t,draggable:!0,footer:a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:E.cancelBtn,onClick:r,children:"Cancel"}),a.jsx("button",{type:"button",className:E.submitBtn,onClick:n,children:"Start Setup"})]}),children:a.jsx("div",{className:`${mr.form} ${Vr.modalBody}`,children:a.jsx("p",{className:Vr.sectionText,children:"Create and configure a new workspace."})})})}const sq="_editableAvatarButton_1qp11_1",oq="_editableAvatarImage_1qp11_47",iq="_editableAvatarFallback_1qp11_54",cq="_editableAvatarBadge_1qp11_65",lq="_editableAvatarProgress_1qp11_91",dq="_editableAvatarProgressError_1qp11_108",kd={editableAvatarButton:sq,editableAvatarImage:oq,editableAvatarFallback:iq,editableAvatarBadge:cq,editableAvatarProgress:lq,editableAvatarProgressError:dq};function uq({label:e,imageUrl:t,fallbackImageUrl:r,fallback:n,accentColor:s,size:i=52,width:l,height:c,radius:d,editBadgeSize:f,editIconSize:p=16,disabled:g=!1,loading:h=!1,loadingLabel:y="Updating profile photo",error:k=!1,errorLabel:w="Profile photo update failed",className:S="",onClick:b}){const{activeImageUrl:v,handleImageError:T}=S_(t,r),R=l??i,P=c??i,N=typeof d=="number"?`${d}px`:d,I=typeof f=="number"?`${f}px`:f;return a.jsxs("button",{type:"button",className:`${kd.editableAvatarButton} ${S}`.trim(),"aria-label":e,"aria-busy":h,title:e,onClick:b,disabled:g,style:{"--editable-avatar-size":`${i}px`,"--editable-avatar-width":`${R}px`,"--editable-avatar-height":`${P}px`,...N?{"--editable-avatar-radius":N}:{},...I?{"--editable-avatar-badge-size":I}:{},...s?{"--editable-avatar-accent":s}:{}},children:[v?a.jsx("img",{src:v,alt:"",className:kd.editableAvatarImage,onError:T}):a.jsx("span",{className:kd.editableAvatarFallback,children:n}),a.jsx("span",{className:kd.editableAvatarBadge,"aria-hidden":"true",children:a.jsx(YA,{size:p})}),h?a.jsx("span",{className:kd.editableAvatarProgress,role:"status","aria-label":y,children:a.jsx(Hn,{size:Math.max(16,Math.round(i*.24))})}):k?a.jsx("span",{className:`${kd.editableAvatarProgress} ${kd.editableAvatarProgressError}`,role:"status","aria-label":w,children:a.jsx(Bd,{size:Math.max(16,Math.round(i*.24))})}):null]})}const pq="_modalBody_1t6q4_1",fq="_layout_1t6q4_5",mq="_sectionTabs_1t6q4_11",gq="_sectionTab_1t6q4_11",hq="_sectionPanel_1t6q4_55",yq="_section_1t6q4_11",kq="_sectionHeader_1t6q4_65",vq="_cardHeader_1t6q4_66",wq="_planSummary_1t6q4_67",bq="_intervalRow_1t6q4_68",Sq="_sectionCard_1t6q4_81",Aq="_sectionActions_1t6q4_87",Cq="_inlineActions_1t6q4_88",Iq="_loginMethodList_1t6q4_96",_q="_loginMethodRow_1t6q4_101",Tq="_loginMethodIcon_1t6q4_110",xq="_loginMethodCopy_1t6q4_122",Rq="_addPasswordForm_1t6q4_137",Pq="_linkProviderBlock_1t6q4_138",Eq="_fieldLabel_1t6q4_145",Nq="_planName_1t6q4_157",nn={modalBody:pq,layout:fq,sectionTabs:mq,sectionTab:gq,sectionPanel:hq,section:yq,sectionHeader:kq,cardHeader:vq,planSummary:wq,intervalRow:bq,sectionCard:Sq,sectionActions:Aq,inlineActions:Cq,loginMethodList:Iq,loginMethodRow:_q,loginMethodIcon:Tq,loginMethodCopy:xq,addPasswordForm:Rq,linkProviderBlock:Pq,fieldLabel:Eq,planName:Nq},jq=new Set(["active","trialing","grace"]),oA={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."},Xg={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 Fd(e){return String(e||"").trim()}function M_(e){return Fd(e).toLowerCase()}function Dq(e){return Fd(e).toLowerCase()}function Mq(e){return!!(Fd(e?.stripeCustomerId)||Fd(e?.stripeSubscriptionId))}function Lq(e){const t=Fd(e?.trialEnd||e?.effectiveUntil);if(t){const r=new Date(t);if(!Number.isNaN(r.getTime()))return r.getTime()<=Date.now()?"Your trial end date has passed. Billing status is updating.":`Your trial is active through ${r.toLocaleString()}.`}return"Your trial is active. Continue to Taskforce or manage billing anytime."}function Oq(e){return jq.has(M_(e))}function Vv(e,t){const r=M_(e?.entitlementState),n=Dq(e?.gate||t),s=Fd(e?.billingConflictCode).toUpperCase(),i=Fd(e?.message),l=Oq(r),c=Mq(e);return s==="CHECKOUT_SESSION_EXPIRED"?{entitlementState:r||null,gate:n||null,isActive:!1,allowReturnToApp:!1,statusTone:"info",message:oA.CHECKOUT_SESSION_EXPIRED,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:c,markCurrentPlan:!1}:s==="CHECKOUT_SESSION_SUPERSEDED"?{entitlementState:r||null,gate:n||null,isActive:!1,allowReturnToApp:!1,statusTone:"info",message:oA.CHECKOUT_SESSION_SUPERSEDED,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:c,markCurrentPlan:!1}:r==="trialing"?{entitlementState:r,gate:n||null,isActive:!0,allowReturnToApp:!0,statusTone:"success",message:Lq(e),primaryAction:c?"manage_billing":"none",primaryLabel:c?"Manage Billing":null,showManageBilling:c,markCurrentPlan:!0}:l?{entitlementState:r||null,gate:n||null,isActive:!0,allowReturnToApp:!0,statusTone:"success",message:i||null,primaryAction:"none",primaryLabel:null,showManageBilling:c,markCurrentPlan:!0}:r==="suspended"?{entitlementState:r,gate:n||null,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:"Your access is suspended because billing needs attention. Update billing to restore access.",primaryAction:c?"manage_billing":"open_plans",primaryLabel:c?"Manage Billing":"Open Plans",showManageBilling:c,markCurrentPlan:!1}:r==="canceled"?{entitlementState:r,gate:n||null,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:"Your access has ended. Choose a plan to reactivate your workspace.",primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:c,markCurrentPlan:!1}:r==="pending_plan_selection"||e?.planSelectionRequired===!0||n==="plan_selection_required"?{entitlementState:r||"pending_plan_selection",gate:n||"plan_selection_required",isActive:!1,allowReturnToApp:!1,statusTone:"info",message:i||Xg.planSelectionRequired,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:!1,markCurrentPlan:!1}:r==="checkout_pending"||n==="checkout_pending"?{entitlementState:r||"checkout_pending",gate:n||"checkout_pending",isActive:!1,allowReturnToApp:!1,statusTone:"info",message:i||Xg.checkoutPending,primaryAction:"open_plans",primaryLabel:"Open Plans",showManageBilling:c,markCurrentPlan:!1}:n==="misconfigured"?{entitlementState:r||null,gate:n,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:Xg.misconfigured,primaryAction:"none",primaryLabel:null,showManageBilling:!1,markCurrentPlan:!1}:n==="missing_entitlement"?{entitlementState:r||null,gate:n,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:Xg.missingEntitlement,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:!1,markCurrentPlan:!1}:{entitlementState:r||null,gate:n||null,isActive:!1,allowReturnToApp:!1,statusTone:i?"error":"info",message:i||null,primaryAction:"none",primaryLabel:null,showManageBilling:c,markCurrentPlan:!1}}const Gv=12,Kv=256,Bq=new Set(["12345678","123456789","1234567890","admin123","changeme","letmein","letmein123","password","password1","password12","password123","password1234","qwerty","qwerty123","welcome","welcome123"]),Wq=e=>String(e||"").trim().toLowerCase().replace(/[^a-z0-9]/g,"");function $q(e){const t=new Set,r=String(e?.email||"").trim().toLowerCase(),n=String(e?.displayName||"").trim().toLowerCase();if(r.includes("@")){const s=r.split("@")[0]||"",i=s.replace(/[^a-z0-9]/g,"");i.length>=4&&t.add(i);for(const l of s.split(/[^a-z0-9]+/))l.length>=4&&t.add(l)}for(const s of n.split(/[^a-z0-9]+/))s.length>=4&&t.add(s);return[...t]}function L_(){return[`Use at least ${Gv} characters.`,`Use no more than ${Kv} characters.`,"Avoid common passwords or obvious patterns.","Do not include your email or display name."]}function qv(e,t){const r=String(e||"");if(!r)return{ok:!1,code:"PASSWORD_REQUIRED",message:"Password is required."};if(r.length<Gv)return{ok:!1,code:"PASSWORD_TOO_SHORT",message:`Password must be at least ${Gv} characters.`};if(r.length>Kv)return{ok:!1,code:"PASSWORD_TOO_LONG",message:`Password must be no more than ${Kv} characters.`};const n=Wq(r);return Bq.has(n)?{ok:!1,code:"PASSWORD_TOO_COMMON",message:"Choose a less common password."}:$q(t).some(i=>n.includes(i))?{ok:!1,code:"PASSWORD_CONTAINS_PERSONAL_INFO",message:"Password cannot contain your email or display name."}:{ok:!0}}const Fq="_wrapper_1g3s7_1",Uq="_input_1g3s7_7",zq="_toggle_1g3s7_11",ev={wrapper:Fq,input:Uq,toggle:zq},ap=o.forwardRef(function({className:t,disabled:r,visibilityLabel:n="password",visibilityToggleTestId:s,...i},l){const[c,d]=o.useState(!1),f=`${c?"Hide":"Show"} ${n}`;return a.jsxs("span",{className:ev.wrapper,children:[a.jsx("input",{...i,ref:l,className:`${t||""} ${ev.input}`.trim(),type:c?"text":"password",disabled:r}),a.jsx("button",{type:"button",className:ev.toggle,"aria-label":f,title:f,"data-testid":s,disabled:r,onClick:()=>d(p=>!p),children:c?a.jsx(aw,{size:18,"aria-hidden":"true"}):a.jsx(ZA,{size:18,"aria-hidden":"true"})})]})}),iA={password:"Email & Password",google:"Google",github:"GitHub",apple:"Apple"},Hq=[{id:"profile",label:"Profile",icon:sp},{id:"security",label:"Sign-in & Security",icon:B0},{id:"billing",label:"Plan & Billing",icon:W0}];function Vq(e){const t=String(e||"").trim();return t?t.replace(/[_-]+/g," ").replace(/\b\w/g,r=>r.toUpperCase()):"Not available"}function Gq({isOpen:e,theme:t,displayName:r,email:n,avatarDisplayUrl:s,accountBadgeInitial:i,profileSaveBusy:l,profileAvatarBusy:c,profileSaveError:d,profileSaveNotice:f,cloudAuthEnabled:p,availableAuthProviders:g,billingLoading:h,billingError:y,billingActionError:k,billingNotice:w,billingActionBusy:S,billingIntervalChoice:b,accountProfileSummary:v,onClose:T,onSaveProfile:R,onDisplayNameChange:P,onOpenAvatarManager:N,onFetchLoginMethods:I,onUnlinkLoginMethod:$,onAddPassword:j,onChangePassword:x,onLinkProvider:V,onBillingIntervalChange:U,onRefreshBilling:ne,onUpdateInterval:L,onManageBilling:ie,onOpenPlans:J}){const[ue,oe]=o.useState("profile"),[ge,je]=o.useState([]),[qe,Ye]=o.useState(!1),[he,ce]=o.useState(null),[B,K]=o.useState(null),[Ae,re]=o.useState(null),[F,D]=o.useState(!1),[z,we]=o.useState(""),[ke,ee]=o.useState(!1),[Z,H]=o.useState(null),[ae,Te]=o.useState(!1),[Le,Ue]=o.useState(!1),[ft,He]=o.useState(""),[Fe,me]=o.useState(""),[ve,ot]=o.useState(""),[Oe,A]=o.useState(!1),[G,_e]=o.useState(null),[Ne,Ee]=o.useState(!1),fe=Vv(v),nt=L_(),q=String(v?.planName||v?.planId||"No plan selected").trim()||"No plan selected",be=new Set(ge.map(De=>De.provider)),Ve=be.has("password"),Ce=g.filter(De=>De!=="password"&&!be.has(De)),xe=o.useCallback(()=>{D(!1),we(""),H(null),Te(!1),Ue(!1),He(""),me(""),ot(""),_e(null),Ee(!1)},[]),Ie=()=>{xe(),T()},de=De=>{De!=="security"&&xe(),oe(De)};o.useEffect(()=>{re(null),xe(),e&&oe("profile")},[xe,e]),o.useEffect(()=>{ue!=="security"&&xe()},[ue,xe]),o.useEffect(()=>{if(!e||ue!=="security"||!p)return;let De=!1;return Ye(!0),ce(null),I().then(bt=>{De||(Ye(!1),bt.success&&bt.methods?je(bt.methods):ce(bt.error||"Failed to load login methods."))}),()=>{De=!0}},[ue,p,e,I]);const Be=async De=>{K(De),re(null);const bt=await $(De);if(K(null),!bt.success){re(bt.error||"Unable to remove this login method.");return}je(Et=>Et.filter(mt=>mt.provider!==De))},at=async()=>{const De=qv(z,{email:n,displayName:r});if(!De.ok){H(De.message||"Password does not meet the password policy.");return}ee(!0),H(null);const bt=await j(z);if(ee(!1),!bt.success){H(bt.code==="IDENTITY_ALREADY_EXISTS"?"A password login already exists. Use Forgot Password from sign-in to recover it.":bt.error||"Failed to add password.");return}Te(!0),we(""),D(!1);const Et=await I();Et.success&&Et.methods&&je(Et.methods)},Qe=async()=>{if(Fe!==ve){_e("New passwords do not match.");return}const De=qv(Fe,{email:n,displayName:r});if(!De.ok){_e(De.message||"Password does not meet the password policy.");return}A(!0),_e(null),Ee(!1);const bt=await x(ft,Fe);if(A(!1),!bt.success){_e(bt.error||"Failed to change password.");return}He(""),me(""),ot(""),Ue(!1),Ee(!0);const Et=await I();Et.success&&Et.methods&&je(Et.methods)},Ze=()=>{if(fe.primaryAction==="manage_billing"){ie();return}J()},Pe=()=>a.jsxs("section",{className:nn.section,"aria-labelledby":"account-profile-heading",children:[a.jsx("div",{className:nn.sectionHeader,children:a.jsxs("div",{children:[a.jsx("h2",{className:"tf-heading-card",id:"account-profile-heading",children:"Profile"}),a.jsx("p",{className:"tf-text-secondary",children:"Manage how you appear across Taskforce."})]})}),a.jsxs("div",{className:`${nn.sectionCard} tf-surface-panel`,children:[a.jsxs("div",{className:fr.profileEditLayout,children:[a.jsx("div",{className:fr.profileAvatarEditor,children:a.jsx(uq,{label:"Edit profile photo",imageUrl:s,fallback:i,disabled:l||c,onClick:N})}),a.jsxs("div",{className:fr.profileFieldStack,children:[a.jsxs("label",{className:fr.profileFieldLabel,children:[a.jsx("span",{children:"Display name"}),a.jsx("input",{className:E.input,type:"text",value:r,onChange:De=>P(De.target.value),placeholder:"Display name",disabled:l})]}),a.jsxs("label",{className:fr.profileFieldLabel,children:[a.jsx("span",{children:"Email"}),a.jsx("input",{className:E.input,type:"email",value:n,readOnly:!0,disabled:!0})]})]})]}),d&&a.jsx("p",{className:"tf-text-error",role:"alert",children:d}),f&&!d&&a.jsx("p",{className:"tf-text-secondary",role:"status",children:f}),a.jsx("div",{className:nn.sectionActions,children:a.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:R,disabled:l||c||!r.trim(),children:l?"Saving…":"Save profile"})})]})]}),gt=()=>a.jsxs("section",{className:nn.section,"aria-labelledby":"account-security-heading",children:[a.jsx("div",{className:nn.sectionHeader,children:a.jsxs("div",{children:[a.jsx("h2",{className:"tf-heading-card",id:"account-security-heading",children:"Sign-in & Security"}),a.jsx("p",{className:"tf-text-secondary",children:"Manage the methods you use to sign in to your account."})]})}),a.jsxs("div",{className:`${nn.sectionCard} tf-surface-panel`,children:[a.jsx("div",{className:nn.cardHeader,children:a.jsxs("div",{children:[a.jsx("h3",{className:"tf-heading-card",children:"Login methods"}),a.jsx("p",{className:"tf-text-secondary",children:"Keep at least one sign-in method connected."})]})}),qe&&a.jsx("p",{className:"tf-text-secondary",children:"Loading login methods…"}),he&&a.jsx("p",{className:"tf-text-error",role:"alert",children:he}),Ae&&a.jsx("p",{className:"tf-text-error",role:"alert",children:Ae}),ae&&a.jsx("p",{className:"tf-text-secondary",role:"status",children:"Password login added."}),Ne&&a.jsx("p",{className:"tf-text-secondary",role:"status",children:"Password changed."}),!qe&&ge.length>0&&a.jsx("div",{className:nn.loginMethodList,children:ge.map(De=>a.jsxs("div",{className:nn.loginMethodRow,children:[a.jsx("span",{className:nn.loginMethodIcon,"aria-hidden":"true",children:De.provider==="password"?a.jsx($0,{size:16}):a.jsx(Zf,{size:16})}),a.jsxs("span",{className:nn.loginMethodCopy,children:[a.jsx("strong",{children:iA[De.provider]||De.provider}),De.providerEmail&&a.jsx("span",{children:De.providerEmail})]}),ge.length>1&&a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:B===De.provider,onClick:()=>{Be(De.provider)},children:B===De.provider?"Removing…":"Remove"})]},De.provider))}),!qe&&!he&&Ve&&!Le&&a.jsx("div",{className:nn.sectionActions,children:a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{Ue(!0),Ee(!1),_e(null)},children:"Change password"})}),Le&&a.jsxs("div",{className:nn.addPasswordForm,children:[a.jsxs("div",{className:nn.fieldLabel,children:[a.jsx("label",{htmlFor:"account-current-password",children:"Current password"}),a.jsx(ap,{id:"account-current-password",className:E.input,value:ft,onChange:De=>He(De.target.value),disabled:Oe,autoComplete:"current-password",visibilityLabel:"current password"})]}),a.jsxs("div",{className:nn.fieldLabel,children:[a.jsx("label",{htmlFor:"account-new-password",children:"New password"}),a.jsx(ap,{id:"account-new-password",className:E.input,value:Fe,onChange:De=>me(De.target.value),disabled:Oe,autoComplete:"new-password",visibilityLabel:"new password"})]}),a.jsxs("div",{className:nn.fieldLabel,children:[a.jsx("label",{htmlFor:"account-confirm-password",children:"Confirm new password"}),a.jsx(ap,{id:"account-confirm-password",className:E.input,value:ve,onChange:De=>ot(De.target.value),disabled:Oe,autoComplete:"new-password",visibilityLabel:"confirm new password"})]}),a.jsx("p",{className:"tf-text-helper",children:nt.join(" ")}),G&&a.jsx("p",{className:"tf-text-error",role:"alert",children:G}),a.jsxs("div",{className:nn.inlineActions,children:[a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{Ue(!1),He(""),me(""),ot(""),_e(null)},disabled:Oe,children:"Cancel"}),a.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:()=>{Qe()},disabled:Oe||!ft||!Fe||!ve,children:Oe?"Changing…":"Change password"})]})]}),!qe&&!he&&!Ve&&!F&&a.jsx("div",{className:nn.sectionActions,children:a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{D(!0),Te(!1),H(null)},children:"Add password login"})}),F&&a.jsxs("div",{className:nn.addPasswordForm,children:[a.jsxs("div",{className:nn.fieldLabel,children:[a.jsx("label",{htmlFor:"account-add-password",children:"New password"}),a.jsx(ap,{id:"account-add-password",className:E.input,placeholder:"Use 12+ characters",value:z,onChange:De=>we(De.target.value),disabled:ke,autoComplete:"new-password",visibilityLabel:"new password"})]}),a.jsx("p",{className:"tf-text-helper",children:nt.join(" ")}),Z&&a.jsx("p",{className:"tf-text-error",role:"alert",children:Z}),a.jsxs("div",{className:nn.inlineActions,children:[a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{D(!1),we(""),H(null)},disabled:ke,children:"Cancel"}),a.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:()=>{at()},disabled:ke||!z,children:ke?"Saving…":"Save password"})]})]}),!qe&&!he&&Ce.length>0&&a.jsxs("div",{className:nn.linkProviderBlock,children:[a.jsx("p",{className:"tf-label-micro",children:"Link another account"}),a.jsx("div",{className:nn.inlineActions,children:Ce.map(De=>a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>V(De),children:[a.jsx(Zf,{size:15}),iA[De]||De]},De))})]})]})]}),it=()=>a.jsxs("section",{className:nn.section,"aria-labelledby":"account-billing-heading",children:[a.jsxs("div",{className:nn.sectionHeader,children:[a.jsxs("div",{children:[a.jsx("h2",{className:"tf-heading-card",id:"account-billing-heading",children:"Plan & Billing"}),a.jsx("p",{className:"tf-text-secondary",children:"Review your plan and open the secure billing portal."})]}),a.jsxs("button",{type:"button",className:"tf-button-ghost tf-button-compact",onClick:ne,disabled:S||h,children:[a.jsx(JA,{size:14}),"Refresh"]})]}),a.jsxs("div",{className:`${nn.sectionCard} tf-surface-panel`,children:[h&&a.jsx("p",{className:"tf-text-secondary",children:"Loading billing status…"}),y&&a.jsx("p",{className:"tf-text-error",role:"alert",children:y}),k&&a.jsx("p",{className:"tf-text-error",role:"alert",children:k}),w&&a.jsx("p",{className:"tf-text-secondary",role:"status",children:w}),a.jsxs("div",{className:nn.planSummary,children:[a.jsxs("div",{children:[a.jsx("p",{className:"tf-label-micro",children:"Current plan"}),a.jsx("strong",{className:nn.planName,children:q})]}),a.jsx("span",{className:`tf-chip ${fe.isActive?"tf-chip-success":"tf-chip-neutral"}`,children:Vq(v?.entitlementState)})]}),fe.message&&a.jsx("p",{className:fe.statusTone==="error"?"tf-text-error":"tf-text-secondary",children:fe.message}),v?.stripeSubscriptionId&&a.jsxs("div",{className:nn.intervalRow,children:[a.jsxs("label",{className:nn.fieldLabel,children:[a.jsx("span",{children:"Billing interval"}),a.jsxs("select",{className:E.input,value:b,onChange:De=>U(De.target.value==="year"?"year":"month"),disabled:S,children:[a.jsx("option",{value:"month",children:"Monthly"}),a.jsx("option",{value:"year",children:"Yearly"})]})]}),a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:L,disabled:S,children:"Update interval"})]}),a.jsxs("div",{className:nn.sectionActions,children:[(fe.primaryAction==="manage_billing"||fe.primaryAction==="none")&&a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:J,disabled:S,children:"View plans"}),fe.showManageBilling&&fe.primaryAction!=="manage_billing"&&a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:ie,disabled:S,children:"Manage billing"}),fe.primaryLabel&&a.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:Ze,disabled:S,children:S?"Working…":fe.primaryLabel})]})]})]});return a.jsx(Uo,{isOpen:e,onClose:Ie,title:"Account Settings",size:"mdWide",theme:t,draggable:!0,children:a.jsx("div",{className:`${mr.form} ${nn.modalBody}`,children:a.jsxs("div",{className:nn.layout,children:[a.jsx("div",{className:nn.sectionTabs,role:"tablist","aria-label":"Account settings sections","aria-orientation":"vertical",children:Hq.map(De=>{const bt=De.icon,Et=De.id===ue;return a.jsxs("button",{type:"button",role:"tab",id:`account-settings-tab-${De.id}`,"aria-controls":`account-settings-panel-${De.id}`,"aria-selected":Et,className:nn.sectionTab,onClick:()=>de(De.id),children:[a.jsx(bt,{size:16}),a.jsx("span",{children:De.label})]},De.id)})}),a.jsxs("div",{className:nn.sectionPanel,role:"tabpanel",id:`account-settings-panel-${ue}`,"aria-labelledby":`account-settings-tab-${ue}`,children:[ue==="profile"&&Pe(),ue==="security"&&gt(),ue==="billing"&&it()]})]})})})}var cA=(e,t,r,n,s,i)=>{if(i===0)e.rect(t,r,n,s);else{let l=n-i,c=s-i;e.translate(t,r),e.arc(i,i,i,Math.PI,Math.PI*1.5),e.lineTo(l,0),e.arc(l,i,i,Math.PI*1.5,Math.PI*2),e.lineTo(n,c),e.arc(l,c,i,Math.PI*2,Math.PI*.5),e.lineTo(i,s),e.arc(i,c,i,Math.PI*.5,Math.PI),e.closePath(),e.translate(-t,-r)}},Kq=(e,t,r,n,s,i)=>{e.fillStyle=i;let l=n/3,c=s/3;e.fillRect(t,r,1,s),e.fillRect(l+t,r,1,s),e.fillRect(l*2+t,r,1,s),e.fillRect(l*3+t,r,1,s),e.fillRect(l*4+t,r,1,s),e.fillRect(t,r,n,1),e.fillRect(t,c+r,n,1),e.fillRect(t,c*2+r,n,1),e.fillRect(t,c*3+r,n,1),e.fillRect(t,c*4+r,n,1)},qq=e=>!!e.match(/^\s*data:([a-z]+\/[a-z]+(;[a-z-]+=[a-z-]+)?)?(;base64)?,[a-z0-9!$&',()*+;=\-._~:@/?%\s]*\s*$/i),O_=(e,t)=>new Promise((r,n)=>{let s=new Image;s.addEventListener("load",()=>r(s)),s.addEventListener("error",n),!qq(e)&&t&&(s.crossOrigin=t),s.src=e}),Yq=e=>new Promise((t,r)=>{let n=new FileReader;n.addEventListener("load",s=>{try{if(!s?.target?.result)throw Error("No image data");t(O_(s.target.result))}catch(i){r(i)}}),n.readAsDataURL(e)}),Zq=typeof File<"u",lA=e=>Math.PI/180*e,dA={x:.5,y:.5},Jq=class{constructor(e){this.imageState=dA,this.config={border:25,borderRadius:0,scale:1,rotate:0,color:[0,0,0,.5],backgroundColor:"",borderColor:void 0,showGrid:!1,gridColor:"#666",disableBoundaryChecks:!1,disableHiDPIScaling:!1,disableCanvasRotation:!0,crossOrigin:void 0,...e},this.pixelRatio=typeof window<"u"&&window.devicePixelRatio&&!this.config.disableHiDPIScaling?window.devicePixelRatio:1}getPixelRatio(){return this.pixelRatio}getImageState(){return this.imageState}setImageState(e){this.imageState=e}updateConfig(e){this.config={...this.config,...e}}isVertical(){return!this.config.disableCanvasRotation&&this.config.rotate%180!=0}getBorders(e){let t=e??this.config.border;return Array.isArray(t)?t:[t,t]}getDimensions(){let{width:e,height:t,rotate:r,border:n}=this.config,s={width:0,height:0},[i,l]=this.getBorders(n);return this.isVertical()?(s.width=t,s.height=e):(s.width=e,s.height=t),s.width+=i*2,s.height+=l*2,{canvas:s,rotate:r,width:e,height:t,border:n}}getXScale(){if(!this.imageState.width||!this.imageState.height)throw Error("Image dimension is unknown.");let e=this.config.width/this.config.height,t=this.imageState.width/this.imageState.height;return Math.min(1,e/t)}getYScale(){if(!this.imageState.width||!this.imageState.height)throw Error("Image dimension is unknown.");let e=this.config.height/this.config.width,t=this.imageState.height/this.imageState.width;return Math.min(1,e/t)}getCroppingRect(e){if(!this.imageState.width||!this.imageState.height)return{x:0,y:0,width:1,height:1};let t=e||{x:this.imageState.x,y:this.imageState.y},r=1/this.config.scale*this.getXScale(),n=1/this.config.scale*this.getYScale(),s={x:t.x-r/2,y:t.y-n/2,width:r,height:n},i=0,l=1-s.width,c=0,d=1-s.height;return(this.config.disableBoundaryChecks||r>1||n>1)&&(i=-s.width,l=1,c=-s.height,d=1),{...s,x:Math.max(i,Math.min(s.x,l)),y:Math.max(c,Math.min(s.y,d))}}getInitialSize(e,t){let r,n,s=this.getDimensions();return s.height/s.width>t/e?(r=s.height,n=r/t*e):(n=s.width,r=n/e*t),{height:r,width:n}}async loadImage(e){let t;if(Zq&&e instanceof File)t=await Yq(e);else if(typeof e=="string")t=await O_(e,this.config.crossOrigin);else throw Error("Invalid image source");let r={...this.getInitialSize(t.width,t.height),resource:t,x:.5,y:.5};return this.imageState=r,r}clearImage(){this.imageState=dA}calculatePosition(e=this.imageState,t){let[r,n]=this.getBorders(t);if(!e.width||!e.height)throw Error("Image dimension is unknown.");let s=this.getCroppingRect(),i=e.width*this.config.scale,l=e.height*this.config.scale,c=-s.x*i,d=-s.y*l;return this.isVertical()?(c+=n,d+=r):(c+=r,d+=n),{x:c,y:d,height:l,width:i}}paint(e){e.save(),e.scale(this.pixelRatio,this.pixelRatio),e.translate(0,0),e.fillStyle="rgba("+this.config.color.slice(0,4).join(",")+")";let t=this.config.borderRadius,r=this.getDimensions(),[n,s]=this.getBorders(r.border),i=r.canvas.height,l=r.canvas.width;t=Math.max(t,0),t=Math.min(t,l/2-n,i/2-s),e.beginPath(),cA(e,n,s,l-n*2,i-s*2,t),e.rect(l,0,-l,i),e.fill("evenodd"),this.config.borderColor&&(e.strokeStyle="rgba("+this.config.borderColor.slice(0,4).join(",")+")",e.lineWidth=1,e.beginPath(),cA(e,n+.5,s+.5,l-n*2-1,i-s*2-1,t),e.stroke()),this.config.showGrid&&Kq(e,n,s,l-n*2,i-s*2,this.config.gridColor),e.restore()}paintImage(e,t,r,n=this.pixelRatio){if(!t.resource)return;let s=this.calculatePosition(t,r);e.save(),e.translate(e.canvas.width/2,e.canvas.height/2),e.rotate(this.config.rotate*Math.PI/180),e.translate(-(e.canvas.width/2),-(e.canvas.height/2)),this.isVertical()&&e.translate((e.canvas.width-e.canvas.height)/2,(e.canvas.height-e.canvas.width)/2),e.scale(n,n),e.globalCompositeOperation="destination-over",e.drawImage(t.resource,s.x,s.y,s.width,s.height),this.config.backgroundColor&&(e.fillStyle=this.config.backgroundColor,e.fillRect(0,0,e.canvas.width,e.canvas.height)),e.restore()}getImage(){let e=this.getCroppingRect(),t=this.imageState;if(!t.resource)throw Error("No image resource available, please report this to: https://github.com/mosch/react-avatar-editor/issues");e.x*=t.resource.width,e.y*=t.resource.height,e.width*=t.resource.width,e.height*=t.resource.height;let r=document.createElement("canvas");this.isVertical()?(r.width=Math.round(e.height),r.height=Math.round(e.width)):(r.width=Math.round(e.width),r.height=Math.round(e.height));let n=r.getContext("2d");if(!n)throw Error("No context found, please report this to: https://github.com/mosch/react-avatar-editor/issues");return n.translate(r.width/2,r.height/2),n.rotate(this.config.rotate*Math.PI/180),n.translate(-(r.width/2),-(r.height/2)),this.isVertical()&&n.translate((r.width-r.height)/2,(r.height-r.width)/2),this.config.backgroundColor&&(n.fillStyle=this.config.backgroundColor,n.fillRect(0,0,r.width,r.height)),n.drawImage(t.resource,-e.x,-e.y),r}getImageScaledToCanvas(){let e=this.getDimensions(),t=this.imageState,r=document.createElement("canvas");if(this.isVertical()?(r.width=e.height,r.height=e.width):(r.width=e.width,r.height=e.height),!t.resource)return r;let n=r.getContext("2d");if(!n)return r;let s=this.calculatePosition(t,0);return n.save(),n.translate(r.width/2,r.height/2),n.rotate(this.config.rotate*Math.PI/180),n.translate(-(r.width/2),-(r.height/2)),this.isVertical()&&n.translate((r.width-r.height)/2,(r.height-r.width)/2),this.config.backgroundColor&&(n.fillStyle=this.config.backgroundColor,n.fillRect(0,0,r.width,r.height)),n.drawImage(t.resource,s.x,s.y,s.width,s.height),n.restore(),r}calculateDragPosition(e,t,r,n){let s=r-e,i=n-t;if(!this.imageState.width||!this.imageState.height)throw Error("Image dimension is unknown.");let l=this.imageState.width*this.config.scale,c=this.imageState.height*this.config.scale,{x:d,y:f}=this.getCroppingRect();d*=l,f*=c;let p=this.config.rotate;p%=360,p=p<0?p+360:p;let g=Math.cos(lA(p)),h=Math.sin(lA(p)),y=d+s*g+i*h,k=f+-s*h+i*g,w=1/this.config.scale*this.getXScale(),S=1/this.config.scale*this.getYScale();return{x:y/l+w/2,y:k/c+S/2}}},uA=()=>{},Xq=()=>{let e=!1;try{let t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("test",uA,t),window.removeEventListener("test",uA,t)}catch{e=!1}return e},B_=o.forwardRef((e,t)=>{let{scale:r=1,rotate:n=0,border:s=25,borderRadius:i=0,width:l=200,height:c=200,color:d=[0,0,0,.5],showGrid:f=!1,gridColor:p="#666",disableBoundaryChecks:g=!1,disableHiDPIScaling:h=!1,disableCanvasRotation:y=!0,image:k,position:w,backgroundColor:S,crossOrigin:b,onLoadStart:v,onLoadFailure:T,onLoadSuccess:R,onImageReady:P,onImageChange:N,onMouseUp:I,onMouseMove:$,onPositionChange:j,borderColor:x,style:V}=e,U=o.useRef(null),ne=o.useRef(new Jq({width:l,height:c,border:s,borderRadius:i,scale:r,rotate:n,color:d,backgroundColor:S,borderColor:x,showGrid:f,gridColor:p,disableBoundaryChecks:g,disableHiDPIScaling:h,disableCanvasRotation:y,crossOrigin:b})),L=o.useRef(!1),ie=o.useRef(void 0),J=o.useRef(void 0),[ue,oe]=o.useState(!1),[ge,je]=o.useState(!1),[qe,Ye]=o.useState(ne.current.getImageState()),he=o.useRef(I);he.current=I;let ce=o.useRef($);ce.current=$;let B=o.useRef(j);B.current=j,o.useEffect(()=>{ne.current.updateConfig({width:l,height:c,border:s,borderRadius:i,scale:r,rotate:n,color:d,backgroundColor:S,borderColor:x,showGrid:f,gridColor:p,disableBoundaryChecks:g,disableHiDPIScaling:h,disableCanvasRotation:y,crossOrigin:b})},[l,c,s,i,r,n,d,S,x,f,p,g,h,y,b]);let K=o.useCallback(()=>{if(!U.current)throw Error("No canvas found, please report this to: https://github.com/mosch/react-avatar-editor/issues");return U.current},[]),Ae=o.useCallback(()=>{let ae=K().getContext("2d");if(!ae)throw Error("No context found, please report this to: https://github.com/mosch/react-avatar-editor/issues");return ae},[K]),re=o.useCallback(async ae=>{je(!0),v?.();try{let Te=await ne.current.loadImage(ae);L.current=!1,oe(!1),Ye(Te),P?.(),R?.(Te)}catch{T?.()}finally{je(!1)}},[v,P,R,T]),F=o.useCallback(()=>{let ae=K();Ae().clearRect(0,0,ae.width,ae.height),ne.current.clearImage(),Ye(ne.current.getImageState())},[K,Ae]),D=o.useCallback(()=>{let ae=Ae(),Te=K();ae.clearRect(0,0,Te.width,Te.height),ne.current.paint(ae),ne.current.paintImage(ae,qe,s)},[Ae,K,qe,s,l,c,i,r,n,d,S,x,f,p,g,h,y,b]),z=o.useCallback(ae=>{ae.preventDefault(),L.current=!0,ie.current=void 0,J.current=void 0,oe(!0)},[]),we=o.useCallback(()=>{L.current=!0,ie.current=void 0,J.current=void 0,oe(!0)},[]);o.useImperativeHandle(t,()=>({getImage:()=>ne.current.getImage(),getImageScaledToCanvas:()=>ne.current.getImageScaledToCanvas(),getCroppingRect:()=>ne.current.getCroppingRect()}),[]),o.useEffect(()=>{let ae=Ae();k&&re(k),ne.current.paint(ae);let Te=ft=>{if(!L.current)return;ft.cancelable&&ft.preventDefault();let He="targetTouches"in ft?ft.targetTouches[0].pageX:ft.clientX,Fe="targetTouches"in ft?ft.targetTouches[0].pageY:ft.clientY,me=ie.current,ve=J.current;if(ie.current=He,J.current=Fe,me!==void 0&&ve!==void 0){let ot=ne.current.getImageState();if(ot.width&&ot.height){let Oe=ne.current.calculateDragPosition(He,Fe,me,ve);B.current?.(Oe);let A={...ot,...Oe};ne.current.setImageState(A),Ye(A)}}ce.current?.(ft)},Le=()=>{L.current&&(L.current=!1,oe(!1),he.current?.())},Ue=Xq()?{passive:!1}:!1;return document.addEventListener("mousemove",Te,Ue),document.addEventListener("mouseup",Le,Ue),document.addEventListener("touchmove",Te,Ue),document.addEventListener("touchend",Le,Ue),()=>{document.removeEventListener("mousemove",Te,!1),document.removeEventListener("mouseup",Le,!1),document.removeEventListener("touchmove",Te,!1),document.removeEventListener("touchend",Le,!1)}},[]),o.useEffect(()=>{k?re(k):!k&&qe.x!==.5&&qe.y!==.5&&F()},[k,l,c,S]),o.useEffect(()=>{D()},[D]),o.useEffect(()=>{if(!ge)return;let ae=U.current;if(!ae)return;let Te=ae.getContext("2d");if(!Te)return;let Le,Ue=performance.now(),ft=He=>{let Fe=(He-Ue)/1e3,me=.03+Math.sin(Fe*2.5)*.02+.02;Te.save(),Te.clearRect(0,0,ae.width,ae.height),Te.fillStyle=`rgba(255,255,255,${me})`,Te.fillRect(0,0,ae.width,ae.height),Te.restore(),Le=requestAnimationFrame(ft)};return Le=requestAnimationFrame(ft),()=>cancelAnimationFrame(Le)},[ge]);let ke=o.useRef({image:k,width:l,height:c,position:w,scale:r,rotate:n,imageX:qe.x,imageY:qe.y});o.useEffect(()=>{let ae=ke.current;(ae.image!==k||ae.width!==l||ae.height!==c||ae.position!==w||ae.scale!==r||ae.rotate!==n||ae.imageX!==qe.x||ae.imageY!==qe.y)&&(N?.(),ke.current={image:k,width:l,height:c,position:w,scale:r,rotate:n,imageX:qe.x,imageY:qe.y})},[k,l,c,w,r,n,qe.x,qe.y,N]);let ee=ne.current.getDimensions(),Z=ne.current.getPixelRatio(),H={width:ee.canvas.width,height:ee.canvas.height,cursor:ue?"grabbing":"grab",touchAction:"none",maxWidth:"none",maxHeight:"none"};return te.createElement("canvas",{width:ee.canvas.width*Z,height:ee.canvas.height*Z,onMouseDown:z,onTouchStart:we,style:{...H,...V},ref:U})});B_.displayName="AvatarEditor";const Qq="_avatarManagerBody_1bfoi_1",eY="_editorPanel_1bfoi_7",tY="_editorFrame_1bfoi_13",rY="_gifPreviewImage_1bfoi_21",nY="_emptyPreview_1bfoi_28",aY="_controlPanel_1bfoi_41",sY="_zoomField_1bfoi_47",oY="_zoomSlider_1bfoi_52",iY="_actionGrid_1bfoi_57",cY="_fileInput_1bfoi_71",lY="_messageStack_1bfoi_75",dY="_footerActions_1bfoi_80",ai={avatarManagerBody:Qq,editorPanel:eY,editorFrame:tY,gifPreviewImage:rY,emptyPreview:nY,controlPanel:aY,zoomField:sY,zoomSlider:oY,actionGrid:iY,fileInput:cY,messageStack:lY,footerActions:dY},tv=512,uY=48,Qg=512;function pA(e,t,r){return new Promise(n=>{e.toBlob(n,t,r)})}function pY(e,t){const r=String(e).trim()||"avatar",n=r.lastIndexOf(".");return n<=0?`${r}${t}`:`${r.slice(0,n)}${t}`}async function fY(e,t){const r=e.getImageScaledToCanvas(),n=document.createElement("canvas");n.width=Qg,n.height=Qg;const s=n.getContext("2d");if(!s)throw new Error("Image editing requires a 2D canvas context.");s.drawImage(r,0,0,Qg,Qg);const l=await pA(n,"image/webp",.9)||await pA(n,"image/jpeg",.9);if(!l)throw new Error("Unable to prepare profile photo.");const c=l.type||"image/jpeg",d=c==="image/webp"?".webp":".jpg";return new File([l],pY(t,d),{type:c,lastModified:Date.now()})}function mY({isOpen:e,theme:t,title:r="Edit Photo",currentImageUrl:n,editorImageUrl:s="",fallbackInitial:i,accept:l,busy:c,generating:d=!1,generateLabel:f="Generate",hasPendingImage:p,canRemove:g,error:h,notice:y,onClose:k,onApplyImage:w,onGenerateImage:S,onRemoveImage:b,onDiscardPendingImage:v}){const T=o.useRef(null),R=o.useRef(null),P=o.useRef(!1),N=o.useRef(!1),[I,$]=o.useState(null),[j,x]=o.useState(""),[V,U]=o.useState(1.1),[ne,L]=o.useState(!1),[ie,J]=o.useState(null),[ue,oe]=o.useState(null);o.useEffect(()=>{e||($(null),x(""),U(1.1),L(!1),N.current=!1,J(null),oe(null))},[e]),o.useEffect(()=>{e&&(L(!1),N.current=!1)},[n,s,e]),o.useEffect(()=>{if(!I){x("");return}const D=URL.createObjectURL(I);return x(D),()=>URL.revokeObjectURL(D)},[I]);const ge=j||s||n,je=I?.name||"avatar",qe=String(i||"").trim().charAt(0).toUpperCase(),Ye=ie||h,he=ue||y,ce=c||d,B=o.useCallback(D=>{if(J(null),oe(null),!!D){if(!D.type.startsWith("image/")){J("Profile photo must be an image file.");return}D.type==="image/gif"&&oe("Animated GIFs will upload without repositioning."),$(D),U(1.1),L(!1),N.current=!1}},[]),K=o.useCallback(async()=>{J(null);const D=T.current;if(I?.type==="image/gif"){await w(I)&&k();return}if(!D||!ge){J("Choose a profile photo first.");return}try{const z=await fY(D,je);await w(z,I,{preserveExistingSource:!I&&!!s})&&k()}catch(z){J(z instanceof Error?z.message:"Unable to prepare profile photo.")}},[n,ge,s,w,k,I,je]),Ae=o.useCallback(async()=>{if(!(!S||ce||P.current)){P.current=!0,J(null),oe(null);try{await S()&&($(null),U(1.1),L(!1),N.current=!1)}catch(D){J(D instanceof Error?D.message:"Unable to generate profile photo.")}finally{P.current=!1}}},[ce,S]),re=p||!!I||ne,F=o.useMemo(()=>a.jsxs("div",{className:ai.footerActions,children:[a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:k,disabled:c,children:"Cancel"}),a.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:()=>{K()},disabled:ce||!re,children:c?"Applying...":"Apply Changes"})]}),[c,re,K,ce,k]);return a.jsx(Uo,{isOpen:e,onClose:k,title:r,size:"md",theme:t,draggable:!0,footer:F,children:a.jsxs("div",{className:ai.avatarManagerBody,children:[a.jsxs("div",{className:ai.editorPanel,children:[a.jsx("div",{className:`tf-surface-inset ${ai.editorFrame}`,onPointerDown:()=>{ge&&I?.type!=="image/gif"&&(N.current=!0)},children:I?.type==="image/gif"&&j?a.jsx("img",{src:j,alt:"",className:ai.gifPreviewImage}):ge?a.jsx(B_,{ref:T,image:ge,width:tv,height:tv,border:uY,borderRadius:tv/2,scale:V,color:[15,15,26,.72],backgroundColor:"transparent",onPositionChange:()=>{N.current&&L(!0)},style:{width:"100%",height:"100%",maxWidth:"100%",maxHeight:"100%",display:"block",borderRadius:"var(--radius-lg)",boxShadow:"var(--box-shadow-sm)"},disableCanvasRotation:!0}):a.jsx("div",{className:ai.emptyPreview,"aria-hidden":"true",children:qe})}),a.jsxs("div",{className:ai.controlPanel,children:[a.jsx("input",{ref:R,type:"file","aria-label":"Choose profile photo",accept:l,className:ai.fileInput,onChange:D=>B(D.target.files?.[0]||null),disabled:ce}),a.jsxs("div",{className:ai.actionGrid,children:[a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>R.current?.click(),disabled:ce,children:[a.jsx(F0,{size:16}),"Choose"]}),p&&v&&a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:v,disabled:ce,children:[a.jsx(Ni,{size:16}),"Discard"]}),S&&a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{Ae()},disabled:ce,"aria-busy":d,children:[d?a.jsx(Hn,{size:16,className:E.spinner}):a.jsx(zA,{size:16}),d?"Generating":f]}),g&&b&&a.jsxs("button",{type:"button",className:"tf-button-destructive tf-button-compact",onClick:b,disabled:ce,children:[a.jsx(um,{size:16}),"Remove"]})]}),a.jsxs("label",{className:`tf-field-stack ${ai.zoomField}`,children:[a.jsx("span",{className:"tf-field-label",children:"Zoom"}),a.jsx("input",{type:"range",min:"1",max:"3",step:"0.01",value:V,onChange:D=>{U(Number(D.target.value)),L(!0)},className:ai.zoomSlider,disabled:ce||!ge||I?.type==="image/gif"})]})]})]}),(Ye||he)&&a.jsxs("div",{className:ai.messageStack,children:[Ye&&a.jsx("p",{className:"tf-text-error",children:Ye}),he&&!Ye&&a.jsx("p",{className:"tf-text-helper",children:he})]})]})})}const Yv="support@taskforcehq.ai";function eh(e){return String(e||"").trim()}function gY(e={}){const t=eh(e.workspaceName),r=eh(e.workspaceId),n=eh(e.accountLabel),s=eh(e.runtimeMode),i=[t?`Workspace: ${t}`:"",r?`Workspace ID: ${r}`:"",n?`Account: ${n}`:"",s?`Runtime: ${s}`:""].filter(Boolean),l=["Hi Taskforce team,","","I need help with:","",i.length>0?"Context:":"",...i,(i.length>0,""),"What happened:",""].filter((d,f,p)=>d!==""||p[f-1]!==""),c=new URLSearchParams({subject:"Taskforce support request",body:l.join(`
6
+ `)});return`mailto:${Yv}?${c.toString()}`}function hY({isOpen:e,theme:t,onClose:r,onOpenSettings:n,supportMailtoHref:s}){const[i,l]=o.useState("idle"),c=async()=>{try{await navigator.clipboard.writeText(Yv),l("copied"),window.setTimeout(()=>l("idle"),1600)}catch{l("failed"),window.setTimeout(()=>l("idle"),2200)}};return a.jsx(Uo,{isOpen:e,onClose:r,title:"Help & Support",size:"sm",theme:t,draggable:!0,children:a.jsxs("div",{className:`${mr.form} ${Vr.modalBody} ${Vr.helpModalBody}`,children:[a.jsxs("div",{className:Vr.helpHero,children:[a.jsx("span",{className:Vr.helpHeroIcon,"aria-hidden":"true",children:a.jsx(U0,{size:20})}),a.jsxs("div",{className:Vr.helpHeroCopy,children:[a.jsx("h2",{className:"tf-heading-card",children:"How can we help?"}),a.jsx("p",{className:"tf-text-secondary",children:"Tell us what you were trying to do, what happened, and any workspace context that could help us reproduce it."})]})]}),a.jsxs("section",{className:`${Vr.supportContactCard} tf-surface-panel`,"aria-labelledby":"support-email-heading",children:[a.jsx("div",{className:Vr.supportContactHeader,children:a.jsxs("div",{children:[a.jsx("h3",{className:"tf-label-micro",id:"support-email-heading",children:"Email support"}),a.jsx("a",{className:Vr.supportEmailAddress,href:s,children:Yv})]})}),a.jsxs("div",{className:Vr.supportActionRow,children:[a.jsxs("a",{className:`tf-button-primary tf-button-compact ${Vr.supportAction}`,href:s,children:[a.jsx(z0,{size:15}),"Email Support"]}),a.jsxs("button",{className:`tf-button-secondary tf-button-compact ${Vr.supportAction}`,onClick:()=>{c()},type:"button",children:[i==="copied"?a.jsx(ji,{size:15}):a.jsx(XA,{size:15}),i==="copied"?"Copied":i==="failed"?"Copy failed":"Copy address"]})]})]}),a.jsxs("section",{className:Vr.supportPanel,"aria-labelledby":"support-settings-heading",children:[a.jsxs("div",{className:Vr.supportPanelHeader,children:[a.jsx(Xf,{size:17,"aria-hidden":"true"}),a.jsxs("div",{children:[a.jsx("h3",{className:"tf-heading-card",id:"support-settings-heading",children:"Check workspace settings"}),a.jsx("p",{className:"tf-text-secondary",children:"Common workspace, appearance, and setup options are available in Settings."})]})]}),a.jsxs("button",{className:`tf-button-secondary tf-button-compact ${Vr.supportAction}`,onClick:n,type:"button",children:[a.jsx(Xf,{size:15}),"Open Settings"]})]})]})})}function yY({prompt:e,theme:t,onClose:r,onConfirm:n}){return a.jsx(Uo,{isOpen:!!e,onClose:r,title:"Date Warning",size:"sm",theme:t,draggable:!1,closeOnOverlayClick:!1,children:a.jsxs("div",{className:`${E.form} tf-inline-stack-sm`,style:{padding:"16px",gap:"12px"},children:[a.jsx("p",{className:"tf-text-body",children:"Due date is before scheduled date."}),e&&a.jsxs("p",{className:"tf-text-helper",children:["Due: ",e.dueDate," · Scheduled: ",e.scheduledDate]}),a.jsxs("div",{className:E.formActions,children:[a.jsx("button",{className:E.cancelBtn,onClick:r,children:"Go Back"}),a.jsx("button",{className:E.submitBtn,onClick:n,children:"Save Anyway"})]})]})})}function kY({isOpen:e,theme:t,onClose:r,onConfirm:n}){return a.jsx(Uo,{isOpen:e,onClose:r,title:"Cloud Sync Warning",size:"sm",theme:t,draggable:!1,closeOnOverlayClick:!1,children:a.jsxs("div",{className:`${E.form} tf-inline-stack-sm`,style:{padding:"16px",gap:"12px"},children:[a.jsx("p",{className:"tf-text-body",children:"Turning on cloud sync can renumber task, document, and image references to match the cloud workspace."}),a.jsxs("p",{className:"tf-text-helper",children:["Labels like ",a.jsx("code",{children:"T-12"}),", ",a.jsx("code",{children:"D-4"}),", and ",a.jsx("code",{children:"IMG-2"})," may change. Plain file attachments are not renumbered."]}),a.jsxs("div",{className:E.formActions,children:[a.jsx("button",{className:E.cancelBtn,onClick:r,children:"Go Back"}),a.jsx("button",{className:E.submitBtn,onClick:n,children:"Enable Sync Anyway"})]})]})})}const vY="_syncStatusOverlay_qjzsr_1",wY="_syncStatusModal_qjzsr_5",bY="_syncStatusTop_qjzsr_10",SY="_syncStatusMetaHeader_qjzsr_19",AY="_syncStatusBadge_qjzsr_26",CY="_syncStatusLabel_qjzsr_40",IY="_syncToggle_qjzsr_51",_Y="_syncToggleControl_qjzsr_58",TY="_syncToggleControlEnabled_qjzsr_74",xY="_syncToggleControlDisabled_qjzsr_80",RY="_syncToggleControlBusy_qjzsr_84",PY="_syncToggleControlBlocked_qjzsr_89",EY="_syncToggleInput_qjzsr_94",NY="_syncToggleState_qjzsr_107",jY="_syncToggleStateOn_qjzsr_121",DY="_syncToggleStateOff_qjzsr_125",MY="_syncToggleThumb_qjzsr_134",LY="_syncStatusOverview_qjzsr_145",OY="_syncStatusEventsPanel_qjzsr_146",BY="_syncStatusAdvanced_qjzsr_147",WY="_syncStatusOverviewRow_qjzsr_158",$Y="_syncStatusSummaryValue_qjzsr_172",FY="_syncStatusValue_qjzsr_173",UY="_syncStatusIssueRow_qjzsr_181",zY="_syncStatusIssueRowError_qjzsr_185",HY="_syncStatusValueMuted_qjzsr_189",VY="_syncStatusValueError_qjzsr_196",GY="_syncStatusKeyMetrics_qjzsr_203",KY="_syncStatusCompactGrid_qjzsr_204",qY="_syncStatusCompactItem_qjzsr_217",YY="_syncStatusAdvancedContent_qjzsr_258",ZY="_syncStatusDiagnosticsList_qjzsr_265",JY="_syncStatusOwnershipControl_qjzsr_271",XY="_syncStatusDiagnosticRow_qjzsr_292",QY="_syncStatusPanelHeader_qjzsr_314",eZ="_syncStatusPanelMeta_qjzsr_321",tZ="_syncStatusMismatchPanel_qjzsr_327",rZ="_syncStatusMismatchItem_qjzsr_337",nZ="_syncStatusEventFilters_qjzsr_356",aZ="_syncStatusEventFilterActive_qjzsr_383",sZ="_syncStatusEventsList_qjzsr_388",oZ="_syncStatusEventItem_qjzsr_398",iZ="_syncStatusEventItemError_qjzsr_405",cZ="_syncStatusEventItemMuted_qjzsr_410",lZ="_syncStatusEventLine_qjzsr_414",dZ="_syncStatusFooter_qjzsr_424",uZ="_syncStatusFooterPrimary_qjzsr_433",jt={syncStatusOverlay:vY,syncStatusModal:wY,syncStatusTop:bY,syncStatusMetaHeader:SY,syncStatusBadge:AY,syncStatusLabel:CY,syncToggle:IY,syncToggleControl:_Y,syncToggleControlEnabled:TY,syncToggleControlDisabled:xY,syncToggleControlBusy:RY,syncToggleControlBlocked:PY,syncToggleInput:EY,syncToggleState:NY,syncToggleStateOn:jY,syncToggleStateOff:DY,syncToggleThumb:MY,syncStatusOverview:LY,syncStatusEventsPanel:OY,syncStatusAdvanced:BY,syncStatusOverviewRow:WY,syncStatusSummaryValue:$Y,syncStatusValue:FY,syncStatusIssueRow:UY,syncStatusIssueRowError:zY,syncStatusValueMuted:HY,syncStatusValueError:VY,syncStatusKeyMetrics:GY,syncStatusCompactGrid:KY,syncStatusCompactItem:qY,syncStatusAdvancedContent:YY,syncStatusDiagnosticsList:ZY,syncStatusOwnershipControl:JY,syncStatusDiagnosticRow:XY,syncStatusPanelHeader:QY,syncStatusPanelMeta:eZ,syncStatusMismatchPanel:tZ,syncStatusMismatchItem:rZ,syncStatusEventFilters:nZ,syncStatusEventFilterActive:aZ,syncStatusEventsList:sZ,syncStatusEventItem:oZ,syncStatusEventItemError:iZ,syncStatusEventItemMuted:cZ,syncStatusEventLine:lZ,syncStatusFooter:dZ,syncStatusFooterPrimary:uZ};function W_(e){return/\btaskforce session is invalid\b|\bauthenticated taskforce session is required\b/i.test(e||"")}function pZ(e){if(!e)return null;const t=e.snapshot;if(e.phase!=="ready"){if(t?.state.ownershipMode==="browser-gateway"&&e.phase!=="error")return null;const ge=e.phase==="error",je=W_(e.errorMessage);return{header:{actionable:!0,status:ge?"attention":"syncing",syncEnabledLabel:"unknown",summary:ge?"The shared sync coordinator status is unavailable.":"Reading shared sync coordinator status.",recommendedAction:ge?je?"Sign out and sign back in, then retry sync.":"Retry sync. If the coordinator remains unavailable, restart the local server.":"Wait for the coordinator status check to finish.",lastError:e.errorMessage||(ge?"Coordinator status unavailable.":"None")},pendingLocalChanges:"Unknown",incomingCloudChanges:"Not checked",stage:ge?"unavailable":"checking coordinator",lastPullAt:null,lastPushAt:null,lastSyncedAt:null,busy:e.phase==="attaching",repairBusy:!1,diagnostics:[{label:"Coordinator",value:e.errorMessage||e.phase}]}}if(!t||t.state.ownershipMode!=="server")return null;const r=t.workspace,n=r?.runner||null,s=n?.checkpoint?.checkpoint||null,i=r?.outbox||null,l=i?.operationStates,c=l?.stale||0,d=l?.blocked??i?.blocked??0,f=l?.retryScheduled||0,p=!!(i?.recovery&&i.recovery.state!=="completed"),g=i?.attachmentApplyObligations?.open||0,h=t.credential.status!=="ready",y=t.state.transitionState!=="idle",k=!n||!n.running||!n.acceptingWork||!s,w=s?.controlState==="error"||!!s?.lastError,S=s?.controlState==="retry-wait"||f>0,b=t.permits.recoveryObligations,v=s?.pendingV2Push||null,T=v?.lastBatchProgress||null,R=Math.max(0,(v?.frozenPayload.changes.length||0)-(T?.completedChanges||0)),P=!!(T&&(T.failureDomain==="content"||T.failureDomain==="mixed")&&R>0),N=!!(s?.syncEnabled&&s.syncPhase==="attach-cloud"&&!s.lastPullAt),I=!!(n?.queuedCommandCount||["starting","pulling","pushing","repairing","stopping"].includes(s?.controlState||"")||(l?.inFlight??i?.inFlight??0)>0),$=I||(i?.pending||0)>0,j=P&&!I,x=I,V=s?.controlState==="repairing";let U="healthy",ne="Sync is healthy.",L="No action needed.",ie=s?.lastError||"None";if(h)U="attention",ne="Sync is paused because the coordinator credential is unavailable.",L="Sign in again, then retry sync.";else if(y)U="syncing",ne="Sync ownership is changing safely.",L="Wait for the coordinator transition to finish.";else if(k)U="attention",ne="The shared sync runner is unavailable.",L="Retry sync. If the runner does not recover, restart the local server.";else if(g>0)U="attention",ne=`${g} incoming attachment ${g===1?"change is":"changes are"} waiting for content.`,L=s&&!s.syncEnabled?"Turn on sync to resume automatic attachment hydration.":"Wait for the scheduled attachment hydration retry.",ie=i?.attachmentApplyObligations?.lastError||ie;else if(b>0||d>0||c>0||p)U="attention",ne="Durable local changes need reconciliation.",L=s&&!s.syncEnabled?"Turn on sync, then press Repair to reconcile and replay supported changes.":"Press Repair to reconcile and replay supported changes.";else if(j){U="attention";const ge=T.failureDomain==="content"?"content":"push";ne=`${T.failedChangeCount} ${ge} ${T.failedChangeCount===1?"change is":"changes are"} waiting to retry; ${R} total push ${R===1?"change remains":"changes remain"}.`,L=s&&!s.syncEnabled?"Turn on sync to resume the bounded content retry.":"Wait for the scheduled content retry, or press Retry now."}else s&&!s.syncEnabled?(U="off",ne="Workspace sync is turned off.",L="Turn on sync when you are ready to connect this workspace.",ie="None"):w&&!I?(U="attention",ne=s?.lastError||"The shared sync runner reported an error.",L="Press Retry now. If the same issue returns, press Repair."):S?(U="attention",ne="Sync is waiting for a scheduled retry.",L="Wait for the retry, or press Retry now."):N?(U="attention",ne="The initial cloud baseline has not completed.",L="Keep sync enabled until the first cloud check completes."):$&&(U="syncing",ne="The shared sync runner is processing workspace changes.",L="Wait for the current transfer to finish.");const J=s?.lastPullAt?s.controlState==="pulling"?"Checking — total unknown":"No known backlog at last check":s?.controlState==="pulling"?"Checking — total unknown":"Not checked",ue=i?i.activeDepth+R:v?R:"Unknown",oe=s?.controlState||"unavailable";return{header:{actionable:!0,status:U,syncEnabledLabel:s?.syncEnabled?"yes":"no",summary:ne,recommendedAction:L,lastError:ie},pendingLocalChanges:ue,incomingCloudChanges:J,stage:oe,lastPullAt:s?.lastPullAt||null,lastPushAt:s?.lastPushAt||null,lastSyncedAt:s?.lastSyncedAt||null,busy:x,repairBusy:V,diagnostics:[{label:"Coordinator",value:`Generation ${t.state.coordinatorGeneration}; server-owned`},{label:"Durable outbox",value:i?`${l?.pending??i.pending} pending, ${f} retry scheduled, ${l?.inFlight??i.inFlight} in flight, ${c} stale, ${d} blocked`:"Unavailable"},{label:"Recovery obligations",value:String(b)},{label:"Attachment apply obligations",value:i?.attachmentApplyObligations?`${i.attachmentApplyObligations.open} open, ${i.attachmentApplyObligations.due} due, ${i.attachmentApplyObligations.totalAttempts} attempts`:"Unavailable"},{label:"Content push backlog",value:P?`${T.failedChangeCount} blocked ${T.failureDomain==="content"?"content":"push"} ${T.failedChangeCount===1?"change":"changes"}; ${R} total push ${R===1?"change remains":"changes remain"}; ${T.completedBatches}/${T.totalBatches} batches settled`:"None"},{label:"Oldest actionable change",value:i?.oldestActionableAt||"None"},{label:"Local data version",value:String(t.state.localDataVersion)}]}}function fZ(e){switch(e){case"auth-required":return{summary:"Sync is paused until you sign in again.",recommendedAction:"Sign in, then press Sync to retry."};case"attach-cloud":return{summary:"This workspace still needs its first cloud pull before local pushes can run.",recommendedAction:"Keep this window open for the first cloud pull. If it seems stuck, press Repair."};case"provision-local":return{summary:"This workspace is still doing its first cloud upload before normal pulls can run.",recommendedAction:"Keep this window open until the first cloud upload finishes."};case"repair-active":return{summary:"Repair is already running for this workspace.",recommendedAction:"Wait for repair to finish before retrying sync."};case"retry-pending":return{summary:"Sync hit a temporary problem and is waiting for its scheduled retry.",recommendedAction:"Wait for the automatic retry, or press Sync to retry now."};case"lease-held":return{summary:"Another local window is already syncing this workspace.",recommendedAction:"Use a single local window for sync, or close the other syncing window."};case"invalid-workspace":return{summary:"Workspace setup is required before sync can run.",recommendedAction:"Open or create a named workspace before retrying sync."};case"cloud-auth-unconfigured":return{summary:"Cloud sync is unavailable because cloud authentication is not configured.",recommendedAction:"Configure cloud authentication before turning on sync."};case"runtime-not-local":return{summary:"Workspace sync controls are only available in the local runtime.",recommendedAction:"Open this workspace in the local app to manage sync."};case"sync-disabled":return{summary:"Workspace sync is currently turned off.",recommendedAction:"Turn on sync when you are ready to connect this workspace to cloud."};default:return null}}function mZ(e){const t=e.runtimeMode==="local"&&e.isAuthenticated;if(t){const r=Math.max(0,Number(e.coordinatorRecoveryObligations||0)),n=fZ(e.retryBlockedReason||e.pullBlockedReason||e.pushBlockedReason||null);return r>0&&e.retryBlockedReason!=="auth-required"&&e.pullBlockedReason!=="auth-required"&&e.pushBlockedReason!=="auth-required"&&e.retryBlockedReason!=="repair-active"&&e.pullBlockedReason!=="repair-active"&&e.pushBlockedReason!=="repair-active"?{actionable:t,status:"attention",syncEnabledLabel:e.workspaceCloudSyncEnabled?"yes":"no",summary:`${r} durable sync recovery obligation${r===1?"":"s"} remain.`,recommendedAction:e.workspaceCloudSyncEnabled?"Press Repair to reconcile the durable sync ledger.":"Turn on sync, then press Repair to reconcile the durable sync ledger.",lastError:e.workspaceSyncError}:{actionable:t,status:e.workspaceSyncStatus,syncEnabledLabel:e.workspaceCloudSyncEnabled?"yes":"no",summary:n?.summary||e.workspaceSyncSummary,recommendedAction:n?.recommendedAction||e.workspaceSyncRecommendedAction,lastError:e.workspaceSyncError}}return{actionable:t,status:"off",syncEnabledLabel:"no",summary:"Sign in to enable workspace sync controls on this device.",recommendedAction:"Sign in to manage workspace sync for this workspace.",lastError:"Sign in to enable workspace sync controls on this device."}}function gZ({isOpen:e,theme:t,currentWorkspaceLabel:r,syncStatus:n,syncStatusMeta:s,workspaceCloudSyncEnabled:i,syncControlBusy:l,canManageWorkspaceSync:c,workspaceSyncSummary:d,workspaceSyncRecommendedAction:f,workspaceSyncRepairBusy:p,referenceMismatchCount:g,syncStageLabel:h,workspaceSyncPendingChanges:y,incomingCloudChanges:k,formattedLastSyncTime:w,formattedLastPullTime:S,formattedLastPushTime:b,syncLastError:v,activeReferenceMismatchSummaries:T,syncDiagnosticsSummary:R,syncEventRows:P,syncEventsListRef:N,workspaceSyncRepairQueued:I,workspaceSyncBusy:$,workspaceSyncCopied:j,coordinatorOwnershipMode:x,coordinatorOwnershipTransferBusy:V,coordinatorOwnershipTransferDisabled:U,onClose:ne,onToggleWorkspaceSync:L,onRepairSync:ie,onCopyReport:J,onRetrySync:ue,onTransferCoordinatorOwnership:oe}){const[ge,je]=o.useState("all");o.useEffect(()=>{e&&je("all")},[e]);const qe=n==="attention",Ye=p?g>0?`Repair is reconciling cloud state, including ${g} reference mismatch${g===1?"":"es"}.`:"Repair is reconciling workspace state from the cloud.":qe&&v!=="None"?v:qe?d:"No active issue.",he=!p&&qe&&v!=="None",ce=/\banother local taskforce process owns workspace synchronization\b/i.test(v),B=W_(v),K=i&&!ce&&!B&&(qe||$||p||I),Ae=i&&!ce&&!B&&($||qe||/\bpress sync\b/i.test(f)),re=o.useMemo(()=>ge==="issues"?P.filter(D=>D.tone==="error"):P,[ge,P]),F=a.jsxs("div",{className:jt.syncStatusFooter,children:[a.jsxs("button",{className:E.cancelBtn,onClick:J,title:"Copy the current sync manager report for support or AI troubleshooting.",children:[a.jsx(XA,{size:14}),a.jsx("span",{children:j?"Copied":"Copy Report"})]}),a.jsxs("div",{className:jt.syncStatusFooterPrimary,children:[a.jsx("button",{className:E.cancelBtn,onClick:ie,disabled:!K||p||I,title:p?"Repair is running now.":I?"Repair is queued and will start when the current sync finishes.":i?ce?"Repair is unavailable in this process. Use the Taskforce process that owns workspace synchronization.":B?"Sign out and sign back in before running Repair.":$?"Queue a repair to start automatically when the current sync finishes.":K?"Advanced recovery: clear the saved pull cursor and re-fetch cloud state from the beginning.":"Repair is available when sync needs attention.":"Turn on workspace sync before running Repair.",children:p?a.jsxs(a.Fragment,{children:[a.jsx(Hn,{size:14,className:E.spinner}),"Repairing..."]}):I?"Repair Queued":"Repair"}),a.jsx("button",{className:E.submitBtn,onClick:ue,disabled:!Ae||$,title:$?"A sync request is already running.":i?ce?"Retry is unavailable in this process. Use the Taskforce process that owns workspace synchronization.":B?"Sign out and sign back in before retrying sync.":Ae?"Retry workspace synchronization now.":"No retry is currently needed.":"Turn on workspace sync before retrying.",children:$?a.jsxs(a.Fragment,{children:[a.jsx(Hn,{size:14,className:E.spinner}),"Syncing..."]}):a.jsxs(a.Fragment,{children:[a.jsx(JA,{size:14}),"Retry now"]})})]})]});return a.jsx(Uo,{isOpen:e,onClose:ne,title:"Sync Manager",size:"mdWide",theme:t,draggable:!0,className:jt.syncStatusOverlay,footer:F,children:a.jsxs("div",{className:`${mr.form} ${jt.syncStatusModal}`,children:[a.jsxs("div",{className:jt.syncStatusTop,children:[a.jsxs("div",{className:jt.syncStatusMetaHeader,children:[a.jsx("div",{className:jt.syncStatusBadge,style:{borderColor:s.border,background:s.background,color:s.color},children:s.label}),a.jsxs("span",{className:jt.syncStatusLabel,children:["Workspace: ",a.jsx("code",{children:r})]})]}),a.jsx("label",{className:jt.syncToggle,children:a.jsxs("span",{className:[jt.syncToggleControl,i?jt.syncToggleControlEnabled:jt.syncToggleControlDisabled,l?jt.syncToggleControlBusy:"",c?"":jt.syncToggleControlBlocked].filter(Boolean).join(" "),children:[a.jsx("input",{className:jt.syncToggleInput,type:"checkbox",role:"switch","aria-label":"Enable Sync",checked:i,disabled:!c||l,onChange:D=>L(D.target.checked)}),a.jsx("span",{className:`${jt.syncToggleState} ${jt.syncToggleStateOn}`,children:"On"}),a.jsx("span",{className:`${jt.syncToggleState} ${jt.syncToggleStateOff}`,children:"Off"}),a.jsx("span",{className:jt.syncToggleThumb})]})})]}),a.jsxs("section",{className:jt.syncStatusOverview,"aria-label":"Sync status",children:[a.jsxs("div",{className:jt.syncStatusOverviewRow,children:[a.jsx("span",{className:jt.syncStatusLabel,children:"Health"}),a.jsx("span",{className:jt.syncStatusSummaryValue,children:d})]}),a.jsxs("div",{className:jt.syncStatusOverviewRow,children:[a.jsx("span",{className:jt.syncStatusLabel,children:"Next step"}),a.jsx("span",{className:jt.syncStatusSummaryValue,children:f})]}),a.jsxs("div",{className:[jt.syncStatusOverviewRow,jt.syncStatusIssueRow,he?jt.syncStatusIssueRowError:""].filter(Boolean).join(" "),children:[a.jsxs("span",{className:jt.syncStatusLabel,children:[he?a.jsx(Bd,{size:12}):null,"Current issue"]}),a.jsx("span",{className:he?jt.syncStatusValueError:jt.syncStatusValueMuted,children:Ye})]})]}),a.jsxs("div",{className:jt.syncStatusKeyMetrics,children:[a.jsxs("div",{className:jt.syncStatusCompactItem,children:[a.jsx("span",{className:jt.syncStatusLabel,children:"Outgoing local changes"}),a.jsx("span",{className:jt.syncStatusValue,children:y})]}),a.jsxs("div",{className:jt.syncStatusCompactItem,children:[a.jsx("span",{className:jt.syncStatusLabel,children:"Incoming cloud changes"}),a.jsx("span",{className:jt.syncStatusValue,children:k})]}),a.jsxs("div",{className:jt.syncStatusCompactItem,children:[a.jsx("span",{className:jt.syncStatusLabel,children:"Last cloud check"}),a.jsx("span",{className:jt.syncStatusValue,children:S})]})]}),a.jsxs("details",{className:jt.syncStatusAdvanced,children:[a.jsxs("summary",{children:[a.jsx("span",{children:"Advanced diagnostics"}),a.jsx(Ud,{size:16,"aria-hidden":"true"})]}),a.jsxs("div",{className:jt.syncStatusAdvancedContent,children:[a.jsxs("div",{className:jt.syncStatusCompactGrid,children:[a.jsxs("div",{className:jt.syncStatusCompactItem,children:[a.jsx("span",{className:jt.syncStatusLabel,children:"Stage"}),a.jsx("span",{className:jt.syncStatusValue,children:h})]}),a.jsxs("div",{className:jt.syncStatusCompactItem,children:[a.jsx("span",{className:jt.syncStatusLabel,children:"Last upload"}),a.jsx("span",{className:jt.syncStatusValue,children:b})]}),a.jsxs("div",{className:jt.syncStatusCompactItem,children:[a.jsx("span",{className:jt.syncStatusLabel,children:"Last successful transfer"}),a.jsx("span",{className:jt.syncStatusValue,children:w})]})]}),a.jsx("div",{className:jt.syncStatusDiagnosticsList,children:R.map(D=>a.jsxs("div",{className:jt.syncStatusDiagnosticRow,children:[a.jsx("span",{className:jt.syncStatusLabel,children:D.label}),a.jsx("span",{className:jt.syncStatusValue,children:D.value})]},D.label))}),x?a.jsxs("div",{className:jt.syncStatusOwnershipControl,children:[a.jsxs("div",{children:[a.jsx("span",{className:jt.syncStatusLabel,children:"Sync coordinator"}),a.jsx("span",{className:jt.syncStatusValue,children:x==="server"?"Local server owns background synchronization.":"This browser owns background synchronization."})]}),a.jsx("button",{className:E.cancelBtn,type:"button",onClick:oe,disabled:V||U,title:V?"Sync ownership is transferring.":U?"Finish active sync or recovery work before transferring ownership.":x==="server"?"Return background synchronization to this browser.":"Move background synchronization to the local Taskforce server.",children:V?a.jsxs(a.Fragment,{children:[a.jsx(Hn,{size:14,className:E.spinner}),"Transferring..."]}):x==="server"?"Use browser sync":"Use server sync"})]}):null,g>0&&a.jsxs("div",{className:jt.syncStatusMismatchPanel,children:[a.jsxs("div",{className:jt.syncStatusPanelHeader,children:[a.jsx("span",{className:jt.syncStatusLabel,children:"Identifier integrity"}),a.jsxs("span",{className:jt.syncStatusPanelMeta,children:[g," mismatch",g===1?"":"es"," detected"]})]}),a.jsx("span",{className:jt.syncStatusValue,children:"Cloud-backed sync preserved the incoming cloud reference and renumbered the displaced local item."}),T.map(D=>a.jsxs("div",{className:jt.syncStatusMismatchItem,children:[a.jsx("span",{className:jt.syncStatusValue,children:D.pathLabel}),D.refsLabel?a.jsx("span",{className:jt.syncStatusPanelMeta,children:D.refsLabel}):null]},D.key))]})]})]}),a.jsxs("section",{className:jt.syncStatusEventsPanel,"aria-label":"Recent sync events",children:[a.jsxs("div",{className:jt.syncStatusPanelHeader,children:[a.jsx("span",{className:jt.syncStatusLabel,children:"Recent events"}),a.jsxs("div",{className:jt.syncStatusEventFilters,"aria-label":"Filter recent events",children:[a.jsx("button",{type:"button",className:ge==="all"?jt.syncStatusEventFilterActive:"","aria-pressed":ge==="all",onClick:()=>je("all"),children:"All"}),a.jsx("button",{type:"button",className:ge==="issues"?jt.syncStatusEventFilterActive:"","aria-pressed":ge==="issues",onClick:()=>je("issues"),children:"Issues"})]})]}),a.jsx("div",{ref:N,className:jt.syncStatusEventsList,children:re.length>0?re.map(D=>a.jsx("div",{className:[jt.syncStatusEventItem,D.tone==="error"?jt.syncStatusEventItemError:"",D.tone==="muted"?jt.syncStatusEventItemMuted:""].filter(Boolean).join(" "),children:a.jsx("span",{className:jt.syncStatusEventLine,children:D.text})},D.key)):a.jsx("div",{className:`${jt.syncStatusEventItem} ${jt.syncStatusEventItemMuted}`,children:a.jsx("span",{className:jt.syncStatusEventLine,children:"No issues in recent events."})})})]})]})})}function hZ({isOpen:e,theme:t,teamPlanMode:r,teamMgmtError:n,teamManagementTab:s,teamUsersLoading:i,teamUsers:l,teamActionBusyUserId:c,teamInviteFeedback:d,teamInviteEmail:f,teamInviteRole:p,teamInvitePermissionMode:g,teamInviteBusy:h,pendingInvites:y,teamAuditLoading:k,teamAuditEvents:w,teamAuditPage:S,teamAuditPages:b,teamAuditHasMore:v,onClose:T,onOpenMembersTab:R,onOpenInvitesTab:P,onOpenAuditTab:N,onMemberRoleChange:I,onMemberPermissionChange:$,onToggleMemberDisabled:j,onRevokeInvite:x,onRemoveMember:V,onInviteEmailChange:U,onInviteRoleChange:ne,onInvitePermissionModeChange:L,onSubmitInvite:ie,onLoadAuditPrevious:J,onLoadAuditNext:ue}){return a.jsx(Uo,{isOpen:e,onClose:T,title:"Team Management",size:"md",theme:t,draggable:!0,children:a.jsxs("div",{className:`${mr.form} ${Vr.modalBody}`,children:[r==="personal"&&a.jsx("p",{className:Xe.loginError,children:"Team management is only available in TEAM accounts."}),n&&a.jsx("p",{className:Xe.loginError,children:n}),a.jsxs("div",{className:`${E.settingsTabs} tf-scrollbar tf-scrollbar--track-transparent tf-scrollbar--compact`,children:[a.jsx("button",{className:`${E.settingsTabBtn} ${s==="members"?E.settingsTabBtnActive:""}`,onClick:R,children:"Members"}),a.jsx("button",{className:`${E.settingsTabBtn} ${s==="invites"?E.settingsTabBtnActive:""}`,onClick:P,children:"Invites"}),a.jsx("button",{className:`${E.settingsTabBtn} ${s==="audit"?E.settingsTabBtnActive:""}`,onClick:N,children:"Audit Log"})]}),s==="members"&&a.jsxs("div",{className:fr.accountHubCard,children:[i&&a.jsx("p",{className:Vr.mutedText,children:"Loading members..."}),!i&&l.length===0&&a.jsx("p",{className:Vr.mutedText,children:"No users found."}),!i&&l.map(oe=>a.jsxs("div",{className:Vr.memberRow,children:[a.jsx("div",{className:Vr.memberTitle,children:oe.displayName||oe.email}),a.jsxs("div",{className:fr.accountMenuMeta,children:[oe.email," · ",oe.status,oe.disabled?" · deactivated":""]}),a.jsxs("div",{className:Vr.memberActions,children:[a.jsxs("select",{className:`${E.input} ${Vr.selectRole}`,value:oe.role,onChange:ge=>I(oe.userId,ge.target.value),disabled:c===oe.userId,children:[a.jsx("option",{value:"owner",children:"Owner"}),a.jsx("option",{value:"admin",children:"Admin"}),a.jsx("option",{value:"member",children:"Member"})]}),oe.role==="member"&&a.jsxs("select",{className:`${E.input} ${Vr.selectPermission}`,value:oe.permissionMode,onChange:ge=>$(oe.userId,ge.target.value),disabled:c===oe.userId,children:[a.jsx("option",{value:"read-write",children:"Read / Write"}),a.jsx("option",{value:"read-only",children:"Read Only"})]}),a.jsx("button",{className:E.cancelBtn,disabled:c===oe.userId,onClick:()=>j(oe.userId,!oe.disabled),children:oe.disabled?"Reactivate":"Deactivate"}),oe.status==="invited"&&a.jsx("button",{className:E.cancelBtn,disabled:c===oe.userId,onClick:()=>x(oe.userId),children:"Revoke Invite"}),a.jsx("button",{className:E.cancelBtn,disabled:c===oe.userId,onClick:()=>V(oe.userId),children:"Remove"})]})]},oe.userId))]}),s==="invites"&&a.jsxs("div",{className:fr.accountHubCard,children:[d&&a.jsx("p",{className:Vr.sectionText,children:d}),a.jsxs("div",{className:E.pathInputGroup,children:[a.jsx("label",{className:`${E.label} ${Vr.labelFixed}`,children:"Email"}),a.jsx("input",{className:E.input,value:f,onChange:oe=>U(oe.target.value),placeholder:"name@example.com"})]}),a.jsxs("div",{className:E.pathInputGroup,children:[a.jsx("label",{className:`${E.label} ${Vr.labelFixed}`,children:"Role"}),a.jsxs("select",{className:`${E.input} ${Vr.selectRole}`,value:p,onChange:oe=>ne(oe.target.value==="admin"?"admin":"member"),children:[a.jsx("option",{value:"member",children:"Member"}),a.jsx("option",{value:"admin",children:"Admin"})]}),p==="member"&&a.jsxs("select",{className:`${E.input} ${Vr.selectPermission}`,value:g,onChange:oe=>L(oe.target.value==="read-only"?"read-only":"read-write"),children:[a.jsx("option",{value:"read-write",children:"Read / Write"}),a.jsx("option",{value:"read-only",children:"Read Only"})]}),a.jsx("button",{className:E.submitBtn,disabled:h||!f.trim()||r!=="team",onClick:ie,children:h?"Sending...":"Send Invite"})]}),a.jsxs("div",{className:Vr.inviteRow,children:[a.jsx("div",{className:Vr.listHeading,children:"Pending Invites"}),y.length===0&&a.jsx("p",{className:Vr.mutedText,children:"No pending invites."}),y.map(oe=>a.jsxs("div",{className:Vr.memberRow,children:[a.jsx("div",{className:Vr.memberTitle,children:oe.displayName||oe.email}),a.jsxs("div",{className:fr.accountMenuMeta,children:[oe.email," · ",oe.role]})]},oe.userId))]})]}),s==="audit"&&a.jsxs("div",{className:fr.accountHubCard,children:[k&&a.jsx("p",{className:Vr.mutedText,children:"Loading audit entries..."}),!k&&w.length===0&&a.jsx("p",{className:Vr.mutedText,children:"No audit events for this workspace."}),!k&&a.jsx("div",{className:Vr.auditList,children:w.map(oe=>a.jsxs("div",{className:Vr.memberRow,children:[a.jsx("div",{className:fr.accountMenuMeta,children:new Date(oe.createdAt).toLocaleString()}),a.jsx("div",{className:Vr.memberTitle,children:oe.action}),a.jsxs("div",{className:fr.accountMenuMeta,children:[oe.actorUserId," (",oe.actorRole,")"]})]},oe.id))}),a.jsxs("div",{className:Vr.auditPager,children:[a.jsx("button",{className:E.cancelBtn,disabled:k||S===0,onClick:J,children:"Previous"}),a.jsxs("span",{className:fr.accountMenuMeta,children:["Page ",S+1," of ",b]}),a.jsx("button",{className:E.cancelBtn,disabled:k||!v||S+1>=b,onClick:ue,children:"Next"})]})]}),a.jsx("div",{className:`${mr.formActions} ${Vr.modalActionsEnd}`,children:a.jsx("button",{className:E.cancelBtn,onClick:T,children:"Close"})})]})})}const yZ="_title_j8q8h_1",kZ="_message_j8q8h_8",vZ="_actions_j8q8h_14",rv={title:yZ,message:kZ,actions:vZ};function wZ({isOpen:e,onKeepEditing:t,onDiscard:r,title:n="Unsaved Changes",message:s="Discard your unsaved workflow changes?",theme:i}){return a.jsx(Uo,{isOpen:e,onClose:t,title:a.jsxs("span",{className:rv.title,children:[a.jsx(Bd,{size:18})," ",n]}),size:"sm",closeOnOverlayClick:!1,theme:i,footer:a.jsxs("div",{className:rv.actions,children:[a.jsx("button",{type:"button",className:"tf-button-secondary",onClick:t,"data-modal-initial-focus":!0,children:"Keep Editing"}),a.jsx("button",{type:"button",className:"tf-button-destructive",onClick:r,children:"Discard"})]}),children:a.jsx("p",{className:rv.message,children:s})})}const $_=e=>{const t=e.status||"task";return t==="done"||t==="cancelled"?"completed":t},bZ=(e,t,r)=>{if($_(e)===t)return null;const s={status:t};return t==="task"||t==="on-hold"?(s.inProgress=!1,s.readyForReview=!1,s.completed=!1,s.cancelled=!1,s.completedAt=null,s):t==="in-progress"?(s.inProgress=!0,s.readyForReview=!1,s.completed=!1,s.cancelled=!1,s.completedAt=null,s):t==="review"?(s.inProgress=!1,s.readyForReview=!0,s.completed=!1,s.cancelled=!1,s.completedAt=null,s):t==="done"||t==="completed"?(s.status="done",s.inProgress=!1,s.readyForReview=!1,s.completed=!0,s.cancelled=!1,s.completedAt=r,s):(t==="cancelled"&&(s.status="cancelled"),s)},SZ=({targetTasks:e,overTaskId:t,isBelowOverItem:r})=>{if(!t)return e.length;const n=e.findIndex(s=>s.id===t);return n<0?e.length:n+(r?1:0)},F_=(e,t=new Map)=>{const r=new Map(t);return e.forEach((n,s)=>{r.set(n.id,{...r.get(n.id)||{},orderInDay:s})}),r},Zw=e=>Array.from(e.entries()).map(([t,r])=>({taskId:t,updates:r})),U_=({sourceColumnId:e,targetColumnId:t,sourceTasks:r,updates:n})=>!e||e===t?n:F_(r,n),AZ=({activeTask:e,sourceColumnId:t,targetTasks:r,sourceTasks:n,insertAt:s})=>{const i=[...r];i.splice(s,0,e);let l=new Map;return i.forEach((c,d)=>{if(c.id===e.id){l.set(c.id,{...l.get(c.id)||{},...e.scheduledDate?{scheduledDate:null,scheduledWeekKey:null}:{},orderInDay:d});return}l.set(c.id,{...l.get(c.id)||{},orderInDay:d})}),l=U_({sourceColumnId:t,targetColumnId:"backlog",sourceTasks:n,updates:l}),Zw(l)},CZ=({activeTask:e,targetTasks:t,insertAt:r})=>{const n=[...t];return n.splice(r,0,e),Zw(F_(n))},IZ=({activeTask:e,sourceColumnId:t,targetColumnId:r,targetTasks:n,sourceTasks:s,insertAt:i,scheduledDate:l,scheduledWeekKey:c})=>{const d=[...n];d.splice(i,0,e);let f=new Map;return d.forEach((p,g)=>{if(p.id===e.id){f.set(p.id,{...f.get(p.id)||{},scheduledDate:l,scheduledWeekKey:c,orderInDay:g});return}f.set(p.id,{...f.get(p.id)||{},orderInDay:g})}),f=U_({sourceColumnId:t,targetColumnId:r,sourceTasks:s,updates:f}),Zw(f)},_Z=({activeTask:e,sourceColumnId:t,targetColumnId:r,targetTasks:n,sourceTasks:s,overTaskId:i,isBelowOverItem:l,scheduleDates:c,parseToIsoWeekKey:d,todayDate:f})=>{const p=["mon","tue","wed","thu","fri","sat","sun"];if(!(r==="backlog"||r==="expired"||p.includes(r)))return null;const h=SZ({targetTasks:n,overTaskId:i,isBelowOverItem:l});if(r==="expired")return t!=="expired"?null:{kind:"updates",updates:CZ({activeTask:e,targetTasks:n,insertAt:h})};if(r==="backlog")return{kind:"updates",updates:AZ({activeTask:e,sourceColumnId:t,targetTasks:n,sourceTasks:s,insertAt:h})};if(!p.includes(r))return null;const y=c[r];return y?!(e.status==="done"||e.status==="cancelled")&&y<f?{kind:"blocked",reason:"Only completed work can be scheduled in the past."}:{kind:"updates",updates:IZ({activeTask:e,sourceColumnId:t,targetColumnId:r,targetTasks:n,sourceTasks:s,insertAt:h,scheduledDate:y,scheduledWeekKey:d(y)}),selectedDate:y}:null},vh="expired::",TZ=new Map,xZ=new Set,RZ=250,PZ=24,th=180,fA=8,mA=600,gA=720;function EZ({tasks:e,enabled:t,scrollRef:r,initialScrollTop:n,onScrollTopChange:s}){const i=o.useRef(new Map),[l,c]=o.useState(0),[d,f]=o.useState(()=>({scrollTop:n,height:gA})),p=o.useCallback((y,k)=>{if(!Number.isFinite(k)||k<=0)return;const w=Math.ceil(k),S=i.current.get(y)??th;if(S===w)return;const b=e.findIndex(N=>N.id===y);let v=0;for(let N=0;N<b;N+=1)v+=i.current.get(e[N].id)??th,v+=fA;i.current.set(y,w);const T=r.current,R=w-S,P=v+S;if(T&&b>=0&&P<=T.scrollTop&&R!==0){const N=Math.max(0,T.scrollTop+R);T.scrollTop=N,f(I=>({...I,scrollTop:N})),s(N)}c(N=>N+1)},[s,r,e]),g=o.useMemo(()=>{let y=0;return{rows:e.map((w,S)=>{const b={task:w,index:S,top:y},v=i.current.get(w.id)??th;return y+=v,S<e.length-1&&(y+=fA),b}),totalHeight:y}},[l,e]);o.useEffect(()=>{const y=r.current;if(!y)return;n>0&&y.scrollTop!==n&&(y.scrollTop=n);const k=(v=!1)=>{const T=Math.max(0,y.scrollTop),R=y.clientHeight||gA,P=()=>f(N=>N.scrollTop===T&&N.height===R?N:{scrollTop:T,height:R});v?o.startTransition(P):P(),s(T)},w=()=>k(!0),S=()=>k(!1);S(),y.addEventListener("scroll",w,{passive:!0});const b=typeof ResizeObserver>"u"?null:new ResizeObserver(S);return b?.observe(y),window.addEventListener("resize",S),()=>{y.removeEventListener("scroll",w),b?.disconnect(),window.removeEventListener("resize",S)}},[n,s,r]);const h=o.useMemo(()=>{if(!t)return g.rows;const y=Math.max(0,d.scrollTop-mA),k=d.scrollTop+d.height+mA;return g.rows.filter(w=>{const S=i.current.get(w.task.id)??th;return w.top+S>=y&&w.top<=k})},[t,g.rows,l,d.height,d.scrollTop]);return{measureRow:p,rows:h,totalHeight:g.totalHeight}}function NZ({tasks:e,columns:t,groupBy:r,searchQuery:n,copiedId:s,taxonomies:i,types:l,priorities:c,assigneeOptions:d=[],onUpdateTask:f,onTaskClick:p,taskReferences:g,onCopyId:h,onToggleInProgress:y,onToggleReview:k,onToggleComplete:w,onToggleCancel:S,onSetStatus:b,onArchiveTask:v,onUnarchive:T,onDelete:R,allTasks:P=[],onAddTaskToColumn:N,emptyColumnMode:I="show",filterCategories:$=[],filterTypes:j=[],filterPriorities:x=[],filterStatus:V=[],filterAssignees:U=[],filtersReady:ne=!0,scheduleFilteredTaskIds:L,categories:ie=[],compressed:J=!1,readOnlyMode:ue=null,recentlyChangedTaskIds:oe=[],scheduleDates:ge,onScheduleDaySelected:je,persistedScrollLeft:qe,onScrollLeftChange:Ye,sortBy:he="created",sortOrder:ce="desc",planningDropTargets:B=null,onAssignTaskToWorkstream:K,onAssignWorkstreamToInitiative:Ae,showTaskCardStatusLabel:re=!1,showTaskCardDescription:F=!0,showTaskCardAttachments:D=!0,showTaskCardChecklistProgress:z=!0,showTaskCardLatestActivity:we=!0,tintTaskCardActivityBackground:ke=!1,workstreams:ee=[],initiatives:Z=[],workspaceId:H=null,deletedTaskRecordByTaskId:ae=TZ,selectedDeletedRecordIds:Te=xZ,onDeletedSelectionChange:Le}){const[Ue,ft]=o.useState(null),[He,Fe]=o.useState(!1),[me,ve]=o.useState(!1),ot=o.useMemo(()=>new Set(oe),[oe]),Oe=o.useMemo(()=>new Map(ee.map(Me=>[Me.id,Me])),[ee]),A=o.useMemo(()=>new Map(Z.map(Me=>[Me.id,Me])),[Z]),G=o.useCallback(Me=>{const rt=Me.workstreamId&&Oe.get(Me.workstreamId)||null,pt=rt?.initiativeId&&A.get(rt.initiativeId)||null;return{taskWorkstream:rt,taskInitiative:pt}},[A,Oe]),_e=o.useMemo(()=>new Set(e.map(Me=>Me.id)),[e]),Ne=o.useCallback(Me=>Me.startsWith(vh)?Me.slice(vh.length):Me,[]),Ee=o.useCallback(Me=>_e.has(Ne(Me)),[_e,Ne]),fe=o.useMemo(()=>new Set(L||[]),[L]),nt=o.useRef(null),q=o.useRef(new Map),be=o.useCallback((Me,rt)=>{q.current.set(Me,rt)},[]),Ve=o.useCallback(Me=>{const rt=Me?.data?.current||{},pt=String(Me?.id||"");let ht=String(rt.taskId||""),At=String(rt.workstreamId||"");!ht&&pt&&Ee(pt)&&(ht=Ne(pt)),!At&&pt.startsWith("planning-workstream:")&&(At=pt.slice(20));let Ft=String(rt.type||"");return Ft||(ht?Ft="task-card":At&&(Ft="planning-workstream")),{activeId:pt,type:Ft,taskId:ht,workstreamId:At}},[Ne,Ee]),Ce=ow(Qf(iw,{activationConstraint:{distance:10}}),Qf(aC,{coordinateGetter:nC})),xe=$_,Ie=o.useMemo(()=>{const Me=new Date,rt=Me.getFullYear(),pt=String(Me.getMonth()+1).padStart(2,"0"),ht=String(Me.getDate()).padStart(2,"0");return`${rt}-${pt}-${ht}`},[]),de=o.useMemo(()=>{const Me=ht=>{const At=ht.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!At)return null;const Ft=new Date(Date.UTC(Number(At[1]),Number(At[2])-1,Number(At[3]))),Tt=Ft.getUTCDay()||7;Ft.setUTCDate(Ft.getUTCDate()+4-Tt);const $t=new Date(Date.UTC(Ft.getUTCFullYear(),0,1)),Ct=Math.ceil(((Ft.getTime()-$t.getTime())/864e5+1)/7);return`${Ft.getUTCFullYear()}-W${String(Ct).padStart(2,"0")}`};return{dates:{...(()=>{const ht=new Date,At=ht.getDay(),Ft=At===0?-6:1-At,Tt=new Date(ht);Tt.setDate(ht.getDate()+Ft);const $t=Ot=>{const vr=Ot.getFullYear(),xt=String(Ot.getMonth()+1).padStart(2,"0"),ct=String(Ot.getDate()).padStart(2,"0");return`${vr}-${xt}-${ct}`},Ct={mon:"",tue:"",wed:"",thu:"",fri:"",sat:"",sun:""};return["mon","tue","wed","thu","fri","sat","sun"].forEach((Ot,vr)=>{const xt=new Date(Tt);xt.setDate(Tt.getDate()+vr),Ct[Ot]=$t(xt)}),Ct})(),...ge||{}},parseToIsoWeekKey:Me}},[ge]),Be=Me=>{const rt=Me.scheduledDate||null;return rt?new Map([[de.dates.mon,"mon"],[de.dates.tue,"tue"],[de.dates.wed,"wed"],[de.dates.thu,"thu"],[de.dates.fri,"fri"],[de.dates.sat,"sat"],[de.dates.sun,"sun"]]).get(rt)||"__offweek":"backlog"},at=o.useMemo(()=>{if(r==="schedule")return[];const Me=new Set(t.map(At=>String(At.value))),rt=new Set(t.map(At=>At.label)),pt=[],ht=At=>{const Ft=r==="status"?xe(At):At[r],Tt=String(Ft??"");if(!Tt||Me.has(Tt)||rt.has(Tt))return null;if(r==="category"){const $t=ie.find(Ct=>Ct.value===Tt||Ct.label===Tt);return{value:Tt,label:$t?.label||Tt,icon:$t?.icon||"Folder",color:$t?.color}}if(r==="type"){const $t=l?.find(Ct=>Ct.value===Tt||Ct.label===Tt);return{value:Tt,label:$t?.label||Tt,icon:$t?.icon||"CheckSquare",color:$t?.color}}if(r==="priority"){const $t=c?.find(Ct=>Number(Ct.value)===Number(Tt));return{value:Number.isFinite(Number(Tt))?Number(Tt):Tt,label:$t?.label||Tt,icon:$t?.icon||"Flag",color:$t?.color}}if(r==="complexity")return{value:Number.isFinite(Number(Tt))?Number(Tt):Tt,label:Tt,icon:"Gauge"};if(r==="status")return{value:Tt,label:Tt,icon:"Circle"};if(r==="assignee"){const $t=d.find(Ct=>Ct.value===Tt);return{value:Tt,label:$t?.label||Tt,icon:$t?.icon==="HelpCircle"?"Circle":$t?.icon,color:$t?.color}}return{value:Tt,label:Tt}};for(const At of e){const Ft=ht(At);Ft&&(pt.push(Ft),Me.add(String(Ft.value)),rt.add(Ft.label))}return pt},[d,ie,r,t,c,e,l]),Qe=o.useMemo(()=>[...t,...at],[at,t]),Ze=o.useMemo(()=>{const Me=new Map;for(const rt of Qe)Me.set(String(rt.value),rt),Me.has(rt.label)||Me.set(rt.label,rt);return Me},[Qe]),Pe=o.useMemo(()=>{const Me={};return Qe.forEach(pt=>{Me[String(pt.value)]=0}),(P.length>0?P:e).forEach(pt=>{let ht="";if(r==="status")ht=xe(pt);else if(r==="schedule")ht=Be(pt);else{const Ft=pt[r];ht=String(Ft??"")}const At=Ze.get(ht);if(At&&Me[String(At.value)]++,r==="schedule"){const Ft=pt.status==="done"||pt.status==="cancelled";pt.scheduledDate&&!Ft&&pt.scheduledDate<Ie&&Ze.has("expired")&&(Me.expired=(Me.expired||0)+1)}}),Me},[P,e,Qe,r,Ze,Ie]),gt=o.useMemo(()=>{const Me={};if(Qe.forEach(rt=>{Me[String(rt.value)]=[]}),e.forEach(rt=>{let pt="";if(r==="status")pt=xe(rt);else if(r==="schedule")pt=Be(rt);else{const At=rt[r];pt=String(At??"")}const ht=Ze.get(pt);if(ht){if(r==="schedule"&&String(ht.value)==="backlog"&&!fe.has(rt.id))return;Me[String(ht.value)].push(rt)}if(r==="schedule"){const At=rt.status==="done"||rt.status==="cancelled";rt.scheduledDate&&!At&&rt.scheduledDate<Ie&&Me.expired&&Me.expired.push(rt)}}),r==="schedule"){const rt=(ht,At)=>{const Ft=typeof ht.orderInDay=="number"?ht.orderInDay:Number.MAX_SAFE_INTEGER,Tt=typeof At.orderInDay=="number"?At.orderInDay:Number.MAX_SAFE_INTEGER;return Ft!==Tt?Ft-Tt:String(ht.createdAt||"").localeCompare(String(At.createdAt||""))},pt=(ht,At)=>Wh(ht,At,he,ce,i);Object.keys(Me).forEach(ht=>{if(ht==="backlog"||ht==="expired"){Me[ht].sort(pt);return}Me[ht].sort(rt)})}return Me},[e,Qe,r,Ze,fe,Ie,he,ce,i]),it=Ue?Ne(Ue):null,De=it?e.find(Me=>Me.id===it):null,bt=e.length>RZ&&r!=="schedule"&&!ue,Et=o.useRef(null),mt=o.useRef(null),qt=o.useRef({pointerId:null,startX:0,startY:0,startScrollLeft:0,didPan:!1}),et=o.useRef(-1),Y=(Me,rt)=>ne?r==="category"?!$.includes(String(Me)):r==="type"?!j.includes(String(Me)):r==="priority"?!x.some(pt=>Number(pt)===Number(Me)):r==="status"?String(Me)==="completed"?!V.includes("done")&&!V.includes("cancelled"):!V.includes(String(Me)):r==="assignee"?!U.includes(String(Me)):!1:!1,le=o.useMemo(()=>{let ht=0;return Qe.forEach((At,Ft)=>{const Tt=gt[String(At.value)]||[],$t=Y(At.value,At.label),Ct=r!=="schedule"&&I==="hide"&&Tt.length===0;if($t||Ct)return;const Wt=I==="collapse"&&Tt.length===0;ht+=Wt?72:320,ht+=4}),ht},[Qe,gt,I,r,$,j,x,V,U,ne]),Ke=o.useCallback(Me=>{if(!Ye)return;const rt=Math.max(0,Math.round(Me));rt!==et.current&&(et.current=rt,Ye(rt))},[Ye]);o.useEffect(()=>{const Me=Et.current,rt=mt.current;if(!Me||!rt)return;let pt=!1,ht=!1;const At=()=>{!Me||ht||(pt=!0,Me.scrollLeft=rt.scrollLeft,Ke(rt.scrollLeft),setTimeout(()=>pt=!1,0))},Ft=()=>{!rt||pt||(ht=!0,rt.scrollLeft=Me.scrollLeft,Ke(Me.scrollLeft),setTimeout(()=>ht=!1,0))};return rt.addEventListener("scroll",At),Me.addEventListener("scroll",Ft),()=>{rt.removeEventListener("scroll",At),Me.removeEventListener("scroll",Ft)}},[Ke]);const It=o.useRef(!1);o.useEffect(()=>{if(It.current)return;if(typeof qe!="number"||!Number.isFinite(qe)){It.current=!0;return}const Me=Et.current,rt=mt.current;if(!Me||!rt)return;const pt=Math.max(0,Me.scrollWidth-Me.clientWidth),ht=Math.min(Math.max(0,qe),pt);Me.scrollLeft=ht,rt.scrollLeft=ht,It.current=!0},[qe,le]),o.useEffect(()=>{const Me=()=>{const rt=Et.current;if(!rt){ve(!1);return}ve(rt.scrollWidth>rt.clientWidth+4)};return Me(),window.addEventListener("resize",Me),()=>{window.removeEventListener("resize",Me)}},[le,Qe.length,gt]),o.useEffect(()=>{const Me=pt=>{const ht=qt.current;if(ht.pointerId===null||ht.pointerId!==pt.pointerId)return;const At=pt.clientX-ht.startX,Ft=pt.clientY-ht.startY;if(!ht.didPan){if(Math.abs(At)<7||Math.abs(At)<Math.abs(Ft))return;ht.didPan=!0,Fe(!0),document.body.style.userSelect="none"}const Tt=ht.startScrollLeft-At;Et.current&&(Et.current.scrollLeft=Tt),mt.current&&(mt.current.scrollLeft=Tt),pt.preventDefault()},rt=()=>{const pt=qt.current;pt.pointerId!==null&&(pt.pointerId=null,pt.didPan=!1,He&&(Fe(!1),document.body.style.userSelect=""))};return window.addEventListener("pointermove",Me),window.addEventListener("pointerup",rt),window.addEventListener("pointercancel",rt),()=>{window.removeEventListener("pointermove",Me),window.removeEventListener("pointerup",rt),window.removeEventListener("pointercancel",rt),document.body.style.userSelect=""}},[He]);const vt=Me=>{!me||Me.target?.closest('button, a, input, select, textarea, [role="button"], [data-no-header-pan="true"]')||(qt.current.pointerId=Me.pointerId,qt.current.startX=Me.clientX,qt.current.startY=Me.clientY,qt.current.startScrollLeft=Et.current?.scrollLeft||0,qt.current.didPan=!1)},Mt=Me=>{ft(Me.active.id)},gr=Me=>{const rt=Ve(Me.active),pt=String(Me.over?.data?.current?.type||"");rt.type==="task-card"&&pt.startsWith("planning-")?nt.current=`${String(Me.over?.id||"")}:${pt}`:nt.current&&(nt.current=null)},Zt=Me=>{const{active:rt,over:pt}=Me;nt.current=null,ft(null);const ht=Ve(rt),At=ht.type,Ft=String(pt?.data?.current?.type||""),Tt=ht.taskId,$t=ht.workstreamId,Ct=String(pt?.data?.current?.workstreamId||""),Wt=String(pt?.data?.current?.initiativeId||"");if(At==="task-card"&&Ft==="planning-workstream-target"&&Tt&&Ct){K?.(Tt,Ct);return}if(At==="planning-workstream"){if(Ft==="planning-initiative-target"&&$t&&Wt){Ae?.($t,Wt);return}return}const Ot=String(rt.id),vr=pt?String(pt.id):null,xt=Ne(Ot);vr&&Ne(vr);const ct=e.find(ar=>ar.id===xt);if(!ct||!vr)return;const tr=or(Ot),u=String(rt?.data?.current?.sortable?.containerId||"")||tr,pr=String(pt?.data?.current?.sortable?.containerId||"")||or(vr);if(!pr)return;const nr=Ze.get(pr)||Qe.find(ar=>String(ar.value)===pr||ar.label===pr);if(nr){if(r==="schedule"){const Bt=String(nr.value),Qr=vr&&Ee(vr)?Ne(vr):null,xr=pt?.rect,Fr=rt.rect.current.translated||rt.rect.current.initial,en=!!(xr&&Fr&&Fr.top+Fr.height/2>xr.top+xr.height/2),ln=(gt[Bt]||[]).filter(yn=>yn.id!==xt),tn=(gt[String(u)]||[]).filter(yn=>yn.id!==xt),Ge=_Z({activeTask:ct,sourceColumnId:u,targetColumnId:Bt,targetTasks:ln,sourceTasks:tn,overTaskId:Qr,isBelowOverItem:en,scheduleDates:de.dates,parseToIsoWeekKey:de.parseToIsoWeekKey,todayDate:Ie});if(!Ge)return;if(Ge.kind==="blocked"){window.alert(Ge.reason);return}Ge.updates.forEach(({taskId:yn,updates:Kr})=>f(yn,Kr)),Ge.selectedDate&&je?.(Ge.selectedDate);return}let ar=nr.value;if(r==="status"){const Bt=String(ar),Qr=bZ(ct,Bt,new Date().toISOString());Qr&&f(ct.id,Qr);return}(r==="priority"||r==="complexity")&&(ar=Number(ar));const an=ct[r];if(String(an??"")!==String(ar??"")){const Bt={[r]:ar};f(ct.id,Bt)}}},or=Me=>{if(Ze.has(Me)){const ht=Ze.get(Me);return ht?String(ht.value):Me}if(r==="schedule"&&Me.startsWith(vh))return"expired";const rt=Ne(Me),pt=e.find(ht=>ht.id===rt);if(pt){let ht="";r==="status"?ht=xe(pt):r==="schedule"?ht=Be(pt):ht=String(pt[r]??"");const At=Ze.get(ht);return At?String(At.value):null}return null},Dt={sideEffects:lx({styles:{active:{opacity:"0"}}})},lr=Me=>{try{const rt=cx(Me);if(rt.length>0){const pt=rt.find(Ct=>String(Ct.id).startsWith("planning-"));if(pt)return[pt];const ht=Me.pointerCoordinates;if(!ht)return[rt[0]];const At=rt.filter(Ct=>{const Wt=String(Ct.id);return Ee(Wt)&&Wt!==Ue});if(At.length===0){const Wt=rt.filter(xt=>{const ct=String(xt.id);return!Ee(ct)}).find(xt=>!!or(String(xt.id)))||null,Ot=Wt?or(String(Wt.id)):null,vr=(Me.droppableContainers||[]).filter(xt=>{const ct=String(xt.id);return!Ee(ct)||ct===Ue?!1:Ot?or(ct)===Ot:!0});if(vr.length>0){const xt=Db({...Me,droppableContainers:vr});if(xt.length>0)return[xt[0]]}return Wt?[Wt]:[rt[0]]}const Ft=At;let Tt=Ft[0],$t=Number.POSITIVE_INFINITY;for(const Ct of Ft){const Wt=Me.droppableRects?.get(Ct.id);if(!Wt)continue;const Ot=Wt.left+Wt.width/2,vr=Wt.top+Wt.height/2,xt=ht.x-Ot,ct=ht.y-vr,tr=xt*xt+ct*ct;tr<$t&&($t=tr,Tt=Ct)}return[Tt]}return Db(Me)}catch(rt){return console.error("[TaskKanban] collision detection error",rt),[]}},Rr=o.useCallback((Me,rt)=>f(Me.id,{assignee:rt}),[f]),Lr=o.useCallback((Me,rt)=>K?K(Me.id,rt):f(Me.id,{workstreamId:rt}),[K,f]),Dr=o.useMemo(()=>({searchQuery:n,copiedId:s,taxonomies:i,types:l,priorities:c,workspaceId:H,assigneeOptions:d,workstreams:ee,onAssigneeChange:Rr,onWorkstreamChange:Lr,onCopyId:h,onToggleInProgress:y,onToggleReview:k,onToggleComplete:w,onToggleCancel:S,onSetStatus:b,onArchiveTask:v,onUnarchive:T,onDelete:R,taskReferences:g,categories:ie,readOnlyMode:ue,resolveTaskHierarchy:G,groupBy:r,showStatusLabel:re,showDescription:F,showAttachments:D,showChecklistProgress:z,showLatestActivity:we,tintActivityBackground:ke,deletedTaskRecordByTaskId:ae,selectedDeletedRecordIds:Te,onDeletedSelectionChange:Le}),[d,ie,s,ae,r,Rr,Lr,v,h,R,Le,b,S,w,y,k,T,c,ue,G,n,Te,D,z,F,re,we,ke,g,i,l,H,ee]);return a.jsxs(cw,{sensors:Ce,collisionDetection:lr,onDragStart:Mt,onDragOver:gr,onDragEnd:Zt,onDragCancel:Me=>{nt.current=null,ft(null)},children:[B,a.jsxs("div",{className:E.kanbanWrapper,children:[a.jsx("div",{ref:mt,className:`${E.kanbanTopScroll} tf-scrollbar`,children:a.jsx("div",{className:E.kanbanTopScrollSpacer,style:{width:`${le}px`}})}),a.jsx("div",{className:E.kanbanContainer,ref:Et,children:Qe.map(Me=>{const rt=gt[String(Me.value)]||[],pt=Y(Me.value,Me.label),ht=r!=="schedule"&&I==="hide"&&rt.length===0,At=r==="schedule",Ft=At&&Qe.some(ct=>String(ct.value)==="backlog"),Tt=At&&String(Me.value)==="backlog",$t=At&&String(Me.value)==="expired",Ct=gt.backlog||[],Ot=I==="collapse"&&Ct.length===0?72:320,vr=Tt?0:$t?Ft?Ot+4:0:void 0,xt=Tt?6:$t?5:void 0;return pt||ht?null:a.jsx(jZ,{id:String(Me.value),title:Me.label,color:Me.color,icon:Me.icon,assigneeOption:r==="assignee"?d.find(ct=>String(ct.value)===String(Me.value)):void 0,tasks:rt,activeId:Ue,activeTaskId:it,totalCount:Pe[String(Me.value)],onAddTask:()=>N?.(r,Me.value),onTaskClick:p,commonCardProps:Dr,changedTaskIdSet:ot,collapseEmpty:I==="collapse",compressed:J,onHeaderPointerDown:vt,isHeaderPanning:He,headerPanEnabled:me,stickyLeft:vr,stickyZIndex:xt,isPast:!!Me.isPast,isSelected:!!Me.isSelected,isWeekend:!!Me.isWeekend,disableSorting:!1,scheduleDate:r==="schedule"?de.dates[String(Me.value)]:void 0,onScheduleDaySelected:je,virtualize:bt,initialScrollTop:q.current.get(String(Me.value))||0,onScrollTopChange:be},String(Me.value))})})]}),pc.createPortal(a.jsx(ix,{dropAnimation:Dt,children:De?(()=>{const{taskWorkstream:Me,taskInitiative:rt}=G(De);return a.jsx(lm,{task:De,taskWorkstream:Me,taskInitiative:rt,isOverlay:!0,...Dr,isArchived:De.isArchived,categories:ie,compressed:J,isRecentlyChanged:ot.has(De.id)})})():null}),document.body)]})}const jZ=te.memo(function({id:t,title:r,color:n,icon:s,assigneeOption:i,tasks:l,activeId:c=null,activeTaskId:d=null,totalCount:f,onAddTask:p,onTaskClick:g,commonCardProps:h,changedTaskIdSet:y,collapseEmpty:k,compressed:w,onHeaderPointerDown:S,isHeaderPanning:b=!1,headerPanEnabled:v=!1,stickyLeft:T,stickyZIndex:R,isPast:P=!1,isSelected:N=!1,isWeekend:I=!1,disableSorting:$=!1,scheduleDate:j,onScheduleDaySelected:x,virtualize:V=!1,initialScrollTop:U=0,onScrollTopChange:ne}){const{setNodeRef:L}=pw({id:t,data:{type:"Column"}}),ie=k&&l.length===0,J=d?l.filter(ce=>ce.id!==d):l,ue=typeof T=="number",oe=o.useRef(null),ge=V&&!$&&J.length>PZ,je=o.useCallback(ce=>{ne?.(t,ce)},[t,ne]),qe=EZ({tasks:J,enabled:ge,scrollRef:oe,initialScrollTop:U,onScrollTopChange:je}),Ye=ce=>t==="expired"?`${vh}${ce}`:ce,he=ce=>{if(!j||!x)return;const B=ce.target;B&&(B.closest('[data-task-card="true"]')||B.closest(`.${E.kanbanCardWrapper}`)||x(j))};return a.jsxs("div",{ref:L,className:`${E.kanbanColumn} ${ie?E.kanbanColumnCollapsed:""} ${ue?E.kanbanColumnSticky:""} ${P?E.kanbanColumnPast:""} ${N?E.kanbanColumnSelectedDay:""} ${I?E.kanbanColumnWeekend:""}`,style:ue?{left:`${T}px`,zIndex:R??4}:void 0,onClick:he,children:[a.jsxs("div",{className:`${E.kanbanHeader} ${v?E.kanbanHeaderDraggable:""} ${b?E.kanbanHeaderPanning:""}`,style:{borderTopColor:Jn(n)||"var(--color-purple)"},onPointerDown:S,children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",minWidth:0,overflow:"hidden"},children:[i?a.jsx(fy,{option:i,size:20}):(()=>{const ce=s&&fp[s]?fp[s]:lc,B=Jn(n)||"var(--color-purple)";return a.jsx(ce,{size:16,style:{color:B}})})(),!ie&&a.jsx("span",{style:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:r})]}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexShrink:0},children:[(!ie||f>0)&&a.jsx("span",{className:E.kanbanCount,children:ie?f:`${l.length} / ${f}`}),!h.readOnlyMode&&a.jsx("button",{className:"tf-control-icon tf-control-icon-compact",onClick:ce=>{ce.stopPropagation(),p()},title:`Add task to ${r}`,"aria-label":`Add task to ${r}`,"data-no-header-pan":"true",children:a.jsx(ci,{size:14})})]})]}),a.jsx("div",{className:E.kanbanDroppable,children:a.jsx("div",{className:`${E.kanbanDroppableScroll} ${ge?E.kanbanDroppableScrollVirtualized:""} ${E.appScrollbar} tf-scrollbar`,ref:oe,"data-kanban-column-scroll":t,children:$?J.map(ce=>a.jsx("div",{className:E.kanbanCardWrapper,children:(()=>{const{taskWorkstream:B,taskInitiative:K}=h.resolveTaskHierarchy?.(ce)||{},Ae=h.deletedTaskRecordByTaskId?.get(ce.id);return a.jsx(lm,{task:ce,taskWorkstream:B,taskInitiative:K,onClick:g,...h,isArchived:ce.isArchived,readOnlyMode:h.readOnlyMode||null,compressed:w,isRecentlyChanged:!1,selectable:!!(Ae&&h.onDeletedSelectionChange),selected:!!(Ae&&h.selectedDeletedRecordIds?.has(Ae.id)),onSelectionChange:Ae?re=>h.onDeletedSelectionChange?.(Ae.id,re):void 0})})()},ce.id)):a.jsx(lw,{id:t,items:J.map(ce=>Ye(ce.id)),strategy:dw,children:ge?a.jsx("div",{className:E.kanbanVirtualCanvas,style:{height:`${qe.totalHeight}px`},children:qe.rows.map(ce=>a.jsx(DZ,{top:ce.top,sortableId:Ye(ce.task.id),task:ce.task,onClick:g,commonCardProps:h,compressed:w,isRecentlyChanged:y.has(ce.task.id),onMeasure:qe.measureRow},Ye(ce.task.id)))}):J.map(ce=>a.jsx(z_,{sortableId:Ye(ce.id),task:ce,onClick:g,commonCardProps:h,compressed:w,isRecentlyChanged:y.has(ce.id)},Ye(ce.id)))})})})]})}),DZ=te.memo(function({top:t,onMeasure:r,...n}){const s=o.useRef(null);return o.useEffect(()=>{const i=s.current;if(!i)return;const l=()=>r(n.task.id,i.getBoundingClientRect().height);if(l(),typeof ResizeObserver>"u")return;const c=new ResizeObserver(l);return c.observe(i),()=>c.disconnect()},[n.task.id,r]),a.jsx("div",{ref:s,className:E.kanbanVirtualRow,style:{top:`${t}px`},"data-kanban-virtual-index":n.task.id,children:a.jsx(z_,{...n})})}),z_=te.memo(function({sortableId:t,task:r,onClick:n,commonCardProps:s,compressed:i,isRecentlyChanged:l=!1}){const c=!!s?.readOnlyMode,{attributes:d,listeners:f,setNodeRef:p,transform:g,transition:h,isDragging:y}=uw({id:t,disabled:c,data:{type:"task-card",taskId:r.id}}),k={transform:Qh.Transform.toString(g),transition:h,opacity:y?0:1,pointerEvents:y?"none":"auto"},w=s?.groupBy==="schedule",S=!w&&l;return a.jsx("div",{ref:p,style:k,...c?{}:d,...c?{}:f,className:`${E.kanbanCardWrapper} ${S?E.kanbanCardWrapperRaised:""}`,children:(()=>{const{taskWorkstream:b,taskInitiative:v}=s.resolveTaskHierarchy?.(r)||{},T=s.deletedTaskRecordByTaskId?.get(r.id);return a.jsx(lm,{task:r,taskWorkstream:b,taskInitiative:v,onClick:n,...s,isArchived:r.isArchived,readOnlyMode:s?.readOnlyMode||null,compressed:i,isRecentlyChanged:w?!1:l,selectable:!!(T&&s.onDeletedSelectionChange),selected:!!(T&&s.selectedDeletedRecordIds?.has(T.id)),onSelectionChange:T?R=>s.onDeletedSelectionChange?.(T.id,R):void 0})})()})});function MZ(e,t,r){const n=String(t);if(e==="category"){const s=r.categories.find(i=>String(i.value)===n||i.label===n);return s?{category:s.label}:{}}return e==="type"?{type:n}:e==="priority"?Number.isFinite(Number(t))?{priority:Number(t)}:{}:e==="complexity"?Number.isFinite(Number(t))?{complexity:Number(t)}:{}:e==="assignee"?n.trim().length>0?{assignee:n}:{}:e==="status"?n==="completed"?{status:"done"}:n==="task"||n==="on-hold"||n==="in-progress"||n==="review"||n==="done"||n==="cancelled"?{status:n}:{}:e==="schedule"?n==="backlog"||n==="expired"?{}:{scheduledDate:n}:{}}function LZ({authUserId:e,taskScope:t,workspaceId:r}){const[n,s]=o.useState(null);o.useEffect(()=>{s(null)},[e,r]),o.useEffect(()=>{t!=="open"&&s(null)},[t]);const i=o.useCallback(c=>{s(d=>d===c?null:c)},[]),l=o.useCallback(()=>{s(null)},[]);return{taskHeaderQuickFilter:n,toggleTaskHeaderQuickFilter:i,clearTaskHeaderQuickFilter:l}}function OZ(e,t,r,n){return e.status==="done"||e.status==="cancelled"||String(e.assignee||"").trim()!==r?!1:t==="overdue"?!!(e.dueDate&&e.dueDate<n):!0}function Kh(e,t){return e==="deleted"?!1:e==="archived"?t:!t}function hA(e,t){return t===null?e:e.filter(r=>t.has(r.id))}function BZ(e,t,r){const n=t.filter(c=>Kh(r,!!c.isArchived)),s=r==="deleted"?[]:e.filter(c=>Kh(r,!!c.isArchived)?!0:r!=="archived"?!1:n.some(d=>d.initiativeId===c.id)).map(c=>({...c,workstreams:n.filter(d=>d.initiativeId===c.id)})),i=n.filter(c=>!c.initiativeId),l=[...s.flatMap(c=>c.workstreams),...i];return{initiatives:s,standaloneWorkstreams:i,visibleWorkstreams:l,initiativeById:new Map(s.map(c=>[c.id,c])),workstreamById:new Map(l.map(c=>[c.id,c]))}}function H_(e){return typeof e.occurredAt=="string"&&e.occurredAt.trim().length>0?e.occurredAt:"unknown-time"}function WZ(e){return typeof e.eventType=="string"&&e.eventType.trim().length>0?e.eventType.trim():"sync"}function $Z(e){const t=cy(e.details),r=t?t.source:null;return typeof r=="string"?r.trim():""}function yA(e){const t=String(e||"").trim();switch(t){case"auth-required":return"sign in required";case"lease-held":return"another window is already syncing";case"sync-disabled":return"sync is turned off";case"attach-cloud":return"initial cloud pull required";case"provision-local":return"initial cloud upload required";default:return t.length>0?t.replace(/-/g," "):"blocked"}}function kA(e){const t=String(e||"").trim();switch(t){case"attach-cloud":return"initial cloud pull";case"provision-local":return"initial cloud upload";case"active":return"active sync";case"error":return"error recovery";case"idle":return"idle sync";default:return t.length>0?t.replace(/-/g," "):"sync"}}function qh(e){if(e==null)return null;const t=Number(e);return Number.isFinite(t)?Math.max(0,Math.floor(t)):null}function vA(e,t,r){const n=qh(e);if(n===null)return null;const s=qh(t),i=n===1&&(s===null||s===1)?r:`${r}s`;return`${n}${s===null?"":`/${s}`} ${i}`}function FZ(e,t){const r=qh(e);if(r===null)return null;const n=r>=1024*1024?`${(r/(1024*1024)).toFixed(1)} MiB`:r>=1024?`${(r/1024).toFixed(1)} KiB`:`${r} B`;return String(t||"")==="content-bodies"?`${n} content`:n}function UZ(e){const t=H_(e),r=cy(e.details),n=$Z(e);if(n==="server-runner.transfer"){const s=r?.transfer&&typeof r.transfer=="object"?r.transfer:{},i=String(s.direction||"").trim(),l=String(s.operation||e.eventType||"sync").trim(),c=String(s.outcome||e.status||"").trim()==="error"?"failed":"succeeded",d=[vA(s.processedChanges,s.knownTotalChanges,"change"),vA(s.processedPages,s.knownTotalPages,"page"),FZ(s.transferredBytes,s.transferredBytesScope)].filter(g=>!!g),f=qh(s.durationMs),p=c==="failed"&&typeof e.errorMessage=="string"&&e.errorMessage.trim()?`: ${e.errorMessage.trim()}`:"";return`${t} ${i?`${i} `:""}${l} ${c}${d.length>0?` (${d.join(", ")})`:""}${f===null?"":` in ${f}ms`}${p}`}return n==="retry.blocked"?`${t} manual retry blocked: ${yA(r?.reason)} during ${kA(r?.phase)}`:n==="repair.started"?`${t} manual repair started: ${kA(r?.repairPhase)} selected`:n==="repair.blocked"?`${t} manual repair blocked: ${yA(r?.reason)}`:null}function mp(e,t=0){const r=String(e.id??"").trim();return r?`id:${r}`:[String(e.occurredAt||"").trim()||"unknown-time",String(e.eventType||"").trim()||"sync",String(e.status||"").trim()||"unknown-status",String(e.statusCode??""),String(e.changeCount??""),String(e.requestMs??""),String(e.errorMessage||"").trim(),yI(e.details),String(t)].join("|")}function zZ(e,t,r=15){const n=new Map;for(const[s,i]of e.entries())n.set(mp(i,s),i);for(const[s,i]of t.entries())n.set(mp(i,s),i);return Array.from(n.values()).sort((s,i)=>String(i.occurredAt||"").localeCompare(String(s.occurredAt||""))).slice(0,Math.max(1,r))}function HZ(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r+=1)if(mp(e[r],r)!==mp(t[r],r))return!1;return!0}function V_(e){const t=UZ(e);if(t)return t;const r=H_(e),n=WZ(e),s=e.status==="error"?"failed":"succeeded",i=Number(e.changeCount),l=Number.isFinite(i)?` (${Math.max(0,Math.floor(i))} change${Math.floor(i)===1?"":"s"})`:"",c=Number(e.requestMs),d=Number.isFinite(c)?` in ${Math.max(0,Math.floor(c))}ms`:"",f=Number(e.statusCode),p=Number.isFinite(f)?` [${Math.floor(f)}]`:"",g=typeof e.errorMessage=="string"&&e.errorMessage.trim().length>0?`: ${e.errorMessage.trim()}`:"";return`${r} ${n} ${s}${l}${d}${p}${g}`}function VZ(e){const t=V_(e),r=String(e.occurredAt||"").trim();if(!r||!t.startsWith(r))return t;const n=new Date(r);return Number.isNaN(n.getTime())?t:`${n.toLocaleString()}${t.slice(r.length)}`}function GZ(e){return e.status==="error"?null:[String(e.eventType||"").trim()||"sync",String(e.status||"").trim()||"unknown-status",String(e.statusCode??""),String(e.changeCount??""),String(e.errorMessage||"").trim(),yI(e.details)].join("|")}function wh(e){if(!e)return"Never";const t=new Date(e);return Number.isNaN(t.getTime())?"Never":t.toLocaleString()}function G_(e){switch(e){case"off":return{label:"Off",icon:"off",color:"#94a3b8",border:"rgba(148, 163, 184, 0.35)",background:"rgba(148, 163, 184, 0.12)"};case"syncing":return{label:"Syncing",icon:"cloud",color:"#60a5fa",border:"rgba(96, 165, 250, 0.35)",background:"rgba(59, 130, 246, 0.12)"};case"attention":return{label:"Needs Attention",icon:"cloud",color:"#fda4af",border:"rgba(253, 164, 175, 0.4)",background:"rgba(239, 68, 68, 0.12)"};default:return{label:"Healthy",icon:"cloud",color:"#86efac",border:"rgba(134, 239, 172, 0.4)",background:"rgba(34, 197, 94, 0.12)"}}}function KZ(e,t){return G_(t?e:"off")}function K_(e,t,r){if(t)return"Repairing";if(r&&e==="error")return"Recovering";switch(e){case"provision-local":return"Initial cloud upload";case"attach-cloud":return"Initial cloud pull";case"active":return"Active";case"error":return"Error";default:return"Idle"}}function qZ(e){return[{label:"AI profile snapshot",value:`${e.aiProfileSnapshotCount} local profile${e.aiProfileSnapshotCount===1?"":"s"}`},{label:"AI profile raw response",value:`${e.aiProfileSnapshotRawCount} from route`},{label:"Last pushed AI profiles",value:`${e.lastPushedAiProfileCount} tracked`},{label:"AI watermark map",value:`${e.lastPushedAiProfileWatermarkCount} tracked`},{label:"Document snapshot",value:`${e.documentSnapshotCount} local doc${e.documentSnapshotCount===1?"":"s"}`},{label:"Asset snapshot",value:`${e.assetSnapshotCount} local asset${e.assetSnapshotCount===1?"":"s"}`},{label:"Queued full AI sync",value:e.forceFullAiProfilePushQueued?"Yes":"No"},{label:"Durable outbox",value:e.durableOutbox?e.durableOutbox.operationStates?`${e.durableOutbox.operationStates.pending} pending, ${e.durableOutbox.operationStates.retryScheduled} retry scheduled, ${e.durableOutbox.operationStates.inFlight} in flight, ${e.durableOutbox.operationStates.stale} stale, ${e.durableOutbox.operationStates.blocked} blocked`:`${e.durableOutbox.pending} pending, ${e.durableOutbox.inFlight} in flight, ${e.durableOutbox.blocked} blocked`:"Unavailable"},{label:"Durable recovery",value:(()=>{const t=e.durableOutbox?.recovery?`${e.durableOutbox.recovery.state}; ${e.durableOutbox.recovery.replayAccepted}/${e.durableOutbox.recovery.replayTotal} replayed`:null,r=e.coordinatorRecoveryObligations||0,n=r>0?`${r} coordinator obligations open`:null;return[t,n].filter(Boolean).join(", ")||"None"})()},{label:"AI snapshot last fetch",value:wh(e.aiProfileSnapshotLastFetchAt)},{label:"AI snapshot fetch error",value:e.aiProfileSnapshotLastFetchError||"None"},{label:"AI snapshot skip reason",value:e.aiProfileSnapshotLastSkipReason||"None"}]}function YZ({syncRecentEvents:e,syncRecentEventsError:t,syncRecentEventsLoading:r}){if(r&&e.length===0)return[{key:"loading",text:"Loading recent sync events...",tone:"muted"}];if(t)return[{key:"error",text:t,tone:"error"}];if(e.length===0)return[{key:"empty",text:"No recent sync events recorded.",tone:"muted"}];const n=[];for(const[s,i]of e.entries()){const l=GZ(i),c=n[n.length-1];if(l&&c?.signature===l){c.repeatCount+=1,c.text=`${c.baseText} × ${c.repeatCount}`;continue}const d=VZ(i);n.push({key:mp(i,s),text:d,tone:i.status==="error"?"error":"default",signature:l,repeatCount:1,baseText:d})}return n.map(({signature:s,repeatCount:i,baseText:l,...c})=>c)}function q_(e){const t=[];for(const r of e){if(String(r.errorMessage||"").toLowerCase().includes("reference number mismatch")){t.push(r);continue}if(String(r.status||"").toLowerCase()==="success")break}return t}function ZZ(e){return q_(e).length}function JZ(e){return q_(e).map((t,r)=>{const n=t.details&&typeof t.details=="object"?t.details:null,s=String(n?.path||"").trim(),i=String(n?.referenceLabel||"").trim(),l=String(n?.taskTitle||n?.existingTaskTitle||"").trim(),c=Number(n?.existingReferenceNumber),d=Number(n?.incomingReferenceNumber),f=s||l||i||`Mismatch ${r+1}`,p=Number.isFinite(c)||Number.isFinite(d)?`Existing ${Number.isFinite(c)?c:"?"} vs incoming ${Number.isFinite(d)?d:"?"}`:i?`Both claimed ${i}`:null;return{key:mp(t,r),pathLabel:f,refsLabel:p}})}function XZ({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:r,workspaceSyncRecommendedAction:n,formattedLastSyncTime:s,formattedLastPullTime:i,formattedLastPushTime:l,workspaceSyncDiagnostics:c,workspaceSyncPendingChanges:d,syncLastError:f,syncStageLabel:p,referenceMismatchCount:g,syncRecentEvents:h}){const y=["Taskforce Sync Manager",`Workspace ID: ${e}`,`Status: ${t}`,`Summary: ${r}`,`Recommended action: ${n}`,`Last successful sync: ${s}`,`Last pull from cloud: ${i}`,`Last push to cloud: ${l}`,`Last error at: ${wh(c.lastErrorAt)}`,`Pending local changes: ${d}`,`Last error: ${f}`,`Sync stage: ${p}`,`Push blocked reason: ${c.pushBlockedReason||"None"}`,`Pull blocked reason: ${c.pullBlockedReason||"None"}`,`Retry blocked reason: ${c.retryBlockedReason||"None"}`,`Repair active: ${c.repairActive?"Yes":"No"}`,`Push in flight: ${c.pushInFlight?"Yes":"No"}`,`Pull in flight: ${c.pullInFlight?"Yes":"No"}`,`Retry pending: ${c.retryPending?"Yes":"No"}`,`AI profile snapshot: ${c.aiProfileSnapshotCount}`,`AI profile raw response: ${c.aiProfileSnapshotRawCount}`,`Last pushed AI profiles tracked: ${c.lastPushedAiProfileCount}`,`AI profile watermarks tracked: ${c.lastPushedAiProfileWatermarkCount}`,`AI snapshot last fetch: ${wh(c.aiProfileSnapshotLastFetchAt)}`,`AI snapshot fetch error: ${c.aiProfileSnapshotLastFetchError||"None"}`,`AI snapshot skip reason: ${c.aiProfileSnapshotLastSkipReason||"None"}`,`Document snapshot: ${c.documentSnapshotCount}`,`Asset snapshot: ${c.assetSnapshotCount}`,`Reference mismatches detected: ${g}`,`Queued full AI sync: ${c.forceFullAiProfilePushQueued?"Yes":"No"}`,`Durable outbox pending: ${c.durableOutbox?.pending??"Unavailable"}`,`Durable outbox in flight: ${c.durableOutbox?.inFlight??"Unavailable"}`,`Durable outbox blocked: ${c.durableOutbox?.blocked??"Unavailable"}`,`Durable outbox retry scheduled: ${c.durableOutbox?.operationStates?.retryScheduled??"Unavailable"}`,`Durable outbox stale: ${c.durableOutbox?.operationStates?.stale??"Unavailable"}`,`Durable outbox oldest active: ${wh(c.durableOutbox?.oldestActiveCreatedAt)}`,`Durable outbox blocked error code: ${c.durableOutbox?.blockedErrorCode||"None"}`,`Durable recovery state: ${c.durableOutbox?.recovery?.state||"None"}`,`Durable recovery replay total: ${c.durableOutbox?.recovery?.replayTotal??0}`,`Durable recovery replay pending: ${c.durableOutbox?.recovery?.replayPending??0}`,`Durable recovery replay in flight: ${c.durableOutbox?.recovery?.replayInFlight??0}`,`Durable recovery replay blocked: ${c.durableOutbox?.recovery?.replayBlocked??0}`,`Durable recovery replay accepted: ${c.durableOutbox?.recovery?.replayAccepted??0}`,`Durable recovery obligations (coordinator): ${c.coordinatorRecoveryObligations??"Unavailable"}`],k=h.map(w=>V_(w));return[...y,"","Recent sync events",...k.length>0?k:["No recent sync events recorded."]].join(`
7
+ `)}const wA="/api/taskforce/account/profile-summary",QZ=9e4,Qu=new Map;function rh(){return typeof performance<"u"?performance.now():Date.now()}function Y_(e,t){const r=String(e||"").trim();if(!r)return"";const n=String(t||"").trim();return n?`${r}::${n}`:r}function bA(e,t){Qu.delete(Y_(e,t?.identityKey))}async function eJ(e,t){const r=String(e||"").trim(),n=Y_(e,t?.identityKey);if(!n||!r)return null;const s=t?.force===!0,i=Date.now(),l=Qu.get(n);if(!s&&l?.payload!==void 0&&i-l.fetchedAt<QZ)return _r("account_profile_summary_cache_hit",{url:r,cacheKey:n,ageMs:i-l.fetchedAt}),l.payload;if(!s&&l?.promise)return _r("account_profile_summary_request_reused",{url:r,cacheKey:n}),l.promise;const c=rh(),d=(async()=>{const f=await fetch(r,{method:"GET",credentials:"include"});if(!f.ok)throw new Error(String((await f.json().catch(()=>({})))?.error||"Failed to load account summary."));const g=await f.json().catch(()=>({}))||null;return Qu.set(n,{payload:g,fetchedAt:Date.now(),promise:null}),_r("account_profile_summary_loaded",{url:r,cacheKey:n,durationMs:Math.round(rh()-c),fromCache:!1}),g})().catch(f=>{const p=l?.payload??null;if(p)return Qu.set(n,{payload:p,fetchedAt:l?.fetchedAt??Date.now(),promise:null}),_r("account_profile_summary_failed",{url:r,cacheKey:n,durationMs:Math.round(rh()-c),error:f instanceof Error?f.message:String(f||"Unknown error"),returnedStale:!0}),p;throw Qu.delete(n),_r("account_profile_summary_failed",{url:r,cacheKey:n,durationMs:Math.round(rh()-c),error:f instanceof Error?f.message:String(f||"Unknown error"),returnedStale:!1}),f});return Qu.set(n,{payload:l?.payload??null,fetchedAt:l?.fetchedAt??0,promise:d}),d}const tJ=512,rJ=5*1024*1024,nJ=[.9,.82,.74,.66,.58],aJ=[.9,.82,.74,.66,.58],sJ=[1,.85,.7,.55,.4],oJ=new Set(["image/png","image/jpeg","image/webp"]);function iJ(e,t){const r=document.createElement("canvas");return r.width=Math.max(1,Math.round(e)),r.height=Math.max(1,Math.round(t)),r}async function cJ(e){const t=URL.createObjectURL(e);try{const r=await new Promise((n,s)=>{const i=new Image;i.onload=()=>n(i),i.onerror=()=>s(new Error("Failed to load image.")),i.src=t});return{width:r.naturalWidth||r.width,height:r.naturalHeight||r.height,source:r}}finally{URL.revokeObjectURL(t)}}async function lJ(e){const t=iJ(e.width,e.height),r=t.getContext("2d");if(!r)throw new Error("Image optimization requires a 2D canvas context.");return r.drawImage(e.image.source,0,0,t.width,t.height),await new Promise((n,s)=>{t.toBlob(i=>{if(i){n(i);return}s(new Error("Failed to encode resized image."))},e.type,e.quality)})}const dJ={loadImage:cJ,renderToBlob:lJ};function SA(e,t){return e==="image/png"?".png":e==="image/jpeg"?".jpg":e==="image/webp"?".webp":(t.includes(".")?t.slice(t.lastIndexOf(".")):"")||".img"}function AA(e,t){const r=String(e||"").trim();if(!r)return`avatar${t}`;const n=r.lastIndexOf(".");return n<=0?`${r}${t}`:`${r.slice(0,n)}${t}`}function uJ(e){const t=e==="image/jpeg"?"image/jpeg":"image/webp";return Array.from(new Set([t,"image/webp","image/jpeg"]))}function pJ(e){return e==="image/webp"?nJ:e==="image/jpeg"?aJ:[void 0]}async function fJ(e,t,r=dJ){const n=Number.isFinite(t?.maxBytes)&&(t?.maxBytes||0)>0?Math.floor(t?.maxBytes):rJ,s=Number.isFinite(t?.maxDimension)&&(t?.maxDimension||0)>0?Math.floor(t?.maxDimension):tJ;if(!oJ.has(e.type))return{file:e,optimized:!1,exceededLimit:e.size>n};const i=await r.loadImage(e),l=Math.max(i.width,i.height,1);if(e.size<=n&&l<=s)return{file:e,optimized:!1,exceededLimit:!1};const c=Math.min(1,s/l);let d=null;for(const p of sJ){const g=Math.min(1,c*p),h=Math.max(1,Math.round(i.width*g)),y=Math.max(1,Math.round(i.height*g));for(const k of uJ(e.type))for(const w of pJ(k)){const S=await r.renderToBlob({image:i,width:h,height:y,type:k,quality:w});if((!d||S.size<d.size)&&(d=S),S.size<=n)return{file:new File([S],AA(e.name,SA(S.type||k,e.name)),{type:S.type||k,lastModified:e.lastModified}),optimized:!0,exceededLimit:!1}}}if(!d)return{file:e,optimized:!1,exceededLimit:!0};const f=new File([d],AA(e.name,SA(d.type||e.type,e.name)),{type:d.type||e.type,lastModified:e.lastModified});return{file:f,optimized:f.size<e.size,exceededLimit:f.size>n}}function mJ(e,t){return Array.from([...e,...t].reduce((r,n)=>r.set(n.id,n),new Map).values())}function Z_(e){return e.status==="done"||e.status==="cancelled"}function gJ({isArchived:e,tasks:t,dataReady:r}){return{archiveReady:r&&!e&&t.length>0&&t.every(Z_),activeTaskCount:t.filter(n=>!n.isArchived).length,activeWorkstreamCount:0}}function hJ({isArchived:e,workstreams:t,dataReady:r}){const n=t.flatMap(s=>s.tasks||[]);return{archiveReady:r&&!e&&t.length>0&&n.length>0&&n.every(Z_),activeTaskCount:n.filter(s=>!s.isArchived).length,activeWorkstreamCount:t.filter(s=>!s.isArchived).length}}async function J_({workstream:e,allowEmpty:t=!1,archiveTask:r,archiveWorkstream:n}){if(e.isArchived)return!0;const s=e.tasks||[];if(!t&&s.length===0||s.some(i=>i.status!=="done"&&i.status!=="cancelled"))return!1;for(const i of s)if(!i.isArchived&&!await r(i.id))return!1;return await n(e.id),!0}async function yJ({workstreams:e,archiveTask:t,archiveWorkstream:r,archiveInitiative:n,initiativeId:s}){const i=e.flatMap(l=>l.tasks||[]);if(e.length===0||i.length===0||i.some(l=>l.status!=="done"&&l.status!=="cancelled"))return!1;for(const l of e)if(!await J_({workstream:l,allowEmpty:!0,archiveTask:t,archiveWorkstream:r}))return!1;return await n(s),!0}function X_({isArchived:e,taskCount:t,completedTaskCount:r,archiveReady:n,entityType:s,activeWorkstreamCount:i=0}){return e?{mode:"archived"}:t===0?s==="initiative"&&i>0?{mode:"blocked",remainingKind:"workstream"}:{mode:"empty"}:Math.max(0,t-r)>0?{mode:"blocked",remainingKind:"task"}:n?{mode:"ready"}:{mode:"checking"}}const Zv="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMzY2LjY3Nzg2IgogICBoZWlnaHQ9IjMzMS4zMDkzMyIKICAgdmlld0JveD0iMCAwIDk3LjAxNjg1IDg3LjY1ODkyMyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMSIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcwogICAgIGlkPSJkZWZzMSIgLz48ZwogICAgIGlkPSJsYXllcjEiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMwLjk2ODgxLC04NzIuMDY2NjgpIj48ZwogICAgICAgaWQ9ImcxLTctMS02LTItMS05IgogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTYzNS4zODE5NiwxMzcuOTM1MTIpIj48cGF0aAogICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiNmZmZmZmY7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuNjEzNjA0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIKICAgICAgICAgZD0ibSAxNDkuNDQwNjYsMTYxLjE5NTA1IGggLTMuNTA2NzQgdiAtMTAuOTA5ODYgaCAtNC4wOTEyIHYgLTIuNzI3NDcgaCAxMS42ODkxNCB2IDIuNzI3NDcgaCAtNC4wOTEyIHoiCiAgICAgICAgIGlkPSJ0ZXh0MS00LTMtMy0xLTAtMyIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJUIiAvPjxwYXRoCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxOS40ODE5cHg7bGluZS1oZWlnaHQ6Mi41O2ZvbnQtZmFtaWx5OidSdXNzbyBPbmUnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J1J1c3NvIE9uZSBNZWRpdW0gSXRhbGljJzt0ZXh0LWFsaWduOmVuZDtsZXR0ZXItc3BhY2luZzowcHg7dGV4dC1hbmNob3I6ZW5kO2ZpbGw6I2ZmOGEwMDtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I2ZmOGEwMDtzdHJva2Utd2lkdGg6MC42MTM2MDQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kIgogICAgICAgICBkPSJtIDE1My41Mzg4OCwxNjQuNTI2NiBoIC0zLjUwNjc0IHYgLTEzLjYzNzMzIGggMTAuODEyNDUgdiAyLjcyNzQ2IGggLTcuMzA1NzEgdiAzLjIxNDUyIGggNS43NDcxNiB2IDIuNzI3NDYgaCAtNS43NDcxNiB6IgogICAgICAgICBpZD0idGV4dDEtOS04LTQtMy03LTItNyIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJGIiAvPjwvZz48L2c+PC9zdmc+Cg==",Q_="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMzY2LjY3Nzg5IgogICBoZWlnaHQ9IjMzMS4zMDkzMyIKICAgdmlld0JveD0iMCAwIDk3LjAxNjg1OCA4Ny42NTg5MjMiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzEiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnMKICAgICBpZD0iZGVmczEiIC8+PGcKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4Ni4xOTU2MywtNzgwLjY1NTczKSI+PGcKICAgICAgIGlkPSJnMS03LTEtNi0yLTEiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCg0Ljk4MTU0NzksMCwwLDQuOTg1NTgyMiwtNjkwLjYwODc4LDQ2LjUyNDE0OCkiPjxwYXRoCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxOS40ODE5cHg7bGluZS1oZWlnaHQ6Mi41O2ZvbnQtZmFtaWx5OidSdXNzbyBPbmUnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J1J1c3NvIE9uZSBNZWRpdW0gSXRhbGljJzt0ZXh0LWFsaWduOmNlbnRlcjtsZXR0ZXItc3BhY2luZzowcHg7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiCiAgICAgICAgIGQ9Im0gMTQ5LjQ0MDY2LDE2MS4xOTUwNSBoIC0zLjUwNjc0IHYgLTEwLjkwOTg2IGggLTQuMDkxMiB2IC0yLjcyNzQ3IGggMTEuNjg5MTQgdiAyLjcyNzQ3IGggLTQuMDkxMiB6IgogICAgICAgICBpZD0idGV4dDEtNC0zLTMtMS0wIgogICAgICAgICB0cmFuc2Zvcm09InNrZXdYKC0xNSkiCiAgICAgICAgIGFyaWEtbGFiZWw9IlQiIC8+PHBhdGgKICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiCiAgICAgICAgIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiCiAgICAgICAgIGlkPSJ0ZXh0MS05LTgtNC0zLTctMiIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJGIiAvPjwvZz48L2c+PC9zdmc+Cg==",CA="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxMDAwIiBoZWlnaHQ9IjEwMDAiPjxzdHlsZT4KICAgICNsaWdodC1pY29uIHsKICAgICAgZGlzcGxheTogaW5saW5lOwogICAgfQogICAgI2RhcmstaWNvbiB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgICAjbGlnaHQtaWNvbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAjZGFyay1pY29uIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICAgIH0KICAgIH0KICA8L3N0eWxlPjxnIGlkPSJsaWdodC1pY29uIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEwMDAiIGhlaWdodD0iMTAwMCI+PGc+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMi43MjcxODkyNTA0ODkwMzI3LDAsMCwyLjcyNzE4OTI1MDQ4OTAzMjcsMCw0OC4yMjgzNzgzMTg2MzgxOSkiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIzNjYuNjc3ODkiIGhlaWdodD0iMzMxLjMwOTMzIiB2aWV3Qm94PSIwIDAgOTcuMDE2ODU4IDg3LjY1ODkyMyIgaWQ9InN2ZzEiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzIGlkPSJkZWZzMSI+PC9kZWZzPjxnIGlkPSJsYXllcjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4Ni4xOTU2MywtNzgwLjY1NTczKSI+PGcgaWQ9ImcxLTctMS02LTItMSIgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTY5MC42MDg3OCw0Ni41MjQxNDgpIj48cGF0aCBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC42MTM2MDQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kIiBkPSJtIDE0OS40NDA2NiwxNjEuMTk1MDUgaCAtMy41MDY3NCB2IC0xMC45MDk4NiBoIC00LjA5MTIgdiAtMi43Mjc0NyBoIDExLjY4OTE0IHYgMi43Mjc0NyBoIC00LjA5MTIgeiIgaWQ9InRleHQxLTQtMy0zLTEtMCIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJUIj48L3BhdGg+PHBhdGggc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiIGlkPSJ0ZXh0MS05LTgtNC0zLTctMiIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJGIj48L3BhdGg+PC9nPjwvZz48L3N2Zz48L2c+PC9nPjwvc3ZnPjwvZz48ZyBpZD0iZGFyay1pY29uIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEwMDAiIGhlaWdodD0iMTAwMCI+PGc+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMi43MjcxODk0NzM2MTU4ODcsMCwwLDIuNzI3MTg5NDczNjE1ODg3LDAsNDguMjI4MzQxMzU2NjMzOTA1KSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjM2Ni42Nzc4NiIgaGVpZ2h0PSIzMzEuMzA5MzMiIHZpZXdCb3g9IjAgMCA5Ny4wMTY4NSA4Ny42NTg5MjMiIGlkPSJzdmcxIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcyBpZD0iZGVmczEiPjwvZGVmcz48ZyBpZD0ibGF5ZXIxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzAuOTY4ODEsLTg3Mi4wNjY2OCkiPjxnIGlkPSJnMS03LTEtNi0yLTEtOSIgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTYzNS4zODE5NiwxMzcuOTM1MTIpIj48cGF0aCBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiNmZmZmZmY7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuNjEzNjA0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIgZD0ibSAxNDkuNDQwNjYsMTYxLjE5NTA1IGggLTMuNTA2NzQgdiAtMTAuOTA5ODYgaCAtNC4wOTEyIHYgLTIuNzI3NDcgaCAxMS42ODkxNCB2IDIuNzI3NDcgaCAtNC4wOTEyIHoiIGlkPSJ0ZXh0MS00LTMtMy0xLTAtMyIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJUIj48L3BhdGg+PHBhdGggc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiIGlkPSJ0ZXh0MS05LTgtNC0zLTctMi03IiB0cmFuc2Zvcm09InNrZXdYKC0xNSkiIGFyaWEtbGFiZWw9IkYiPjwvcGF0aD48L2c+PC9nPjwvc3ZnPjwvZz48L2c+PC9zdmc+PC9nPjwvc3ZnPg==";function kJ({projectName:e,currentWorkspaceId:t,brandLabel:r="TaskForce",brandHomeLabel:n="Go to Kanban",onBrandClick:s,runtimeMode:i="local",theme:l=Ch,meta:c,actions:d}){const f=o.useRef(null),p=o.useRef(null),[g,h]=o.useState(!0),[y,k]=o.useState("idle"),w=dC(l)?Q_:Zv,S=String(e||"").trim(),b=String(t||"").trim(),v=b.toLowerCase(),T=!!(S&&(i!=="cloud"||v&&v!=="default")),R=o.useCallback(()=>{if(!T){h(!0);return}const $=f.current,j=p.current;if(!$||!j)return;const x=$.getBoundingClientRect().width,V=j.getBoundingClientRect().width;if(x<=0||V<=0)return;const U=window.getComputedStyle($),ne=Number.parseFloat(U.columnGap||U.gap||"0")||0,L=Array.from($.children).filter(ue=>{if(ue===j)return!1;const oe=ue.getBoundingClientRect();return oe.width>0&&oe.height>0}),J=L.reduce((ue,oe)=>ue+oe.getBoundingClientRect().width,0)+V+ne*L.length;h(J<=x)},[T]);o.useLayoutEffect(()=>{R();const $=f.current,j=p.current;if(!$||!j)return;if(typeof ResizeObserver>"u")return window.addEventListener("resize",R),()=>window.removeEventListener("resize",R);const x=new ResizeObserver(R);return x.observe($),x.observe(j),()=>x.disconnect()},[R,S,c]),o.useEffect(()=>{if(y==="idle")return;const $=window.setTimeout(()=>k("idle"),1600);return()=>window.clearTimeout($)},[y]);const P=T&&g,N=async()=>{if(!b||typeof navigator>"u")return;const $=navigator.clipboard;if(!$?.writeText){k("failed");return}try{await $.writeText(b),k("copied")}catch{k("failed")}},I=a.jsxs(a.Fragment,{children:[a.jsx("img",{src:w,alt:"Taskforce Logo",className:E.brandIcon,onError:$=>{const j=$.currentTarget;j.src!==CA?j.src=CA:j.style.display="none"}}),a.jsx("span",{children:r}),i==="cloud"&&a.jsx("span",{className:E.brandCloudSuffix,children:"HQ"})]});return a.jsxs("div",{className:`${E.header} ${Xr.standaloneHeader}`,children:[a.jsxs("div",{ref:f,className:`${E.headerTitle} ${Xr.standaloneTitle}`,children:[s?a.jsx("button",{type:"button",className:E.brandHomeButton,onClick:s,title:n,"aria-label":n,children:I}):a.jsx("span",{className:E.brandHomeStatic,children:I}),T&&a.jsxs("span",{ref:p,className:`${E.projectNameGroup} ${P?"":E.projectNameGroupHidden}`.trim(),"aria-hidden":P?void 0:!0,children:[a.jsx("span",{className:E.projectSlash,children:"/"}),b?a.jsx("button",{type:"button",className:`${E.projectName} ${y==="copied"?E.projectNameCopied:""}`.trim(),title:y==="copied"?"Workspace ID copied":y==="failed"?"Unable to copy workspace ID":`Workspace ID: ${b}`,"aria-label":`${S}. ${y==="copied"?"Workspace ID copied.":y==="failed"?"Unable to copy workspace ID.":"Copy workspace ID."}`,disabled:!P,onClick:()=>{N()},children:S}):a.jsx("span",{className:E.projectName,children:S}),a.jsx("span",{className:E.projectNameCopyFeedback,"aria-live":"polite",children:y==="copied"?"Workspace ID copied.":y==="failed"?"Unable to copy workspace ID.":""})]}),c]}),a.jsx("div",{className:E.headerActions,style:{gap:"16px"},children:d})]})}function cc(e){return`${e.type}:${e.id}`}function vJ(e){if(!Array.isArray(e))return;const t=new Set,r=[];for(const n of e){if(!n||typeof n!="object"||Array.isArray(n))continue;const s=n.type,i=n.id;if(s!=="initiative"&&s!=="workstream"||typeof i!="string")continue;const l=i.trim();if(!l)continue;const c={type:s,id:l},d=cc(c);t.has(d)||(t.add(d),r.push(c))}return r}function wJ(e,t){const r=cc(t);return e.some(s=>cc(s)===r)?e.filter(s=>cc(s)!==r):[...e,t]}const bJ="taskforce.uiState.layout.v1",SJ=/^\d{4}-\d{2}-\d{2}$/,AJ=/^\d{4}-\d{2}$/;function CJ(e){const t=String(e.workspaceId||"default").trim()||"default",r=String(e.userId||"anonymous").trim()||"anonymous",n=ny(`user:${r}`);return`${e.runtimeMode}:${t}:user:${n}`}function gp(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function nh(e){if(!Array.isArray(e))return;const t=Array.from(new Set(e.filter(r=>typeof r=="string").map(r=>r.trim()).filter(Boolean)));return t.length>0?t:[]}function dm(e){if(!(typeof e!="number"||!Number.isFinite(e)||e<0))return Math.round(e)}function IJ(e,t){if(!gp(e))return;const r=Object.entries(e).map(([n,s])=>{const i=n.trim(),l=dm(s);return i&&l!==void 0?[i,l]:null}).filter(n=>n!==null).slice(-50);return Object.fromEntries(r)}function _J(e){if(!gp(e))return null;const t=typeof e.zoomLevel=="number"&&Number.isFinite(e.zoomLevel)?Math.min(4,Math.max(.25,e.zoomLevel)):void 0,r=dm(e.scrollLeft),n=dm(e.scrollTop);return t===void 0||r===void 0||n===void 0?null:{zoomLevel:t,scrollLeft:r,scrollTop:n}}function TJ(e){if(!gp(e))return;const t=Object.entries(e).map(([r,n])=>{const s=r.trim(),i=_J(n);return s&&i?[s,i]:null}).filter(r=>r!==null).slice(-50);return Object.fromEntries(t)}function xJ(e){if(e===null)return null;if(!gp(e)||e.type!=="initiative"&&e.type!=="workstream"||typeof e.id!="string")return;const t=e.id.trim();return t?{type:e.type,id:t}:null}function eT(e){if(!gp(e))return null;const t={},r=y=>{typeof e[y]=="boolean"&&(t[y]=e[y])};["scheduleShowWeekends","scheduleShowBacklog","scheduleOnlyExpired","scheduleSidebarOpen","showFilters","documentTrayOpen","imageTrayOpen","agentTrayOpen","taskforceAgentRosterTrayOpen","taskforceAgentDrawerOpen","taskforceAgentPanelCollapsed","planningDrawerOpen","planningTreeCollapsed","planningPrimaryCollapsed","planningSecondaryCollapsed","planningFavoritesSectionCollapsed","planningInitiativesSectionCollapsed","planningWorkstreamsSectionCollapsed"].forEach(y=>r(y)),(e.planningNavigatorSort==="default"||e.planningNavigatorSort==="title"||e.planningNavigatorSort==="owner"||e.planningNavigatorSort==="progress")&&(t.planningNavigatorSort=e.planningNavigatorSort),(e.planningTaskArrangeMode==="execution"||e.planningTaskArrangeMode==="ready"||e.planningTaskArrangeMode==="priority")&&(t.planningTaskArrangeMode=e.planningTaskArrangeMode);const n=vJ(e.planningFavorites);n&&(t.planningFavorites=n),typeof e.scheduleSelectedDate=="string"&&SJ.test(e.scheduleSelectedDate)&&(t.scheduleSelectedDate=e.scheduleSelectedDate),typeof e.scheduleCalendarMonth=="string"&&AJ.test(e.scheduleCalendarMonth)&&(t.scheduleCalendarMonth=e.scheduleCalendarMonth);const s=dm(e.scheduleScrollLeft);s!==void 0&&(t.scheduleScrollLeft=s);const i=nh(e.documentTypeFilters);i&&(t.documentTypeFilters=i);const l=nh(e.documentAttachmentFilters);l&&(t.documentAttachmentFilters=l),typeof e.documentSortField=="string"&&(t.documentSortField=e.documentSortField),(e.documentSortOrder==="asc"||e.documentSortOrder==="desc")&&(t.documentSortOrder=e.documentSortOrder);const c=nh(e.documentPinnedDocIds)?.slice(-50);c&&(t.documentPinnedDocIds=c),typeof e.documentSearchQuery=="string"&&(t.documentSearchQuery=e.documentSearchQuery),typeof e.documentSelectedDocId=="string"?t.documentSelectedDocId=e.documentSelectedDocId.trim()||null:e.documentSelectedDocId===null&&(t.documentSelectedDocId=null);const d=IJ(e.documentScrollByDocId);d&&(t.documentScrollByDocId=d);const f=dm(e.documentListScrollTop);f!==void 0&&(t.documentListScrollTop=f);const p=nh(e.planningExpandedInitiativeIds);p&&(t.planningExpandedInitiativeIds=p);const g=xJ(e.planningDrawerDetail);g!==void 0&&(t.planningDrawerDetail=g),typeof e.planningNestedWorkstreamDetailId=="string"?t.planningNestedWorkstreamDetailId=e.planningNestedWorkstreamDetailId.trim()||null:e.planningNestedWorkstreamDetailId===null&&(t.planningNestedWorkstreamDetailId=null),gp(e.annotatedTarget)?t.annotatedTarget=e.annotatedTarget:e.annotatedTarget===null&&(t.annotatedTarget=null),typeof e.annotatedSessionId=="string"?t.annotatedSessionId=e.annotatedSessionId.trim()||null:e.annotatedSessionId===null&&(t.annotatedSessionId=null);const h=TJ(e.annotatedViewportByContextKey);return h&&(t.annotatedViewportByContextKey=h),t}function RJ(e,t){if(!e)return{state:t,localFallbackPatch:{}};const r={},n=r;for(const[s,i]of Object.entries(e))Object.prototype.hasOwnProperty.call(t,s)||(n[s]=i);return{state:{...e,...t},localFallbackPatch:r}}function my(e,t){return Object.is(e,t)?!0:JSON.stringify(e)===JSON.stringify(t)}function PJ(e,t){const r={},n=r;for(const[s,i]of Object.entries(t))my(e[s],i)||(n[s]=i);return r}function EJ(e,t){return Object.entries(t).every(([r,n])=>Object.prototype.hasOwnProperty.call(e,r)&&my(e[r],n))}function IA(e,t){const r=e;for(const[n,s]of Object.entries(t))my(r[n],s)&&delete r[n]}function tT(e){const t=kw(e);return`${bJ}.${t}`}function ah(e){const t=String(e.currentWorkspaceId||"").trim();return!e.useCloudProxy||!t||t==="default"?e.headers:{...e.headers||{},"x-taskforce-workspace-id":t}}function NJ(e){if(typeof window>"u")return null;try{const t=window.localStorage.getItem(tT(e));return t?eT(JSON.parse(t)):null}catch{return null}}function _A(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(tT(t),JSON.stringify(e))}catch{}}function jJ(e){const{currentWorkspaceId:t,loadKey:r,enabled:n=!0,headers:s,useCloudProxy:i=!1,remotePlanningFavoritesAuthoritative:l=!1,snapshot:c,onApplyState:d}=e,[f,p]=o.useState(""),g=o.useRef(""),h=o.useRef(0),y=o.useRef(c),k=o.useRef(c),w=o.useRef({}),S=o.useRef(null),b=o.useRef(d);return o.useEffect(()=>{b.current=d},[d]),o.useEffect(()=>{y.current=c},[c]),o.useEffect(()=>{if(!n){g.current="",h.current=0,k.current=y.current,w.current={},S.current=null,p("");return}if(g.current===r)return;g.current=r,h.current=0,k.current=y.current,w.current={},S.current=null,p("");let v=!1;const T=h.current,R=NJ(r),P=!!R;return R&&(S.current={source:y.current,target:R},b.current(R),p(r)),(async()=>{try{const I=new URLSearchParams({key:"layout"});t&&I.set("workspaceId",t),i&&I.set("taskforceCloud","1");const $=await fetch(`/api/taskforce/ui-state?${I.toString()}`,{method:"GET",credentials:"include",headers:ah({headers:s,currentWorkspaceId:t,useCloudProxy:i})}),j=$.ok?await $.json().catch(()=>({})):{},x=eT(j?.state),V=x&&l?{...x,planningFavorites:x.planningFavorites??[]}:x;if(!v&&V&&h.current===T){const{state:U,localFallbackPatch:ne}=RJ(R,V);S.current={source:y.current,target:U},b.current(U),_A(U,r),Object.keys(ne).length>0&&await zf({stateKey:"layout",workspaceId:t,headers:ah({headers:s,currentWorkspaceId:t,useCloudProxy:i}),patch:ne,dedupeScope:r,useCloudProxy:i})}}catch{}finally{!v&&!P&&(S.current||(k.current=y.current),p(r))}})(),()=>{v=!0}},[t,n,s,r,l,i]),o.useEffect(()=>{if(f!==r)return;const v=S.current;if(v){if(EJ(c,v.target)){k.current=c,S.current=null;return}if(my(c,v.source))return;S.current=null}const T=PJ(k.current,c);if(k.current=c,Object.keys(T).length===0)return;h.current+=1,_A(c,r),Object.assign(w.current,T);const R=window.setTimeout(async()=>{const P={...w.current};if(Object.keys(P).length!==0)try{const N=await zf({stateKey:"layout",workspaceId:t,headers:ah({headers:s,currentWorkspaceId:t,useCloudProxy:i}),patch:P,dedupeScope:r,useCloudProxy:i});(N.skipped&&N.reason==="unchanged"||!N.skipped&&N.response?.ok&&N.payload?.success!==!1)&&IA(w.current,P)}catch{}},250);return()=>window.clearTimeout(R)},[t,s,r,f,c,i]),o.useEffect(()=>{if(typeof window>"u"||f!==r)return;const v=()=>{const R={...w.current};Object.keys(R).length!==0&&zf({stateKey:"layout",workspaceId:t,headers:ah({headers:s,currentWorkspaceId:t,useCloudProxy:i}),patch:R,keepalive:!0,dedupeScope:r,useCloudProxy:i}).then(P=>{(P.skipped&&P.reason==="unchanged"||!P.skipped&&P.response?.ok&&P.payload?.success!==!1)&&IA(w.current,R)}).catch(()=>{})},T=()=>{document.visibilityState==="hidden"&&v()};return window.addEventListener("pagehide",v),document.addEventListener("visibilitychange",T),()=>{window.removeEventListener("pagehide",v),document.removeEventListener("visibilitychange",T)}},[t,s,r,f,i]),{ready:n&&f===r}}function DJ({value:e,placeholder:t,active:r=!1,onChange:n,onClear:s,clearTitle:i}){return a.jsxs("div",{className:E.searchContainer,style:{width:"240px"},children:[a.jsx(Xh,{size:16,className:E.searchIcon}),a.jsx("input",{type:"text",className:`${E.searchInput} ${r?E.searchActive:""}`,placeholder:t,value:e,onChange:l=>n(l.target.value)}),e&&s&&a.jsx("button",{className:E.clearSearchBtn,onClick:s,title:i,children:a.jsx("span",{"aria-hidden":"true",children:"×"})})]})}function TA({label:e,value:t,options:r,onChange:n,trailingAction:s,width:i}){return a.jsxs("div",{className:E.groupByContainer,style:i?{width:i}:void 0,children:[a.jsx("span",{className:E.groupByLabel,children:e}),a.jsx("select",{className:`${E.select} ${E.groupBySelect}`,value:t,onChange:l=>n(l.target.value),children:r.map(l=>a.jsx("option",{value:l.value,children:l.label},String(l.value)))}),s]})}function sh({actions:e}){return a.jsx(a.Fragment,{children:e.map(t=>a.jsx("button",{className:`tf-control-icon ${t.active?"tf-control-icon-active":""} ${t.className||""}`.trim(),onClick:t.onClick,title:t.title,disabled:t.disabled,"aria-disabled":t.ariaDisabled,"aria-expanded":t.ariaExpanded,"aria-controls":t.ariaControls,children:t.icon},t.key))})}function xA(){return a.jsx("div",{className:E.headerDivider})}function MJ({icon:e,label:t,onClick:r,disabled:n=!1}){return a.jsxs("button",{className:E.primaryUpdateBtn,onClick:r,disabled:n,children:[e," ",t]})}function LJ({children:e,id:t}){return a.jsx("div",{id:t,className:E.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 OJ({categoryFilterOptions:e,typeFilterOptions:t,priorities:r,taxonomyDisplayLabels:n,filterCategories:s,setFilterCategories:i,filterTypes:l,setFilterTypes:c,filterPriorities:d,setFilterPriorities:f,filterStatus:p,setFilterStatus:g,filterAssignees:h,setFilterAssignees:y,assigneeOptions:k,initiativeFilterOptions:w=[],selectedInitiativeId:S="",setSelectedInitiativeId:b=()=>{},workstreamFilterOptions:v=[],selectedWorkstreamId:T="",setSelectedWorkstreamId:R=()=>{},taskScope:P,setTaskScope:N,showArchive:I,setShowArchive:$,onDeleteAllDeleted:j,clearFilters:x,clearFiltersDisabled:V=!1}){return a.jsxs(a.Fragment,{children:[a.jsx(v9,{}),a.jsx(Tf,{label:n?.category||_t("standalone.categoryLabel"),options:e,selected:s,onChange:U=>i(U),variant:"value"}),a.jsx(Tf,{label:n?.type||_t("standalone.typeLabel"),options:t,selected:l,onChange:U=>c(U),variant:"value"}),a.jsx(Tf,{label:n?.priority||_t("standalone.priorityLabel"),options:r,selected:d,onChange:U=>f(U),variant:"value"}),a.jsx(Tf,{label:_t("standalone.statusLabel"),options:fc,selected:p,onChange:U=>g(U),variant:"value"}),a.jsx(Tf,{label:_t("standalone.assigneeLabel"),options:k,selected:h,onChange:U=>y(U),variant:"value",searchable:!0,searchPlaceholder:"Search assignees...",noResultsText:"No assignees found.",renderOptionContent:U=>{const ne=k.find(L=>String(L.value)===String(U.value));return ne?a.jsx(yp,{option:ne,size:20}):U.label}}),a.jsx("div",{className:E.headerDivider,style:{height:"16px",margin:"0 8px"}}),a.jsx(rA,{label:"Initiative",options:w,selected:S,onChange:b,allLabel:"All Initiatives",title:"Filter by initiative"}),a.jsx(rA,{label:"Workstream",options:v,selected:T,onChange:R,allLabel:"All Workstreams",title:"Filter by workstream"}),a.jsx(w9,{onClick:x,disabled:V,label:"Reset task filters and sort"}),a.jsx("div",{style:{flex:1}}),P==="deleted"&&j&&a.jsx(b9,{onClick:j,className:`${E.bulkArchiveBtn} ${E.taskToolbarAction} ${E.bulkDeleteBtn}`,title:"Empty trash",children:"Empty Trash"}),a.jsx(__,{scope:P,onScopeChange:U=>{N(U),U==="archived"?$(!0):I&&$(!1)},className:E.groupByContainer,labelClassName:E.groupByLabel})]})}function BJ(e){return a.jsx(LJ,{id:e.id,children:a.jsx(OJ,{...e})})}const WJ="_drawer_1llbr_1",$J="_drawerBody_1llbr_5",FJ="_paneShell_1llbr_13",UJ="_collapsedPaneShell_1llbr_22",zJ="_collapsedPaneHeader_1llbr_31",HJ="_collapsedPaneLabel_1llbr_43",VJ="_collapsedPaneMuted_1llbr_53",GJ="_treePane_1llbr_66",KJ="_treePaneSplit_1llbr_76",qJ="_detailPane_1llbr_80",YJ="_paneHeader_1llbr_90",ZJ="_paneHeaderLabel_1llbr_104",JJ="_paneContent_1llbr_118",XJ="_sectionTitle_1llbr_132",QJ="_sectionHeaderRow_1llbr_141",eX="_headerActionGroup_1llbr_148",tX="_toggleActive_1llbr_155",rX="_archiveVisibilityToggle_1llbr_161",nX="_sectionGroup_1llbr_167",aX="_navigatorControls_1llbr_173",sX="_navigatorSearchRow_1llbr_179",oX="_navigatorSearch_1llbr_179",iX="_navigatorClearSearch_1llbr_223",cX="_navigatorOptions_1llbr_244",lX="_navigatorOptionField_1llbr_255",dX="_navigatorOptionLabel_1llbr_262",uX="_navigatorDropdown_1llbr_268",pX="_navigatorDropdownTrigger_1llbr_282",fX="_navigatorEmpty_1llbr_295",mX="_scopeSummary_1llbr_324",gX="_treeList_1llbr_361",hX="_treeChildren_1llbr_374",yX="_treeWorkstreamChildren_1llbr_384",kX="_treeTaskChildren_1llbr_388",vX="_visuallyHidden_1llbr_392",wX="_treeRow_1llbr_412",bX="_detailChildCard_1llbr_413",SX="_treeRowShell_1llbr_433",AX="_treeRowShellDraggable_1llbr_438",CX="_treeRowArchived_1llbr_445",IX="_rowButton_1llbr_450",_X="_treeRowDetailOpen_1llbr_455",TX="_treeRowDropReady_1llbr_473",xX="_treeRowDropActive_1llbr_477",RX="_treeRowDropMode_1llbr_483",PX="_treeChevron_1llbr_483",EX="_scopeButton_1llbr_485",NX="_favoriteButton_1llbr_486",jX="_treeRowShellDropMode_1llbr_487",DX="_dragHandle_1llbr_487",MX="_treeRowDragging_1llbr_491",LX="_rowDragGutter_1llbr_499",OX="_rowBody_1llbr_506",BX="_rowContent_1llbr_529",WX="_rowTopRow_1llbr_539",$X="_rowReferenceActions_1llbr_548",FX="_rowActions_1llbr_563",UX="_emptyPanel_1llbr_607",zX="_emptyPanelTitle_1llbr_616",HX="_emptyPanelText_1llbr_622",VX="_loadingState_1llbr_628",GX="_loadingRow_1llbr_634",KX="_loadingBadge_1llbr_646",qX="_loadingTitle_1llbr_647",YX="_loadingMeta_1llbr_648",ZX="_failureState_1llbr_669",JX="_failureStateCompact_1llbr_678",XX="_failureCopy_1llbr_682",QX="_relationshipState_1llbr_708",eQ="_relationshipStateTitle_1llbr_719",tQ="_relationshipStateText_1llbr_725",rQ="_relationshipPaneContentEmpty_1llbr_732",nQ="_relationshipStateEmpty_1llbr_742",aQ="_detailHero_1llbr_756",sQ="_detailReferenceRow_1llbr_763",oQ="_detailTitle_1llbr_770",iQ="_detailTopRow_1llbr_777",cQ="_detailTopActions_1llbr_784",lQ="_detailDescription_1llbr_792",dQ="_detailDescriptionMarkdown_1llbr_805",uQ="_detailOwnerField_1llbr_815",pQ="_detailOwnerLabel_1llbr_821",fQ="_detailSummaryMeta_1llbr_827",mQ="_passiveGuidance_1llbr_831",gQ="_editorCard_1llbr_846",hQ="_inlineEditorCard_1llbr_853",yQ="_editorSelect_1llbr_858",kQ="_ownerSelect_1llbr_862",vQ="_editorField_1llbr_866",wQ="_editorLabel_1llbr_872",bQ="_editorActions_1llbr_878",SQ="_listCard_1llbr_898",AQ="_activityTimelineList_1llbr_907",CQ="_activityTimelineEmpty_1llbr_913",IQ="_sectionDropReady_1llbr_917",_Q="_sectionDropActive_1llbr_922",TQ="_sectionDropMode_1llbr_928",xQ="_linkPickerRow_1llbr_932",RQ="_editorRelationshipRow_1llbr_933",PQ="_relationshipRecovery_1llbr_940",EQ="_listItem_1llbr_956",NQ="_listItemButton_1llbr_965",jQ="_detailCardButton_1llbr_974",DQ="_listItemText_1llbr_980",MQ="_detailChildCardSelected_1llbr_1004",LQ="_detailChildCardArchived_1llbr_1012",OQ="_detailChildReferenceRow_1llbr_1017",BQ="_detailChildCardTopRow_1llbr_1023",WQ="_detailChildActions_1llbr_1039",$Q="_detailTitleRow_1llbr_1053",FQ="_editorIdentityField_1llbr_1060",ze={drawer:WJ,drawerBody:$J,paneShell:FJ,collapsedPaneShell:UJ,collapsedPaneHeader:zJ,collapsedPaneLabel:HJ,collapsedPaneMuted:VJ,treePane:GJ,treePaneSplit:KJ,detailPane:qJ,paneHeader:YJ,paneHeaderLabel:ZJ,paneContent:JJ,sectionTitle:XJ,sectionHeaderRow:QJ,headerActionGroup:eX,toggleActive:tX,archiveVisibilityToggle:rX,sectionGroup:nX,navigatorControls:aX,navigatorSearchRow:sX,navigatorSearch:oX,navigatorClearSearch:iX,navigatorOptions:cX,navigatorOptionField:lX,navigatorOptionLabel:dX,navigatorDropdown:uX,navigatorDropdownTrigger:pX,navigatorEmpty:fX,scopeSummary:mX,treeList:gX,treeChildren:hX,treeWorkstreamChildren:yX,treeTaskChildren:kX,visuallyHidden:vX,treeRow:wX,detailChildCard:bX,treeRowShell:SX,treeRowShellDraggable:AX,treeRowArchived:CX,rowButton:IX,treeRowDetailOpen:_X,treeRowDropReady:TX,treeRowDropActive:xX,treeRowDropMode:RX,treeChevron:PX,scopeButton:EX,favoriteButton:NX,treeRowShellDropMode:jX,dragHandle:DX,treeRowDragging:MX,rowDragGutter:LX,rowBody:OX,rowContent:BX,rowTopRow:WX,rowReferenceActions:$X,rowActions:FX,emptyPanel:UX,emptyPanelTitle:zX,emptyPanelText:HX,loadingState:VX,loadingRow:GX,loadingBadge:KX,loadingTitle:qX,loadingMeta:YX,failureState:ZX,failureStateCompact:JX,failureCopy:XX,relationshipState:QX,relationshipStateTitle:eQ,relationshipStateText:tQ,relationshipPaneContentEmpty:rQ,relationshipStateEmpty:nQ,detailHero:aQ,detailReferenceRow:sQ,detailTitle:oQ,detailTopRow:iQ,detailTopActions:cQ,detailDescription:lQ,detailDescriptionMarkdown:dQ,detailOwnerField:uQ,detailOwnerLabel:pQ,detailSummaryMeta:fQ,passiveGuidance:mQ,editorCard:gQ,inlineEditorCard:hQ,editorSelect:yQ,ownerSelect:kQ,editorField:vQ,editorLabel:wQ,editorActions:bQ,listCard:SQ,activityTimelineList:AQ,activityTimelineEmpty:CQ,sectionDropReady:IQ,sectionDropActive:_Q,sectionDropMode:TQ,linkPickerRow:xQ,editorRelationshipRow:RQ,relationshipRecovery:PQ,listItem:EQ,listItemButton:NQ,detailCardButton:jQ,listItemText:DQ,detailChildCardSelected:MQ,detailChildCardArchived:LQ,detailChildReferenceRow:OQ,detailChildCardTopRow:BQ,detailChildActions:WQ,detailTitleRow:$Q,editorIdentityField:FQ},UQ="_description_ued10_1",zQ="_visuallyHidden_ued10_6",Yh={description:UQ,visuallyHidden:zQ},HQ=te.lazy(()=>zo(()=>import("./EntityActivityTimeline-BVFvCB5R.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.EntityActivityTimeline}))),VQ=te.lazy(()=>zo(()=>import("./ContextAttachmentManager-Cj3c7X9y.js"),__vite__mapDeps([8,1,2,3,4,5])).then(e=>({default:e.ContextAttachmentManager})));function rT(){return a.jsx("span",{className:Yh.visuallyHidden,"aria-hidden":"true",children:"Loading planning details"})}function GQ({description:e,label:t,taskReferences:r,className:n,markdownClassName:s}){const i=String(e||"").trim();return i?a.jsx("div",{className:`${Yh.description} ${n||""}`.trim(),role:"region",tabIndex:0,"aria-label":`${t} description`,children:a.jsx(uy,{variant:"detail",className:s,taskReferences:r,children:i})}):null}function KQ({entityType:e,entityId:t,referenceLabel:r,workspaceId:n,attachments:s,onAddAttachment:i,onRemoveAttachment:l,onUpdateAttachmentCaption:c,readOnly:d=!1,defaultExpanded:f=!0}){return a.jsx(te.Suspense,{fallback:a.jsx(rT,{}),children:a.jsx(VQ,{ownerType:e,ownerId:t,ownerReferenceLabel:r,workspaceId:n,attachments:s||[],onAddAttachment:p=>i?.(p),onRemoveAttachment:p=>l?.(p),onUpdateAttachmentCaption:(p,g)=>c?.(p,g),readOnly:d,defaultExpanded:f})})}function qQ({entityType:e,item:t,assigneeOptions:r,currentActorId:n,taskReferences:s,parentInitiative:i=null,defaultExpanded:l=!1,listClassName:c,emptyClassName:d,hydrationState:f,onRetryHydration:p}){const[g,h]=te.useState(l);te.useEffect(()=>{h(l)},[l,e,t.id]),te.useEffect(()=>{if(!(f?.status!=="error"||!p))return window.addEventListener("online",p),()=>window.removeEventListener("online",p)},[f?.status,p]);const y=te.useMemo(()=>{const R=new Map;for(const P of r){const N=String(P.value||"").trim();N&&(R.set(N,P),R.set(N.toLowerCase(),P))}return R},[r]),k=te.useCallback((R,P,N)=>{if(N&&N.trim())return N.trim();const I=String(R||"").trim();return I?y.get(I)?.label||y.get(I.toLowerCase())?.label||I:P==="ai"?"AI Agent":"You"},[y]),w=te.useCallback(R=>{const P=String(R.actorId||"").trim();if(P_(P))return{kind:"system",label:x_,ActorIcon:VA,description:R_};const N=y.get(P)||y.get(P.toLowerCase()),I=R.actorProfile||N||null,$=R.actorType==="system"?"system":R.actorType==="ai"||I?.kind==="ai"||N?.kind==="agent"?"agent":R.actorType==="human"||I?.kind==="human"||N?.kind==="member"?"member":R.fallbackKind||"member",j=String(I&&"icon"in I&&I.icon?I.icon:$==="agent"?"Bot":$==="member"?"User":"ClipboardList"),x=fp[j]||($==="agent"?Id:$==="member"?sp:GA);return{kind:$,label:$==="system"?"System":k(P,$==="agent"?"ai":"human",I&&"label"in I&&I.label||null),color:I&&"color"in I&&I.color||void 0,ActorIcon:x,isCurrentActorHint:$==="member"&&(P===""||P.toLowerCase()==="user"||P.toLowerCase()==="human")}},[y,k]),S=te.useCallback((R,P)=>{const N=String(P||"").trim();if(N){if(R==="ownerId")return y.get(N)?.label||y.get(N.toLowerCase())?.label||N;if(R==="initiativeId"&&i&&N===i.id)return gs(i)||i.title}},[y,i]),b=te.useMemo(()=>hC({activity:t.activity,comments:t.comments}).length,[t.activity,t.comments]),v=te.useCallback(()=>{h(R=>{const P=!R;return P&&f?.status==="error"&&p?.(),P})},[f?.status,p]),T=f?.error?`${f.error} Retry activity refresh`:"Retry activity refresh";return a.jsxs(a.Fragment,{children:[a.jsx(Gf,{label:"Activity",count:b,showZeroCount:!0,expanded:g,expandedTitle:"Hide activity",collapsedTitle:"Show activity",onToggle:v,actions:f?.status==="error"&&p?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:p,"aria-label":"Retry activity refresh",title:T,children:a.jsx(Ni,{size:13,"aria-hidden":"true"})}):null}),f?.status==="loading"?a.jsx("span",{className:Yh.visuallyHidden,role:"status","aria-live":"polite",children:"Loading latest activity…"}):null,f?.status==="error"?a.jsx("span",{className:Yh.visuallyHidden,role:"status","aria-live":"polite",children:"Activity could not be refreshed. Existing activity is still shown."}):null,g?a.jsx(te.Suspense,{fallback:a.jsx(rT,{}),children:a.jsx(HQ,{activity:t.activity,comments:t.comments,formatFieldValue:S,resolveActorPresentation:w,currentActorId:n,taskReferences:s,emptyMessage:`No ${e} activity yet.`,listClassName:c,emptyClassName:d})}):null]})}const YQ="_identity_1yyv1_1",ZQ="_avatar_1yyv1_9",JQ="_picker_1yyv1_16",XQ="_identityDropdown_1yyv1_17",oh={identity:YQ,avatar:ZQ,picker:JQ,identityDropdown:XQ};function nT({role:e,option:t,label:r,value:n,options:s=[],onChange:i,disabled:l=!1}){const[c,d]=te.useState(!1),f=String(t?.label||r||"").trim(),p=t||(f?{...jd,value:f,label:f,icon:"User",kind:"member"}:jd),g=e==="owner"?`Owner: ${p.label}`:`Assigned to ${p.label}`,h=e==="owner"?`Change owner currently set to ${p.label}`:`Reassign task currently assigned to ${p.label}`,y=te.useMemo(()=>lp(s),[s]),k=te.useMemo(()=>new Map(y.map(b=>[b.value,b])),[y]),w=a.jsx("span",{className:oh.identity,title:i&&!l?h:g,"aria-label":g,children:a.jsx("span",{className:oh.avatar,children:a.jsx(fy,{option:p,size:22,variant:"card"})})});if(!i||l)return w;const S=String(n||t?.value||jd.value);return a.jsx("span",{className:oh.picker,onClick:b=>b.stopPropagation(),onPointerDown:b=>b.stopPropagation(),onKeyDown:b=>b.stopPropagation(),children:a.jsx(li,{value:S,options:y,onChange:async b=>{d(!0);try{await i(String(b))}catch{}finally{d(!1)}},disabled:c,ariaLabel:h,className:oh.identityDropdown,hideChevron:!0,portalPanel:!0,panelAlign:"end",panelMinWidth:240,searchable:!0,searchPlaceholder:e==="owner"?"Search owners...":"Search assignees...",noResultsText:e==="owner"?"No owners found.":"No assignees found.",renderOptionContent:b=>{const v=k.get(String(b.value));return v?a.jsx(yp,{option:v}):b.label},triggerContent:w})})}const QQ="_referenceBadgeButton_1ko1c_1",eee="_referenceBadgeStatic_1ko1c_2",tee="_summaryLayout_1ko1c_8",ree="_summaryContent_1ko1c_17",nee="_title_1ko1c_29",aee="_meta_1ko1c_43",see="_cardFooter_1ko1c_54",oee="_cardFooterMeta_1ko1c_63",iee="_noTasks_1ko1c_71",cee="_scopeCount_1ko1c_79",lee="_contextCount_1ko1c_84",dee="_progressTrack_1ko1c_91",uee="_progressSegment_1ko1c_100",pee="_progressSegmentCancelled_1ko1c_106",fee="_progressSegmentTodo_1ko1c_110",mee="_progressFill_1ko1c_114",js={referenceBadgeButton:QQ,referenceBadgeStatic:eee,summaryLayout:tee,summaryContent:ree,title:nee,meta:aee,cardFooter:see,cardFooterMeta:oee,noTasks:iee,scopeCount:cee,contextCount:lee,progressTrack:dee,progressSegment:uee,progressSegmentCancelled:pee,progressSegmentTodo:fee,progressFill:mee},gee=["done","review","in-progress","on-hold","cancelled","task"];function Md({label:e,entityType:t,entityName:r,interactive:n=!0,provisional:s=!1,pending:i=!1}){const[l,c]=te.useState(!1),d=s||i?E.provisionalReferenceBadge:"",f=r?.trim(),p=te.useCallback(async g=>{g.stopPropagation();try{await navigator.clipboard.writeText(e),c(!0),window.setTimeout(()=>c(!1),1200)}catch{c(!1)}},[e]);return!n||i?a.jsx("span",{className:`${E.referenceBadge} ${E.referenceBadgeStatic} ${js.referenceBadgeStatic} ${d}`.trim(),title:i?"Canonical reference pending synchronization.":f||(s?"Temporary identifier — replaced after synchronization.":void 0),children:a.jsx("span",{children:e})}):a.jsx(Kw,{copied:l,label:e,onClick:p,title:f||(s?"Temporary identifier — replaced after synchronization.":`Copy ${t} reference`),ariaLabel:l?`Copied ${s?"temporary ":""}${t} reference`:s?`Copy temporary ${t} reference ${e}`:`Copy ${t} reference`,className:`${js.referenceBadgeButton} ${d}`.trim(),children:e})}function aT({children:e}){return a.jsx("span",{className:js.title,"data-planning-card-title":"true",children:e})}function sT({children:e,className:t=""}){return a.jsx("span",{className:`${js.meta} ${t}`.trim(),children:e})}function oT(){return a.jsx("span",{className:js.noTasks,children:"No tasks yet"})}function iT({children:e,identity:t}){return a.jsxs("div",{className:js.cardFooter,children:[a.jsx("div",{className:js.cardFooterMeta,children:e}),t]})}function cT({count:e}){const t=Math.max(0,Number(e)||0),r=`${t} context ${t===1?"item":"items"}`;return a.jsxs("span",{className:js.contextCount,"aria-label":r,title:r,children:[a.jsx(H0,{size:12,"aria-hidden":"true"}),a.jsx("span",{"aria-hidden":"true",children:t})]})}function lT({value:e,label:t,statusCounts:r}){const n=Math.min(100,Math.max(0,Number(e)||0)),s=gee.map(d=>{const f=Math.max(0,Number(r?.[d])||0),p=$o(d);return{status:d,count:f,label:p.shortLabel||p.label,color:d==="task"||d==="cancelled"?void 0:Jn(p.color)}}),i=s.reduce((d,f)=>d+f.count,0),l=s.filter(d=>d.count>0).map(d=>`${d.label}: ${d.count}`).join(", "),c=l?`${t}. ${l}`:t;return a.jsx("div",{className:js.progressTrack,role:"progressbar","aria-label":c,title:l||void 0,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":n,children:i>0?s.map(d=>d.count>0?a.jsx("span",{"aria-hidden":"true","data-progress-status":d.status,className:`${js.progressSegment} ${d.status==="cancelled"?js.progressSegmentCancelled:""} ${d.status==="task"?js.progressSegmentTodo:""}`.trim(),style:{width:`${d.count/i*100}%`,backgroundColor:d.color}},d.status):null):a.jsx("span",{className:js.progressFill,style:{width:`${n}%`},"aria-hidden":"true"})})}function dT({item:e,workstreamCount:t,className:r=""}){const n=e.taskCount>0,s=Math.max(0,Number(t)||0);return a.jsxs(sT,{className:r,children:[t!==void 0?a.jsxs(a.Fragment,{children:[a.jsxs("span",{className:js.scopeCount,children:[s," ",s===1?"workstream":"workstreams"]}),a.jsx("span",{"aria-hidden":"true",children:"•"})]}):null,n?a.jsxs(a.Fragment,{children:[a.jsxs("span",{children:[e.completedTaskCount," of ",e.taskCount," complete"]}),a.jsx("span",{"aria-hidden":"true",children:"•"})]}):null,a.jsx(cT,{count:e.attachmentCount})]})}function uT({item:e,entityType:t,workstreamCount:r,ownerOption:n,ownerOptions:s,onChangeOwner:i,onChangeIdentity:l}){const c=e.taskCount>0;return a.jsxs("div",{className:js.summaryLayout,children:[a.jsx(ym,{entityType:t,entityId:e.id,icon:e.icon,color:e.color,disabled:!!e.isArchived,onChange:l}),a.jsxs("div",{className:js.summaryContent,children:[a.jsx(aT,{children:e.title}),c?a.jsx(lT,{value:e.progressPercent,label:`${e.title}: ${e.progressPercent}% resolved`,statusCounts:e.statusCounts}):null,a.jsxs(iT,{identity:a.jsx(nT,{role:"owner",option:n,label:e.ownerLabel,value:e.ownerId,options:s,onChange:i,disabled:!!e.isArchived}),children:[c?null:a.jsx(oT,{}),a.jsx(dT,{item:e,workstreamCount:t==="initiative"?r:void 0})]})]})]})}const hee="_card_6phn6_1",yee="_content_6phn6_34",kee="_compact_6phn6_52",vee="_archived_6phn6_57",wee="_referenceRow_6phn6_75",bee="_topRow_6phn6_85",See="_actions_6phn6_101",vd={card:hee,content:yee,compact:kee,archived:vee,referenceRow:wee,topRow:bee,actions:See};function pT({task:e,assigneeOption:t,assigneeOptions:r,showStatusLabel:n,onOpen:s,onAssigneeChange:i,onStatusChange:l,referenceAction:c,actions:d,feedback:f,referenceInteractive:p=!0,compact:g=!1}){const h=gw(e),y=h.label,k=$o(e.status),w=k.value==="task"?"":k.shortLabel||k.label,S=Jn(k.color),b=y?`Open task ${y}: ${e.title}`:`Open task ${e.title}`,v=T=>{!s||T.key!=="Enter"&&T.key!==" "||(T.preventDefault(),s())};return a.jsxs("div",{className:`${vd.card} ${g?vd.compact:""} ${e.isArchived?vd.archived:""}`.trim(),"data-task-status":k.value,style:{"--planning-task-status-color":S},children:[a.jsxs("div",{className:vd.topRow,children:[a.jsxs("div",{className:vd.referenceRow,children:[c,y?a.jsx(Md,{label:y,entityType:"task",interactive:p,provisional:h.isProvisional}):a.jsx("span",{"aria-hidden":"true"})]}),a.jsxs("div",{className:vd.actions,onClick:T=>T.stopPropagation(),children:[d,a.jsx(zh,{status:k.value,disabled:!!e.isArchived||!l,compressed:!0,shortLabels:!0,showLabel:n,archiveActionMode:"none",onStatusChange:l})]})]}),f,a.jsxs("div",{role:s?"button":void 0,tabIndex:s?0:void 0,className:vd.content,onClick:s,onKeyDown:v,"aria-label":s?b:void 0,children:[a.jsx(aT,{children:e.title}),a.jsx(iT,{identity:a.jsx(nT,{role:"assignee",option:t,value:e.assignee,options:r,onChange:i,disabled:!!e.isArchived}),children:a.jsxs(sT,{children:[w?a.jsxs(a.Fragment,{children:[w,a.jsx("span",{"aria-hidden":"true",children:" • "})]}):null,a.jsx(cT,{count:e.attachmentCount}),e.isArchived?a.jsxs(a.Fragment,{children:[a.jsx("span",{"aria-hidden":"true",children:" • "}),"archived"]}):null]})})]})]})}const nv=Object.freeze([{value:"execution",label:"Execution order",description:"Shared order planned for this workstream."},{value:"ready",label:"Ready first",description:"Shows tasks with completed prerequisites first."},{value:"priority",label:"Priority",description:"Shows higher-priority tasks first."}]);function Aee(e){return e==="ready"||e==="priority"?e:"execution"}function Cee(e,t){const r=new Set(t);if(r.size!==t.length)throw new Error("Visible task order contains duplicate task ids.");if(e.filter(i=>r.has(i.id)).length!==r.size)throw new Error("Visible task order contains tasks outside this workstream.");let s=0;return e.map(i=>r.has(i.id)?t[s++]:i.id)}function Rd(e){const t=$o(e.status).value;return t==="done"||t==="cancelled"}function Jw(e,t){const r=typeof e.workstreamOrder=="number"&&Number.isFinite(e.workstreamOrder)?e.workstreamOrder:Number.POSITIVE_INFINITY,n=typeof t.workstreamOrder=="number"&&Number.isFinite(t.workstreamOrder)?t.workstreamOrder:Number.POSITIVE_INFINITY;return r!==n?r-n:String(e.createdAt||"").localeCompare(String(t.createdAt||""))||e.id.localeCompare(t.id)}function RA(e,t){return e.dependencyState?e.dependencyState==="ready":(e.prerequisiteTaskIds||[]).every(r=>$o(t.get(r)?.status).value==="done")}function Zh(e){return e.map((t,r)=>({task:t,index:r})).sort((t,r)=>Jw(t.task,r.task)||t.index-r.index).map(({task:t})=>t)}function Iee(e,t){const r=new Set(e.map(f=>f.id)),n=new Map,s=new Map(e.map(f=>[f.id,0]));for(const f of e)for(const p of f.prerequisiteTaskIds||[]){const g=t.get(p);!g||Rd(g)||!r.has(p)||(n.set(p,[...n.get(p)||[],f.id]),s.set(f.id,(s.get(f.id)||0)+1))}const i=new Map(e.map(f=>[f.id,f])),l=Zh(e.filter(f=>s.get(f.id)===0)),c=[];for(;l.length>0;){const f=l.shift();c.push(f);for(const p of n.get(f.id)||[]){const g=(s.get(p)||0)-1;if(s.set(p,g),g===0){const h=i.get(p);h&&(l.push(h),l.sort(Jw))}}}if(c.length===e.length)return c;const d=new Set(c.map(f=>f.id));return[...c,...Zh(e.filter(f=>!d.has(f.id)))]}function Jv(e,t){const r=new Map(e.map(n=>[n.id,n]));if(t==="ready"){const n=e.filter(l=>!Rd(l)),s=Zh(n.filter(l=>RA(l,r))),i=Iee(n.filter(l=>!RA(l,r)),r);return[...s,...i,...Zh(e.filter(Rd))]}return e.map((n,s)=>({task:n,index:s})).sort((n,s)=>{const i=n.task,l=s.task,c=Number(Rd(i))-Number(Rd(l));if(c)return c;if(t==="priority"){const d=Number(l.priority||0)-Number(i.priority||0);if(d)return d}return Jw(i,l)||n.index-s.index}).map(({task:n})=>n)}const _ee="_control_1n99m_1",Xw={control:_ee},Tee="_trigger_11iyx_1",xee={trigger:Tee};function Ree({value:e,onChange:t}){const r=nv.find(n=>n.value===e)||nv[0];return a.jsx(li,{value:e,options:[...nv],onChange:n=>t(n),ariaLabel:"Arrange workstream tasks",className:Xw.control,portalPanel:!0,panelAlign:"end",triggerContent:a.jsxs("span",{className:xee.trigger,title:r.description,children:[a.jsx(sw,{size:14,"aria-hidden":"true"}),a.jsx("span",{children:r.label})]})})}const Pee="_list_oepxi_1",Eee="_item_oepxi_6",Nee="_grip_oepxi_13",jee="_card_oepxi_40",qf={list:Pee,item:Eee,grip:Nee,card:jee};function Dee(e){const t=uw({id:e.task.id,disabled:e.disabled}),r=e.disabledReason?`Reorder ${e.task.title} — ${e.disabledReason}`:`Reorder ${e.task.title}`;return a.jsxs("div",{ref:t.setNodeRef,className:qf.item,style:{transform:Qh.Transform.toString(t.transform),transition:t.transition},children:[a.jsx("button",{ref:t.setActivatorNodeRef,type:"button",className:qf.grip,disabled:e.disabled,"aria-label":r,title:e.disabledReason||"Drag to change execution order",...t.attributes,...t.listeners,children:a.jsx(nw,{size:15,"aria-hidden":"true"})}),a.jsx("div",{className:qf.card,children:e.children})]})}function Mee(e){const[t,r]=te.useState(()=>e.tasks.map(h=>h.id)),[n,s]=te.useState(!1),i=e.tasks.map(h=>h.id).join("\0");te.useEffect(()=>r(e.tasks.map(h=>h.id)),[i]);const l=ow(Qf(iw,{activationConstraint:{distance:6}}),Qf(aC,{coordinateGetter:nC})),c=te.useMemo(()=>{const h=new Map(e.tasks.map(y=>[y.id,y]));return t.map(y=>h.get(y)).filter(y=>!!y)},[t,e.tasks]),d=!!e.onReorder,f=e.mode==="execution"&&d,p=te.useCallback(async h=>{if(!f||n||!h.over||h.active.id===h.over.id)return;const y=t,k=y.indexOf(String(h.active.id)),w=y.indexOf(String(h.over.id));if(k<0||w<0)return;const S=new Map(c.map(R=>[R.id,R])),b=S.get(y[k]),v=S.get(y[w]);if(!b||!v||Rd(b)!==Rd(v))return;const T=tC(y,k,w);r(T),s(!0);try{await e.onReorder?.(T)}catch{r(y)}finally{s(!1)}},[f,t,c,e,n]);if(!d)return a.jsx("div",{className:`${qf.list} ${e.className||""}`.trim(),children:e.tasks.map(h=>a.jsx(te.Fragment,{children:e.children(h)},h.id))});const g=e.mode==="execution"?void 0:"Switch to Execution order to reorder tasks";return a.jsx(cw,{sensors:l,collisionDetection:rC,onDragEnd:h=>{p(h)},children:a.jsx(lw,{items:t,strategy:dw,children:a.jsx("div",{className:`${qf.list} ${e.className||""}`.trim(),"aria-busy":n||void 0,children:c.map(h=>a.jsx(Dee,{task:h,disabled:!f||n,disabledReason:g||(n?"Saving execution order":void 0),children:e.children(h)},h.id))})})})}const Lee="_prompt_16ixe_1",Oee="_actions_16ixe_20",PA={prompt:Lee,actions:Oee};function Xv({entityType:e,title:t,activeTaskCount:r=0,activeWorkstreamCount:n=0,busy:s,onCancel:i,onConfirm:l}){const c=[r>0?`${r} completed/cancelled ${r===1?"task":"tasks"}`:"",e==="initiative"&&n>0?`${n} ${n===1?"workstream":"workstreams"}`:""].filter(Boolean),d=c.length===0?"":c.length===1?`${c[0]} and `:`${c.join(", ")}, and `;return a.jsxs("div",{className:`${PA.prompt} tf-surface-inset`,role:"group","aria-label":`Confirm archive ${e} ${t}`,children:[a.jsxs("span",{children:["Archive ",d,"this ",e,"?"]}),a.jsxs("div",{className:PA.actions,children:[a.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",disabled:s,onClick:i,title:"Cancel archive","aria-label":"Cancel archive",children:a.jsx(di,{size:14,"aria-hidden":"true"})}),a.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",disabled:s,onClick:l,title:"Confirm archive","aria-label":s?"Archiving":"Confirm archive",children:a.jsx(ji,{size:14,"aria-hidden":"true"})})]})]})}const Bee="_title_sy4bx_1",Wee="_content_sy4bx_7",$ee="_help_sy4bx_17",Fee="_actions_sy4bx_22",ih={title:Bee,content:Wee,help:$ee,actions:Fee};function Uee({item:e,busy:t,theme:r,onCancel:n,onConfirm:s}){return a.jsx(Uo,{isOpen:!!e,onClose:n,closeDisabled:t,closeOnOverlayClick:!1,size:"sm",theme:r,title:a.jsxs("span",{className:ih.title,children:[a.jsx(Ff,{size:17,"aria-hidden":"true"}),"Unlink ",e?.entityType||"item"]}),footer:a.jsxs("div",{className:ih.actions,children:[a.jsx("button",{type:"button",className:"tf-button-secondary",disabled:t,onClick:n,"data-modal-initial-focus":!0,children:"Cancel"}),a.jsx("button",{type:"button",className:"tf-button-destructive",disabled:t,onClick:s,children:t?"Unlinking…":"Unlink"})]}),children:e?a.jsxs("div",{className:ih.content,children:[a.jsxs("p",{children:["Unlink ",a.jsx("strong",{children:e.referenceLabel})," ",e.title," from ",e.parentLabel,"?"]}),a.jsx("p",{className:ih.help,children:"The item will remain available and can be linked again later."})]}):null})}const zee="_triggerAction_ssrgo_1",Hee="_triggerSelection_ssrgo_2",Vee="_iconPicker_ssrgo_9",Gee="_option_ssrgo_20",Kee="_optionTopRow_ssrgo_27",qee="_optionTitle_ssrgo_38",Yee="_optionMeta_ssrgo_47",wd={triggerAction:zee,triggerSelection:Hee,iconPicker:Vee,option:Gee,optionTopRow:Kee,optionTitle:qee,optionMeta:Yee};function Jh({options:e,selectedId:t="",entityLabel:r,onSelect:n,disabled:s=!1,className:i="",iconTrigger:l=!1,triggerTitle:c}){const d=te.useMemo(()=>new Map(e.map(h=>[h.id,h])),[e]),f=te.useMemo(()=>e.map(h=>({value:h.id,label:[h.referenceLabel,h.title,h.meta].filter(Boolean).join(" ")})),[e]),p=d.get(t),g=`Link ${r}`;return a.jsx(li,{value:t,options:f,onChange:h=>{const y=d.get(String(h));y&&n(y)},disabled:s||e.length===0,className:`${l?`${wd.iconPicker} ${E.taskWorkstreamPicker}`:Xw.control} ${i}`.trim(),portalPanel:!0,panelAlign:"start",panelMinWidth:320,searchable:!0,searchPlaceholder:`Search ${r}s by title or reference`,noResultsText:`No matching ${r}s.`,ariaLabel:g,title:l?c||g:void 0,hideChevron:l,triggerContent:l?a.jsx(Zf,{size:14,"aria-hidden":"true"}):p?a.jsxs("span",{className:wd.triggerSelection,children:[a.jsx(Md,{label:p.referenceLabel,entityType:r,entityName:p.title}),a.jsx("span",{children:p.title})]}):a.jsxs("span",{className:wd.triggerAction,children:[a.jsx(Zf,{size:14,"aria-hidden":"true"}),a.jsx("span",{children:g})]}),renderOptionContent:h=>{const y=d.get(String(h.value));return y?a.jsxs("span",{className:wd.option,children:[a.jsxs("span",{className:wd.optionTopRow,children:[r!=="task"?a.jsx(ym,{entityType:r,entityId:y.id,icon:y.icon,color:y.color,size:"inline",disabled:!0}):null,a.jsx(Md,{label:y.referenceLabel,entityType:r,entityName:y.title}),a.jsx("span",{className:wd.optionTitle,children:y.title})]}),y.meta?a.jsx("span",{className:wd.optionMeta,children:y.meta}):null]}):h.label},placeholder:g})}function fT(e,t){const r=String(t||"").trim(),n=new Map;for(const s of e){const i=String(s?.value||"").trim();if(!i||i==="unassigned"||typeof s.archivedAt=="string"&&s.archivedAt.trim().length>0)continue;const l=String(s.label||i).trim()||i,c=String(s.kind||"").trim().toLowerCase(),d=String(s.username||"").trim().toLowerCase(),f=c==="agent"?`agent:${d||l.toLowerCase()}`:`value:${i}`;(!n.has(f)||i===r)&&n.set(f,{...s,value:i,label:l})}return Array.from(n.values()).sort((s,i)=>s.label.localeCompare(i.label,void 0,{sensitivity:"base"}))}function uc(e){const t=e.kind==="agent"?"agent":e.kind==="member"?"member":"unassigned";return{value:e.value,label:e.label,icon:e.icon||(t==="agent"?"Bot":t==="member"?"User":fm),color:e.color||(t==="agent"?"var(--brand-primary)":t==="member"?"var(--status-success)":sy),kind:t,avatarUrl:e.avatarUrl,avatarRevision:e.avatarRevision,avatarUpdatedAt:e.avatarUpdatedAt,username:e.username,surfaceType:e.surfaceType,providerMetadata:e.providerMetadata,archivedAt:e.archivedAt}}function Qw({value:e,options:t,leadingOptions:r=[],includeUnassigned:n=!0,onChange:s,disabled:i,ariaLabel:l,className:c}){const d=te.useMemo(()=>{const p=r.map(y=>({...y,value:String(y.value||"").trim(),label:String(y.label||y.value||"").trim()})).filter(y=>y.value&&y.label),g=new Set(p.map(y=>y.value)),h=fT(t,e).filter(y=>!g.has(y.value));return[...p,...n?[{value:"",label:"Unassigned",icon:fm,color:sy,kind:"unassigned"}]:[],...h]},[n,r,t,e]),f=te.useMemo(()=>new Map(d.map(p=>[p.value,uc(p)])),[d]);return a.jsx(li,{value:e,options:d.map(p=>({value:p.value,label:p.label,icon:p.icon||void 0,color:p.color||void 0})),onChange:p=>s(String(p)),disabled:i,ariaLabel:l,className:c,portalPanel:!0,panelAlign:"start",panelMinWidth:240,searchable:!0,searchPlaceholder:"Search owners...",noResultsText:"No owners found.",renderOptionContent:p=>{const g=f.get(String(p.value));return g?a.jsx(yp,{option:g}):p.label}})}const EA=[{value:"default",label:"Default order"},{value:"title",label:"Title"},{value:"owner",label:"Owner"},{value:"progress",label:"Progress"}];function bh(e,t,r){if(t==="all")return!0;const n=String(e.ownerId||"").trim();return t==="unassigned"?!n:t==="mine"?!!r&&n===r:n===t}function Sh(e,t,r){if(!r)return!0;const n=t==="initiative"?gs(e):Fo(e);return e.title.toLocaleLowerCase().includes(r)||n.toLocaleLowerCase().includes(r)}function av({item:e,entityType:t,showArchivedPlanning:r,searchQuery:n,ownerFilter:s,currentOwnerId:i}){return(r||!e.isArchived)&&bh(e,s,i.trim())&&Sh(e,t,n.trim().toLocaleLowerCase())}function ch(e,t){return t==="default"?e:e.map((r,n)=>({item:r,index:n})).sort((r,n)=>{let s=0;if(t==="title")s=r.item.title.localeCompare(n.item.title,void 0,{sensitivity:"base"});else if(t==="owner"){const i=String(r.item.ownerLabel||"").trim(),l=String(n.item.ownerLabel||"").trim();!i&&l?s=1:i&&!l?s=-1:s=i.localeCompare(l,void 0,{sensitivity:"base"})}else s=n.item.progressPercent-r.item.progressPercent;return s||r.index-n.index}).map(({item:r})=>r)}function Zee({initiatives:e,standaloneWorkstreams:t,showArchivedPlanning:r,searchQuery:n,ownerFilter:s,currentOwnerId:i,sort:l}){const c=n.trim().toLocaleLowerCase(),d=!!c||s!=="all",f=i.trim(),g=e.filter(S=>r||!S.isArchived).flatMap(S=>{const b=(S.allWorkstreams||S.workstreams).filter($=>r||!$.isArchived);if(!d)return[{initiative:S,workstreams:ch(b,l)}];const v=bh(S,s,f),T=Sh(S,"initiative",c),R=v&&T,P=b.filter($=>bh($,s,f)),N=P.filter($=>Sh($,"workstream",c)),I=R&&c?P:N;return!R&&I.length===0?[]:[{initiative:S,workstreams:ch(I,l)}]}),h=new Map(g.map(S=>[S.initiative.id,S])),y=ch(g.map(({initiative:S})=>S),l).map(S=>h.get(S.id)),k=t.filter(S=>(r||!S.isArchived)&&bh(S,s,f)&&Sh(S,"workstream",c)),w=ch(k,l);return{initiatives:y,standaloneWorkstreams:w,hasCriteria:d,resultCount:y.length+y.reduce((S,b)=>S+b.workstreams.length,0)+w.length}}const Yf=392,mc=392,sv=56,mT=1280,Jee=Yf+mc;function Xee(e,t=0){const r=Math.max(0,e-t);return r>=mT?"wide":r>=Jee?"medium":"narrow"}function Qee(e){const t=te.useCallback(()=>typeof window>"u"?mT+e:window.innerWidth,[e]),[r,n]=te.useState(t);return te.useEffect(()=>{const s=()=>n(t());return s(),window.addEventListener("resize",s),()=>window.removeEventListener("resize",s)},[t]),{viewportWidth:r,availableWidth:Math.max(0,r-e),layoutMode:Xee(r,e)}}function gT(e,t,r,n,s){return(e?sv:Yf)+(t?r?sv:mc:0)+(n?s?sv:mc:0)}function ov({visible:e,disabled:t,disabledLabel:r,itemLabel:n,onToggle:s}){const i=e?`Hide archived ${n}`:`Show archived ${n}`,l=t?r||`No archived ${n}`:i;return a.jsx("button",{type:"button",className:`tf-control-icon ${ze.archiveVisibilityToggle} ${e?ze.toggleActive:""}`.trim(),title:l,"aria-label":l,"aria-pressed":e,disabled:t,onClick:s,children:e?a.jsx(aw,{size:15,"aria-hidden":"true"}):a.jsx(ZA,{size:15,"aria-hidden":"true"})})}function NA(e){return e.type==="initiative"?(e.item.allWorkstreams||e.item.workstreams).filter(t=>!!t.isArchived).length:(e.item.tasks||[]).filter(t=>!!t.isArchived).length}function Rf({rowId:e,rowType:t,referenceLabel:r,item:n,ownerOption:s,ownerOptions:i,workstreamCount:l,active:c,isArchived:d=!1,detailOpen:f=!1,canExpand:p=!1,expanded:g=!1,controlsId:h,onToggleExpand:y,onToggleScope:k,onOpenDetails:w,onChangeOwner:S,onChangeIdentity:b,initiativeLinkOptions:v=[],onLinkInitiative:T,favorite:R,favoriteReady:P,onToggleFavorite:N,onArchiveReady:I,hierarchyInteractions:$=!0}){const{title:j}=n,[x,V]=te.useState(!1),[U,ne]=te.useState(!1),[L,ie]=te.useState(!1),{active:J}=sC(),ue=String(J?.data?.current?.type||""),oe=$&&t==="workstream"&&ue==="task-card",ge=$&&t==="initiative"&&ue==="planning-workstream",je=t==="workstream"?"planning-workstream-target":"planning-initiative-target",{setNodeRef:qe,isOver:Ye}=pw({id:`${je}:${e}`,data:t==="workstream"?{type:je,workstreamId:e}:{type:je,initiativeId:e},disabled:!$}),he=$&&t==="workstream",{attributes:ce,listeners:B,setNodeRef:K,setActivatorNodeRef:Ae,transform:re,isDragging:F}=dx({id:`planning-workstream:${e}`,data:{type:"planning-workstream",workstreamId:e},disabled:!he}),D=he&&re?{transform:Qh.Translate.toString(re)}:void 0,z=oe||ge,we=t==="initiative"?"workstreams":"tasks",ke=p&&!!y,ee=p?`${g?"Collapse":"Expand"} ${we} for ${j}`:`No ${we} for ${j}`,Z=!!(n.archiveReady&&!d&&I),H=te.useRef({}),[ae,Te]=te.useState("favorite"),Le=te.useMemo(()=>[...P?["favorite"]:[],...Z?["archive"]:[],"scope",...ke?["disclosure"]:[]],[Z,ke,P]),Ue=Le.includes(ae)?ae:Le[0];te.useEffect(()=>{Ue&&Ue!==ae&&Te(Ue)},[ae,Ue]);const ft=te.useCallback(A=>{Te(A)},[]),He=te.useCallback(A=>{if(!["ArrowLeft","ArrowRight","Home","End"].includes(A.key))return;const _e=A.target.closest("[data-planning-row-action]")?.dataset.planningRowAction;if(!_e||!Le.includes(_e))return;A.preventDefault();const Ne=Le.indexOf(_e),Ee=A.key==="Home"?0:A.key==="End"?Le.length-1:A.key==="ArrowRight"?(Ne+1)%Le.length:(Ne-1+Le.length)%Le.length,fe=Le[Ee];Te(fe),H.current[fe]?.focus()},[Le]),Fe=async()=>{if(!(!I||U)){ne(!0);try{await I()&&V(!1)}finally{ne(!1)}}},me=async A=>{if(!(!T||L)){ie(!0);try{await T(A)}finally{ie(!1)}}},ve=t==="workstream"&&!!T,ot=d||L||v.length===0,Oe=d?"Unarchive this workstream before linking an initiative":v.length===0?"No initiatives available":"Link initiative";return a.jsxs("div",{ref:K,style:D,className:`${ze.treeRowShell} ${he?ze.treeRowShellDraggable:""} ${F?ze.treeRowDragging:""} ${z?ze.treeRowShellDropMode:""}`.trim(),"data-planning-draggable-row":he||void 0,children:[he?a.jsx("div",{className:ze.rowDragGutter,"data-planning-drag-gutter":"true",children:a.jsx("button",{type:"button",ref:Ae,className:ze.dragHandle,title:"Drag onto an initiative to move this workstream","aria-label":`Move workstream ${j} to an initiative`,"data-planning-drag-handle":"true",...ce,...B,children:a.jsx(nw,{size:15,"aria-hidden":"true"})})}):null,a.jsx("div",{ref:qe,className:`${ze.treeRow} ${d?ze.treeRowArchived:""} ${f?ze.treeRowDetailOpen:""} ${z?ze.treeRowDropReady:""} ${Ye?ze.treeRowDropActive:""} ${z?ze.treeRowDropMode:""}`,"data-board-scoped":c||void 0,children:a.jsxs("div",{className:ze.rowContent,children:[a.jsxs("div",{className:ze.rowTopRow,children:[a.jsxs("div",{className:ze.rowReferenceActions,children:[ve?a.jsx(Jh,{options:v,entityLabel:"initiative",onSelect:A=>{me(A)},disabled:ot,iconTrigger:!0,triggerTitle:Oe}):null,a.jsx(Md,{label:r||"Reference pending",entityType:t,entityName:j,pending:!r})]}),a.jsxs("div",{className:ze.rowActions,role:"toolbar","aria-label":`${t==="initiative"?"Initiative":"Workstream"} actions for ${j}`,"aria-orientation":"horizontal",onKeyDown:He,children:[a.jsx("button",{type:"button",ref:A=>{H.current.favorite=A},className:`tf-control-icon tf-control-icon-compact ${ze.favoriteButton} ${R?"tf-control-icon-active":""}`.trim(),onClick:N,onFocus:()=>ft("favorite"),disabled:!P,tabIndex:Ue==="favorite"?0:-1,"data-planning-row-action":"favorite",title:P?R?`Remove ${t} from Favorites`:`Add ${t} to Favorites`:"Loading Favorites","aria-label":P?R?`Remove ${t} ${j} from Favorites`:`Add ${t} ${j} to Favorites`:`Loading Favorites for ${t} ${j}`,"aria-pressed":R,children:a.jsx(V0,{size:14,fill:R?"currentColor":"none","aria-hidden":"true"})}),Z?a.jsx("button",{type:"button",ref:A=>{H.current.archive=A},className:"tf-control-icon tf-control-icon-compact",onClick:()=>V(!0),onFocus:()=>ft("archive"),tabIndex:Ue==="archive"?0:-1,"data-planning-row-action":"archive",title:`Archive completed ${t}`,"aria-label":`Archive completed ${t} ${j}`,"aria-expanded":x,children:a.jsx(Ed,{size:14,"aria-hidden":"true"})}):null,a.jsx("button",{type:"button",ref:A=>{H.current.scope=A},className:`tf-control-icon tf-control-icon-compact ${ze.scopeButton} ${c?"tf-control-icon-active":""}`.trim(),onClick:k,onFocus:()=>ft("scope"),tabIndex:Ue==="scope"?0:-1,"data-planning-row-action":"scope",title:c?"Clear board scope":"Scope board to this item","aria-label":c?`Clear board scope for ${j}`:`Scope board to ${j}`,"aria-pressed":c,children:a.jsx(G0,{size:14,"aria-hidden":"true"})}),a.jsx("button",{type:"button",ref:A=>{H.current.disclosure=A},className:`tf-control-icon tf-control-icon-compact ${ze.treeChevron}`.trim(),onClick:ke?y:void 0,onFocus:()=>ft("disclosure"),tabIndex:Ue==="disclosure"?0:-1,"data-planning-row-action":"disclosure",title:ee,"aria-label":ee,"aria-expanded":ke?g:!1,"aria-controls":ke&&g?h:void 0,disabled:!ke,children:g&&ke?a.jsx(Ud,{size:14,"aria-hidden":"true"}):a.jsx(Od,{size:14,"aria-hidden":"true"})})]})]}),a.jsx("div",{className:ze.rowBody,children:a.jsx("div",{role:"button",tabIndex:0,className:ze.rowButton,onClick:w,onKeyDown:A=>{A.key!=="Enter"&&A.key!==" "||(A.preventDefault(),w())},"aria-label":`View ${t} details for ${j}`,"aria-pressed":f,children:a.jsx(uT,{item:n,entityType:t,workstreamCount:l,ownerOption:s?uc(s):void 0,ownerOptions:i.map(uc),onChangeOwner:S,onChangeIdentity:b})})}),x?a.jsx(Xv,{entityType:t,title:j,activeTaskCount:n.archiveActiveTaskCount,activeWorkstreamCount:n.archiveActiveWorkstreamCount,busy:U,onCancel:()=>V(!1),onConfirm:()=>{Fe()}}):null]})})]})}function ete({task:e,assigneeOption:t,assigneeOptions:r,showTaskCardStatusLabel:n,onOpenTaskById:s,onChangeTaskAssignee:i,onSetTaskStatus:l,onArchivePlanningTask:c}){const[d,f]=te.useState(!1),p=$o(e.status).value,g=!e.isArchived&&(p==="done"||p==="cancelled")&&!!c;return a.jsx("div",{className:`${ze.listItemButton} ${ze.detailCardButton}`.trim(),children:a.jsx(pT,{task:e,assigneeOption:t?uc(t):void 0,assigneeOptions:r.map(uc),showStatusLabel:n,onOpen:s?()=>s(e.id):void 0,onAssigneeChange:i?h=>i(e.id,h):void 0,onStatusChange:l?h=>l(e.id,h):void 0,actions:g?a.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",disabled:d,onClick:async h=>{h.stopPropagation(),f(!0);try{await c?.(e.id)}finally{f(!1)}},title:"Archive task","aria-label":`Archive task ${ys(e)||e.title}`,children:a.jsx(Ed,{size:14,"aria-hidden":"true"})}):void 0,compact:!0})})}function Pf({label:e,onExpand:t,muted:r=!1}){return a.jsx("div",{className:`${ze.paneShell} ${ze.collapsedPaneShell} ${r?ze.collapsedPaneMuted:""}`.trim(),"data-relationship-state":r?"missing":void 0,children:a.jsxs("div",{className:ze.collapsedPaneHeader,children:[a.jsx("button",{type:"button",className:"tf-control-icon",onClick:t,title:`Expand ${e}`,"aria-label":`Expand ${e} pane`,children:a.jsx(Od,{size:16,"aria-hidden":"true"})}),a.jsx("span",{className:ze.collapsedPaneLabel,children:e})]})})}function jA({label:e,title:t,description:r,onCollapse:n,action:s,paneRef:i}){const l=!r&&!s;return a.jsxs("div",{ref:i,"data-planning-pane":`${e.toLowerCase()}-relationship`,className:`${ze.paneShell} ${E.appScrollbar} tf-scrollbar ${ze.detailPane}`.trim(),style:{flex:`0 0 ${mc}px`,width:`${mc}px`,minWidth:`${mc}px`,maxWidth:`${mc}px`},children:[a.jsxs("div",{className:ze.paneHeader,children:[a.jsx("h2",{className:ze.paneHeaderLabel,tabIndex:-1,"data-planning-pane-heading":!0,children:e}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:n,"aria-label":`Collapse ${e} pane`,title:`Collapse ${e} pane`,children:a.jsx(bo,{size:16,"aria-hidden":"true"})})]}),a.jsx("div",{className:`${ze.paneContent} ${l?ze.relationshipPaneContentEmpty:""}`.trim(),children:a.jsxs("div",{className:`${ze.relationshipState} ${l?ze.relationshipStateEmpty:""}`.trim(),"data-relationship-display":l?"empty":"detail",children:[a.jsx("span",{className:ze.relationshipStateTitle,children:t}),r?a.jsx("p",{className:ze.relationshipStateText,children:r}):null,s?a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:s.onClick,children:s.label}):null]})})]})}function tte({initiatives:e,standaloneWorkstreams:t,planningLoadState:r,taskScope:n,showArchivedPlanning:s,currentOwnerId:i,assigneeOptions:l,showTaskCardStatusLabel:c=!1,taskArrangeMode:d="execution",activeInitiativeId:f,activeWorkstreamId:p,navigatorSort:g,navigatorSortReady:h,onNavigatorSortChange:y,planningFavorites:k,onTogglePlanningFavorite:w,favoritesSectionCollapsed:S,initiativesSectionCollapsed:b,workstreamsSectionCollapsed:v,onToggleFavoritesSection:T,onToggleInitiativesSection:R,onToggleWorkstreamsSection:P,expandedInitiativeIds:N,detail:I,secondaryPane:$,onCreateInitiative:j,onCreateWorkstream:x,onToggleInitiative:V,onSelectInitiative:U,onSelectWorkstream:ne,onOpenInitiativeDetails:L,onOpenWorkstreamDetails:ie,onOpenNestedWorkstreamDetails:J,onOpenTaskById:ue,onSetTaskStatus:oe,onChangePlanningOwner:ge,onChangePlanningIdentity:je=()=>{},onChangeTaskAssignee:qe,onArchivePlanningTask:Ye,onArchiveResolvedWorkstream:he,onArchiveResolvedInitiative:ce,linkOptions:B,onAssignInitiativeToWorkstream:K,onRetryPlanning:Ae}){const[re,F]=te.useState(""),[D,z]=te.useState("all"),[we,ke]=te.useState(!1),[ee,Z]=te.useState(()=>new Set),[H,ae]=te.useState(()=>new Set),Te=te.useMemo(()=>new Map(l.filter(q=>!String(q.archivedAt||"").trim()).map(q=>[String(q.value||"").trim(),q])),[l]),Le=te.useMemo(()=>{const q=String(i||"").trim(),be=q?fT(l,q).find(Ve=>Ve.value===q):void 0;return[{value:"all",label:"All owners",icon:"Users",color:"var(--text-secondary)",kind:"unassigned"},...q?[{...be,value:"mine",label:"Owned by me",icon:be?.icon||"User",color:be?.color||"var(--text-secondary)",kind:be?.kind||"member"}]:[],{value:"unassigned",label:"Unassigned",icon:fm,color:sy,kind:"unassigned"}]},[l,i]),Ue=te.useMemo(()=>Zee({initiatives:e,standaloneWorkstreams:t,showArchivedPlanning:s,searchQuery:re,ownerFilter:D,currentOwnerId:String(i||""),sort:g}),[i,e,g,D,re,s,t]),ft=te.useMemo(()=>new Set(k.map(cc)),[k]),He=te.useMemo(()=>{const q=new Map(e.filter(Ve=>av({item:Ve,entityType:"initiative",showArchivedPlanning:s,searchQuery:re,ownerFilter:D,currentOwnerId:String(i||"")})).map(Ve=>[Ve.id,Ve])),be=new Map;return e.forEach(Ve=>{(Ve.allWorkstreams||Ve.workstreams).forEach(Ce=>{av({item:Ce,entityType:"workstream",showArchivedPlanning:s,searchQuery:re,ownerFilter:D,currentOwnerId:String(i||"")})&&be.set(Ce.id,{item:Ce,parentInitiativeId:Ve.id})})}),t.forEach(Ve=>{av({item:Ve,entityType:"workstream",showArchivedPlanning:s,searchQuery:re,ownerFilter:D,currentOwnerId:String(i||"")})&&be.set(Ve.id,{item:Ve,parentInitiativeId:null})}),k.reduce((Ve,Ce)=>{if(Ce.type==="initiative"){const Ie=q.get(Ce.id);return Ie&&Ve.push({favorite:Ce,item:Ie,parentInitiativeId:null}),Ve}const xe=be.get(Ce.id);return xe&&Ve.push({favorite:Ce,...xe}),Ve},[])},[i,e,D,k,re,s,t]);if(n==="deleted")return a.jsxs("div",{className:ze.scopeSummary,role:"status",children:[a.jsx("strong",{children:"Planning is not shown in Trash"}),a.jsx("span",{children:"Switch the task scope away from Trash to manage initiatives and workstreams."})]});if(r.status==="loading")return a.jsx(rte,{});if(r.status==="error")return a.jsx(lh,{title:"Planning unavailable",message:r.error||"Planning could not be loaded.",retrying:r.isRefreshing,onRetry:Ae});const Fe=e.filter(q=>!!q.isArchived).length,me=t.filter(q=>!!q.isArchived).length,ve=e.length>0||t.length>0,ot=Ue.hasCriteria||g!=="default",Oe=()=>{F(""),z("all"),h&&y("default")},A=q=>{Z(be=>{const Ve=new Set(be);return Ve.has(q)?Ve.delete(q):Ve.add(q),Ve})},G=q=>{ae(be=>{const Ve=new Set(be);return Ve.has(q)?Ve.delete(q):Ve.add(q),Ve})},_e=(q,be=ee.has(q.id),Ve=`planning-tasks-${q.id}`,Ce=`Tasks in ${q.title}`)=>{if(!be)return null;const xe=q.tasks||[],Ie=Jv(s?xe:xe.filter(de=>!de.isArchived),d);return a.jsx("ul",{id:Ve,className:`${ze.treeChildren} ${ze.treeTaskChildren}`.trim(),"aria-label":Ce,children:Ie.length>0?Ie.map(de=>a.jsx("li",{children:a.jsx(ete,{task:de,assigneeOption:de.assignee?Te.get(de.assignee):void 0,assigneeOptions:l,showTaskCardStatusLabel:c,onOpenTaskById:ue,onSetTaskStatus:oe,onChangeTaskAssignee:qe,onArchivePlanningTask:Ye})},de.id)):a.jsx("li",{className:ze.passiveGuidance,children:"Archived tasks are hidden."})})},Ne=Ue.hasCriteria?"No matching initiatives":Fe>0?"No active initiatives":"No initiatives yet",Ee=Ue.hasCriteria?"No initiatives match the current planning search and owner filter.":Fe>0?`${Fe} archived ${Fe===1?"initiative is":"initiatives are"} hidden. Use the archive visibility control above to view ${Fe===1?"it":"them"}.`:a.jsxs(a.Fragment,{children:["Initiatives give larger efforts a clear home without crowding the task board. Use the ",a.jsx("code",{children:"+"})," action above to create the first one."]}),fe=Ue.hasCriteria?"No matching standalone workstreams":me>0?"No active standalone workstreams":"No standalone workstreams yet",nt=Ue.hasCriteria?"No standalone workstreams match the current planning search and owner filter.":me>0?`${me} archived standalone ${me===1?"workstream is":"workstreams are"} hidden. Use the archive visibility control above to view ${me===1?"it":"them"}.`:a.jsxs(a.Fragment,{children:["Smaller projects can still use workstreams without needing initiative-level structure. Use the ",a.jsx("code",{children:"+"})," action above to add one."]});return a.jsxs(a.Fragment,{children:[r.status==="partial"&&r.collections.initiatives==="ready"&&r.collections.workstreams==="ready"?a.jsx(lh,{compact:!0,title:"Planning may be incomplete",message:r.error||"The latest planning refresh did not finish. Existing data is still shown.",retrying:r.isRefreshing,onRetry:Ae}):null,ve?a.jsxs("div",{className:ze.navigatorControls,children:[a.jsxs("div",{className:ze.navigatorSearchRow,children:[a.jsxs("div",{className:ze.navigatorSearch,children:[a.jsx(Xh,{size:14,"aria-hidden":"true"}),a.jsx("span",{className:ze.visuallyHidden,children:"Search planning"}),a.jsx("input",{type:"search",value:re,onChange:q=>F(q.target.value),placeholder:"Search initiatives and workstreams","aria-label":"Search planning"}),re?a.jsx("button",{type:"button",className:ze.navigatorClearSearch,onClick:()=>F(""),"aria-label":"Clear planning search",title:"Clear search",children:a.jsx(di,{size:13,"aria-hidden":"true"})}):null]}),a.jsx("button",{type:"button",className:`tf-control-icon ${we||D!=="all"||g!=="default"?ze.toggleActive:""}`.trim(),"aria-label":"Filter and sort planning",title:"Filter and sort planning","aria-expanded":we,"aria-controls":"planning-navigator-options",onClick:()=>ke(q=>!q),children:a.jsx(QA,{size:15,"aria-hidden":"true"})})]}),we?a.jsxs("div",{id:"planning-navigator-options",className:ze.navigatorOptions,children:[a.jsxs("div",{className:ze.navigatorOptionField,children:[a.jsx("span",{className:ze.navigatorOptionLabel,children:"Owner"}),a.jsx(Qw,{value:D,options:l,leadingOptions:Le,includeUnassigned:!1,onChange:z,disabled:!1,ariaLabel:"Filter planning by owner",className:ze.navigatorDropdown})]}),a.jsxs("div",{className:ze.navigatorOptionField,children:[a.jsx("span",{className:ze.navigatorOptionLabel,children:"Sort"}),a.jsx(li,{value:g,options:EA,onChange:q=>y(String(q)),disabled:!h,ariaLabel:"Sort planning",className:ze.navigatorDropdown,portalPanel:!0,panelAlign:"start",triggerContent:a.jsxs("span",{className:ze.navigatorDropdownTrigger,children:[a.jsx(sw,{size:14,"aria-hidden":"true"}),a.jsx("span",{children:EA.find(q=>q.value===g)?.label})]}),renderOptionContent:q=>q.label})]}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:Oe,disabled:!ot,"aria-label":"Reset planning filters and sort",title:"Reset planning filters and sort",children:a.jsx(Ni,{size:14,"aria-hidden":"true"})})]}):null,a.jsxs("span",{className:ze.visuallyHidden,role:"status","aria-live":"polite",children:[Ue.resultCount," planning ",Ue.resultCount===1?"result":"results"]})]}):null,Ue.hasCriteria&&Ue.resultCount===0?a.jsxs("div",{className:ze.navigatorEmpty,role:"status",children:[a.jsx("strong",{children:"No planning matches"}),a.jsx("span",{children:"Try another title or reference, or clear the owner filter."}),a.jsx("button",{type:"button",onClick:Oe,children:"Clear search and filters"})]}):a.jsxs(a.Fragment,{children:[He.length>0?a.jsxs("div",{className:ze.sectionGroup,children:[a.jsx(Gf,{label:"Favorites",count:He.length,expanded:!S,expandedTitle:"Collapse favorites",collapsedTitle:"Expand favorites",onToggle:T,controlsId:"planning-favorites-section"}),a.jsx("ul",{id:"planning-favorites-section",className:ze.treeList,"aria-label":"Favorite planning items",hidden:S,children:He.map(({favorite:q,item:be,parentInitiativeId:Ve})=>{const Ce=q.type==="initiative"?I?.type==="initiative"&&I.item.id===be.id:I?.type==="workstream"&&I.item.id===be.id||$?.kind==="detail"&&$.detail.item.id===be.id,xe=q.type==="initiative"?be:null,Ie=q.type==="workstream"?be:null,de=xe?xe.allWorkstreams||xe.workstreams:[],Be=de.filter(Pe=>s||!Pe.isArchived),at=`favorite:${q.type}:${be.id}`,Qe=H.has(at),Ze=`planning-${at.replaceAll(":","-")}-children`;return a.jsxs("li",{children:[a.jsx(Rf,{rowId:`favorite:${q.type}:${be.id}`,rowType:q.type,referenceLabel:q.type==="initiative"?gs(be):Fo(be),item:be,ownerOption:be.ownerId?Te.get(be.ownerId):void 0,ownerOptions:l,onChangeOwner:Pe=>ge(q.type,be.id,Pe==="unassigned"?"":Pe),onChangeIdentity:Pe=>je(q.type,be.id,Pe),workstreamCount:xe?Be.length:void 0,active:q.type==="initiative"?f===be.id&&!p:p===be.id,isArchived:!!be.isArchived,detailOpen:Ce,canExpand:q.type==="initiative"?de.length>0:!!Ie?.tasks?.length,expanded:Qe,controlsId:Ze,onToggleExpand:()=>G(at),onToggleScope:()=>{q.type==="initiative"?U(be.id):ne(be.id,Ve)},favoriteReady:h,onOpenDetails:()=>{q.type==="initiative"?L(be.id):Ve?(L(Ve),J(be.id)):ie(be.id)},favorite:!0,onToggleFavorite:()=>w(q),onArchiveReady:q.type==="initiative"?ce?()=>ce(be.id):void 0:he?()=>he(be.id):void 0,hierarchyInteractions:!1,initiativeLinkOptions:q.type==="workstream"&&!Ve?B.initiatives:void 0,onLinkInitiative:q.type==="workstream"&&!Ve?Pe=>K(be.id,Pe.referenceLabel):void 0}),xe&&Qe?a.jsx("ul",{id:Ze,className:ze.treeChildren,"aria-label":`Workstreams in favorite ${xe.title}`,children:Be.length>0?Be.map(Pe=>{const gt=`${at}:workstream:${Pe.id}`,it=H.has(gt),De=`planning-${gt.replaceAll(":","-")}-children`;return a.jsxs("li",{children:[a.jsx(Rf,{rowId:gt,rowType:"workstream",referenceLabel:Fo(Pe),item:Pe,ownerOption:Pe.ownerId?Te.get(Pe.ownerId):void 0,ownerOptions:l,onChangeOwner:bt=>ge("workstream",Pe.id,bt==="unassigned"?"":bt),onChangeIdentity:bt=>je("workstream",Pe.id,bt),active:p===Pe.id,isArchived:!!Pe.isArchived,detailOpen:I?.type==="workstream"&&I.item.id===Pe.id||$?.kind==="detail"&&$.detail.item.id===Pe.id,canExpand:!!Pe.tasks?.length,expanded:it,controlsId:De,onToggleExpand:()=>G(gt),onToggleScope:()=>ne(Pe.id,xe.id),onOpenDetails:()=>{L(xe.id),J(Pe.id)},favorite:ft.has(cc({type:"workstream",id:Pe.id})),favoriteReady:h,onToggleFavorite:()=>w({type:"workstream",id:Pe.id}),onArchiveReady:he?()=>he(Pe.id):void 0,hierarchyInteractions:!1}),_e(Pe,it,De,`Tasks in favorite ${xe.title} / ${Pe.title}`)]},Pe.id)}):a.jsx("li",{className:ze.passiveGuidance,children:"Archived workstreams are hidden."})}):null,Ie?_e(Ie,Qe,Ze,`Tasks in favorite ${Ie.title}`):null]},cc(q))})})]}):null,a.jsxs("div",{className:ze.sectionGroup,children:[a.jsx(Gf,{label:"Initiatives",count:Ue.initiatives.length,showZeroCount:!0,actions:r.collections.initiatives==="ready"?a.jsx("button",{type:"button",className:"tf-control-icon",title:"Create initiative","aria-label":"Create initiative",onClick:j,children:a.jsx(ci,{size:15})}):null,expanded:!b,expandedTitle:"Collapse initiatives",collapsedTitle:"Expand initiatives",onToggle:R,controlsId:b?void 0:"planning-initiatives-section"}),b?null:a.jsx("ul",{id:"planning-initiatives-section",className:ze.treeList,"aria-label":"Initiatives",children:r.collections.initiatives==="error"?a.jsx("li",{children:a.jsx(lh,{compact:!0,title:"Initiatives unavailable",message:"Initiatives could not be loaded.",retrying:r.isRefreshing,onRetry:Ae})}):Ue.initiatives.length===0?a.jsxs("li",{className:ze.emptyPanel,children:[a.jsx("div",{className:ze.emptyPanelTitle,children:Ne}),a.jsx("div",{className:ze.emptyPanelText,children:Ee})]}):Ue.initiatives.map(({initiative:q,workstreams:be})=>{const Ve=q.allWorkstreams||q.workstreams,Ce=s?Ve:Ve.filter(de=>!de.isArchived),xe=be,Ie=Ue.hasCriteria?xe.length>0:N.has(q.id);return a.jsxs("li",{children:[a.jsx(Rf,{rowId:q.id,rowType:"initiative",referenceLabel:gs(q),item:q,ownerOption:q.ownerId?Te.get(q.ownerId):void 0,ownerOptions:l,onChangeOwner:de=>ge("initiative",q.id,de==="unassigned"?"":de),onChangeIdentity:de=>je("initiative",q.id,de),workstreamCount:Ce.length,active:f===q.id&&!p,isArchived:!!q.isArchived,detailOpen:I?.type==="initiative"&&I.item.id===q.id,canExpand:Ve.length>0,expanded:Ie,controlsId:`planning-children-${q.id}`,onToggleExpand:()=>V(q.id),onToggleScope:()=>U(q.id),onOpenDetails:()=>L(q.id),favorite:ft.has(cc({type:"initiative",id:q.id})),favoriteReady:h,onToggleFavorite:()=>w({type:"initiative",id:q.id}),onArchiveReady:ce?()=>ce(q.id):void 0}),Ie&&xe.length>0&&a.jsx("ul",{id:`planning-children-${q.id}`,className:`${ze.treeChildren} ${ze.treeWorkstreamChildren}`.trim(),"aria-label":`Workstreams in ${q.title}`,children:xe.map(de=>a.jsxs("li",{children:[a.jsx(Rf,{rowId:de.id,rowType:"workstream",referenceLabel:Fo(de),item:de,ownerOption:de.ownerId?Te.get(de.ownerId):void 0,ownerOptions:l,onChangeOwner:Be=>ge("workstream",de.id,Be==="unassigned"?"":Be),onChangeIdentity:Be=>je("workstream",de.id,Be),active:p===de.id,isArchived:!!de.isArchived,detailOpen:I?.type==="workstream"&&I.item.id===de.id||$?.kind==="detail"&&$.detail.item.id===de.id,canExpand:(de.tasks||[]).length>0,expanded:ee.has(de.id),controlsId:`planning-tasks-${de.id}`,onToggleExpand:()=>A(de.id),onToggleScope:()=>ne(de.id,q.id),onOpenDetails:()=>{L(q.id),J(de.id)},favorite:ft.has(cc({type:"workstream",id:de.id})),favoriteReady:h,onToggleFavorite:()=>w({type:"workstream",id:de.id}),onArchiveReady:he?()=>he(de.id):void 0}),_e(de)]},de.id))})]},q.id)})})]}),a.jsxs("div",{className:ze.sectionGroup,children:[a.jsx(Gf,{label:"Workstreams",count:Ue.standaloneWorkstreams.length,showZeroCount:!0,actions:r.collections.workstreams==="ready"?a.jsx("button",{type:"button",className:"tf-control-icon",title:"Create workstream","aria-label":"Create workstream",onClick:x,children:a.jsx(ci,{size:15})}):null,expanded:!v,expandedTitle:"Collapse workstreams",collapsedTitle:"Expand workstreams",onToggle:P,controlsId:v?void 0:"planning-workstreams-section"}),v?null:a.jsx("ul",{id:"planning-workstreams-section",className:ze.treeList,"aria-label":"Standalone workstreams",children:r.collections.workstreams==="error"?a.jsx("li",{children:a.jsx(lh,{compact:!0,title:"Workstreams unavailable",message:"Workstreams could not be loaded.",retrying:r.isRefreshing,onRetry:Ae})}):Ue.standaloneWorkstreams.length===0?a.jsxs("li",{className:ze.emptyPanel,children:[a.jsx("div",{className:ze.emptyPanelTitle,children:fe}),a.jsx("div",{className:ze.emptyPanelText,children:nt})]}):Ue.standaloneWorkstreams.map(q=>a.jsxs("li",{children:[a.jsx(Rf,{rowId:q.id,rowType:"workstream",referenceLabel:Fo(q),item:q,ownerOption:q.ownerId?Te.get(q.ownerId):void 0,ownerOptions:l,onChangeOwner:be=>ge("workstream",q.id,be==="unassigned"?"":be),onChangeIdentity:be=>je("workstream",q.id,be),active:p===q.id,isArchived:!!q.isArchived,detailOpen:I?.type==="workstream"&&I.item.id===q.id||$?.kind==="detail"&&$.detail.item.id===q.id,canExpand:(q.tasks||[]).length>0,expanded:ee.has(q.id),controlsId:`planning-tasks-${q.id}`,onToggleExpand:()=>A(q.id),onToggleScope:()=>ne(q.id,null),onOpenDetails:()=>ie(q.id),favorite:ft.has(cc({type:"workstream",id:q.id})),favoriteReady:h,onToggleFavorite:()=>w({type:"workstream",id:q.id}),onArchiveReady:he?()=>he(q.id):void 0,initiativeLinkOptions:B.initiatives,onLinkInitiative:be=>K(q.id,be.referenceLabel)}),_e(q)]},q.id))})]})]})]})}function rte(){return a.jsxs("div",{className:ze.loadingState,role:"status","aria-live":"polite",children:[a.jsx("span",{className:ze.visuallyHidden,children:"Loading planning"}),[0,1,2].map(e=>a.jsxs("div",{className:ze.loadingRow,"aria-hidden":"true",children:[a.jsx("span",{className:ze.loadingBadge}),a.jsx("span",{className:ze.loadingTitle}),a.jsx("span",{className:ze.loadingMeta})]},e))]})}function lh({title:e,message:t,retrying:r,onRetry:n,compact:s=!1}){return a.jsxs("div",{className:`${ze.failureState} ${s?ze.failureStateCompact:""} tf-surface-inset`.trim(),role:"alert",children:[a.jsxs("div",{className:ze.failureCopy,children:[a.jsx("strong",{children:e}),a.jsx("span",{children:t})]}),a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:r,onClick:n,children:r?"Retrying…":"Retry"})]})}function DA({detail:e,showArchivedChildren:t,inlineEditor:r,selectedChildWorkstreamId:n,currentWorkspaceId:s,currentActorId:i,theme:l,onOpenNestedWorkstreamDetails:c,onArchivePlanningTask:d,onArchiveResolvedWorkstream:f,onArchiveResolvedEntity:p,onEdit:g,onChangeOwner:h,onChangePlanningOwner:y,onChangePlanningIdentity:k,onArchive:w,onUnarchive:S,onCreateTaskInWorkstream:b,onCreateWorkstreamInInitiative:v,onOpenTaskById:T,onChangeTaskAssignee:R,taskReferences:P,onAssignTaskToWorkstream:N,onAssignInitiativeToWorkstream:I,onAttachTaskToWorkstreamByReference:$,onAttachWorkstreamToInitiativeByReference:j,onAddPlanningContextFile:x,onRemovePlanningContextFile:V,onUpdatePlanningContextCaption:U,parentInitiative:ne=null,assigneeOptions:L,linkOptions:ie,showTaskCardStatusLabel:J=!1,taskArrangeMode:ue="execution",onTaskArrangeModeChange:oe=()=>{},onReorderWorkstreamTasks:ge,onSetTaskStatus:je,hydrationState:qe,onRetryHydration:Ye}){const he=te.useId(),[ce,B]=te.useState(!1),[K,Ae]=te.useState(null),[re,F]=te.useState(null),[D,z]=te.useState(!1),[we,ke]=te.useState(null),[ee,Z]=te.useState(!1),[H,ae]=te.useState(!1),[Te,Le]=te.useState(!1),[Ue,ft]=te.useState(null),[He,Fe]=te.useState(String(e.item.ownerId||"")),[me,ve]=te.useState(!1),{active:ot}=sC(),Oe=String(ot?.data?.current?.type||""),A=e.type==="workstream"&&Oe==="task-card",G=e.type==="initiative"&&Oe==="planning-workstream",_e=e.type==="initiative"?"planning-initiative-target":"planning-workstream-target",{setNodeRef:Ne,isOver:Ee}=pw({id:`${_e}:detail:${e.item.id}`,data:e.type==="initiative"?{type:_e,initiativeId:e.item.id}:{type:_e,workstreamId:e.item.id}}),fe=e.type==="initiative"?"Workstreams":"Tasks",nt=te.useMemo(()=>{if(e.type!=="initiative")return[];const le=new Set(e.item.workstreams.map(It=>It.id)),Ke=(e.item.allWorkstreams||[]).filter(It=>!!It.isArchived&&!le.has(It.id));return[...e.item.workstreams,...Ke]},[e.item,e.type]),q=te.useMemo(()=>e.type!=="workstream"?[]:e.item.tasks||[],[e.item,e.type]),be=te.useMemo(()=>new Map(L.filter(le=>!String(le.archivedAt||"").trim()).map(le=>[String(le.value||"").trim(),le])),[L]),Ve=t?nt:nt.filter(le=>!le.isArchived),Ce=Jv(t?q:q.filter(le=>!le.isArchived),ue),xe=e.type==="initiative"?Ve.length:Ce.length,Ie=e.type==="initiative"?"Initiative":"Workstream",de=e.type==="initiative"?gs(e.item):Fo(e.item),Be=X_({entityType:e.type,isArchived:e.item.isArchived,taskCount:e.item.taskCount,completedTaskCount:e.item.completedTaskCount,archiveReady:e.item.archiveReady,activeWorkstreamCount:e.item.archiveActiveWorkstreamCount}),at=Be.mode==="archived"?`Unarchive ${Ie.toLowerCase()}`:Be.mode==="blocked"?`Archive unavailable — active ${Be.remainingKind==="task"?"tasks":"workstreams"} remain`:Be.mode==="checking"?"Archive availability is still loading":`Archive ${Ie.toLowerCase()}`;te.useEffect(()=>{B(!1),Ae(null),F(null),z(!1),ae(!1)},[e.item.id,e.type]),te.useEffect(()=>{Fe(String(e.item.ownerId||""))},[e.item.id,e.item.ownerId,e.type]);const Qe=te.useCallback(async le=>{if(!h||me||le===He)return;const Ke=He;Fe(le),ve(!0);try{await h(le)}catch{Fe(Ke)}finally{ve(!1)}},[me,h,He]),Ze=te.useCallback(async()=>{if(!(!p||Te)){Le(!0);try{await p(e.item.id)&&ae(!1)}finally{Le(!1)}}},[Te,e.item.id,p]),Pe=e.type==="initiative"?!!j:!!$,gt=te.useCallback(async le=>{if(ce)return;const Ke=e.type==="initiative"?j:$;if(Ke){B(!0);try{await Ke(e.item.id,le.referenceLabel)}finally{B(!1)}}},[e.item.id,e.type,ce,$,j]),it=te.useCallback(async le=>{if(!(!I||e.type!=="workstream"||D)){z(!0);try{await I(e.item.id,le.referenceLabel)}finally{z(!1)}}},[e.item.id,e.type,D,I]),De=e.type==="workstream"&&ne?gs(ne):"",bt=te.useMemo(()=>new Set(e.type==="initiative"?nt.map(le=>le.id):q.map(le=>le.id)),[nt,e.type,q]),Et=te.useMemo(()=>(e.type==="initiative"?ie.workstreams:ie.tasks).filter(le=>!bt.has(le.id)),[e.type,ie.tasks,ie.workstreams,bt]),mt=te.useCallback(async()=>{if(!(!K||D)){z(!0);try{if(K.entityType==="workstream"){if(!I)return;const le=e.type==="initiative"?de:De;if(await I?.(K.id,null)===!1)return;F({entityType:K.entityType,id:K.id,message:`${K.referenceLabel} removed from its initiative.`,onUndo:async()=>{if(!le)return;await I?.(K.id,le)!==!1&&F(null)}})}else{if(!N||await N(K.id,null)===!1)return;F({entityType:K.entityType,id:K.id,message:`${K.referenceLabel} removed from this workstream.`,onUndo:async()=>{await N(K.id,e.item.id)!==!1&&F(null)}})}Ae(null)}finally{z(!1)}}},[e.item.id,e.type,de,D,I,N,De,K]),qt=te.useCallback(async()=>{if(!(!re||D)){z(!0);try{await re.onUndo()}finally{z(!1)}}},[D,re]),et=te.useCallback((le,Ke)=>re?.entityType===le&&re.id===Ke?a.jsxs("div",{className:ze.relationshipRecovery,role:"status",children:[a.jsx("span",{children:re.message}),a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:D,onClick:()=>{qt()},children:D?"Restoring…":"Undo"})]}):null,[qt,D,re]),Y=re&&!bt.has(re.id)?a.jsxs("div",{className:ze.relationshipRecovery,role:"status",children:[a.jsx("span",{children:re.message}),a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:D,onClick:()=>{qt()},children:D?"Restoring…":"Undo"})]}):null;return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:ze.detailHero,children:[a.jsxs("div",{className:ze.detailTopRow,children:[a.jsxs("div",{className:ze.detailReferenceRow,children:[e.type==="workstream"?a.jsx(a.Fragment,{children:De?a.jsxs(a.Fragment,{children:[a.jsx(Md,{label:De,entityType:"initiative",entityName:ne?.title}),a.jsx("span",{className:E.taskHierarchyDivider,children:"/"}),r?null:a.jsx(kh,{disabled:!I,onClick:()=>{Ae({entityType:"workstream",id:e.item.id,referenceLabel:de,title:e.item.title,parentLabel:ne?`${gs(ne)} ${ne.title}`.trim():De})},title:"Unlink workstream from initiative",ariaLabel:"Unlink workstream from initiative",children:a.jsx(Ff,{size:14,"aria-hidden":"true"})})]}):null}):null,e.type==="workstream"&&!De&&!r?a.jsx(Jh,{options:ie.initiatives,entityLabel:"initiative",onSelect:it,disabled:!I||D,iconTrigger:!0,triggerTitle:"Link initiative"}):null,a.jsx(Md,{label:de||"Reference pending",entityType:e.type,entityName:e.item.title,pending:!de})]}),a.jsx("div",{className:ze.detailTopActions,children:r?a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",onClick:r.onCancel,disabled:r.isSubmitting,children:"Cancel"}),a.jsx("button",{type:"submit",form:he,className:"tf-button-primary tf-button-compact",disabled:r.isSubmitting,children:r.isSubmitting?"Saving…":"Save"})]}):a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:"tf-control-icon",disabled:Be.mode==="blocked"||Be.mode==="checking",onClick:()=>{Be.mode==="archived"?S?.():Be.mode==="empty"?w?.():Be.mode==="ready"&&ae(!0)},title:at,"aria-label":at,"aria-expanded":Be.mode==="ready"?H:void 0,children:Be.mode==="archived"?a.jsx(Ni,{size:14,"aria-hidden":"true"}):a.jsx(Ed,{size:14,"aria-hidden":"true"})}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:g,title:`Edit ${Ie.toLowerCase()} details`,"aria-label":`Edit ${Ie.toLowerCase()} details`,children:a.jsx(YA,{size:14,"aria-hidden":"true"})})]})})]}),H&&Be.mode==="ready"?a.jsx(Xv,{entityType:e.type,title:e.item.title,activeTaskCount:e.item.archiveActiveTaskCount,activeWorkstreamCount:e.item.archiveActiveWorkstreamCount,busy:Te,onCancel:()=>ae(!1),onConfirm:()=>{Ze()}}):null,e.type==="workstream"?et("workstream",e.item.id):null,r?a.jsx(Qv,{editor:r.editor,draftTitle:r.draftTitle,draftDescription:r.draftDescription,draftOwner:r.draftOwner,draftInitiativeId:r.draftInitiativeId,assigneeOptions:L,initiativeLinkOptions:ie.initiatives,draftInitiativeSummary:r.draftInitiativeSummary,onChangeDraftTitle:r.onChangeDraftTitle,onChangeDraftDescription:r.onChangeDraftDescription,onChangeDraftOwner:r.onChangeDraftOwner,onChangeDraftInitiativeId:r.onChangeDraftInitiativeId,onCancel:r.onCancel,onSubmit:r.onSubmit,isSubmitting:r.isSubmitting,inline:!0,formId:he}):a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:ze.detailTitleRow,children:[a.jsx(ym,{entityType:e.type,entityId:e.item.id,icon:e.item.icon,color:e.item.color,size:"detail",disabled:!!e.item.isArchived,onChange:k?le=>k(e.type,e.item.id,le):void 0}),a.jsx("h3",{className:ze.detailTitle,children:e.item.title})]}),a.jsx(GQ,{description:e.item.description,label:Ie,taskReferences:P,className:`${ze.detailDescription} ${E.appScrollbar} tf-scrollbar`.trim(),markdownClassName:ze.detailDescriptionMarkdown})]}),a.jsxs("div",{className:ze.detailOwnerField,children:[a.jsx("span",{className:ze.detailOwnerLabel,children:"Owner"}),a.jsx(Qw,{value:He,disabled:!h||me,onChange:le=>{Qe(le)},ariaLabel:`${Ie} owner`,options:L,className:`${Xw.control} ${ze.ownerSelect}`})]}),e.item.taskCount>0?a.jsx(lT,{value:e.item.progressPercent,label:`${e.item.progressPercent}% resolved`,statusCounts:e.item.statusCounts}):a.jsx(oT,{}),a.jsx(dT,{item:e.item,workstreamCount:e.type==="initiative"?e.item.workstreamCount??e.item.workstreams.length:void 0,className:ze.detailSummaryMeta}),e.item.taskCount>0?a.jsx("span",{className:ze.passiveGuidance,children:"Lifetime progress includes archived tasks."}):null]}),a.jsxs("div",{ref:Ne,className:`${ze.listCard} ${A||G?ze.sectionDropReady:""} ${Ee?ze.sectionDropActive:""} ${A||G?ze.sectionDropMode:""}`.trim(),children:[a.jsxs("div",{className:ze.sectionHeaderRow,children:[a.jsxs("div",{className:ze.sectionTitle,children:[fe," (",xe,")"]}),a.jsx("div",{className:ze.headerActionGroup,children:e.type==="initiative"?a.jsx("button",{type:"button",className:"tf-control-icon",title:"Create workstream in this initiative","aria-label":"Create workstream in this initiative",onClick:()=>v?.(e.item.id),children:a.jsx(ci,{size:15})}):a.jsx("button",{type:"button",className:"tf-control-icon",title:"Create task in this workstream","aria-label":"Create task in this workstream",onClick:()=>b?.(e.item.id),children:a.jsx(ci,{size:15})})})]}),a.jsx("div",{className:ze.linkPickerRow,children:a.jsx(Jh,{options:Et,entityLabel:e.type==="initiative"?"workstream":"task",onSelect:gt,disabled:!Pe||ce})}),e.type==="workstream"?a.jsx(Ree,{value:ue,onChange:oe}):null,e.type==="initiative"?Ve.length>0?Ve.map(le=>{const Ke=Fo(le),It=()=>c?.(le.id),vt=n===le.id,Mt=we===le.id,gr=async()=>{if(!(!f||ee)){Z(!0);try{await f(le.id)&&ke(null)}finally{Z(!1)}}};return a.jsx("div",{className:`${ze.listItemButton} ${ze.detailCardButton}`.trim(),children:a.jsxs("div",{className:`${ze.listItem} ${ze.detailChildCard} ${vt?ze.detailChildCardSelected:""} ${le.isArchived?ze.detailChildCardArchived:""}`.trim(),children:[a.jsxs("div",{className:ze.detailChildCardTopRow,children:[a.jsxs("div",{className:ze.detailChildReferenceRow,children:[a.jsx(kh,{disabled:!I,onClick:Zt=>{Zt.stopPropagation(),Ae({entityType:"workstream",id:le.id,referenceLabel:Ke,title:le.title,parentLabel:`${de} ${e.item.title}`.trim()})},title:`Unlink ${Ke||le.title} from initiative`,ariaLabel:`Unlink ${Ke||le.title} from initiative`,children:a.jsx(Ff,{size:14,"aria-hidden":"true"})}),Ke?a.jsx(Md,{label:Ke,entityType:"workstream",entityName:le.title}):a.jsx("span",{"aria-hidden":"true"})]}),a.jsx("div",{className:ze.detailChildActions,onClick:Zt=>Zt.stopPropagation(),children:le.archiveReady&&!le.isArchived&&f?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>ke(le.id),title:"Archive completed workstream","aria-label":`Archive completed workstream ${le.title}`,"aria-expanded":Mt,children:a.jsx(Ed,{size:14,"aria-hidden":"true"})}):null})]}),et("workstream",le.id),Mt?a.jsx(Xv,{entityType:"workstream",title:le.title,activeTaskCount:le.archiveActiveTaskCount,busy:ee,onCancel:()=>ke(null),onConfirm:()=>{gr()}}):null,a.jsx("div",{role:"button",tabIndex:0,"aria-current":vt?"true":void 0,className:ze.listItemText,onClick:It,onKeyDown:Zt=>{Zt.key!=="Enter"&&Zt.key!==" "||(Zt.preventDefault(),It())},children:a.jsx(uT,{item:le,entityType:"workstream",ownerOption:le.ownerId&&be.has(le.ownerId)?uc(be.get(le.ownerId)):void 0,ownerOptions:L.map(uc),onChangeOwner:y?Zt=>y("workstream",le.id,Zt==="unassigned"?"":Zt):void 0,onChangeIdentity:k?Zt=>k("workstream",le.id,Zt):void 0})})]})},le.id)}):a.jsx("div",{className:ze.passiveGuidance,children:"No workstreams are linked to this initiative."}):Ce.length>0?a.jsx(Mee,{tasks:Ce,mode:ue,onReorder:ge?le=>ge(e.item.id,Cee(Jv(q,"execution"),le)):void 0,children:le=>{const Ke=ys(le)||le.id,It=$o(le.status);return a.jsx("div",{className:`${ze.listItemButton} ${ze.detailCardButton}`.trim(),children:a.jsx(pT,{task:le,assigneeOption:le.assignee&&be.has(le.assignee)?uc(be.get(le.assignee)):void 0,assigneeOptions:L.map(uc),showStatusLabel:J,onOpen:T?()=>T(le.id):void 0,onAssigneeChange:R?vt=>R(le.id,vt):void 0,onStatusChange:je?vt=>je(le.id,vt):void 0,feedback:et("task",le.id),referenceAction:a.jsx(kh,{disabled:!N,onClick:vt=>{vt.stopPropagation(),Ae({entityType:"task",id:le.id,referenceLabel:Ke,title:le.title,parentLabel:`${de} ${e.item.title}`.trim()})},title:`Unlink ${Ke||le.title} from workstream`,ariaLabel:`Unlink ${Ke||le.title} from workstream`,children:a.jsx(Ff,{size:14,"aria-hidden":"true"})}),actions:!le.isArchived&&(It.value==="done"||It.value==="cancelled")&&d?a.jsx("button",{type:"button",className:"tf-control-icon",disabled:Ue===le.id,onClick:async vt=>{vt.stopPropagation(),ft(le.id);try{await d(le.id)}finally{ft(null)}},title:"Archive task","aria-label":`Archive task ${Ke||le.title}`,children:a.jsx(Ed,{size:14,"aria-hidden":"true"})}):void 0})},le.id)}}):a.jsx("div",{className:ze.passiveGuidance,children:"No tasks are linked to this workstream."}),Y]}),a.jsx("div",{className:ze.listCard,children:a.jsx(KQ,{entityType:e.type,entityId:e.item.id,referenceLabel:de,workspaceId:s,attachments:e.item.attachments,readOnly:!!e.item.isArchived,onAddAttachment:le=>x?.(e.type,e.item.id,le),onRemoveAttachment:le=>V?.(e.type,e.item.id,le),onUpdateAttachmentCaption:(le,Ke)=>U?.(e.type,e.item.id,le,Ke)})}),a.jsx("div",{className:ze.listCard,children:a.jsx(qQ,{entityType:e.type,item:e.item,assigneeOptions:L.map(uc),currentActorId:i,taskReferences:P,parentInitiative:ne,listClassName:ze.activityTimelineList,emptyClassName:ze.activityTimelineEmpty,hydrationState:qe,onRetryHydration:Ye})}),a.jsx(Uee,{item:K,busy:D,theme:l,onCancel:()=>Ae(null),onConfirm:()=>{mt()}})]})}function Qv({editor:e,draftTitle:t,draftDescription:r,draftOwner:n,draftInitiativeId:s,draftIcon:i,draftColor:l,assigneeOptions:c,initiativeLinkOptions:d,draftInitiativeSummary:f,onChangeDraftTitle:p,onChangeDraftDescription:g,onChangeDraftOwner:h,onChangeDraftInitiativeId:y,onChangeDraftIcon:k,onChangeDraftColor:w,onCancel:S,onSubmit:b,isSubmitting:v,inline:T=!1,formId:R}){const P=e.entityType==="initiative"?"Initiative":"Workstream",N=te.useId(),I=te.useId(),$=te.useId(),j=te.useRef(null),[x,V]=te.useState(null),U=v?e.mode==="create"?`Creating ${P}...`:`Saving ${P}...`:e.mode==="create"?`Create ${P}`:`Save ${P}`,ne=te.useCallback(ie=>{if(ie.preventDefault(),!t.trim()){V(`${P} title is required.`),j.current?.focus();return}V(null),b()},[t,P,b]),L=te.useCallback(ie=>{!T||ie.key!=="Escape"||v||(ie.preventDefault(),S())},[T,v,S]);return a.jsxs("form",{id:R,className:`${ze.editorCard} ${T?ze.inlineEditorCard:""}`.trim(),onSubmit:ne,onKeyDown:L,noValidate:!0,children:[e.mode==="create"&&k&&w?a.jsxs("div",{className:ze.editorIdentityField,children:[a.jsx(ym,{entityType:e.entityType,entityId:"create-preview",icon:i,color:l||"blue",size:"detail",onChange:ie=>{Object.prototype.hasOwnProperty.call(ie,"icon")&&k(ie.icon??null),Object.prototype.hasOwnProperty.call(ie,"color")&&w(ie.color??null)}}),a.jsx("span",{children:"Choose an icon and color"})]}):null,a.jsxs("div",{className:ze.editorField,children:[a.jsxs("label",{className:ze.editorLabel,htmlFor:N,children:[P," title"]}),a.jsx("input",{ref:j,id:N,"data-planning-editor-title":!0,className:E.input,disabled:v,required:!0,"aria-invalid":x?"true":void 0,"aria-describedby":x?I:void 0,value:t,onChange:ie=>{x&&V(null),p(ie.target.value)},placeholder:e.entityType==="initiative"?"Enter initiative title":"Enter workstream title"}),x?a.jsx("p",{id:I,className:"tf-text-error",children:x}):null]}),a.jsxs("div",{className:ze.editorField,children:[a.jsxs("label",{className:ze.editorLabel,htmlFor:$,children:[P," description"]}),a.jsx("textarea",{id:$,className:E.textarea,disabled:v,value:r,onChange:ie=>g(ie.target.value),placeholder:e.entityType==="initiative"?"Describe the broader outcome this initiative is meant to achieve.":"Describe the lane of work this workstream will coordinate.",rows:5})]}),e.entityType==="workstream"&&a.jsxs("div",{className:ze.editorField,children:[a.jsx("span",{className:ze.editorLabel,children:"Initiative"}),a.jsxs("div",{className:ze.editorRelationshipRow,children:[a.jsx(Jh,{options:d,selectedId:f?.id||"",entityLabel:"initiative",disabled:v,onSelect:ie=>y(ie.referenceLabel)}),s.trim()?a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:v,onClick:()=>y(""),children:"Remove"}):null]})]}),T?null:a.jsxs("div",{className:ze.editorField,children:[a.jsxs("span",{className:ze.editorLabel,children:[P," owner"]}),a.jsx(Qw,{disabled:v,value:n,onChange:h,ariaLabel:`${P} owner`,options:c,className:ze.editorSelect})]}),T?null:a.jsxs("div",{className:ze.editorActions,children:[a.jsx("button",{type:"button",className:E.secondaryHeaderBtn,onClick:S,disabled:v,children:"Cancel"}),a.jsx("button",{type:"submit",className:E.primaryUpdateBtn,disabled:v,children:U})]})]})}function nte({open:e,leftOffset:t=0,returnFocusRef:r,onWidthChange:n,initiatives:s,standaloneWorkstreams:i,planningLoadState:l,onRetryPlanning:c,taskScope:d,activeInitiativeId:f,activeWorkstreamId:p,navigatorSort:g,navigatorSortReady:h,onNavigatorSortChange:y,taskArrangeMode:k="execution",onTaskArrangeModeChange:w=()=>{},onReorderWorkstreamTasks:S,planningFavorites:b,onTogglePlanningFavorite:v,favoritesSectionCollapsed:T,initiativesSectionCollapsed:R,workstreamsSectionCollapsed:P,onToggleFavoritesSection:N,onToggleInitiativesSection:I,onToggleWorkstreamsSection:$,expandedInitiativeIds:j,detail:x,editor:V,secondaryEditor:U=null,secondaryPane:ne,primaryHydrationState:L,secondaryHydrationState:ie,onRetryPrimaryHydration:J,onRetrySecondaryHydration:ue,currentWorkspaceId:oe,currentOwnerId:ge,theme:je,assigneeOptions:qe,linkOptions:Ye,showTaskCardStatusLabel:he=!1,draftInitiativeSummary:ce,draftTitle:B,draftDescription:K,draftOwner:Ae,draftInitiativeId:re,draftIcon:F=null,draftColor:D=null,onChangeDraftTitle:z,onChangeDraftDescription:we,onChangeDraftOwner:ke,onChangeDraftInitiativeId:ee,onChangeDraftIcon:Z=()=>{},onChangeDraftColor:H=()=>{},onCollapseTreePane:ae,onExpandTreePane:Te,onCollapsePrimaryPane:Le,onExpandPrimaryPane:Ue,onCollapseSecondaryPane:ft,onExpandSecondaryPane:He,onBackFromSecondary:Fe,treeCollapsed:me,primaryCollapsed:ve,secondaryCollapsed:ot,onCancelEditor:Oe,onCancelSecondaryEditor:A,onSubmitEditor:G,isSubmittingEditor:_e,onCreateInitiative:Ne,onCreateWorkstream:Ee,onToggleInitiative:fe,onSelectInitiative:nt,onSelectWorkstream:q,onOpenInitiativeDetails:be,onOpenWorkstreamDetails:Ve,onOpenNestedWorkstreamDetails:Ce,onEditInitiative:xe,onEditWorkstream:Ie,onChangePlanningOwner:de,onChangePlanningIdentity:Be=()=>{},onChangeTaskAssignee:at,onArchiveInitiative:Qe,onUnarchiveInitiative:Ze,onArchiveWorkstream:Pe,onUnarchiveWorkstream:gt,onArchivePlanningTask:it,onArchiveResolvedWorkstream:De,onArchiveResolvedInitiative:bt,onCreateTaskInWorkstream:Et,onCreateWorkstreamInInitiative:mt,onAssignInitiativeToWorkstream:qt,onOpenTaskById:et,onSetTaskStatus:Y,taskReferences:le,onAssignTaskToWorkstream:Ke,onAttachTaskToWorkstreamByReference:It,onAttachWorkstreamToInitiativeByReference:vt,onAddPlanningContextFile:Mt,onRemovePlanningContextFile:gr,onUpdatePlanningContextCaption:Zt}){const or=V?.mode==="edit"&&x&&V.entityType===x.type&&V.targetId===x.item.id?V:null,Dt=U?.mode==="edit"&&ne?.kind==="detail"&&U.entityType===ne.detail.type&&U.targetId===ne.detail.item.id?U:null,lr=V&&!or?V:null,Rr=!!(x||lr),Lr=!!ne,Dr=lr?.entityType||x?.type||null,Me=Dr==="initiative",rt=Dr==="workstream",[pt,ht]=te.useState(!1),[At,Ft]=te.useState(!1),[Tt,$t]=te.useState(!1),[Ct,Wt]=te.useState({initiative:!1,workstream:!1}),Ot=te.useMemo(()=>{const Ar=[...s.flatMap(Or=>Or.allWorkstreams||Or.workstreams),...i];return s.filter(Or=>!!Or.isArchived).length+Ar.filter(Or=>!!Or.isArchived).length+Ar.reduce((Or,qr)=>Or+(qr.tasks||[]).filter(Yr=>!!Yr.isArchived).length,0)},[s,i]),{availableWidth:vr,layoutMode:xt}=Qee(t),ct=xt==="wide",tr=ct&&me,$r=ct&&ve,u=ct&&ot,nr=gT(tr,!0,Me?$r:!pt,!0,rt?$r:Lr?u:!At),ar=xt!=="narrow"||!Rr&&!Lr,an=Rr&&(ct||!Lr),Bt=Lr,xr=ct?nr:xt==="medium"?Yf+(an||Bt?mc:0):vr,Gt=Math.max(0,Math.min(xr,vr)),Fr=Math.max(0,Gt-(ar?Yf:0)),en=lr?lr.entityType==="initiative"?lr.mode==="create"?"New Initiative":"Edit Initiative":lr.mode==="create"?"New Workstream":"Edit Workstream":x?.type==="initiative"?"Initiative":"Workstream",ln=ne?.kind==="editor"?ne.editor.mode==="create"?"New Workstream":"Edit Workstream":"Workstream",tn=lr?null:x,Ge=ne?.kind==="detail"?ne.detail:null,yn=te.useCallback(Ar=>{Wt(Or=>({...Or,[Ar]:!Or[Ar]}))},[]),Kr=te.useCallback(Ar=>{const Or=String(Ar.initiativeId||"").trim();return Or&&s.find(qr=>qr.id===Or)||null},[s]),ir=te.useRef(null),wt=te.useRef(null),Gr=te.useRef(null),Ut=te.useRef(null),dr=te.useRef(null),wr=te.useRef(e),Ur=te.useRef(""),vs=Dt?`secondary:inline-editor:${Dt.targetId}`:ne?`secondary:${ne.kind}:${ne.kind==="detail"?ne.detail.item.id:`${ne.editor.mode}:${ne.editor.entityType}:${ne.editor.mode==="edit"?ne.editor.targetId:""}`}`:or?`primary:inline-editor:${or.targetId}`:lr?`primary:editor:${lr.mode}:${lr.entityType}:${lr.mode==="edit"?lr.targetId:""}`:x?`primary:detail:${x.type}:${x.item.id}`:"tree";te.useEffect(()=>{const Ar=wr.current;if(wr.current=e,Ar&&!e){r?.current?.focus(),Ur.current="";return}if(!e||Ar&&Ur.current===vs)return;Ur.current=vs;const Or=Bt?Gr.current:an?wt.current:ir.current,qr=window.requestAnimationFrame(()=>{(Or?.querySelector("[data-planning-editor-title]")||Or?.querySelector("[data-planning-pane-heading]"))?.focus()});return()=>window.cancelAnimationFrame(qr)},[vs,e,r,an,Bt]);const ea=te.useCallback(()=>{if(V){Oe();return}x?.type==="initiative"&&be(""),x?.type==="workstream"&&Ve("")},[x,V,Oe,be,Ve]),ta=te.useCallback(Ar=>({flex:`0 0 ${Ar}px`,width:`${Ar}px`,minWidth:`${Ar}px`,maxWidth:`${Ar}px`}),[]);te.useEffect(()=>{n?.(Gt)},[Gt,n]),te.useEffect(()=>{pt&&Ut.current?.querySelector("[data-planning-pane-heading]")?.focus()},[pt]),te.useEffect(()=>{At&&dr.current?.querySelector("[data-planning-pane-heading]")?.focus()},[At]);const rn=x?.type==="workstream"?x.item:null,sn=rn?Kr(rn):ce,on=!!(sn||String(rn?.initiativeId||"").trim()),Tn=sn?{title:sn.title,description:rn?`${rn.title} belongs to this initiative.`:"This workstream will belong to the selected initiative.",action:rn?{label:"Open initiative",onClick:()=>be(sn.id)}:void 0}:rn&&on?{title:"Initiative unavailable",description:`${rn.title} is assigned to an initiative that is not available in the current planning data.`}:rn?{title:"Not linked to an initiative"}:{title:"No initiative selected"},cn={title:"No workstream selected"};return a.jsx("aside",{className:ze.drawer,"aria-label":"Planning","aria-hidden":!e,inert:!e,"data-layout":xt,style:{position:"absolute",top:0,left:e?`${t}px`:`${t-Gt-24}px`,bottom:0,width:`${Gt}px`,minWidth:0,maxWidth:`calc(100vw - ${t}px)`,borderRight:"1px solid var(--border-color)",background:"var(--bg-secondary)",boxSizing:"border-box",display:"flex",flexDirection:"column",zIndex:35,overflow:"hidden",pointerEvents:e?"auto":"none",transition:"left 220ms cubic-bezier(0.4, 0, 0.2, 1)",willChange:"left"},children:a.jsxs("div",{className:ze.drawerBody,children:[ar&&(tr?a.jsx(Pf,{label:"Planning",onExpand:Te}):a.jsxs("div",{ref:ir,"data-planning-pane":"tree",className:`${ze.paneShell} ${E.appScrollbar} tf-scrollbar ${ze.treePane} ${Rr&&!ve?ze.treePaneSplit:""}`.trim(),style:ta(xt==="narrow"?Gt:Yf),children:[a.jsxs("div",{className:ze.paneHeader,children:[a.jsx("h2",{className:ze.paneHeaderLabel,tabIndex:-1,"data-planning-pane-heading":!0,children:"Planning"}),a.jsxs("div",{className:ze.headerActionGroup,children:[a.jsx(ov,{visible:Tt,disabled:d==="deleted"||Ot===0,disabledLabel:d==="deleted"?"Archive visibility unavailable in Trash":void 0,itemLabel:"planning items",onToggle:()=>$t(Ar=>!Ar)}),ct?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:ae,"aria-label":"Collapse Planning pane",title:"Collapse Planning pane",children:a.jsx(bo,{size:16,"aria-hidden":"true"})}):null]})]}),a.jsx("div",{className:ze.paneContent,"aria-busy":l.status==="loading"||l.isRefreshing,children:a.jsx(tte,{initiatives:s,standaloneWorkstreams:i,planningLoadState:l,taskScope:d,showArchivedPlanning:Tt,currentOwnerId:ge,assigneeOptions:qe,showTaskCardStatusLabel:he,taskArrangeMode:k,activeInitiativeId:f,activeWorkstreamId:p,navigatorSort:g,navigatorSortReady:h,onNavigatorSortChange:y,planningFavorites:b,onTogglePlanningFavorite:v,favoritesSectionCollapsed:T,initiativesSectionCollapsed:R,workstreamsSectionCollapsed:P,onToggleFavoritesSection:N,onToggleInitiativesSection:I,onToggleWorkstreamsSection:$,expandedInitiativeIds:j,detail:x,secondaryPane:ne,onCreateInitiative:Ne,onCreateWorkstream:Ee,onToggleInitiative:fe,onSelectInitiative:nt,onSelectWorkstream:q,onOpenInitiativeDetails:be,onOpenWorkstreamDetails:Ve,onOpenNestedWorkstreamDetails:Ce,onOpenTaskById:et,onSetTaskStatus:Y,onChangePlanningOwner:de,onChangePlanningIdentity:Be,onChangeTaskAssignee:at,onArchivePlanningTask:it,onArchiveResolvedWorkstream:De,onArchiveResolvedInitiative:bt,linkOptions:Ye,onAssignInitiativeToWorkstream:qt,onRetryPlanning:c})})]})),ct&&!Me&&(pt?a.jsx(jA,{label:"Initiative",title:Tn.title,description:Tn.description,action:Tn.action,onCollapse:()=>ht(!1),paneRef:Ut}):a.jsx(Pf,{label:"Initiative",muted:!on,onExpand:()=>ht(!0)})),an&&($r?a.jsx(Pf,{label:Dr==="initiative"?"Initiative":"Workstream",onExpand:Ue}):a.jsxs("div",{ref:wt,"data-planning-pane":"primary",className:`${ze.paneShell} ${E.appScrollbar} tf-scrollbar ${ze.detailPane}`.trim(),style:ta(ct?mc:Fr),children:[a.jsxs("div",{className:ze.paneHeader,children:[xt==="narrow"?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:ea,"aria-label":"Back to Planning",title:"Back to Planning",children:a.jsx(bo,{size:16,"aria-hidden":"true"})}):null,a.jsx("h2",{className:ze.paneHeaderLabel,tabIndex:-1,"data-planning-pane-heading":!0,children:en}),a.jsxs("div",{className:ze.headerActionGroup,children:[tn?a.jsx(ov,{visible:Ct[tn.type],disabled:NA(tn)===0,itemLabel:tn.type==="initiative"?"workstreams":"tasks",onToggle:()=>yn(tn.type)}):null,ct?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:Le,"aria-label":`Collapse ${en} pane`,title:`Collapse ${en} pane`,children:a.jsx(bo,{size:16,"aria-hidden":"true"})}):null]})]}),a.jsx("div",{className:ze.paneContent,"aria-busy":L?.status==="loading",children:lr?a.jsx(Qv,{editor:lr,draftTitle:B,draftDescription:K,draftOwner:Ae,draftInitiativeId:re,draftIcon:F,draftColor:D,assigneeOptions:qe,initiativeLinkOptions:Ye.initiatives,draftInitiativeSummary:ce,onChangeDraftTitle:z,onChangeDraftDescription:we,onChangeDraftOwner:ke,onChangeDraftInitiativeId:ee,onChangeDraftIcon:Z,onChangeDraftColor:H,onCancel:Oe,onSubmit:G,isSubmitting:_e}):x?a.jsx(DA,{detail:x,showArchivedChildren:Ct[x.type],inlineEditor:or?{editor:or,draftTitle:B,draftDescription:K,draftOwner:Ae,draftInitiativeId:re,draftInitiativeSummary:ce,onChangeDraftTitle:z,onChangeDraftDescription:we,onChangeDraftOwner:ke,onChangeDraftInitiativeId:ee,onCancel:Oe,onSubmit:G,isSubmitting:_e}:null,selectedChildWorkstreamId:ne?.kind==="detail"?ne.detail.item.id:null,currentWorkspaceId:oe,currentActorId:ge,theme:je,assigneeOptions:qe,linkOptions:Ye,showTaskCardStatusLabel:he,taskArrangeMode:k,onTaskArrangeModeChange:w,onReorderWorkstreamTasks:S,hydrationState:L,onRetryHydration:J,onSetTaskStatus:x.type==="workstream"?Y:void 0,onArchivePlanningTask:x.type==="workstream"?it:void 0,onArchiveResolvedWorkstream:x.type==="initiative"?De:void 0,onArchiveResolvedEntity:x.type==="initiative"?bt:De,onOpenNestedWorkstreamDetails:x.type==="initiative"?Ce:void 0,onCreateTaskInWorkstream:x.type==="workstream"?Et:void 0,onCreateWorkstreamInInitiative:x.type==="initiative"?mt:void 0,onOpenTaskById:x.type==="workstream"?et:void 0,onChangeTaskAssignee:x.type==="workstream"?at:void 0,taskReferences:le,onAssignTaskToWorkstream:x.type==="workstream"?Ke:void 0,onAssignInitiativeToWorkstream:qt,onAttachTaskToWorkstreamByReference:x.type==="workstream"?It:void 0,onAttachWorkstreamToInitiativeByReference:x.type==="initiative"?vt:void 0,parentInitiative:x.type==="workstream"?Kr(x.item):null,onEdit:()=>x.type==="initiative"?xe(x.item.id):Ie(x.item.id),onChangeOwner:Ar=>de(x.type,x.item.id,Ar),onChangePlanningOwner:de,onChangePlanningIdentity:Be,onArchive:()=>x.type==="initiative"?Qe(x.item.id):Pe(x.item.id),onUnarchive:()=>x.type==="initiative"?Ze(x.item.id):gt(x.item.id),onAddPlanningContextFile:Mt,onRemovePlanningContextFile:gr,onUpdatePlanningContextCaption:Zt}):null})]})),ct&&!rt&&!Lr&&(At?a.jsx(jA,{label:"Workstream",title:cn.title,description:cn.description,action:cn.action,onCollapse:()=>Ft(!1),paneRef:dr}):a.jsx(Pf,{label:"Workstream",muted:!0,onExpand:()=>Ft(!0)})),Bt&&(u?a.jsx(Pf,{label:"Workstream",onExpand:He}):a.jsxs("div",{ref:Gr,"data-planning-pane":"secondary",className:`${ze.paneShell} ${E.appScrollbar} tf-scrollbar ${ze.detailPane}`.trim(),style:ta(ct?mc:Fr),children:[a.jsxs("div",{className:ze.paneHeader,children:[ct?null:a.jsx("button",{type:"button",className:"tf-control-icon",onClick:Dt&&A||Fe,"aria-label":Dt?"Cancel workstream editing":`Back to ${en}`,title:Dt?"Cancel workstream editing":`Back to ${en}`,children:a.jsx(bo,{size:16,"aria-hidden":"true"})}),a.jsx("h2",{className:ze.paneHeaderLabel,tabIndex:-1,"data-planning-pane-heading":!0,children:ln}),a.jsxs("div",{className:ze.headerActionGroup,children:[Ge?a.jsx(ov,{visible:Ct.workstream,disabled:NA(Ge)===0,itemLabel:"tasks",onToggle:()=>yn("workstream")}):null,ct?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:ft,"aria-label":`Collapse ${ln} pane`,title:`Collapse ${ln} pane`,children:a.jsx(bo,{size:16,"aria-hidden":"true"})}):null]})]}),a.jsx("div",{className:ze.paneContent,"aria-busy":ie?.status==="loading",children:ne?.kind==="editor"?a.jsx(Qv,{editor:ne.editor,draftTitle:B,draftDescription:K,draftOwner:Ae,draftInitiativeId:re,draftIcon:F,draftColor:D,assigneeOptions:qe,initiativeLinkOptions:Ye.initiatives,draftInitiativeSummary:ce,onChangeDraftTitle:z,onChangeDraftDescription:we,onChangeDraftOwner:ke,onChangeDraftInitiativeId:ee,onChangeDraftIcon:Z,onChangeDraftColor:H,onCancel:Fe,onSubmit:G,isSubmitting:_e}):ne?a.jsx(DA,{detail:ne.detail,showArchivedChildren:Ct.workstream,inlineEditor:Dt?{editor:Dt,draftTitle:B,draftDescription:K,draftOwner:Ae,draftInitiativeId:re,draftInitiativeSummary:ce,onChangeDraftTitle:z,onChangeDraftDescription:we,onChangeDraftOwner:ke,onChangeDraftInitiativeId:ee,onCancel:A||Fe,onSubmit:G,isSubmitting:_e}:null,currentWorkspaceId:oe,currentActorId:ge,theme:je,assigneeOptions:qe,linkOptions:Ye,showTaskCardStatusLabel:he,taskArrangeMode:k,onTaskArrangeModeChange:w,onReorderWorkstreamTasks:S,hydrationState:ie,onRetryHydration:ue,onSetTaskStatus:Y,onArchivePlanningTask:it,onArchiveResolvedEntity:De,onCreateTaskInWorkstream:Et,onOpenTaskById:et,onChangeTaskAssignee:at,taskReferences:le,onAssignTaskToWorkstream:Ke,onAssignInitiativeToWorkstream:qt,onAttachTaskToWorkstreamByReference:It,parentInitiative:Kr(ne.detail.item),onEdit:()=>Ie(ne.detail.item.id),onChangeOwner:Ar=>de("workstream",ne.detail.item.id,Ar),onChangePlanningOwner:de,onChangePlanningIdentity:Be,onArchive:()=>Pe(ne.detail.item.id),onUnarchive:()=>gt(ne.detail.item.id),onAddPlanningContextFile:Mt,onRemovePlanningContextFile:gr,onUpdatePlanningContextCaption:Zt}):null})]}))]})})}function ate(e,t,r){const n=String(t||"").trim();if(n)return e.some(l=>l.id===n)?{initiativeId:n,invalid:!1}:{initiativeId:null,invalid:!0};const s=r.trim();if(!s)return{initiativeId:null,invalid:!1};const i=Mv(e,s);return i?{initiativeId:i.id,invalid:!1}:{initiativeId:null,invalid:!0}}function ste(e){return e.taskScope==="open"&&e.summaryCount>0&&(e.loadingTasks||e.activeTaskCount===0||!e.archiveHydrated)}const bd={tasks:"Tasks",planning:"Planning",docs:"Documents",annotate:"Image Notes",workflowManager:"Workflow Manager",taskforceAgents:"Taskforce Agents",aiProfiles:"AI Profiles"},ote=["tasks","planning","docs","annotate","workflowManager","taskforceAgents","aiProfiles"];function ite(e){const t=e?.featureAccess||{},r={tasks:{id:"tasks",label:bd.tasks,featureKey:null,enabled:!0,fallbackModuleId:"tasks"},planning:{id:"planning",label:bd.planning,featureKey:Gb,enabled:t[Gb]?.allowed??!1,fallbackModuleId:"tasks"},docs:{id:"docs",label:bd.docs,featureKey:gv,enabled:t[gv]?.allowed??!0,fallbackModuleId:"tasks"},annotate:{id:"annotate",label:bd.annotate,featureKey:mv,enabled:t[mv]?.allowed??!1,fallbackModuleId:"tasks"},workflowManager:{id:"workflowManager",label:bd.workflowManager,featureKey:Hb,enabled:t[Hb]?.allowed??!1,fallbackModuleId:"tasks"},taskforceAgents:{id:"taskforceAgents",label:bd.taskforceAgents,featureKey:Uf,enabled:t[Uf]?.allowed??!1,fallbackModuleId:"tasks"},aiProfiles:{id:"aiProfiles",label:bd.aiProfiles,featureKey:Vb,enabled:t[Vb]?.allowed??!1,fallbackModuleId:"tasks"}};return ote.map(n=>r[n])}function cte(e){switch(e){case"planning":return{mode:e,moduleId:"planning",layoutVariant:"planning-module",headerSections:[],primaryAction:null};case"docs":return{mode:e,moduleId:"docs",layoutVariant:"docs-minimal",headerSections:[],primaryAction:null};case"annotate":return{mode:e,moduleId:"annotate",layoutVariant:"annotated-module",headerSections:[],primaryAction:null};case"workflowManager":return{mode:e,moduleId:"workflowManager",layoutVariant:"workflow-manager-module",headerSections:[],primaryAction:null};case"taskforceAgents":return{mode:e,moduleId:"taskforceAgents",layoutVariant:"taskforce-agents-module",headerSections:[],primaryAction:null};case"aiProfiles":return{mode:e,moduleId:"aiProfiles",layoutVariant:"ai-profiles-module",headerSections:[],primaryAction:null};default:return{mode:"tasks",moduleId:"tasks",layoutVariant:"tasks-default",headerSections:["search","sort","divider-primary","grouping","divider-secondary","task-display-actions"],primaryAction:"add-task"}}}function MA(e,t){const r=e==="agents"?"aiProfiles":e,n=t.find(s=>s.id===r);return n?n.enabled?n.id:n.fallbackModuleId:"tasks"}const lte="_weekLabel_vet2o_1",dte="_sectionTitle_vet2o_6",ute="_calendarHeader_vet2o_11",pte="_monthLabel_vet2o_18",fte="_weekdayGrid_vet2o_23",mte="_weekdayLabel_vet2o_30",gte="_calendarGrid_vet2o_36",hte="_calendarDay_vet2o_42",yte="_calendarDayDot_vet2o_55",kte="_jumpRow_vet2o_67",vte="_displaySection_vet2o_73",wte="_toggleLabel_vet2o_79",bte="_expiredSummary_vet2o_87",Ste="_actionButton_vet2o_95",ts={weekLabel:lte,sectionTitle:dte,calendarHeader:ute,monthLabel:pte,weekdayGrid:fte,weekdayLabel:mte,calendarGrid:gte,calendarDay:hte,calendarDayDot:yte,jumpRow:kte,displaySection:vte,toggleLabel:wte,expiredSummary:bte,actionButton:Ste},LA=["mon","tue","wed","thu","fri","sat","sun"],Ate={mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat",sun:"Sun"};function Pd(e){const t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),n=String(e.getDate()).padStart(2,"0");return`${t}-${r}-${n}`}function $f(e){const t=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!t)return null;const r=new Date(Number(t[1]),Number(t[2])-1,Number(t[3]));return Number.isNaN(r.getTime())?null:r}function ew(e,t){const r=e.getDay(),n=t==="sunday"?-r:r===0?-6:1-r,s=new Date(e);return s.setHours(0,0,0,0),s.setDate(s.getDate()+n),s}function Cte(e,t){return t==="sunday"?{sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6}[e]:{mon:0,tue:1,wed:2,thu:3,fri:4,sat:5,sun:6}[e]}function hT(e,t){const r=new Date(e);return r.setDate(e.getDate()+t),r}function Ite(e){const t=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!t)return null;const r=new Date(Date.UTC(Number(t[1]),Number(t[2])-1,Number(t[3]))),n=r.getUTCDay()||7;r.setUTCDate(r.getUTCDate()+4-n);const s=new Date(Date.UTC(r.getUTCFullYear(),0,1)),i=Math.ceil(((r.getTime()-s.getTime())/864e5+1)/7);return`${r.getUTCFullYear()}-W${String(i).padStart(2,"0")}`}const tw=320;function _te({open:e,onClose:t,scheduleSelectedDate:r,setScheduleSelectedDate:n,scheduleCalendarMonth:s,setScheduleCalendarMonth:i,scheduleShowWeekends:l,setScheduleShowWeekends:c,scheduleShowBacklog:d,setScheduleShowBacklog:f,scheduleOnlyExpired:p,setScheduleOnlyExpired:g,expiredScheduledCount:h,overdueDueCount:y,expiredLeafCandidates:k,expiredRecoveryCandidates:w,onMoveExpiredToSelectedWeek:S,onMoveExpiredToBacklog:b,scheduleBulkBusy:v,globalWeekStartsOn:T,resolvedLocale:R,todayDateOnly:P,scheduleBaseTasks:N,scheduleWeekStart:I,scheduleWeekLabel:$}){const j=te.useMemo(()=>{const[L,ie]=s.split("-"),J=Number(L),ue=Number(ie);if(!Number.isInteger(J)||!Number.isInteger(ue)||ue<1||ue>12){const oe=$f(r)||new Date;return new Date(oe.getFullYear(),oe.getMonth(),1)}return new Date(J,ue-1,1)},[s,r]),x=te.useMemo(()=>Vh(j,{month:"long",year:"numeric"},R),[j,R]),V=te.useMemo(()=>{const L=ew(j,T);return Array.from({length:42},(ie,J)=>hT(L,J))},[j,T]),U=te.useMemo(()=>{const L=new Map;for(const ie of N){const J=ie.scheduledDate||"";if(!J)continue;const oe=!(ie.status==="done"||ie.status==="cancelled")&&J<P,ge=L.get(J);ge?(ge.count+=1,oe&&(ge.hasExpired=!0)):L.set(J,{count:1,hasExpired:oe})}return L},[N,P]),ne=te.useMemo(()=>T==="sunday"?["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]:["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],[T]);return a.jsxs("aside",{className:`${E.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:`${tw}px`,minWidth:`${tw}px`},children:[a.jsxs("div",{className:"tf-sidebar-header",children:[a.jsxs("div",{className:"tf-sidebar-title",children:[a.jsx(K0,{size:16}),a.jsx("span",{children:"Schedule Controls"})]}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:t,title:"Hide Schedule Sidebar",children:a.jsx(Od,{size:16})})]}),a.jsxs("div",{className:ts.weekLabel,children:["Week of ",$]}),a.jsxs("div",{className:"tf-sidebar-section tf-surface-panel",children:[a.jsxs("div",{className:ts.calendarHeader,children:[a.jsx("button",{className:"tf-control-icon",onClick:()=>{const L=new Date(j);L.setMonth(j.getMonth()-1),i(`${L.getFullYear()}-${String(L.getMonth()+1).padStart(2,"0")}`)},title:"Previous month",children:a.jsx(bo,{size:14})}),a.jsx("div",{className:ts.monthLabel,children:x}),a.jsx("button",{className:"tf-control-icon",onClick:()=>{const L=new Date(j);L.setMonth(j.getMonth()+1),i(`${L.getFullYear()}-${String(L.getMonth()+1).padStart(2,"0")}`)},title:"Next month",children:a.jsx(Od,{size:14})})]}),a.jsx("div",{className:ts.weekdayGrid,children:ne.map(L=>a.jsx("div",{className:ts.weekdayLabel,children:L},L))}),a.jsx("div",{className:ts.calendarGrid,children:V.map(L=>{const ie=Pd(L),J=L.getMonth()!==j.getMonth(),ue=ew(L,T),oe=Pd(ue)===Pd(I),ge=ie===r,je=ie===P,qe=ie<P,Ye=U.get(ie),he=!!Ye,ce=!!Ye?.hasExpired;return a.jsxs("button",{onClick:()=>{n(ie),i(`${L.getFullYear()}-${String(L.getMonth()+1).padStart(2,"0")}`)},className:ts.calendarDay,style:{"--calendar-day-border":ge?"1px solid #2563eb":je?"1px solid rgba(245, 158, 11, 0.95)":"1px solid transparent","--calendar-day-background":ge?"rgba(59,130,246,0.22)":je?"rgba(245,158,11,0.16)":oe?"rgba(59,130,246,0.18)":"transparent","--calendar-day-color":J?"var(--text-helper)":"var(--text-primary)","--calendar-day-font-weight":ge||je?700:500,"--calendar-day-opacity":qe?.42:1},title:`${je?`${ie} (Today)`:ie}`+(he?` • ${Ye?.count} scheduled`:"")+(ce?" • includes expired":""),children:[L.getDate(),he&&a.jsx("span",{className:ts.calendarDayDot,style:{"--calendar-dot-background":ce?"#ef4444":"#3b82f6","--calendar-dot-opacity":J?.6:.95}})]},ie)})}),a.jsx("div",{className:ts.jumpRow,children:a.jsx("button",{className:"tf-control-icon",onClick:()=>{const L=new Date;n(Pd(L)),i(`${L.getFullYear()}-${String(L.getMonth()+1).padStart(2,"0")}`)},title:"Jump to current week",children:"Today"})})]}),a.jsxs("div",{className:`tf-sidebar-section tf-surface-panel ${ts.displaySection}`,children:[a.jsx("div",{className:ts.sectionTitle,children:"Display"}),a.jsxs("label",{className:ts.toggleLabel,children:[a.jsx("input",{type:"checkbox",checked:l,onChange:L=>c(L.target.checked)}),"Show weekends"]}),a.jsxs("label",{className:ts.toggleLabel,children:[a.jsx("input",{type:"checkbox",checked:d,onChange:L=>f(L.target.checked)}),"Show backlog"]}),a.jsxs("label",{className:ts.toggleLabel,children:[a.jsx("input",{type:"checkbox",checked:p,onChange:L=>g(L.target.checked)}),"Only expired/overdue"]})]}),h>0&&a.jsxs("div",{className:"tf-sidebar-section tf-surface-panel",children:[a.jsx("div",{className:ts.sectionTitle,children:"Expired Tasks"}),a.jsxs("div",{className:ts.expiredSummary,children:[a.jsxs("span",{children:[h," expired"]}),a.jsxs("span",{children:[y," overdue"]})]}),a.jsx("button",{className:`tf-control-icon ${ts.actionButton}`,onClick:S,disabled:v||k.length===0,title:"Move expired leaf tasks to the selected week while keeping weekday alignment",children:v?"Working...":"Schedule to selected week"}),a.jsx("button",{className:`tf-control-icon ${ts.actionButton}`,onClick:b,disabled:v||w.length===0,title:"Unschedule expired/overdue tasks back to backlog",children:v?"Working...":"Unschedule to backlog"})]})]})}const Tte=[{value:"implementation-plan",label:"Plans"},{value:"review",label:"Reviews"},{value:"walkthrough",label:"Walkthroughs"},{value:"planning",label:"Planning"},{value:"other",label:"Other"}],xte=[{value:"attached",label:"Attached"},{value:"unattached",label:"Unattached"}];function yT(e,t){return e&&(t==="owner"||t==="admin")}function Rte(e,t,r){return yT(e,t)&&r==="team"}function Pte({isOpen:e,workspaceId:t,refreshKeys:r}){const[n,s]=o.useState([]),[i,l]=o.useState(!1),[c,d]=o.useState(null),f=o.useRef(null),p=o.useRef(null);o.useLayoutEffect(()=>{p.current=Nte(f.current,p.current)},[n]);const g=o.useCallback(async()=>{const h=await fetch(`/api/taskforce/sync/events?workspace_id=${encodeURIComponent(t)}&limit=15`,{method:"GET",credentials:"include"});if(!h.ok)throw new Error(`Failed to load sync events (${h.status})`);const y=await h.json().catch(()=>({}));return Array.isArray(y?.events)?y.events.filter(k=>k&&typeof k=="object"):[]},[t]);return o.useEffect(()=>{if(!e)return;let h=!1;const y=n.length===0;return y&&l(!0),g().then(k=>{h||(p.current=Ete(f.current),s(w=>{const S=w.length===0?k:zZ(w,k,15);return HZ(w,S)?w:S}),d(null))}).catch(k=>{if(h)return;const w=k instanceof Error&&k.message.trim().length>0?k.message.trim():"Unable to load recent sync events.";d(w),y&&s([])}).finally(()=>{h||y&&l(!1)}),()=>{h=!0}},[e,g,...r]),{syncRecentEvents:n,syncRecentEventsLoading:i,syncRecentEventsError:c,syncEventsListRef:f,loadRecentSyncEvents:g}}function Ete(e){return e&&e.scrollTop>8?{scrollTop:e.scrollTop,scrollHeight:e.scrollHeight}:null}function Nte(e,t){if(!t||!e)return null;const r=e.scrollHeight-t.scrollHeight;return e.scrollTop=t.scrollTop+Math.max(0,r),null}function jte({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:r,workspaceSyncRecommendedAction:n,formattedLastSyncTime:s,formattedLastPullTime:i,formattedLastPushTime:l,workspaceSyncDiagnostics:c,workspaceSyncPendingChanges:d,syncLastError:f,workspaceSyncPhase:p,referenceMismatchCount:g,syncRecentEvents:h,loadRecentSyncEvents:y,pushNotice:k,resetWorkspaceSyncCursorAndPull:w,workspaceSyncBusy:S,durableRepairQueueAvailable:b=!1}){const[v,T]=o.useState(!1),[R,P]=o.useState(!1),[N,I]=o.useState(!1),$=o.useCallback(async()=>{try{const V=h.length>0?h:await y(),U=XZ({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:r,workspaceSyncRecommendedAction:n,formattedLastSyncTime:s,formattedLastPullTime:i,formattedLastPushTime:l,workspaceSyncDiagnostics:c,workspaceSyncPendingChanges:d,syncLastError:f,syncStageLabel:K_(p,v,S),referenceMismatchCount:g,syncRecentEvents:V});await navigator.clipboard.writeText(U),I(!0),window.setTimeout(()=>{I(!1)},1800),k("Sync details copied to clipboard.","success")}catch{I(!1),k("Failed to copy sync details.","error")}},[e,i,l,s,y,k,g,f,h,t,c,p,d,n,r,S,v]),j=o.useCallback(async()=>{P(!1),T(!0);try{await w()}finally{T(!1)}},[w]),x=o.useCallback(()=>{if(!v){if(S&&!b){P(!0);return}j()}},[b,j,S,v]);return o.useEffect(()=>{R&&(S||v||j())},[j,S,v,R]),{workspaceSyncRepairBusy:v,workspaceSyncRepairQueued:R,workspaceSyncCopied:N,handleCopySyncDetails:$,handleQueueOrRunRepairSync:x}}function Dte({canManageWorkspaceSync:e,workspaceCloudSyncEnabled:t,saveWorkspaceCloudSyncSettings:r}){const[n,s]=o.useState(!1),[i,l]=o.useState(!1),[c,d]=o.useState(!1),[f,p]=o.useState(null),g=o.useCallback(async b=>{if(e){p(null),d(!0);try{const v=await r({enabled:b});v.success||p(v.error||(b?"Failed to enable sync.":"Failed to disable sync."))}finally{d(!1)}}},[e,r]),h=o.useCallback(async b=>{if(b&&!t){l(!0);return}await g(b)},[g,t]),y=o.useCallback(()=>{l(!1)},[]),k=o.useCallback(()=>{l(!1),g(!0)},[g]),w=o.useCallback(()=>{s(!0)},[]),S=o.useCallback(()=>{s(!1)},[]);return{showSyncStatusModal:n,showSyncEnableWarning:i,workspaceSyncToggleBusy:c,workspaceSyncError:f,syncControlBusy:c,openSyncStatusModal:w,closeSyncStatusModal:S,handleWorkspaceSyncToggle:h,cancelSyncEnableWarning:y,confirmSyncEnableWarning:k}}const OA=te.lazy(()=>zo(()=>import("./TaskSettings-BeWAuyZj.js"),__vite__mapDeps([10,1,2,3,4,5,11])).then(e=>({default:e.TaskSettings}))),Mte=te.lazy(()=>zo(()=>import("./AnnotatedAttachmentWorkspace-B68Wg-RV.js"),__vite__mapDeps([12,1,4,13,2,14,3,5,15])).then(e=>({default:e.AnnotatedAttachmentWorkspaceShell}))),Lte=te.lazy(()=>zo(()=>import("./DocumentWorkspace-B5uvzems.js"),__vite__mapDeps([16,1,13,2,14,3,4,5,17])).then(e=>({default:e.DocumentWorkspaceShell}))),BA=te.lazy(()=>zo(()=>import("./TaskforceAgentsModule-BifCYtjR.js"),__vite__mapDeps([18,1,19,2,3,4,5,20])).then(e=>({default:e.TaskforceAgentsModule}))),Ote=te.lazy(()=>zo(()=>import("./WorkflowManagerModule-DEr5di_r.js"),__vite__mapDeps([21,1,2,3,4,5,22])).then(e=>({default:e.WorkflowManagerModule}))),Bte=te.lazy(()=>zo(()=>import("./AiProfilesModule-BbAEWtHH.js"),__vite__mapDeps([23,1,19,2,3,4,5])).then(e=>({default:e.AiProfilesModule}))),Wte=te.lazy(()=>zo(()=>import("./PlanningModule-B5DWQOGz.js"),__vite__mapDeps([24,1,2,3,4,5,25])).then(e=>({default:e.PlanningModule}))),$te=te.lazy(()=>zo(()=>import("./PlansPage-AY4cGWco.js"),__vite__mapDeps([26,1,2,5,3,4,27])).then(e=>({default:e.PlansPage})));function WA(e,t,r){const n=t.trim();if(!n)return e;const s={...e};return delete s[n],s[n]=r,Object.fromEntries(Object.entries(s).slice(-50))}const Fte="image/png,image/jpeg,image/webp,image/gif",Ute=5*1024*1024,iv=56,zte=e=>e;function Hte(e,t){const r=ay(e);if(r)return Fb(r).label.toUpperCase();for(const n of t){const s=String(n||"").trim();if(!s)continue;const i=ww(s);if(i)return Fb(i).label.toUpperCase();let l=s.toLowerCase();try{l=new URL(s.includes("://")?s:`https://${s}`).hostname.toLowerCase()}catch{l=s.toLowerCase()}if(!(l.includes("localhost")||l.includes("127.0.0.1")||l.includes("::1")))return l.toUpperCase()}return"UNKNOWN"}function Ef(){return typeof performance<"u"?performance.now():Date.now()}function Vte(e){const n=oC(),s=iC(),i=o.useMemo(()=>new URLSearchParams(s.search),[s.search]),l=String(i.get("screen")||"").trim().toLowerCase()==="plans",c=o.useCallback(m=>{const _=new URLSearchParams(s.search);_.set("screen","plans");for(const[W,Se]of Object.entries(m||{}))Se==null||String(Se).trim()===""?_.delete(W):_.set(W,String(Se));n(`/?${_.toString()}${s.hash||""}`)},[s.hash,s.search,n]),d=o.useCallback(()=>{const m=new URLSearchParams(s.search);m.delete("screen"),m.delete("gate"),m.delete("checkout"),m.delete("planId"),m.delete("planVersionId"),m.delete("interval");const _=m.toString();n(`${s.pathname==="/"?"/":s.pathname}${_?`?${_}`:""}${s.hash||""}`)},[s.hash,s.pathname,s.search,n]),{activeTab:f,setActiveTab:p,activeCategories:g,groupBy:h,setGroupBy:y,activeWorkspaceModule:k,setActiveWorkspaceModule:w,emptyColumnMode:S,setEmptyColumnMode:b,zenMode:v,setZenMode:T,filterStatus:R,setFilterStatus:P,tasks:N,handleEdit:I,handleSubmit:$,resetForm:j,discardDescriptionImageDraft:x,handleUpdateTask:V,handleSetStatus:U,editingTaskId:ne,loading:L,error:ie,title:J,setTitle:ue,setTitleDraft:oe,description:ge,setDescription:je,setDescriptionDraft:qe,checklistItems:Ye,setChecklistItems:he,category:ce,setCategory:B,type:K,setType:Ae,priority:re,setPriority:F,complexity:D,setComplexity:z,status:we,setStatus:ke,assignee:ee,setAssignee:Z,scheduledDate:H,setScheduledDate:ae,dueDate:Te,setDueDate:Le,workstreamInput:Ue,setWorkstreamInput:ft,manualComplexityEnabled:He,checklistDropdownEnabled:Fe,showTaskCardStatusLabel:me,showTaskCardDescription:ve,showTaskCardAttachments:ot,showTaskCardChecklistProgress:Oe,showTaskCardLatestActivity:A,tintTaskCardActivityBackground:G,formTaxonomies:_e,setFormTaxonomies:Ne,comments:Ee,newCommentText:fe,setNewCommentText:nt,attachments:q,setAttachments:be,attachmentsDirty:Ve,setAttachmentsDirty:Ce,descriptionImageUploadPending:xe,descriptionImageDraftId:Ie,registerDescriptionImageUpload:de,descriptionFocused:Be,setDescriptionFocused:at,showMarkdownHelp:Qe,setShowMarkdownHelp:Ze,handleAddComment:Pe,handleSetWorkstreamForCurrentTask:gt,handleOpenTaskById:it,taxonomies:De,activeTypes:bt,priorities:Et,taxonomyDisplayLabels:mt,copiedId:qt,handleCopyId:et,handleToggleInProgress:Y,handleToggleComplete:le,handleToggleReview:Ke,handleToggleCancel:It,handleArchiveTask:vt,handleDelete:Mt,handleUnarchive:gr,handleRestoreDeletedTask:Zt,handleRestoreSelectedDeletedTasks:or,handlePermanentlyDeleteDeletedTask:Dt,handleEmptyDeletedTasks:lr,fetchTasks:Rr,searchQuery:Lr,setSearchQuery:Dr,filterCategories:Me,setFilterCategories:rt,filterTypes:pt,setFilterTypes:ht,filterPriorities:At,setFilterPriorities:Ft,filterAssignees:Tt,setFilterAssignees:$t,hasInitedFilters:Ct,assigneeOptions:Wt,taskScope:Ot,setTaskScope:vr,compressedCards:xt,setCompressedCards:ct,sortBy:tr,setSortBy:$r,clearFilters:u,settingsModel:Rt,configLoaded:pr,currentTheme:nr,setCurrentTheme:ar,pathSaved:an,saveSettings:Bt,keyShortcut:Qr,setKeyShortcut:xr,globalWeekStartsOn:Gt,locale:Fr,jsonBackupEnabled:en,setJsonBackupEnabled:ln,mcpHostRoot:tn,setMcpHostRoot:Ge,settingsSection:yn,setSettingsSection:Kr,runtimeMode:ir,workspaceSwitchingEnabled:wt,cloudAuthConfigured:Gr,authRequiredForApi:Ut,authBlocked:dr,isAuthenticated:wr,authUserId:Ur,authWorkspaceId:vs,authUserEmail:ea,authUserDisplayName:ta,authUserAvatarUrl:rn,authSessionResolved:sn,realtimeSyncEnabled:on,realtimeSyncFlagSource:Tn,workspaceCloudSyncEnabled:cn,workspaceSyncPhase:Ar,workspaceSyncStatus:Or,workspaceSyncSummary:qr,workspaceSyncRecommendedAction:Yr,workspaceSyncBusy:ra,workspaceSyncPendingChanges:Gn,localCoordinatorStatus:Yt,transferLocalCoordinatorOwnership:Zr,saveWorkspaceCloudSyncSettings:wn,pushNotice:dt,userGlobalSyncStatus:Cr,workspaceLastSuccessfulSyncAt:pn,workspaceLastPullAt:pe,workspaceLastPushAt:st,workspaceLastErrorAt:yt,userGlobalSyncError:Jt,workspaceLastErrorMessage:Xt,retryWorkspaceCloudSync:yr,resetWorkspaceSyncCursorAndPull:Sn,getWorkspaceSyncDiagnostics:br,currentWorkspaceId:Lt,currentWorkspaceRole:Pr,availableWorkspaces:fn,switchWorkspace:Kn,updateCurrentUserProfile:na,resolveCloudAuthUrl:er=zte,logout:Ho,fetchLoginMethods:Ca,unlinkLoginMethod:aa,addPasswordToAccount:Ha,changePassword:ma,beginOAuthLogin:Ms,beginOAuthLink:ro,availableAuthProviders:Ls,projectRoot:ws,projectName:sa,mcpScriptPath:xn,serverHostRoot:no,showFolderBrowser:An,setShowFolderBrowser:ao,folders:Ia,files:as,currentBrowsePath:Wn,fetchFolders:ja,browserTarget:oa,setBrowserTarget:bs,handleSelectPath:ga,handleAddPath:Va,handleRemovePath:Da,handleUpdateCategory:Ma,handleRemoveCategory:ia,handleSaveCategory:Ss,handleUpdateCategoryIcon:ut,handleUpdateCategoryColor:kr,handleSaveType:Jr,handleRemoveType:Cn,handleUpdateTaxonomies:In,handleUpdatePriorities:Os,pathValidation:so,taskforceAgentId:Bs,setTaskforceAgentId:ha,taskforceAgentConversationId:ca,setTaskforceAgentConversationId:Rn,taskforceAgentConversationByAgentId:Er,setTaskforceAgentConversationByAgentId:Ga,uiStateReady:As,initiativeTemplates:_a,fetchInitiativeTemplates:ya,createInitiativeFromTemplate:Ka,uiNotice:ss,clearNotice:pi,clearTaskError:oo,taskReturnTrail:os,clearReturnToParentTask:Ws,returnToPreviousTask:ye,tasksScrollRef:St,setTasksScrollPos:Vt,commentsEndRef:sr,autoSaveState:Ir,unsavedModalOpen:Ln,setUnsavedModalOpen:Ta,pendingNavigation:qn,handleNavigation:Pn,currentTask:kn,currentTaskWorkstream:fi,currentTaskInitiative:$s,scheduleWarningPrompt:gc,confirmScheduleWarning:ka,cancelScheduleWarning:cr}=e,vn=YI(N,it),dn=Fr||bC();o.useEffect(()=>{const m=String(sa||"").trim();document.title=m?`Taskforce - ${m}`:"Taskforce"},[sa]);const La=()=>{Ta(!1),f==="add"&&!ne&&x(),qn?(f==="add"&&j(),qn()):(f==="add"&&j(),p("tasks"))},$n=async()=>{await $({preventDefault:()=>{}}),Ta(!1),qn&&qn()},[va,hc]=o.useState(!1),[xa,Co]=o.useState(!0),[Ra,Oa]=o.useState(!1),[Fn,Sr]=o.useState(!0),[Cs,Is]=o.useState(Pd(new Date)),[Io,Di]=o.useState(()=>{const m=new Date;return`${m.getFullYear()}-${String(m.getMonth()+1).padStart(2,"0")}`}),[_s,Ts]=o.useState(0),[En,Mi]=o.useState(!1),[Fs,_o]=o.useState(!1),[Yn,Vo]=o.useState(!1),io=o.useRef(null),[Ba,wa]=o.useState(!0),[Us,un]=o.useState(!0),[is,xs]=o.useState(!0),[To,Li]=o.useState(!0),[Go,yc]=o.useState(!0),[ba,mi]=o.useState(!1),[zs,Hs]=o.useState(null),xo=o.useRef(!1),Vs=o.useRef(null),[Oi,Gs]=o.useState(iv),[kc,mn]=o.useState(!1),[el,cs]=o.useState(!1),[la,co]=o.useState(!1),[tl,zd]=o.useState(!1),[Nn,Hd]=o.useState(!1),[vc,Bi]=o.useState(!1),[Wi,O]=o.useState("default"),[M,Nt]=o.useState("execution"),[Qt,Pt]=o.useState([]),[Re,Wa]=o.useState(""),[rr,$a]=o.useState(""),[Pl,Ro]=o.useState(new Set),[gn,ls]=o.useState(null),[Un,Nr]=o.useState(null),[Vd,ds]=o.useState({}),[Ko,qa]=o.useState(null),[Ks,qo]=o.useState(null),[kp,gi]=o.useState(""),[wc,Po]=o.useState(""),[Gd,$i]=o.useState(""),[Yo,Zo]=o.useState(""),[bc,Eo]=o.useState(null),[Sc,rl]=o.useState(null),[km,jn]=o.useState(!1),Kd=o.useRef({taskId:null,attachments:[]}),Zn=o.useMemo(()=>Pd(new Date),[]),On=String(Ur||"").trim(),{taskHeaderQuickFilter:Ya,toggleTaskHeaderQuickFilter:vm,clearTaskHeaderQuickFilter:wm}=LZ({authUserId:On,workspaceId:Lt,taskScope:Ot}),bm=o.useRef(new Map),qd=o.useRef(new Map),[vp,No]=o.useState(()=>Tte.map(m=>m.value)),[wp,Sm]=o.useState(()=>xte.map(m=>m.value)),[bp,Am]=o.useState("updated"),[Sp,Cm]=o.useState("desc"),[Ap,Im]=o.useState([]),[Cp,_m]=o.useState(""),[Ip,Tm]=o.useState(null),[_p,xm]=o.useState({}),[Tp,Rm]=o.useState(0),[gy,El]=o.useState(null),[hy,Yd]=o.useState(null),[xp,Fi]=o.useState(null),[Nl,Ui]=o.useState(null),[jl,Zd]=o.useState({}),[hi,zi]=o.useState(0),jo=o.useRef(null),[Hi,Jd]=o.useState({}),Jo=o.useRef(!1),lo=o.useRef(null),yi=o.useRef(null),nl=o.useRef(null),Xd=o.useRef(new Set);o.useEffect(()=>{Kd.current={taskId:ne||null,attachments:q}},[ne,q]);const Ac=o.useCallback(m=>{const _=ne||null,W=Kd.current,Se=W.taskId===_?W.attachments:q,$e=m(Se);Kd.current={taskId:_,attachments:$e},be($e),Ce(!0),_&&V(_,{attachments:$e}).then(zt=>{const Mr=Kd.current;zt!==!1&&Mr.taskId===_&&Mr.attachments===$e&&Ce(!1)}).catch(()=>{})},[q,ne,V,be,Ce]),ki=o.useMemo(()=>{const m={},_=String(Lt||"").trim();return ir==="cloud"&&_&&_!=="default"&&(m["x-taskforce-workspace-id"]=_),m},[ir,Lt]),uo=o.useMemo(()=>CJ({runtimeMode:ir,workspaceId:Lt,userId:On}),[Lt,On,ir]),Qd=o.useRef(uo),Dl=Qd.current===uo,po=Dl?xp:null,Xo=Dl?Nl:null,vi=o.useMemo(()=>`taskforce:task-origin-workspace-module:${uo}`,[uo]),Vi=o.useMemo(()=>ir==="cloud"?sn:pr,[sn,pr,ir]),Ml=o.useRef(!1),Gi=o.useRef(!1),Ll=o.useCallback(m=>{const _=String(m||"").trim();if(!(!_||typeof window>"u")){Ml.current=!0;try{window.sessionStorage.setItem(vi,_)}catch{}}},[vi]),Do=o.useCallback(()=>{if(Ml.current=!1,!(typeof window>"u"))try{window.sessionStorage.removeItem(vi)}catch{}},[vi]);o.useEffect(()=>{lo.current=xp},[xp]),o.useEffect(()=>{yi.current=Nl},[Nl]),o.useEffect(()=>{Qd.current!==uo&&(Qd.current=uo,lo.current=null,yi.current=null,nl.current=null,Fi(null),Ui(null))},[uo]);const fo=o.useMemo(()=>e.config?.appGates||_R("production"),[e.config?.appGates]),Ki=o.useMemo(()=>ite({featureAccess:fo}),[fo]),jr=o.useMemo(()=>MA(k,Ki),[k,Ki]),Pm=Yn||jr==="planning";o.useEffect(()=>{Pm&&e.ensureArchiveHydrated(!0)},[Pm,e.ensureArchiveHydrated,Lt]);const[Pa,al]=o.useState(!1),[Cc,wi]=o.useState(!1),[eu,qi]=o.useState(null),[Rp,tu]=o.useState(null),Pp=o.useCallback(m=>{tu(m)},[]),Ol=o.useCallback(m=>{const _=String(m.agentId||"").trim(),W=String(m.conversationId||"").trim();ha(_),Rn(W),_&&Ga(Se=>{if(W)return Se[_]===W?Se:{...Se,[_]:W};if(!Se[_])return Se;const $e={...Se};return delete $e[_],$e})},[Ga,Rn,ha]),bi=fo[gv]?.allowed??!1,Yi=fo[mv]?.allowed??!1,Bl=fo[Uf]?.allowed??!1,Em="Documents is not available in this build yet.",Wl="Annotate is not available in this build yet.",Mo=o.useCallback(m=>{if(f!=="add"){m();return}Pn(()=>{_o(!1),j(),p("tasks"),m()})},[f,Pn,j,p]);o.useEffect(()=>{const m=_=>{const W=_,Se=W.detail?.fsPath,$e=String(W.detail?.assetId||"").trim()||null;if(!(!Se&&!$e)){if(W.preventDefault(),!bi){dt(Em,"error");return}Mo(()=>{Ll(W.detail?.taskId),El(Se||null),Yd($e),w("docs")})}};return window.addEventListener("taskforce:open-markdown-document",m),()=>{window.removeEventListener("taskforce:open-markdown-document",m)}},[bi,Em,Mo,dt,Ll,w]),o.useEffect(()=>{jr!==k&&w(jr)},[k,jr,w]),o.useEffect(()=>{jr==="docs"&&bi||(El(null),Yd(null))},[bi,jr]),o.useEffect(()=>{if(!Gi.current&&!(jr!=="docs"&&jr!=="annotate")&&(Gi.current=!0,!(Ml.current||typeof window>"u")))try{if(!String(window.sessionStorage.getItem(vi)||"").trim())return;window.sessionStorage.removeItem(vi),w("tasks")}catch{}},[jr,w,vi]),o.useEffect(()=>{Gi.current=!1,Ml.current=!1},[vi]);const Nm=o.useCallback(m=>{typeof m.scheduleShowWeekends=="boolean"&&hc(m.scheduleShowWeekends),typeof m.scheduleShowBacklog=="boolean"&&Co(m.scheduleShowBacklog),typeof m.scheduleOnlyExpired=="boolean"&&Oa(m.scheduleOnlyExpired),typeof m.scheduleSidebarOpen=="boolean"&&Sr(m.scheduleSidebarOpen),typeof m.scheduleSelectedDate=="string"&&Is(m.scheduleSelectedDate),typeof m.scheduleCalendarMonth=="string"&&Di(m.scheduleCalendarMonth),typeof m.scheduleScrollLeft=="number"&&Ts(m.scheduleScrollLeft),typeof m.showFilters=="boolean"&&Mi(m.showFilters),Array.isArray(m.documentTypeFilters)&&No(m.documentTypeFilters),Array.isArray(m.documentAttachmentFilters)&&Sm(m.documentAttachmentFilters),(m.documentSortField==="updated"||m.documentSortField==="reference"||m.documentSortField==="name"||m.documentSortField==="size"||m.documentSortField==="created")&&Am(m.documentSortField),(m.documentSortOrder==="asc"||m.documentSortOrder==="desc")&&Cm(m.documentSortOrder),Array.isArray(m.documentPinnedDocIds)&&Im(m.documentPinnedDocIds),typeof m.documentSearchQuery=="string"&&_m(m.documentSearchQuery),(typeof m.documentSelectedDocId=="string"||m.documentSelectedDocId===null)&&Tm(m.documentSelectedDocId),xm(m.documentScrollByDocId&&typeof m.documentScrollByDocId=="object"?m.documentScrollByDocId:{}),typeof m.documentListScrollTop=="number"&&Rm(m.documentListScrollTop),typeof m.planningDrawerOpen=="boolean"&&Vo(m.planningDrawerOpen),typeof m.documentTrayOpen=="boolean"&&wa(m.documentTrayOpen),typeof m.imageTrayOpen=="boolean"&&un(m.imageTrayOpen),typeof m.agentTrayOpen=="boolean"&&xs(m.agentTrayOpen),typeof m.taskforceAgentRosterTrayOpen=="boolean"&&Li(m.taskforceAgentRosterTrayOpen),typeof m.taskforceAgentDrawerOpen=="boolean"&&al(m.taskforceAgentDrawerOpen),typeof m.taskforceAgentPanelCollapsed=="boolean"&&wi(m.taskforceAgentPanelCollapsed),typeof m.planningTreeCollapsed=="boolean"&&mn(m.planningTreeCollapsed),typeof m.planningPrimaryCollapsed=="boolean"&&cs(m.planningPrimaryCollapsed),typeof m.planningSecondaryCollapsed=="boolean"&&co(m.planningSecondaryCollapsed),zd(!!m.planningFavoritesSectionCollapsed),Hd(!!m.planningInitiativesSectionCollapsed),Bi(!!m.planningWorkstreamsSectionCollapsed),(m.planningNavigatorSort==="default"||m.planningNavigatorSort==="title"||m.planningNavigatorSort==="owner"||m.planningNavigatorSort==="progress")&&O(m.planningNavigatorSort),Nt(Aee(m.planningTaskArrangeMode)),Pt(Array.isArray(m.planningFavorites)?m.planningFavorites:[]),Array.isArray(m.planningExpandedInitiativeIds)&&Ro(new Set(m.planningExpandedInitiativeIds)),m.planningDrawerDetail!==void 0&&ls(m.planningDrawerDetail),(typeof m.planningNestedWorkstreamDetailId=="string"||m.planningNestedWorkstreamDetailId===null)&&Nr(m.planningNestedWorkstreamDetailId);const _=m.annotatedTarget&&typeof m.annotatedTarget=="object"?m.annotatedTarget:null,W=_&&typeof m.annotatedSessionId=="string"?m.annotatedSessionId:null;Xz({currentTarget:lo.current,currentSessionId:yi.current,lastHydratedIdentity:nl.current})&&(lo.current=_,yi.current=W,nl.current=n_(_,W),Fi(_),Ui(W)),Zd(m.annotatedViewportByContextKey&&typeof m.annotatedViewportByContextKey=="object"?m.annotatedViewportByContextKey:{})},[]),jm=o.useMemo(()=>({scheduleShowWeekends:va,scheduleShowBacklog:xa,scheduleOnlyExpired:Ra,scheduleSidebarOpen:Fn,scheduleSelectedDate:Cs,scheduleCalendarMonth:Io,scheduleScrollLeft:_s,showFilters:En,documentTypeFilters:vp,documentAttachmentFilters:wp,documentSortField:bp,documentSortOrder:Sp,documentPinnedDocIds:Ap,documentSearchQuery:Cp,documentSelectedDocId:Ip,documentScrollByDocId:_p,documentListScrollTop:Tp,documentTrayOpen:Ba,imageTrayOpen:Us,agentTrayOpen:is,taskforceAgentRosterTrayOpen:To,taskforceAgentDrawerOpen:Pa,taskforceAgentPanelCollapsed:Cc,planningDrawerOpen:Yn,planningTreeCollapsed:kc,planningPrimaryCollapsed:el,planningSecondaryCollapsed:la,planningFavoritesSectionCollapsed:tl,planningInitiativesSectionCollapsed:Nn,planningWorkstreamsSectionCollapsed:vc,planningNavigatorSort:Wi,planningTaskArrangeMode:M,planningFavorites:Qt,planningExpandedInitiativeIds:Array.from(Pl),planningDrawerDetail:gn,planningNestedWorkstreamDetailId:Un,annotatedTarget:po,annotatedSessionId:Xo,annotatedViewportByContextKey:jl}),[va,xa,Ra,Fn,Cs,Io,_s,En,vp,wp,bp,Sp,Ap,Cp,Ip,_p,Tp,Ba,Us,is,To,Pa,Cc,Yn,kc,el,la,tl,Nn,vc,Wi,M,Qt,Pl,gn,Un,po,Xo,jl]);o.useEffect(()=>{Pt([])},[uo]);const{ready:ru}=jJ({currentWorkspaceId:Lt,loadKey:uo,enabled:ir!=="cloud"||sn,headers:ki,remotePlanningFavoritesAuthoritative:!!On&&On!=="anonymous",useCloudProxy:ir==="local"&&!!On&&On!=="anonymous",snapshot:jm,onApplyState:Nm});o.useEffect(()=>{h==="schedule"&&Sr(!0)},[h]);const{showArchive:Ic,setShowArchive:$l,fetchArchive:yy,filteredArchive:Ep}=e,Fl=o.useMemo(()=>Ep.map(m=>({...m,isArchived:!0})),[Ep]),Za=o.useMemo(()=>e.archivedTasks.map(m=>({...m,isArchived:!0})),[e.archivedTasks]),Qo=o.useMemo(()=>[...e.searchAgnosticTasks,...Za],[Za,e.searchAgnosticTasks]),Dm=o.useCallback(m=>{const _=String(m||"").trim();if(!_)return"";const W=Qo.find(Se=>Se.id===_);return ys(W)||""},[Qo]),Mm=o.useCallback(m=>{const _=String(m||"").trim();if(!_)return"";const W=String(Hi[_]||"").trim();if(W)return W;for(const Se of Qo)for(const $e of Se.attachments||[]){if(!$e||typeof $e!="object"||String($e.assetId||"").trim()!==_)continue;const zt=im({referenceNumber:typeof $e.referenceNumber=="number"?$e.referenceNumber:null,referenceLabel:String($e.referenceLabel||"").trim()||null});if(zt)return zt}return""},[Qo,Hi]);o.useEffect(()=>{const m=_=>{const W=_,Se=XS(W.detail,Qo);if(Se){if(W.preventDefault(),!Yi){dt(Wl,"error");return}Mo(()=>{lo.current=Se;const $e=String(Se.sessionId||"").trim()||null;yi.current=$e,Fi(Se),Ui($e),zi(zt=>zt+1),Ll(Se.taskId),w("annotate")})}};return window.addEventListener("taskforce:open-annotated-attachment",m),()=>{window.removeEventListener("taskforce:open-annotated-attachment",m)}},[Qo,Yi,Wl,Mo,dt,Ll,w]),o.useEffect(()=>{if(!po)return;const m=XS(po,Qo);m&&(m.taskReferenceLabel===po.taskReferenceLabel&&m.imageReferenceLabel===po.imageReferenceLabel||Fi(m))},[Qo,po]),o.useEffect(()=>{const m=lo.current,_=String(m?.assetId||"").trim();if(!_)return;const W=String(Hi[_]||"").trim();W&&W!==String(m?.imageReferenceLabel||"").trim()&&Fi(Se=>!Se||String(Se.assetId||"").trim()!==_?Se:{...Se,imageReferenceLabel:W})},[Hi,po]),o.useEffect(()=>{if(!Vi)return;const _=String(po?.assetId||"").trim();if(!_||Xd.current.has(_)||String(Hi[_]||"").trim())return;let W=!1;Xd.current.add(_);const Se=String(Lt||"default").trim()||"default",$e=new URLSearchParams({workspaceId:Se});return(async()=>{try{const Mr=await fetch(`/api/taskforce/annotated-attachments/images/${encodeURIComponent(_)}?${$e.toString()}`,{method:"GET",credentials:"include",headers:ki});if(!Mr.ok)return;const Hr=await Mr.json().catch(()=>({})),Fa=String(Hr?.target?.imageReferenceLabel||"").trim();if(!Fa||W)return;Jd(hn=>hn[_]===Fa?hn:{...hn,[_]:Fa})}catch{}finally{Xd.current.delete(_)}})(),()=>{W=!0}},[Vi,Hi,Lt,po,ki]);const ei=o.useMemo(()=>e.deletedTasks.map(m=>({...m.taskSnapshot,isDeleted:!0,deletedRecordId:m.id,deletedAt:m.deletedAt,deletedExpiresAt:qI(m.deletedAt)})),[e.deletedTasks]),Zi=o.useMemo(()=>{const m=new Map;return e.deletedTasks.forEach(_=>{m.set(_.taskSnapshot.id,_)}),m},[e.deletedTasks]),nu=o.useMemo(()=>{const m=ei,_=gm(Lr),W={categories:g,types:bt,priorities:Et,assigneeOptions:e.assigneeOptions,taxonomies:De},Se=g.every(hn=>Me.includes(hn.value)),$e=bt.every(hn=>pt.includes(hn.value)),zt=new Set(At.map(hn=>String(hn))),Mr=Et.every(hn=>zt.has(String(hn.value))),Hr=new Set(R.map(hn=>String(hn))),Fa=fc.every(hn=>Hr.has(String(hn.value)));return m.filter(hn=>{const vl=Bh(hn,_,W),Uu=Se||Me.includes(hn.category),zu=$e||pt.includes(hn.type||So),Ag=Mr||zt.has(String(hn.priority)),Cg=Fa||Hr.has(String(hn.status)),Ig=Tt.length===0||Tt.includes(hn.assignee||"unassigned");return vl&&Uu&&zu&&Ag&&Cg&&Ig})},[g,bt,ei,Tt,Me,At,R,pt,Et,Lr]),Ul=o.useMemo(()=>[...e.tasks,...Za,...ei],[Za,ei,e.tasks]),Np=o.useMemo(()=>{const m=g.filter(W=>!W.disabled).map(W=>({value:W.value,label:W.label})),_=g.filter(W=>W.disabled&&Ul.some(Se=>Se.category===W.value)).map(W=>({value:W.value,label:`${W.label} (Legacy)`}));return[...m,..._]},[g,Ul]),jp=o.useMemo(()=>{const m=bt.filter(W=>W.status!=="retired").map(W=>({value:W.value,label:W.label})),_=bt.filter(W=>W.status==="retired"&&Ul.some(Se=>(Se.type||So)===W.value)).map(W=>({value:W.value,label:`${W.label} (Retired)`}));return[...m,..._]},[bt,Ul]),Lm=o.useCallback(m=>Ya?m.filter(_=>OZ(_,Ya,On,Zn)):m,[On,Ya,Zn]),sl=o.useMemo(()=>Lm(e.filteredTasks),[Lm,e.filteredTasks]),_c=o.useMemo(()=>Ot==="archived"?Fl:Ot==="deleted"?nu:Ic?[...sl,...Fl]:sl,[Fl,nu,sl,Ic,Ot]),au=o.useMemo(()=>Ot==="open"?Ya?sl:e.tasks.filter(m=>!m.isArchived):_c,[_c,e.tasks,sl,Ya,Ot]),Dp=o.useMemo(()=>new Set(_c.map(m=>m.id)),[_c]),Om=o.useMemo(()=>Ot==="archived"?Za:Ot==="deleted"?ei:Ic?[...e.tasks,...Za]:e.tasks,[Za,ei,e.tasks,Ic,Ot]),Tc=o.useMemo(()=>{const m=new Map;for(const _ of Za)m.set(_.id,_);for(const _ of ei)m.set(_.id,_);for(const _ of e.tasks)m.set(_.id,_);return Array.from(m.values())},[Za,ei,e.tasks]),xc=o.useMemo(()=>{const m=new Map;return Tc.forEach(_=>m.set(_.id,_)),m},[Tc]),su=o.useMemo(()=>{const m=new Map;Wt.forEach(Se=>{m.set(String(Se.value),Se.label)});const _=String(Ur||"").trim(),W=String(ta||ea||"").trim();return _&&W&&m.set(_,W),m},[Wt,ta,ea,Ur]),Kt=o.useMemo(()=>{const m=new Map;e.workspaceTaskRelationships.forEach(lt=>{if(lt.deletedAt||lt.kind!=="dependency")return;const zr=m.get(lt.sourceTaskId)||[];zr.push(lt.targetTaskId),m.set(lt.sourceTaskId,zr)});const _=mJ(e.tasks,Za),W=new Map(_.map(lt=>[lt.id,lt])),Se=lt=>{const zr=m.get(lt)||[];if(zr.length===0)return"ready";let Bn=!1;for(const nc of zr){const ac=W.get(nc);if(!ac||$o(ac.status).value==="cancelled"){Bn=!0;continue}if($o(ac.status).value!=="done")return"blocked"}return Bn?"invalid":"ready"},$e=_,zt=_,Mr=(lt,zr)=>({progressPercent:lt>0?Math.round(zr/lt*100):0,taskCount:lt,completedTaskCount:zr}),Hr=lt=>{const zr={task:0,"on-hold":0,"in-progress":0,review:0,done:0,cancelled:0};return lt.forEach(Bn=>{zr[$o(Bn.status).value]+=1}),zr},Fa=lt=>{const zr=Hr([]);return lt.forEach(Bn=>{Object.entries(Bn.statusCounts||{}).forEach(([nc,ac])=>{zr[nc]+=Number(ac)||0})}),zr},hn=ste({taskScope:Ot,summaryCount:e.planningBootstrapTaskSummaries.length,loadingTasks:e.loadingTasks,activeTaskCount:e.tasks.length,archiveHydrated:e.archiveHydratedWorkspaceId===Lt}),vl=new Map,Uu=new Map,zu=new Map;hn?e.planningBootstrapTaskSummaries.forEach(lt=>{const zr=(lt.tasks||[]).map(Bn=>({...Bn,prerequisiteTaskIds:m.get(Bn.id)||[],dependencyState:Se(Bn.id)}));vl.set(lt.workstreamId,{...lt,tasks:zr}),Uu.set(lt.workstreamId,zr),zu.set(lt.workstreamId,Hr(zr))}):($e.forEach(lt=>{const zr=String(lt.workstreamId||"").trim();if(!zr)return;const Bn=vl.get(zr)||{workstreamId:zr,taskCount:0,completedTaskCount:0,tasks:[]};Bn.taskCount+=1,(lt.status==="done"||lt.status==="cancelled")&&(Bn.completedTaskCount+=1);const nc=zu.get(zr)||Hr([]);nc[$o(lt.status).value]+=1,zu.set(zr,nc),vl.set(zr,Bn)}),zt.forEach(lt=>{const zr=String(lt.workstreamId||"").trim();if(!zr)return;const Bn=Uu.get(zr)||[];Bn.push({id:lt.id,referenceNumber:lt.referenceNumber??null,localReferenceNumber:lt.localReferenceNumber??null,referenceLabel:lt.referenceLabel,title:lt.title,createdAt:lt.createdAt,status:lt.status||null,priority:Number(lt.priority)||0,workstreamOrder:lt.workstreamOrder??null,prerequisiteTaskIds:m.get(lt.id)||[],dependencyState:Se(lt.id),assignee:lt.assignee||null,attachmentCount:lt.attachmentCount??(Array.isArray(lt.attachments)?lt.attachments.length:0),isArchived:!!lt.isArchived}),Uu.set(zr,Bn)}));const Ag=new Map,Cg=new Map,Ig=new Map,Sk=new Map,t0=lt=>{const zr=vl.get(lt.id),Bn=Uu.get(lt.id)||zr?.tasks||[],nc=Mr(zr?.taskCount||0,zr?.completedTaskCount||0),ac=gJ({isArchived:!!lt.isArchived,tasks:Bn,dataReady:!hn}),_g={id:lt.id,referenceNumber:lt.referenceNumber??null,title:lt.title,description:String(lt.description||"").trim()||void 0,ownerId:lt.ownerId?String(lt.ownerId):null,ownerLabel:lt.ownerId?su.get(String(lt.ownerId))||String(lt.ownerId):null,icon:lt.icon??null,color:lt.color??null,...nc,statusCounts:zu.get(lt.id)||Hr([]),initiativeId:lt.initiativeId||null,commentCount:Array.isArray(lt.comments)?lt.comments.length:0,comments:Array.isArray(lt.comments)?lt.comments:[],activity:Array.isArray(lt.activity)?lt.activity:[],entityEvents:Array.isArray(lt.entityEvents)?lt.entityEvents:[],attachmentCount:Array.isArray(lt.attachments)?lt.attachments.length:0,attachments:Array.isArray(lt.attachments)?lt.attachments:[],isArchived:!!lt.isArchived,archiveReady:ac.archiveReady,archiveActiveTaskCount:ac.activeTaskCount,tasks:Bn};if(Ag.set(lt.id,Bn.map(wl=>wl.id)),lt.initiativeId){Cg.set(lt.id,lt.initiativeId);const wl=Sk.get(lt.initiativeId)||[];wl.push(_g),Sk.set(lt.initiativeId,wl)}return _g},Ak=e.workstreams.map(t0),r0=Ak.filter(lt=>Kh(Ot,!!lt.isArchived)),Ck=e.initiatives.map(lt=>{const zr=Sk.get(lt.id)||[],Bn=zr.filter(yf=>Kh(Ot,!!yf.isArchived)),nc=zr.reduce((yf,Ik)=>yf+Ik.taskCount,0),ac=zr.reduce((yf,Ik)=>yf+Ik.completedTaskCount,0),_g=Mr(nc,ac),wl=hJ({isArchived:!!lt.isArchived,workstreams:zr,dataReady:!hn});return{id:lt.id,referenceNumber:lt.referenceNumber??null,title:lt.title,description:String(lt.description||"").trim()||void 0,ownerId:lt.ownerId?String(lt.ownerId):null,ownerLabel:lt.ownerId?su.get(String(lt.ownerId))||String(lt.ownerId):null,icon:lt.icon??null,color:lt.color??null,..._g,statusCounts:Fa(zr),workstreamCount:Bn.length,workstreams:Bn,allWorkstreams:zr,commentCount:Array.isArray(lt.comments)?lt.comments.length:0,comments:Array.isArray(lt.comments)?lt.comments:[],activity:Array.isArray(lt.activity)?lt.activity:[],entityEvents:Array.isArray(lt.entityEvents)?lt.entityEvents:[],attachmentCount:Array.isArray(lt.attachments)?lt.attachments.length:0,attachments:Array.isArray(lt.attachments)?lt.attachments:[],isArchived:!!lt.isArchived,archiveReady:wl.archiveReady,archiveActiveTaskCount:wl.activeTaskCount,archiveActiveWorkstreamCount:wl.activeWorkstreamCount}}),{initiatives:xb,standaloneWorkstreams:n0,initiativeById:a0,workstreamById:s0}=BZ(Ck,r0,Ot),o0=Ak.filter(lt=>!lt.initiativeId);return xb.forEach(lt=>{Ig.set(lt.id,lt.workstreams.flatMap(zr=>(zr.tasks||[]).map(Bn=>Bn.id)))}),{initiatives:xb,standaloneWorkstreams:n0,allInitiatives:Ck,allStandaloneWorkstreams:o0,allInitiativeById:new Map(Ck.map(lt=>[lt.id,lt])),allWorkstreamById:new Map(Ak.map(lt=>[lt.id,lt])),workstreamTaskIds:Ag,workstreamInitiativeIds:Cg,initiativeTaskIds:Ig,workstreamById:s0,initiativeById:a0}},[Za,Lt,e.archiveHydratedWorkspaceId,su,e.initiatives,e.loadingTasks,e.planningBootstrapTaskSummaries,e.workspaceTaskRelationships,e.tasks,e.workstreams,Ot]),Bm=o.useMemo(()=>Kt.initiatives.map(m=>{const _=gs(m);return{value:m.id,label:_||m.title}}),[Kt.initiatives]),ou=o.useMemo(()=>{const m=($e,zt)=>$e.title.localeCompare(zt.title,void 0,{sensitivity:"base"}),_=Array.from(Kt.allInitiativeById.values()).filter($e=>!$e.isArchived).map($e=>({id:$e.id,referenceLabel:gs($e)||$e.id,title:$e.title,icon:$e.icon,color:$e.color,meta:`${$e.workstreamCount||0} workstream${$e.workstreamCount===1?"":"s"}`})).sort(m),W=Array.from(Kt.allWorkstreamById.values()).filter($e=>!$e.isArchived).map($e=>({id:$e.id,referenceLabel:Fo($e)||$e.id,title:$e.title,icon:$e.icon,color:$e.color,meta:$e.initiativeId?`In ${Kt.allInitiativeById.get($e.initiativeId)?.title||"another initiative"}`:"Standalone workstream"})).sort(m),Se=Tc.filter($e=>!$e.isArchived&&!$e.isDeleted).map($e=>({id:$e.id,referenceLabel:ys($e)||$e.id,title:$e.title,meta:$e.workstreamId?`In ${Kt.allWorkstreamById.get($e.workstreamId)?.title||"another workstream"}`:"Unassigned to a workstream"})).sort(m);return{initiatives:_,workstreams:W,tasks:Se}},[Tc,Kt.allInitiativeById,Kt.allWorkstreamById]),Mp=o.useMemo(()=>{const _=(Re?Kt.initiativeById.get(Re)?.workstreams||[]:Kt.initiatives.flatMap(Se=>Se.workstreams)).map(Se=>{const $e=Fo(Se);return{value:Se.id,label:$e||Se.title}}),W=Re?[]:Kt.standaloneWorkstreams.map(Se=>{const $e=Fo(Se);return{value:Se.id,label:$e||Se.title}});return[..._,...W]},[Kt.initiativeById,Kt.initiatives,Kt.standaloneWorkstreams,Re]),zl=o.useMemo(()=>rr?new Set(Kt.workstreamTaskIds.get(rr)||[]):Re?new Set(Kt.initiativeTaskIds.get(Re)||[]):null,[Kt.initiativeTaskIds,Kt.workstreamTaskIds,Re,rr]),Lp=o.useMemo(()=>{if(!gn)return null;if(gn.type==="initiative"){const _=Kt.allInitiativeById.get(gn.id);return _?{type:"initiative",item:_}:null}const m=Kt.allWorkstreamById.get(gn.id);return m?{type:"workstream",item:m}:null},[gn,Kt.allInitiativeById,Kt.allWorkstreamById]),iu=o.useMemo(()=>{if(!Un)return null;const m=Kt.allWorkstreamById.get(Un);return m?{type:"workstream",item:m}:null},[Un,Kt.allWorkstreamById]),Op=o.useMemo(()=>Ks?.mode==="create"?{kind:"editor",editor:Ks}:iu?{kind:"detail",detail:iu}:null,[iu,Ks]),ky=gn?Vd[`${gn.type}:${gn.id}`]:void 0,vy=Un?Vd[`workstream:${Un}`]:void 0,wy=gT(kc,!!(Lp||Ko),el,!!Op,la),[by,Sy]=o.useState(wy),Ay=o.useMemo(()=>{if(!Yo.trim())return null;const m=Kt.allInitiativeById.get(Yo);return m||Mv(Kt.allInitiatives,Yo)},[Yo,Kt.allInitiativeById,Kt.allInitiatives]);o.useEffect(()=>{Re&&!Kt.initiativeById.has(Re)&&Wa(""),rr&&!Kt.workstreamById.has(rr)&&$a("")},[Kt.initiativeById,Kt.workstreamById,Re,rr]);const mo=o.useMemo(()=>h==="schedule"?au:_c,[h,_c,au]),Bp=o.useMemo(()=>h!=="schedule"||!Ra?mo:mo.filter(m=>{if(m.status==="done"||m.status==="cancelled")return!1;const W=!!m.scheduledDate&&m.scheduledDate<Zn,Se=!!m.dueDate&&m.dueDate<Zn;return W||Se}),[h,Ra,mo,Zn]),Wm=o.useMemo(()=>hA(Bp,zl),[Bp,zl]),Ji=ZI(e.deletedTasks,Wm.map(m=>m.id),Ot==="deleted"),Cy=o.useMemo(()=>hA(Om,zl),[Om,zl]),Iy=o.useMemo(()=>Array.from(Dp),[Dp]),Wp=o.useCallback(m=>{Is(m);const _=$f(m);_&&Di(`${_.getFullYear()}-${String(_.getMonth()+1).padStart(2,"0")}`)},[]),$p=o.useCallback(m=>{h==="schedule"&&Ts(m)},[h]),_y=o.useCallback(m=>{if(Ot==="deleted"){const _=Zi.get(m);if(!_)return;Zt(_.id,_.taskId);return}gr(m)},[Zi,Zt,gr,Ot]),$m=o.useCallback(m=>{if(Ot==="deleted"){const _=Zi.get(m);if(!_||!window.confirm("Permanently delete this task? This cannot be undone."))return;Dt(_.id);return}Mt(m)},[Zi,Mt,Dt,Ot]),Rc=o.useMemo(()=>h!=="schedule"?[]:mo.filter(m=>{if(m.status==="done"||m.status==="cancelled")return!1;const W=!!m.scheduledDate&&m.scheduledDate<Zn,Se=!!m.dueDate&&m.dueDate<Zn;return W||Se}),[h,mo,Zn]),ol=o.useMemo(()=>h!=="schedule"?0:mo.filter(m=>m.status==="done"||m.status==="cancelled"?!1:!!m.scheduledDate&&m.scheduledDate<Zn).length,[h,mo,Zn]),Ty=o.useMemo(()=>h!=="schedule"?0:mo.filter(m=>m.status==="done"||m.status==="cancelled"?!1:!!m.dueDate&&m.dueDate<Zn).length,[h,mo,Zn]),Hl=o.useMemo(()=>!On||On==="anonymous"?0:N.filter(m=>m.status==="done"||m.status==="cancelled"?!1:String(m.assignee||"").trim()===On).length,[On,N]),il=o.useMemo(()=>!On||On==="anonymous"?0:N.filter(m=>m.status==="done"||m.status==="cancelled"||String(m.assignee||"").trim()!==On?!1:!!m.dueDate&&m.dueDate<Zn).length,[On,N,Zn]),Vl=o.useMemo(()=>h!=="schedule"?[]:mo.filter(m=>m.status==="done"||m.status==="cancelled"?!1:!!m.scheduledDate&&m.scheduledDate<Zn),[h,mo,Zn]),cu=Rc,[Gl,Pc]=o.useState(!1),Fm=()=>{Pn(()=>{ye()||(f==="add"&&os.length>0&&Ws(),_o(!1),f==="add"&&j(),p("tasks"))})};o.useEffect(()=>{f!=="add"&&_o(!1)},[f]);const Ec=o.useCallback(async(m,_,W)=>{m.status===_&&!W?.allowSameStatus||await U(m,_)},[U]),lu=o.useCallback(async(m,_)=>{const W=xc.get(m);if(!W){dt("Task details are still loading.","info");return}await Ec(W,_),await e.fetchPlanningEntities()},[Ec,xc,e.fetchPlanningEntities,dt]),Si=o.useCallback(async(m,_)=>{await V(m,{assignee:_})!==!1&&await e.fetchPlanningEntities()},[V,e.fetchPlanningEntities]),cl=o.useCallback(async m=>{const _=xc.get(m);return _?_.isArchived?!0:_.status!=="done"&&_.status!=="cancelled"?(dt("Only completed or cancelled tasks can be archived from Planning.","error"),!1):vt(_):(dt("Task details are still loading.","info"),!1)},[vt,xc,dt]),Nc=o.useCallback(async m=>{const _=await cl(m);return _&&(await e.fetchPlanningEntities(),dt("Task archived","success")),_},[cl,e.fetchPlanningEntities,dt]),du=o.useCallback(async m=>{const _=Kt.allWorkstreamById.get(m);if(!_?.archiveReady)return dt("This workstream is no longer ready to archive.","error"),!1;try{return await J_({workstream:_,archiveTask:cl,archiveWorkstream:e.archiveWorkstream})?(dt("Completed tasks and workstream archived","success"),!0):(dt("Workstream archive stopped safely. Resolve any remaining tasks and retry.","error"),!1)}catch(W){return dt(W instanceof Error?`Workstream archive stopped safely: ${W.message}`:"Workstream archive stopped safely. Retry to archive the remaining items.","error"),!1}},[cl,Kt.allWorkstreamById,e.archiveWorkstream,dt]),ll=o.useCallback(async m=>{const _=Kt.allInitiativeById.get(m);if(!_?.archiveReady)return dt("This initiative is no longer ready to archive.","error"),!1;try{return await yJ({initiativeId:_.id,workstreams:_.allWorkstreams||_.workstreams,archiveTask:cl,archiveWorkstream:e.archiveWorkstream,archiveInitiative:e.archiveInitiative})?(dt("Completed tasks, workstreams, and initiative archived","success"),!0):(dt("Initiative archive stopped safely. Resolve any remaining tasks and retry.","error"),!1)}catch(W){return dt(W instanceof Error?`Initiative archive stopped safely: ${W.message}`:"Initiative archive stopped safely. Retry to archive the remaining items.","error"),!1}},[cl,Kt.allInitiativeById,e.archiveInitiative,e.archiveWorkstream,dt]),uu=o.useCallback(async(m,_)=>{const W=m==="initiative"?Kt.allInitiativeById.get(_):Kt.allWorkstreamById.get(_);if(!W)return dt(`${m==="initiative"?"Initiative":"Workstream"} not found.`,"error"),!1;const Se=X_({entityType:m,isArchived:W.isArchived,taskCount:W.taskCount,completedTaskCount:W.completedTaskCount,archiveReady:W.archiveReady,activeWorkstreamCount:W.archiveActiveWorkstreamCount});if(Se.mode==="archived")return!0;if(Se.mode==="ready")return m==="initiative"?ll(_):du(_);if(Se.mode!=="empty")return dt(Se.mode==="blocked"?`Archive unavailable while active ${Se.remainingKind==="task"?"tasks":"workstreams"} remain.`:"Archive availability is still loading.","error"),!1;try{return m==="initiative"?await e.archiveInitiative(_):await e.archiveWorkstream(_),dt(`${m==="initiative"?"Initiative":"Workstream"} archived`,"success"),!0}catch($e){return dt($e instanceof Error?$e.message:`Failed to archive ${m}.`,"error"),!1}},[ll,du,Kt.allInitiativeById,Kt.allWorkstreamById,e.archiveInitiative,e.archiveWorkstream,dt]),Kl=o.useCallback(async(m,_)=>{try{return m==="initiative"?await e.unarchiveInitiative(_):await e.unarchiveWorkstream(_),dt(`${m==="initiative"?"Initiative":"Workstream"} unarchived`,"success"),!0}catch(W){return dt(W instanceof Error?W.message:`Failed to unarchive ${m}.`,"error"),!1}},[e.unarchiveInitiative,e.unarchiveWorkstream,dt]),ql=o.useCallback((m,_)=>{j();const W=MZ(m,_,{categories:g});W.category&&B(W.category),W.type&&Ae(W.type),typeof W.priority=="number"&&F(W.priority),typeof W.complexity=="number"&&z(W.complexity),W.assignee&&Z(W.assignee),W.status&&ke(W.status),W.scheduledDate&&ae(W.scheduledDate),p("add")},[j,g,B,Ae,F,z,ke,Z,ae,p]);te.useEffect(()=>{R&&!R.includes("done")&&P(m=>[...m,"done"])},[]);const[Fp,Yl]=o.useState(!1),[qs,us]=o.useState(!1),[Lo,Zl]=o.useState(!1),Up=o.useRef(!1),[Um,pu]=o.useState(!1),[fu,zm]=o.useState(!1),[Hm,zp]=o.useState(""),[xy,Hp]=o.useState(!1),[Vm,Gm]=o.useState(!1),[Ry,mu]=o.useState("members"),[gu,hu]=o.useState(null),[Km,yu]=o.useState("unknown"),[Py,Vp]=o.useState(!1),[Ey,jc]=o.useState(null),[Ny,Ja]=o.useState(null),[jy,qm]=o.useState(!1),[ku,go]=o.useState([]),[Jl,vu]=o.useState(null),[Ys,Gp]=o.useState(""),[wu,bu]=o.useState("member"),[Dc,Dy]=o.useState("read-write"),[My,Ai]=o.useState(!1),[Ly,Su]=o.useState(null),[dl,Ym]=o.useState(0),[Oy,Zm]=o.useState(!1),[By,Wy]=o.useState([]),[$y,Fy]=o.useState(!1),[Uy,zy]=o.useState(1),[Ea,Kp]=o.useState(null),[Jm,Xm]=o.useState(!1),[Qm,qp]=o.useState(null),[eg,Au]=o.useState(!1),[tg,Xi]=o.useState(null),[Mc,ps]=o.useState(!1),[da,Cu]=o.useState(null),[Xl,Hy]=o.useState("month"),[Yp,Ql]=o.useState(""),[Zp,ul]=o.useState(""),[Zs,pl]=o.useState(null),[rg,ng]=o.useState(!1),[Vy,Iu]=o.useState(!1),[ua,Xa]=o.useState(null),[ed,pa]=o.useState(null),fl=25,Lc=o.useRef(null),Ci=o.useRef(null),td=o.useRef({billing:!1,teamManagement:!1}),Oc=o.useRef(null);o.useEffect(()=>{Oc.current=Ea},[Ea]),o.useEffect(()=>{if(!qs)return;const m=_=>{Lc.current?.contains(_.target)||us(!1)};return document.addEventListener("mousedown",m),()=>document.removeEventListener("mousedown",m)},[qs]);const ml=ir==="cloud"&&wt&&wr,Rs=wr&&(ir==="cloud"||Gr),ti=ir==="local"&&wr,ag=Yt?.phase==="ready"&&Yt.snapshot?.state.ownershipMode==="server"?Yt.snapshot.workspace?.runner?.checkpoint?.checkpoint.syncEnabled:null,Ii=typeof ag=="boolean"?ag:cn,{showSyncStatusModal:Jp,showSyncEnableWarning:Gy,workspaceSyncError:rd,syncControlBusy:Xp,openSyncStatusModal:sg,closeSyncStatusModal:Qp,handleWorkspaceSyncToggle:Ky,cancelSyncEnableWarning:Qi,confirmSyncEnableWarning:gl}=Dte({canManageWorkspaceSync:ti,workspaceCloudSyncEnabled:Ii,saveWorkspaceCloudSyncSettings:wn}),nd=o.useMemo(()=>{const m=fn.find(Se=>Se.id===Lt),_=String(m?.name||"").trim();if(_)return _;if(ir==="local"){const Se=String(sa||"").trim();if(Se)return Se}return String(Lt||"").trim()||"Workspace"},[fn,Lt,sa,ir]),ad=yT(Rs,gu),sd=Rte(Rs,gu,Km),od=String(ta||"").trim(),Js=String(rn||"").trim(),ec=String(ea||"").trim(),hl=od||ec,og=hl.length>0,ig=ec.length>0,qy=o.useMemo(()=>gY({workspaceName:nd,workspaceId:Lt,accountLabel:hl||ec,runtimeMode:ir}),[ec,hl,Lt,nd,ir]),ef=(hl||ec||"").trim(),id=wr&&sn&&ef.length>0?ef.charAt(0).toUpperCase():"",tf=Js,cg=wr&&sn&&tf.length>0,_u=String(Zp||Js).trim(),rf=String(Ea?.planName||Ea?.planId||"").trim(),Zy=rf.length>0,_i=String(Ea?.workspaceId||vs||Lt||"").trim(),Tu=ir==="cloud"?"CLOUD":"LOCAL",nf=e.config?.apiBaseUrl||"",af=o.useMemo(()=>Hte(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]),lg=Gr&&!sn;o.useEffect(()=>{Lo&&!Up.current&&(Ql(od),ul(Js),pl(null),Xa(null),pa(null)),Up.current=Lo},[Js,od,Lo]);const tc=o.useCallback(async m=>{const _=String(m||"").trim();if(!(!_||!Gr))try{await fetch(er("/api/taskforce/auth/profile/avatar/discard"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({draftId:_})})}catch{}},[Gr,er]),sf=o.useCallback(()=>{const m=Zs;Zl(!1),pu(!1),Xa(null),pa(null),pl(null),ul(Js),m&&tc(m)},[Js,tc,Zs]),cd=o.useCallback(async m=>{if(!m||!Gr)return!1;if(!m.type.startsWith("image/"))return Xa("Profile photo must be an image file."),pa(null),!1;ng(!0),Xa(null),pa(null);try{const _=await fJ(m,{maxBytes:Ute});if(_.exceededLimit){const hn=m.type==="image/gif"?"Animated GIF profile photos must be 5 MB or smaller.":"Profile photo must be 5 MB or smaller.";throw new Error(hn)}const W=_.file,Se=await fetch(er("/api/taskforce/auth/profile/avatar/init"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({originalName:W.name,mimeType:W.type,size:W.size})}),$e=await Se.json().catch(()=>({}));if(!Se.ok||!$e?.success||typeof $e?.draftId!="string"||typeof $e?.relativePath!="string")throw new Error($e?.error||"Failed to start avatar upload.");if(!(await fetch(er("/api/taskforce/auth/profile/avatar/upload"),{method:"POST",headers:{"Content-Type":W.type||"application/octet-stream","x-taskforce-avatar-draft-id":$e.draftId},credentials:"include",body:W})).ok)throw new Error("Failed to upload avatar.");const Mr=await fetch(er("/api/taskforce/auth/profile/avatar/finalize"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({draftId:$e.draftId,relativePath:$e.relativePath})}),Hr=await Mr.json().catch(()=>({}));if(!Mr.ok||!Hr?.success||typeof Hr?.draftId!="string")throw new Error(Hr?.error||"Failed to finalize avatar upload.");const Fa=Zs;return pl(Hr.draftId),ul(typeof Hr?.avatarUrl=="string"?Hr.avatarUrl:""),pa(null),Fa&&Fa!==Hr.draftId&&tc(Fa),!0}catch(_){return Xa(_ instanceof Error?_.message:"Failed to upload profile photo."),!1}finally{ng(!1)}},[Gr,tc,Zs,er]),Bc=o.useCallback(()=>{if(!Zs)return;const m=Zs;pl(null),ul(Js),pa(null),Xa(null),tc(m)},[Js,tc,Zs]),xu=o.useCallback(()=>{const m=Zs;pl(null),ul(""),pa(Js?"Profile photo will be removed when you save.":null),Xa(null),m&&tc(m)},[Js,tc,Zs]),of=o.useCallback(async()=>{const m=Yp.trim();if(!m){Xa("Display name is required."),pa(null);return}Iu(!0),Xa(null),pa(null);const _=await na({displayName:m,avatarDraftId:Zs,clearAvatar:!Zs&&!Zp&&!!Js});if(!_.success){Xa(_.error||"Failed to update profile."),Iu(!1);return}pa("Profile updated."),pl(null),ul(""),Iu(!1),pu(!1)},[Js,Zs,Zp,Yp,na]),Oo=o.useCallback(()=>{const m={},_=String(_i||"").trim();_&&(m["x-taskforce-workspace-id"]=_);const W=gu||Pr;return(W==="owner"||W==="admin"||W==="member"||W==="read-only")&&(m["x-taskforce-workspace-role"]=W),m},[Pr,_i,gu]),dg=o.useCallback(m=>{const _=wr,W=m==="account_menu"&&Rs;Ci.current=Ef(),td.current={billing:_,teamManagement:W},_r("account_surface_opened",{surface:m,expectsBilling:_,expectsTeamManagement:W}),!_&&!W&&(_r("account_surface_ready",{surface:m,durationMs:0,teamManagementVisible:!1,billingPlanId:null}),Ci.current=null)},[Rs,wr]),rc=o.useCallback(m=>{const _=td.current;if(_[m]=!1,_.billing||_.teamManagement)return;const W=Ci.current;W!==null&&(_r("account_surface_ready",{surface:Lo?"account_settings":qs?"account_menu":"closed",durationMs:Math.round(Ef()-W),teamManagementVisible:sd,billingPlanId:String(Ea?.planId||"").trim()||null}),Ci.current=null)},[Ea?.planId,sd,qs,Lo]),Ti=o.useCallback(async m=>{const _=er(wA);if(!wr)return Kp(null),qp(null),hu(null),yu("unknown"),Vp(!1),jc(null),bA(_,{identityKey:Ur}),rc("billing"),rc("teamManagement"),null;const W=Ef();Xm(!0),qp(null),Vp(Rs),jc(null);try{const Se=await eJ(_,{identityKey:Ur,force:m?.force===!0}),$e=Se?.workspaceRole==="owner"||Se?.workspaceRole==="admin"||Se?.workspaceRole==="member"||Se?.workspaceRole==="read-only"?Se.workspaceRole:null,zt=Se?.teamPlanMode==="team"||Se?.teamPlanMode==="personal"?Se.teamPlanMode:"unknown";return Kp(Se),hu($e),yu(zt),jc(null),_r("account_profile_summary_resolved",{durationMs:Math.round(Ef()-W),planId:String(Se?.planId||"").trim()||null,gate:String(Se?.gate||"").trim()||null,teamManagementAllowed:Se?.teamManagementAllowed===!0}),Se}catch(Se){const $e=Se instanceof Error?Se.message:"Failed to load account summary.",zt=!!Oc.current;return qp($e),zt?jc(null):(hu(null),yu("unknown"),jc($e)),_r("account_profile_summary_failed",{durationMs:Math.round(Ef()-W),error:$e,preservedSummary:zt}),Oc.current}finally{Xm(!1),Vp(!1),rc("billing"),rc("teamManagement")}},[Ur,Rs,wr,rc,er]),Jy=o.useCallback(m=>{Kp(m);const _=m?.workspaceRole==="owner"||m?.workspaceRole==="admin"||m?.workspaceRole==="member"||m?.workspaceRole==="read-only"?m.workspaceRole:null,W=m?.teamPlanMode==="team"||m?.teamPlanMode==="personal"?m.teamPlanMode:"unknown";hu(_),yu(W)},[]),Ru=o.useMemo(()=>Vv(Ea).allowReturnToApp,[Ea]),Xy=o.useCallback(async()=>{const m=new URLSearchParams;m.set("screen","plans"),m.set("interval",Xl);const _=String(Ea?.planId||"").trim(),W=String(Ea?.planVersionId||"").trim();_&&m.set("planId",_),W&&m.set("planVersionId",W),n(`/?${m.toString()}`)},[Ea?.planId,Ea?.planVersionId,Xl,n]),ug=o.useCallback(async()=>{Xi(null),Cu(null),Au(!0);try{const m=await fetch(er("/api/taskforce/billing/portal-session"),{method:"POST",credentials:"include"}),_=await m.json().catch(()=>({}));if(!m.ok){Xi(String(_?.error||"Failed to create portal session."));return}const W=String(_?.url||"").trim();if(!W){Xi("Portal session did not return a redirect URL.");return}window.location.assign(W)}catch{Xi("Failed to open billing portal.")}finally{Au(!1)}},[er]),cf=o.useCallback(async()=>{Xi(null),Cu(null),Au(!0);try{const m=String(Ea?.planVersionId||"").trim();if(!m){Xi("No active plan version is linked to this account.");return}const _=await fetch(er("/api/taskforce/billing/subscription"),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({planVersionId:m,interval:Xl})}),W=await _.json().catch(()=>({}));if(!_.ok){Xi(String(W?.error||"Failed to update subscription interval."));return}Cu("Subscription updated."),bA(er(wA),{identityKey:Ur}),await Ti()}catch{Xi("Failed to update subscription interval.")}finally{Au(!1)}},[Ea?.planVersionId,Ur,Xl,Ti,er]);o.useEffect(()=>{!wr||!sn||Ti()},[sn,wr,Ti]),o.useEffect(()=>{!Lo&&!qs||Ti()},[Ti,qs,Lo]);const ld=o.useCallback(async()=>{if(ad){qm(!0),Ja(null);try{const m=await fetch("/api/taskforce/admin/users",{method:"GET",credentials:"include",headers:Oo()}),_=await m.json().catch(()=>({}));if(!m.ok){Ja(_?.error||"Failed to load workspace users.");return}const W=Array.isArray(_?.users)?_.users:[],Se={owner:0,admin:1,member:2,"read-only":3},$e=W.map(zt=>({userId:String(zt?.userId||""),email:String(zt?.email||""),displayName:typeof zt?.displayName=="string"?zt.displayName:null,role:zt?.role==="owner"||zt?.role==="admin"||zt?.role==="member"||zt?.role==="read-only"?zt.role:"member",permissionMode:zt?.permissionMode==="read-only"?"read-only":"read-write",status:String(zt?.status||"active"),disabled:zt?.disabled===!0}));$e.sort((zt,Mr)=>{const Hr=(Se[zt.role]??99)-(Se[Mr.role]??99);return Hr!==0?Hr:(zt.displayName||zt.email).localeCompare(Mr.displayName||Mr.email,void 0,{sensitivity:"base"})}),go($e)}catch{Ja("Failed to load workspace users.")}finally{qm(!1)}}},[ad,Oo]),Wc=o.useCallback(async m=>{if(!ad)return;const _=Math.max(0,Math.floor(m));Zm(!0),Ja(null);try{const W=_*fl,Se=await fetch(`/api/taskforce/admin/workspace-audit-logs?limit=${fl}&offset=${W}`,{method:"GET",credentials:"include",headers:Oo()}),$e=await Se.json().catch(()=>({}));if(!Se.ok){Ja($e?.error||"Failed to load workspace audit log.");return}const zt=Array.isArray($e?.events)?$e.events:[];Wy(zt.map(Hr=>({id:String(Hr?.id||""),action:String(Hr?.action||""),actorUserId:String(Hr?.actorUserId||""),actorRole:String(Hr?.actorRole||""),createdAt:String(Hr?.createdAt||Hr?.ts||"")}))),Ym(_);const Mr=Math.max(1,Number($e?.pages||1));zy(Mr),Fy(_+1<Mr)}catch{Ja("Failed to load workspace audit log.")}finally{Zm(!1)}},[ad,Oo]),Pu=o.useCallback(async()=>{await Promise.all([ld(),Wc(dl)])},[ld,Wc,dl]),lf=o.useCallback((m="login")=>{const _=`${s.pathname}${s.search}${s.hash}`,W=!_||_==="/login"||!_.startsWith("/")?"/":_;us(!1),Zl(!1),Qp(),n(`/login?mode=${m}&next=${encodeURIComponent(W)}`)},[Qp,s.hash,s.pathname,s.search,n]),dd=o.useCallback(m=>{us(!1),Hp(!1);const _=new URLSearchParams({step:"workspace"});m?.intent==="create-workspace"&&_.set("intent","create-workspace"),n(`/setup?${_.toString()}`,{replace:!0})},[n]),yl=o.useCallback(async()=>{if(Mc)return;if(ps(!0),!wr){try{d()}finally{ps(!1)}return}const m=Oc.current;if(m&&!Vv(m).allowReturnToApp){ps(!1);return}d(),(async()=>{try{const _=await e.continueAfterCommercialOnboarding();if(!_.success){dt(_.error||"Unable to finish onboarding.","error"),_.destination==="login"&&n("/login",{replace:!0});return}_.destination==="setup"&&dd()}finally{ps(!1)}})()},[Oc,d,wr,n,dd,Mc,e,dt]),ud=o.useCallback(()=>{if(l){yl();return}Pn(()=>{Do(),w("tasks"),Vo(!1),ls(null),Nr(null),qa(null),_o(!1),f==="add"&&j(),p("tasks"),(s.pathname!=="/"||s.search)&&n("/")})},[f,Do,Pn,yl,l,s.pathname,s.search,n,j,p,w]),Eu=o.useCallback(m=>{vm(m),vr("open"),$l(!1),w("tasks"),l&&d()},[d,l,w,$l,vr,vm]),Nu=o.useCallback(async m=>{if(!(!m||fu)){if(ba&&!xo.current){Hs(()=>()=>{Nu(m)});return}zp(""),zm(!0);try{const _=await Kn(m);if(!_.success){if(_.code==="WORKSPACE_NOT_FOUND"||_.code==="WORKSPACE_ID_REQUIRED"){dd();return}zp(_.error||"Failed to switch workspace.");return}await Rr(!0),us(!1)}finally{zm(!1)}}},[Kn,fu,Rr,dd,ba]),df=o.useCallback(async()=>{us(!1),Gm(!0),mu("members"),((await Ti())?.teamManagementAllowed??sd)&&(await ld(),await Wc(0))},[sd,Ti,Wc,ld]),$c=o.useCallback(async(m,_)=>{Ja(null),vu(m);try{const W=await _(),Se=await W.json().catch(()=>({}));if(!W.ok){Ja(Se?.error||"Team management action failed.");return}await Pu()}catch{Ja("Team management action failed.")}finally{vu(null)}},[Pu]),uf=o.useCallback(async()=>{const m=Ys.trim();if(m){Ai(!0),Ja(null),Su(null);try{const _=await fetch("/api/taskforce/admin/users/invite",{method:"POST",headers:{"Content-Type":"application/json",...Oo()},credentials:"include",body:JSON.stringify({workspaceId:_i,email:m,role:wu,permissionMode:wu==="member"?Dc:"read-write"})}),W=await _.json().catch(()=>({}));if(!_.ok){Ja(W?.error||"Failed to send invite.");return}Gp(""),W?.inviteEmailSent===!1?Su(`Invite created, but email delivery failed${W?.inviteEmailError?`: ${String(W.inviteEmailError)}`:"."}`):Su("Invite sent."),await Pu()}catch{Ja("Failed to send invite.")}finally{Ai(!1)}}},[Lt,Pu,Oo,Ys,Dc,wu]),Fc=o.useMemo(()=>Lr.trim().length>0,[Lr]),Qy=o.useMemo(()=>ku.filter(m=>m.status==="invited"),[ku]),ju=o.useMemo(()=>{const m=Me.length!==g.length,_=pt.length!==bt.length,W=At.length!==Et.length,Se=R.length!==fc.length,$e=Tt.length!==Wt.length,zt=Ya!==null,Mr=Re.length>0,Hr=rr.length>0;return m||_||W||Se||$e||zt||Mr||Hr},[g.length,bt.length,Wt.length,Tt.length,Me.length,At.length,R.length,pt.length,Et.length,Re,rr,Ya]),pg=jr,Uc=o.useMemo(()=>cte(pg),[pg]);o.useLayoutEffect(()=>{if(!Pa&&f!=="add")return;const m=()=>{const Se=Vs.current,$e=Se?Math.ceil(Se.getBoundingClientRect().bottom):iv;Gs(Math.max(iv,$e))};m(),window.addEventListener("resize",m);const _=Vs.current,W=typeof ResizeObserver<"u"?new ResizeObserver(m):null;return W&&_&&W.observe(_),()=>{window.removeEventListener("resize",m),W?.disconnect()}},[f,Pa]),o.useEffect(()=>{Bl||al(!1)},[Bl]);const fg=Uc.moduleId==="tasks"&&ju,mg=Fc||ju,gg=Ot==="archived"?Za.length:Ot==="deleted"?ei.length:N.length,ek=Ot==="archived"?Fl.length:Ot==="deleted"?nu.length:sl.length,Du=mg?`${ek}/${gg}`:`${gg}`,tk=mg?`${Ot.charAt(0).toUpperCase()+Ot.slice(1)} tasks matching current filters`:Ot==="deleted"?"Trash tasks — automatically deleted after 90 days":`${Ot.charAt(0).toUpperCase()+Ot.slice(1)} tasks`,rk=ir==="local"&&wr,ri=o.useCallback(m=>{if(!m)return"Never";const _=new Date(m);return Number.isNaN(_.getTime())?"Never":_.toLocaleString()},[]),nk=o.useMemo(()=>ri(pn),[ri,pn]);o.useMemo(()=>ri(pe),[ri,pe]),o.useMemo(()=>ri(st),[ri,st]);const Mu=rd||Xt||Jt||"None",xi=br(),pd=Yt?.snapshot?.permits.recoveryObligations||0,ak=o.useMemo(()=>mZ({runtimeMode:ir,isAuthenticated:wr,workspaceSyncStatus:Or,workspaceCloudSyncEnabled:cn,workspaceSyncSummary:qr,workspaceSyncRecommendedAction:Yr,workspaceSyncError:Mu,coordinatorRecoveryObligations:pd,pushBlockedReason:xi.pushBlockedReason||null,pullBlockedReason:xi.pullBlockedReason||null,retryBlockedReason:xi.retryBlockedReason||null}),[ir,wr,Or,cn,qr,Yr,Mu,pd,xi.pushBlockedReason,xi.pullBlockedReason,xi.retryBlockedReason]),fa=o.useMemo(()=>pZ(Yt),[Yt]),ho=fa?.header||ak,pf=fa?fa.pendingLocalChanges:Gn,sk=fa?fa.lastPullAt:pe,ok=fa?fa.lastPushAt:st,ik=fa?fa.lastSyncedAt:pn,hg=ri(sk),yg=ri(ok),kg=ri(ik),vg=fa?fa.busy:ra,wg=Yt?.snapshot?.state.ownershipMode||null,C=wg==="server"||wg==="browser-gateway"?wg:null,[Q,se]=o.useState(!1),X=Yt?.phase!=="ready"||!Yt.snapshot||Yt.snapshot.state.transitionState!=="idle"||Yt.snapshot.permits.active>0||pd>0,We=o.useCallback(async()=>{if(!(!C||Q)){se(!0);try{const m=C==="server"?"browser-gateway":"server";await Zr(m),dt(m==="server"?"The local Taskforce server now owns background synchronization.":"This browser now owns background synchronization.","success")}catch(m){dt(m instanceof Error&&m.message.trim()?m.message:"Sync ownership could not be transferred.","error")}finally{se(!1)}}},[C,Q,dt,Zr]),Je=ho.lastError,[tt,Ht]=o.useState(ho.status),ur=o.useMemo(()=>fa?.diagnostics||qZ({...xi,coordinatorRecoveryObligations:pd}),[fa,xi,pd]),{syncRecentEvents:Tr,syncRecentEventsLoading:Br,syncRecentEventsError:Wr,syncEventsListRef:zn,loadRecentSyncEvents:Ps}=Pte({isOpen:Jp,workspaceId:Lt,refreshKeys:[st,pe,yt,Or]}),yo=ho.actionable&&Or==="syncing"&&Ar==="active"&&pf===0;o.useEffect(()=>{if(!yo){Ht(ho.status);return}const m=window.setTimeout(()=>{Ht(ho.status)},1200);return()=>window.clearTimeout(m)},[ho.status,yo]);const Xs=o.useMemo(()=>YZ({syncRecentEvents:Tr,syncRecentEventsError:Wr,syncRecentEventsLoading:Br}),[Tr,Wr,Br]),ff=o.useMemo(()=>ZZ(Tr),[Tr]),bg=o.useMemo(()=>JZ(Tr),[Tr]),zc=o.useMemo(()=>G_(tt),[tt]),kl=o.useMemo(()=>KZ(tt,Ii),[Ii,tt]),{workspaceSyncRepairBusy:ck,workspaceSyncRepairQueued:vT,workspaceSyncCopied:wT,handleCopySyncDetails:bT,handleQueueOrRunRepairSync:ST}=jte({currentWorkspaceId:Lt,syncStatusLabel:zc.label,workspaceSyncSummary:ho.summary,workspaceSyncRecommendedAction:ho.recommendedAction,formattedLastSyncTime:kg,formattedLastPullTime:hg,formattedLastPushTime:yg,workspaceSyncDiagnostics:xi,workspaceSyncPendingChanges:pf,syncLastError:Je,workspaceSyncPhase:Ar,referenceMismatchCount:ff,syncRecentEvents:Tr,loadRecentSyncEvents:Ps,pushNotice:dt,resetWorkspaceSyncCursorAndPull:Sn,workspaceSyncBusy:vg,durableRepairQueueAvailable:C==="server"}),AT=fa?fa.repairBusy:ck,CT=o.useMemo(()=>fa?.stage||K_(Ar,ck,ra),[fa,ra,Ar,ck]),eb=o.useMemo(()=>$f(Cs)||new Date,[Cs]),fd=o.useMemo(()=>ew(eb,Gt),[eb,Gt]),Hc=o.useMemo(()=>{const m={mon:"",tue:"",wed:"",thu:"",fri:"",sat:"",sun:""};return LA.forEach(_=>{const W=Cte(_,Gt);m[_]=Pd(hT(fd,W))}),m},[fd,Gt]),tb=o.useCallback(m=>{const _=$f(m);if(!_)return Hc.mon;const W=_.getDay();return Hc[W===1?"mon":W===2?"tue":W===3?"wed":W===4?"thu":W===5?"fri":W===6?va?"sat":"fri":va?"sun":"fri"]||Hc.mon},[Hc,va]),IT=o.useCallback(async()=>{if(!(Gl||cu.length===0)){Pc(!0);try{for(const m of cu){const _=m.scheduledDate||m.dueDate||Zn,W=tb(_);await V(m.id,{scheduledDate:W,scheduledWeekKey:Ite(W),orderInDay:null})}await Rr(!0)}finally{Pc(!1)}}},[Gl,cu,Zn,tb,V,Rr]),_T=o.useCallback(async()=>{if(!(Gl||Rc.length===0)){Pc(!0);try{for(const m of Rc)await V(m.id,{scheduledDate:null,scheduledWeekKey:null,orderInDay:null});await Rr(!0)}finally{Pc(!1)}}},[Gl,Rc,V,Rr]),TT=o.useMemo(()=>Vh(fd,{month:"short",day:"numeric",year:"numeric"},dn),[fd,dn]),rb=o.useMemo(()=>{const W=(va?Gt==="sunday"?["sun","mon","tue","wed","thu","fri","sat"]:LA:["mon","tue","wed","thu","fri"]).map($e=>{const zt=$f(Hc[$e])||fd,Mr=Hc[$e],Hr=$e==="sat"||$e==="sun";return{value:$e,label:`${Ate[$e]} ${Vh(zt,{month:"short",day:"numeric"},dn)}`,color:Hr?"#1e3a8a":"#3b82f6",icon:"Calendar",date:Mr,isPast:Mr<Zn,isSelected:Mr===Cs,isWeekend:Hr}}),Se=Vl.length>0;return[...xa?[{value:"backlog",label:"Backlog",color:"#64748b",icon:"Inbox"}]:[],...Se?[{value:"expired",label:"Expired",color:"#ef4444",icon:"AlertTriangle"}]:[],...W]},[va,xa,Hc,fd,Vl.length,Zn,Cs,Gt,dn]),nb=o.useMemo(()=>{switch(h){case"category":return g;case"type":return(bt||[]).map(m=>({...m,icon:m.icon||Oh[m.value]?.icon,color:m.color||Oh[m.value]?.color}));case"priority":return Et;case"complexity":return[{value:1,label:"Tiny",icon:"Gauge",color:"#10b981"},{value:2,label:"Low",icon:"Gauge",color:"#14b8a6"},{value:3,label:"Medium",icon:"Gauge",color:"#3b82f6"},{value:4,label:"High",icon:"Gauge",color:"#8b5cf6"},{value:5,label:"Epic",icon:"Gauge",color:"#d946ef"}];case"assignee":return Wt.map(m=>({value:m.value,label:m.label,icon:m.icon==="HelpCircle"?"Circle":m.icon,color:m.color}));case"status":return[...fc.filter(m=>m.value!=="done"&&m.value!=="cancelled"),{value:"completed",label:"Completed",icon:$o("done").icon,color:$o("done").color}];case"schedule":return rb;default:return g}},[h,g,bt,Et,Wt,rb]),xT=a.jsxs("div",{className:fr.accountMenuWrap,ref:Lc,children:[a.jsx("button",{className:`tf-control-icon ${fr.avatarBtn}`,onClick:()=>{us(m=>{const _=!m;return _?dg("account_menu"):(Ci.current=null,td.current={billing:!1,teamManagement:!1}),_})},title:wr?"Account":"Account (Not signed in)","aria-label":wr?"Account":"Account (Not signed in)","aria-haspopup":"menu","aria-expanded":qs,children:a.jsx("span",{className:fr.avatarBadge,"aria-hidden":"true",children:cg?a.jsx("img",{src:tf,alt:"",className:fr.avatarImage}):id||a.jsx(sp,{size:14,className:fr.avatarIcon})})}),qs&&a.jsxs("div",{className:fr.accountMenu,role:"menu","aria-label":"Account menu",children:[a.jsxs("div",{className:fr.accountMenuSection,children:[a.jsx("div",{className:fr.accountMenuSectionLabel,children:"Account"}),a.jsx("div",{className:fr.accountMenuHint,children:lg?"Checking sign-in status...":wr?a.jsx(a.Fragment,{children:og?a.jsx(a.Fragment,{children:a.jsxs("span",{className:fr.accountIdentityBlock,children:[a.jsx("span",{className:fr.accountIdentityEmail,children:hl}),ig&&od&&a.jsxs("span",{className:fr.accountIdentityMetaLine,children:[a.jsx("span",{className:fr.accountIdentityMetaLabel,children:"Email"}),a.jsx("span",{className:fr.accountIdentityMetaValue,children:ec})]}),Jm?a.jsxs("span",{className:fr.accountIdentityMetaLine,children:[a.jsx("span",{className:fr.accountIdentityMetaLabel,children:"Subscription"}),a.jsx("span",{className:fr.accountIdentityMetaValue,children:"Loading…"})]}):Zy?a.jsxs("button",{"aria-label":`Subscription ${rf}`,className:`${fr.accountIdentityMetaLine} ${fr.accountIdentityMetaAction}`,onClick:()=>{us(!1),c()},type:"button",children:[a.jsx("span",{className:fr.accountIdentityMetaLabel,children:"Subscription"}),a.jsx("span",{className:fr.accountIdentityMetaValue,children:rf})]}):Qm?a.jsxs("span",{className:fr.accountIdentityMetaLine,children:[a.jsx("span",{className:fr.accountIdentityMetaLabel,children:"Subscription"}),a.jsx("span",{className:fr.accountIdentityMetaValue,children:"Unavailable"})]}):null,a.jsxs("span",{className:fr.accountIdentityMetaLine,children:[a.jsx("span",{className:fr.accountIdentityMetaLabel,children:"Runtime"}),a.jsx("span",{className:fr.accountIdentityMetaValue,children:Tu})]}),a.jsxs("span",{className:fr.accountIdentityMetaLine,children:[a.jsx("span",{className:fr.accountIdentityMetaLabel,children:"Environment"}),a.jsx("span",{className:fr.accountIdentityMetaValue,children:af})]})]})}):"Signed in"}):"Not signed in"})]}),ml&&a.jsxs("div",{className:fr.accountMenuSection,children:[a.jsx("div",{className:fr.accountMenuSectionLabel,children:"Workspaces (Owned + Invited)"}),fn.length===0&&a.jsx("div",{className:fr.accountMenuHint,children:"No workspaces found for this account yet."}),fn.map(m=>a.jsxs("button",{className:`${fr.accountMenuItem} ${m.id===Lt?fr.accountMenuItemActive:""}`,onClick:()=>Nu(m.id),role:"menuitem",disabled:fu||m.id===Lt,title:m.description||m.name,children:[a.jsx(lc,{size:15}),a.jsxs("span",{style:{display:"flex",flexDirection:"column",gap:"2px"},children:[a.jsx("span",{children:m.name}),a.jsx("span",{className:fr.accountMenuMeta,children:m.role})]})]},m.id)),a.jsxs("button",{className:fr.accountMenuItem,onClick:()=>{zp(""),Hp(!0),us(!1)},role:"menuitem",disabled:fu,children:[a.jsx(ci,{size:15}),"Create Workspace"]}),Hm&&a.jsx("div",{className:fr.accountMenuError,children:Hm})]}),Py?a.jsx("div",{className:fr.accountMenuHint,children:"Resolving team management access..."}):sd?a.jsxs("button",{className:fr.accountMenuItem,onClick:()=>{df()},role:"menuitem",children:[a.jsx(dh,{size:15}),"Team Management"]}):Ey?a.jsx("div",{className:fr.accountMenuHint,children:"Team Management unavailable right now."}):null,wr&&a.jsxs("button",{className:fr.accountMenuItem,onClick:()=>{us(!1),dg("account_settings"),Zl(!0)},role:"menuitem",children:[a.jsx(Xf,{size:15}),"Account Settings"]}),a.jsxs("button",{className:fr.accountMenuItem,onClick:()=>{us(!1),Yl(!0)},role:"menuitem",children:[a.jsx(Ld,{size:15}),"Help & Support"]}),ir==="local"&&!wr&&!lg&&a.jsxs("button",{className:fr.accountMenuItem,onClick:()=>{lf("login")},role:"menuitem",children:[a.jsx(sp,{size:15}),"Sign In / Register"]}),wr&&a.jsxs("button",{className:fr.accountMenuItem,onClick:async()=>{us(!1),await Ho(),ir==="cloud"&&n("/login",{replace:!0})},role:"menuitem",children:[a.jsx(q0,{size:15}),"Sign Out"]})]})]}),ab=o.useCallback(()=>{b(m=>m==="show"?"collapse":m==="collapse"?"hide":"show")},[b]),sb=o.useCallback(()=>{j(),w("tasks"),p("add")},[j,p,w]),RT=o.useCallback(m=>{const _=e.workstreams.find(W=>W.id===m);j(),ft(Fo(_)||m),w("tasks"),p("add")},[e.workstreams,j,p,w,ft]),ob=o.useCallback(m=>{Jo.current=!1,jn(!1),qa(m),cs(!1),qo(null),co(!1),gi(""),Po(""),$i(""),Eo(null),rl(null);const _=m.entityType==="workstream"&&Re&&Kt.initiativeById.get(Re)||null;Zo(_?gs(_):""),Nr(null)},[Kt.initiativeById,Re]),ib=o.useCallback((m,_)=>{Jo.current=!1,jn(!1),qo(m),co(!1),gi(""),Po(""),$i(""),Eo(null),rl(null);const W=m.entityType==="workstream"&&((_?Kt.initiativeById.get(_):null)||Re&&Kt.initiativeById.get(Re))||null;Zo(W?gs(W):""),Nr(null)},[Kt.initiativeById,Re]),lk=o.useCallback(()=>{Jo.current=!1,jn(!1),qa(null),gi(""),Po(""),$i(""),Eo(null),rl(null),Zo("")},[]),dk=o.useCallback(()=>{Jo.current=!1,jn(!1),qo(null),gi(""),Po(""),$i(""),Eo(null),rl(null),Zo("")},[]),PT=o.useCallback(async()=>{const m=Ks||Ko;if(!m||Jo.current)return;const _=kp.trim();if(!_)return;Jo.current=!0,jn(!0);const W=!!Ks,Se=Gd.trim()||null;try{if(m.entityType==="initiative")if(m.mode==="edit")await e.updateInitiative(m.targetId,{title:_,description:wc.trim()||null}),ls({type:"initiative",id:m.targetId}),dt("Initiative updated","success");else{const $e=await e.createInitiative({title:_,description:wc.trim()||null,ownerId:Se,...bc||Sc?{icon:bc,color:Sc}:{}});ls({type:"initiative",id:$e.id}),Nr(null),dt("Initiative created","success")}else{const $e=ate(Kt.allInitiatives,m.mode==="create"?m.initiativeId:null,Yo);if($e.invalid){dt("Initiative not found by that reference.","error");return}const zt={title:_,description:wc.trim()||null,initiativeId:$e.initiativeId,...m.mode==="create"?{ownerId:Se}:{}};if(m.mode==="edit")await e.updateWorkstream(m.targetId,zt),W?Nr(m.targetId):(ls({type:"workstream",id:m.targetId}),Nr(null)),dt("Workstream updated","success");else{const Mr=await e.createWorkstream({...zt,...bc||Sc?{icon:bc,color:Sc}:{}});W?Nr(Mr.id):(ls({type:"workstream",id:Mr.id}),Nr(null)),dt("Workstream created","success")}}W?dk():lk()}catch($e){dt($e instanceof Error?$e.message:"Failed to save planning item.","error")}finally{Jo.current=!1,jn(!1)}},[lk,dk,wc,Yo,bc,Sc,Gd,kp,Ko,Ks,Kt.allInitiatives,e,dt]),ET=o.useCallback(m=>{Ro(_=>{const W=new Set(_);return W.has(m)?W.delete(m):W.add(m),W})},[]),NT=o.useCallback(m=>{Wa(_=>_===m?"":m),$a("")},[]),jT=o.useCallback((m,_)=>{$a(W=>{const Se=W===m?"":m;return Wa(Se&&_||""),Se})},[]),mf=o.useCallback(m=>{qa(null),qo(null),cs(!1),co(!1),ls(m?{type:"initiative",id:m}:null),Nr(null)},[]),gf=o.useCallback(m=>{qa(null),qo(null),cs(!1),co(!1),ls(m?{type:"workstream",id:m}:null),Nr(null)},[]),DT=o.useCallback(m=>{qo(null),co(!1),Nr(m)},[]),cb=o.useCallback(m=>{if(m.kind==="initiative"||m.kind==="workstream"){const Se=m.kind==="initiative"?e.initiatives.find($e=>$e.referenceNumber===m.referenceNumber):e.workstreams.find($e=>$e.referenceNumber===m.referenceNumber);if(!Se){dt(`${m.token} could not be found.`,"error");return}Mo(()=>{w("planning"),Vo(!0),m.kind==="initiative"?mf(Se.id):gf(Se.id)});return}const _=String(Lt||"default").trim()||"default",W=Se=>{om(Se,{ownerType:"task",ownerId:ne,ownerReferenceLabel:ys(kn),workspaceId:_})};JI(m,{workspaceId:_,headers:ki}).then(W).catch(()=>{dt(`${m.token} could not be opened.`,"error")})},[kn,Lt,ne,Mo,mf,gf,e.initiatives,e.workstreams,dt,w,ki]),lb=o.useMemo(()=>({...vn,entityReferences:{resolve:uC,activate:cb}}),[cb,vn]);o.useEffect(()=>{const m=String(i.get(Ei.initiative)||"").trim(),_=String(i.get(Ei.workstream)||"").trim(),W=String(i.get(Ei.document)||"").trim(),Se=String(i.get(Ei.image)||"").trim(),$e=m?`initiative:${m}`:_?`workstream:${_}`:W?`document:${W}`:Se?`image:${Se}`:"";if(!$e||jo.current===$e)return;if(m||_){const Hr=m?e.initiatives.find(Fa=>Fa.id===m):e.workstreams.find(Fa=>Fa.id===_);if(!Hr)return;jo.current=$e,Mo(()=>{w("planning"),Vo(!0),m?mf(Hr.id):gf(Hr.id)});return}if(W){if(!bi)return;jo.current=$e,Mo(()=>{El(null),Yd(W),w("docs")});return}if(!Yi)return;jo.current=$e;const zt=String(Lt||"default").trim()||"default",Mr=new URLSearchParams({workspaceId:zt});fetch(`/api/taskforce/annotated-attachments/images/${encodeURIComponent(Se)}?${Mr.toString()}`,{credentials:"include",headers:ki}).then(async Hr=>{if(!Hr.ok)throw new Error("Image not found");const Fa=await Hr.json();if(!Fa.target?.assetId||!Fa.target.path)throw new Error("Image target is unavailable");Mo(()=>{const hn=Fa.target;lo.current=hn,yi.current=null,Fi(hn),Ui(null),zi(vl=>vl+1),w("annotate")})}).catch(()=>{dt(`Image ${Se} could not be opened.`,"error")})},[Yi,Lt,bi,Mo,mf,gf,e.initiatives,e.workstreams,dt,i,w,ki]);const Lu=o.useCallback(async m=>{const _=`${m.type}:${m.id}`;ds(W=>({...W,[_]:{status:"loading",error:null}}));try{await e.fetchPlanningEntityDetail(m.type,m.id),ds(W=>({...W,[_]:{status:"ready",error:null}}))}catch(W){ds(Se=>({...Se,[_]:{status:"error",error:W instanceof Error?W.message:"Failed to load the latest planning details."}}))}},[e.fetchPlanningEntityDetail]);o.useEffect(()=>{const m=new Map;if(gn?.id&&m.set(`${gn.type}:${gn.id}`,gn),Un&&m.set(`workstream:${Un}`,{type:"workstream",id:Un}),m.size!==0)for(const _ of m.values())Lu(_)},[Lu,gn?.id,gn?.type,Un]);const uk=o.useCallback((m,_)=>{if(m==="workstream"&&_){ib({mode:"create",entityType:"workstream",initiativeId:_},_);return}if(ob({mode:"create",entityType:m}),m==="workstream"){const W=(_?Kt.initiativeById.get(_):null)||(Re?Kt.initiativeById.get(Re):null)||null;Zo(W?gs(W):"")}},[ob,ib,Kt.initiativeById,Re]),db=o.useCallback((m,_)=>{if(Jo.current=!1,jn(!1),m==="initiative"){const W=Kt.allInitiativeById.get(_);if(!W)return;qo(null),qa({mode:"edit",entityType:"initiative",targetId:_}),gi(W.title),Po(W.description||""),$i(W.ownerId?String(W.ownerId):""),Zo("");return}else{const W=Kt.allWorkstreamById.get(_);if(!W)return;const Se=Un===_;Se?(qa(null),qo({mode:"edit",entityType:"workstream",targetId:_})):(qo(null),qa({mode:"edit",entityType:"workstream",targetId:_})),gi(W.title),Po(W.description||""),$i(W.ownerId?String(W.ownerId):"");const $e=W.initiativeId&&Kt.allInitiativeById.get(W.initiativeId)||null;if(Zo($e?gs($e):""),Se)return}Nr(null)},[Un,Kt.allInitiativeById,Kt.allWorkstreamById]),pk=o.useCallback(async(m,_,W)=>{const Se=W.trim()||null;try{m==="initiative"?await e.updateInitiative(_,{ownerId:Se}):await e.updateWorkstream(_,{ownerId:Se}),dt(`${m==="initiative"?"Initiative":"Workstream"} owner updated`,"success")}catch($e){throw dt($e instanceof Error?$e.message:"Failed to update owner.","error"),$e}},[e,dt]),fk=o.useCallback(async(m,_,W)=>{try{await e.updatePlanningIdentity(m,_,W)}catch(Se){throw dt(Se instanceof Error?Se.message:"Failed to update visual identity.","error"),Se}},[e.updatePlanningIdentity,dt]),Ou=o.useCallback(async(m,_)=>{const W=e.workstreams.find(Mr=>Mr.id===m);if(!W)return dt("Workstream not found.","error"),!1;const Se=typeof _=="string"?_.trim():_===null?"":Yo.trim(),$e=Se.length===0?null:Mv(Kt.allInitiatives,Se);if(Se.length>0&&!$e)return dt("Initiative not found by that reference.","error"),!1;const zt=$e?.id||null;if((W.initiativeId||null)===zt)return dt(zt?"Workstream already belongs to that initiative.":"Workstream is already standalone.","info"),!1;try{return await e.updateWorkstream(m,{initiativeId:zt}),Zo($e?gs($e):""),dt(zt?"Initiative set":"Initiative removed","success"),!0}catch{return dt("Failed to set initiative.","error"),!1}},[Yo,Kt.allInitiatives,e,dt]),Bu=o.useCallback(async(m,_)=>{const W=xc.get(m);if(!W)return dt("Task not found.","error"),!1;const Se=_||null;if(Kt.initiativeById.has(m)||Kt.workstreamById.has(m))return dt("Only execution tasks can be moved into workstreams.","error"),!1;if(Se&&!Kt.workstreamById.has(Se))return dt("Workstream not found.","error"),!1;if((W.workstreamId||null)===Se)return dt(Se?"Task already belongs to that workstream.":"Task is already standalone.","info"),!1;try{return await e.handleUpdateTask(m,{workstreamId:Se})===!1?!1:(await e.fetchPlanningEntities(),dt(Se?"Workstream set":"Workstream removed","success"),!0)}catch{return dt("Failed to set workstream.","error"),!1}},[xc,Kt.initiativeById,Kt.workstreamById,e,dt]),mk=o.useCallback(async(m,_)=>{const W=_.trim();if(!W)return dt("Enter a task reference.","error"),!1;const Se=ry(W),$e=Tc.find(zt=>zt.id===W||ys(zt)===W||Se!==null&&zt.referenceNumber===Se);return $e?Bu($e.id,m):(dt("Task not found by that reference.","error"),!1)},[Bu,Tc,dt]),gk=o.useCallback(async(m,_)=>{const W=_.trim();if(!W)return dt("Enter a workstream reference.","error"),!1;const Se=Kt.allInitiativeById.get(m);if(!Se)return dt("Initiative not found.","error"),!1;const $e=MI(W),zt=e.workstreams.find(Mr=>Mr.id===W||Fo(Mr)===W||$e!==null&&Mr.referenceNumber===$e);return zt?Ou(zt.id,gs(Se)):(dt("Workstream not found by that reference.","error"),!1)},[Ou,Kt.allInitiativeById,e.workstreams,dt]),Wu=o.useCallback((m,_)=>{const W=`${m}:${_}`,Se=bm.current.get(W);if(Se)return Se;const $e=m==="initiative"?e.initiatives.find(zt=>zt.id===_):e.workstreams.find(zt=>zt.id===_);return Array.isArray($e?.attachments)?$e.attachments:[]},[e.initiatives,e.workstreams]),$u=o.useCallback((m,_,W)=>{const Se=`${m}:${_}`;bm.current.set(Se,W);const zt=(qd.current.get(Se)||Promise.resolve()).catch(()=>{}).then(()=>m==="initiative"?e.updateInitiative(_,{attachments:W}):e.updateWorkstream(_,{attachments:W}));qd.current.set(Se,zt),zt.catch(Mr=>{dt(Mr instanceof Error?Mr.message:"Failed to update planning context.","error")}).finally(()=>{qd.current.get(Se)===zt&&qd.current.delete(Se)})},[e,dt]),hk=o.useCallback((m,_,W)=>{const Se=Wu(m,_);$u(m,_,[...Se,W])},[Wu,$u]),yk=o.useCallback((m,_,W)=>{const Se=Wu(m,_);$u(m,_,Se.filter(($e,zt)=>zt!==W))},[Wu,$u]),kk=o.useCallback((m,_,W,Se)=>{const zt=Wu(m,_).map((Mr,Hr)=>Hr!==W?Mr:typeof Mr=="string"?{path:Mr,caption:Se,timestamp:new Date().toISOString()}:{...Mr,caption:Se});$u(m,_,zt)},[Wu,$u]),ub=o.useCallback(m=>{Wa(m),$a("")},[]),pb=o.useCallback(m=>{$a(m),Wa(m&&Kt.workstreamInitiativeIds.get(m)||"")},[Kt.workstreamInitiativeIds]),Sg=o.useCallback(m=>{const _=MA(m,Ki);if(_!==m){const W=Ki.find(Se=>Se.id===m)?.label||"That module";dt(`${W} is not available in this build yet.`,"error");return}if(jr==="workflowManager"&&_!=="workflowManager"&&ba&&!xo.current){Hs(()=>()=>Sg(m));return}Do(),w(_)},[Do,dt,jr,w,ba,Ki]),fb=o.useCallback(()=>{if(jr==="tasks"&&Yn){Vo(!1),ls(null),Nr(null),qa(null);return}if(jr!=="tasks"){w("tasks"),Vo(!0);return}Vo(m=>!m)},[Yn,jr,w]),mb=o.useCallback(()=>{if(jr!=="docs"){w("docs"),wa(!0);return}wa(m=>!m)},[jr,w]),gb=o.useCallback(()=>{if(jr!=="annotate"){w("annotate"),un(!0);return}un(m=>!m)},[jr,w]),hb=o.useCallback(()=>{if(jr!=="aiProfiles"){w("aiProfiles"),xs(!0);return}xs(m=>!m)},[jr,w]),yb=o.useCallback(()=>{if(jr!=="taskforceAgents"){w("taskforceAgents"),Li(!0);return}Li(m=>!m)},[jr,w]),kb=o.useCallback(()=>{if(jr!=="workflowManager"){w("workflowManager"),yc(!0);return}yc(m=>!m)},[jr,w]),hf=o.useCallback(()=>{al(!1),qi(null),tu(null)},[]),vk=o.useCallback(m=>{if(!fo[Uf]?.allowed){dt("Taskforce Agents are unavailable for this workspace.","error");return}const _=ys(m)||m.id;qi({taskId:m.id,taskReference:_,taskTitle:m.title}),wi(!1),al(!0),_o(!1)},[dt,fo]),vb=o.useCallback(()=>{if(kn&&ne){vk(kn);return}if(!fo[Uf]?.allowed){dt("Taskforce Agents are unavailable for this workspace.","error");return}qi(null),wi(!1),al(!0)},[kn,ne,vk,dt,fo]),MT=o.useCallback(m=>{const _=String(m||"").trim();_&&(Ol({agentId:_,conversationId:Er[_]||null}),qi(null),wi(!1),al(!0))},[Ol,Er]),LT=o.useCallback(m=>{it(m),_o(!1)},[it]),OT=o.useCallback(m=>{Do(),w("tasks"),it(m)},[Do,it,w]),BT=o.useCallback(m=>{Do(),w("tasks"),it(m)},[Do,it,w]),WT=o.useCallback((m,_)=>{const W=_?.sessionId??null;lo.current=m,yi.current=W,Fi(m),Ui(W),zi(Se=>Se+1),w("annotate")},[w]),$T=o.useCallback(({target:m,sessionId:_})=>{lo.current=m,yi.current=_,Fi(W=>!W&&!m||W&&m&&W.taskId===m.taskId&&W.taskReferenceLabel===m.taskReferenceLabel&&W.assetId===m.assetId&&W.imageReferenceLabel===m.imageReferenceLabel&&W.path===m.path&&W.displayName===m.displayName?W:m),Ui(W=>W===_?W:_)},[]),FT=o.useCallback((m,_)=>{const W=m.trim(),Se=Math.max(0,Math.round(_));W&&xm($e=>$e[W]===Se?$e:WA($e,W,Se))},[]),UT=o.useCallback(m=>{const _=Math.max(0,Math.round(m));Rm(W=>W===_?W:_)},[]),zT=o.useCallback((m,_)=>{const W=m.trim();if(!W)return;const Se={zoomLevel:Math.min(4,Math.max(.25,_.zoomLevel)),scrollLeft:Math.max(0,Math.round(_.scrollLeft)),scrollTop:Math.max(0,Math.round(_.scrollTop))};Zd($e=>{const zt=$e[W];return zt&&zt.zoomLevel===Se.zoomLevel&&zt.scrollLeft===Se.scrollLeft&&zt.scrollTop===Se.scrollTop?$e:WA($e,W,Se)})},[]),wb=o.useMemo(()=>[{value:"created",label:_t("standalone.sortCreated")},{value:"updated",label:_t("standalone.sortUpdated")},{value:"priority",label:_t("standalone.sortPriority")},{value:"complexity",label:_t("standalone.sortComplexity")},...WI(De,[...e.searchAgnosticTasks,...Za])],[Za,e.searchAgnosticTasks,De]),bb=o.useMemo(()=>[{value:"status",label:_t("standalone.groupStatus")},{value:"category",label:_t("standalone.groupCategory")},{value:"type",label:_t("standalone.groupType")},{value:"priority",label:_t("standalone.groupPriority")},{value:"complexity",label:_t("standalone.groupComplexity")},{value:"assignee",label:_t("standalone.groupAssignee")},{value:"schedule",label:_t("standalone.groupSchedule")}],[]),Sb=o.useMemo(()=>Ki.filter(m=>m.enabled),[Ki]),Ab=o.useMemo(()=>[{key:"empty-columns",icon:S==="show"?a.jsx(Pb,{size:16}):S==="collapse"?a.jsx(Eb,{size:16}):a.jsx(aw,{size:16}),title:_t(S==="show"?"standalone.showEmptyColumns":S==="collapse"?"standalone.compressEmptyColumns":"standalone.hideEmptyColumns"),onClick:ab,active:S!=="show"},{key:"compressed-cards",icon:xt?a.jsx(Y0,{size:16}):a.jsx(Z0,{size:16}),title:_t(xt?"standalone.expandCards":"standalone.compressCards"),onClick:()=>ct(!xt),active:xt}],[xt,ab,S]),HT=o.useMemo(()=>Uc.moduleId!=="tasks"?[]:[{key:"filter-toggle",icon:a.jsx(QA,{size:16}),title:_t("standalone.toggleFilters"),onClick:()=>Mi(!En),active:En,ariaExpanded:En,ariaControls:"task-workspace-filters",className:fg?E.filterGlow:""}],[fg,Mi,En,Uc.moduleId]),VT=o.useMemo(()=>{const m=[];return Bl&&m.push({key:"ask-agent",icon:a.jsx(Id,{size:16}),title:Pa?"Close Taskforce Agent":"Ask Taskforce Agent",onClick:Pa?hf:vb,active:Pa}),m},[hf,vb,Pa,Bl]),GT=o.useMemo(()=>a.jsx(BJ,{id:"task-workspace-filters",categoryFilterOptions:Np,typeFilterOptions:jp,priorities:Et,taxonomyDisplayLabels:mt,filterCategories:Me,setFilterCategories:rt,filterTypes:pt,setFilterTypes:ht,filterPriorities:At,setFilterPriorities:Ft,filterStatus:R,setFilterStatus:P,filterAssignees:Tt,setFilterAssignees:$t,assigneeOptions:Wt,initiativeFilterOptions:Bm,selectedInitiativeId:Re,setSelectedInitiativeId:ub,workstreamFilterOptions:Mp,selectedWorkstreamId:rr,setSelectedWorkstreamId:pb,taskScope:Ot,setTaskScope:vr,showArchive:Ic,setShowArchive:$l,clearFiltersDisabled:!Fc&&!ju&&tr==="created"&&e.sortOrder==="desc",clearFilters:()=>{u(),wm(),Wa(""),$a("")}}),[Wt,Np,u,Tt,Me,At,R,pt,ju,Fc,ub,pb,Bm,Et,e.sortOrder,Re,rr,$t,rt,Ft,P,ht,Wa,$a,$l,vr,tr,wm,Ic,Ot,mt,jp,Mp]),KT=o.useMemo(()=>[{key:"zen-toggle",icon:a.jsx(J0,{size:16,fill:v?"currentColor":"none"}),title:_t(v?"standalone.exitZenMode":"standalone.enterZenMode"),onClick:()=>T(),active:v}],[T,v]),qT=o.useMemo(()=>({search:a.jsx(DJ,{value:Lr,placeholder:_t("standalone.searchPlaceholder"),active:Fc,onChange:Dr,onClear:()=>Dr(""),clearTitle:_t("standalone.clearSearchTitle")}),sort:a.jsx(TA,{label:a.jsxs(a.Fragment,{children:[a.jsx(sw,{size:12})," ",_t("standalone.sortLabel")]}),value:tr,options:wb,onChange:m=>$r(m),trailingAction:a.jsx("button",{className:`tf-control-icon ${E.sortDirectionBtn}`,onClick:()=>e.toggleSortOrder(),title:e.sortOrder==="desc"?_t("standalone.sortDirectionDescTitle"):_t("standalone.sortDirectionAscTitle"),children:e.sortOrder==="desc"?a.jsx(rw,{size:14}):a.jsx(HA,{size:14})})}),"divider-primary":a.jsx(xA,{}),grouping:a.jsx(TA,{label:a.jsxs(a.Fragment,{children:[a.jsx(Ah,{size:12})," ",_t("standalone.groupLabel")]}),value:h,options:bb,onChange:m=>y(m)}),"divider-secondary":a.jsx(xA,{}),"task-display-actions":a.jsx(sh,{actions:Ab})}),[h,bb,Sg,Fc,e,Lr,y,Dr,$r,tr,wb,Ab,Uc.moduleId]),YT=o.useMemo(()=>({"add-task":a.jsx(MJ,{icon:a.jsx(ci,{size:16}),label:_t("standalone.addTask"),onClick:sb}),"add-document":null}),[sb]),md=o.useMemo(()=>{const m=`${Xr.workspaceToolButton} tf-control-icon tf-control-icon-quiet`,_=`${m} tf-control-icon-active`,W={tasks:a.jsx(rx,{size:18}),planning:a.jsx(Ah,{size:18}),docs:a.jsx(Jf,{size:18}),annotate:a.jsx(KA,{size:18}),workflowManager:a.jsx(Nb,{size:18}),taskforceAgents:a.jsx(Id,{size:18}),aiProfiles:a.jsx(dh,{size:18})},Se=jr==="planning"?a.jsx("span",{className:Xr.workspaceToolButton,"aria-hidden":"true"}):jr==="docs"?a.jsx("button",{type:"button",className:Ba?_:m,onClick:mb,title:Ba?"Collapse document tray":"Document tray","aria-label":Ba?"Collapse document tray":"Document tray",children:Ba?a.jsx(bo,{size:18}):a.jsx(lc,{size:18})}):jr==="annotate"?a.jsx("button",{type:"button",className:Us?_:m,onClick:gb,title:Us?"Collapse image tray":"Image tray","aria-label":Us?"Collapse image tray":"Image tray",children:Us?a.jsx(bo,{size:18}):a.jsx(lc,{size:18})}):jr==="aiProfiles"?a.jsx("button",{type:"button",className:is?_:m,onClick:hb,title:is?"Collapse AI Profile tray":"MCP settings tray","aria-label":is?"Collapse AI Profile tray":"MCP settings tray",children:is?a.jsx(bo,{size:18}):a.jsx(ex,{size:18})}):jr==="taskforceAgents"?a.jsx("button",{type:"button",className:To?_:m,onClick:yb,title:To?"Collapse builder library":"Builder library","aria-label":To?"Collapse builder library":"Builder library",children:To?a.jsx(bo,{size:18}):a.jsx(dh,{size:18})}):jr==="workflowManager"?a.jsx("button",{type:"button",className:Go?_:m,onClick:kb,title:Go?"Collapse workflow library":"Workflow library","aria-label":Go?"Collapse workflow library":"Workflow library",children:Go?a.jsx(bo,{size:18}):a.jsx(Nb,{size:18})}):a.jsx("button",{ref:io,type:"button",className:jr==="tasks"&&Yn?_:m,onClick:fb,title:jr==="tasks"&&Yn?"Collapse planning trays":"Planning","aria-label":jr==="tasks"&&Yn?"Collapse planning trays":"Planning",children:jr==="tasks"&&Yn?a.jsx(bo,{size:18}):a.jsx(tx,{size:18})});return a.jsxs("aside",{className:`${Xr.workspaceToolRail} ${Xr.workspaceToolRailLeft}`,"aria-label":"Workspace tools",children:[a.jsxs("div",{className:Xr.workspaceToolRailMain,children:[Se&&a.jsxs(a.Fragment,{children:[Se,a.jsx("div",{className:Xr.workspaceToolRailDivider})]}),Sb.map($e=>a.jsx("button",{type:"button",className:jr===$e.id?_:m,onClick:()=>Sg($e.id),title:$e.label,"aria-label":$e.label,children:W[$e.id]},$e.id))]}),a.jsxs("div",{className:Xr.workspaceToolRailBottom,children:[a.jsx("div",{className:Xr.workspaceToolRailDivider}),a.jsx("button",{type:"button",className:f==="settings"?_:m,onClick:()=>{if(jr==="workflowManager"&&ba&&!xo.current){Hs(()=>()=>{Kr("general"),p("settings")});return}Kr("general"),p("settings")},title:"Workspace Settings","aria-label":"Workspace Settings",children:a.jsx(Xf,{size:18})})]})]})},[f,is,Ba,hb,mb,gb,Sg,fb,yb,kb,Us,Yn,jr,Kr,p,To,Go,ba,Sb]),[Cb,ZT]=o.useState(null),JT=o.useCallback(m=>{ZT(m)},[]),Ib=o.useCallback((m,_)=>Lu({type:m,id:_}),[Lu]),_b=o.useCallback(async(m,_)=>{const W=_.title.trim();if(!W)throw new Error(`${m==="initiative"?"Initiative":"Workstream"} title is required.`);try{if(m==="initiative"){const $e=await e.createInitiative({title:W,description:_.description?.trim()||null,ownerId:_.ownerId?.trim()||null,..._.icon||_.color?{icon:_.icon??null,color:_.color??null}:{}});return dt("Initiative created","success"),{id:$e.id}}const Se=await e.createWorkstream({title:W,description:_.description?.trim()||null,ownerId:_.ownerId?.trim()||null,initiativeId:_.initiativeId?.trim()||null,..._.icon||_.color?{icon:_.icon??null,color:_.color??null}:{}});return dt("Workstream created","success"),{id:Se.id}}catch(Se){throw dt(Se instanceof Error?Se.message:"Failed to create planning item.","error"),Se}},[e.createInitiative,e.createWorkstream,dt]),Tb=o.useCallback(async(m,_,W)=>{const Se=W.title.trim();if(!Se)throw new Error(`${m==="initiative"?"Initiative":"Workstream"} title is required.`);try{const $e={title:Se,description:W.description?.trim()||null};if(m==="initiative"){await e.updateInitiative(_,$e),dt("Initiative updated","success");return}await e.updateWorkstream(_,$e),dt("Workstream updated","success")}catch($e){throw dt($e instanceof Error?$e.message:"Failed to update planning item.","error"),$e}},[e.updateInitiative,e.updateWorkstream,dt]),wk=o.useCallback(async(m,_)=>{try{await e.reorderWorkstreamTasks(m,_)}catch(W){throw dt(W instanceof Error?W.message:"Failed to reorder workstream tasks.","error"),W}},[e.reorderWorkstreamTasks,dt]),Fu=o.useMemo(()=>({initiatives:Kt.allInitiatives,standaloneWorkstreams:Kt.allStandaloneWorkstreams,assigneeOptions:Wt,currentOwnerId:On==="anonymous"?null:On,currentWorkspaceId:Lt,theme:nr,taskReferences:vn,loadState:e.planningLoadState,hydrationStateByEntity:Vd,hydrateEntity:Ib,retry:()=>{e.fetchPlanningEntities()},openTask:it,setTaskStatus:lu,setTaskAssignee:Si,linkOptions:ou,assignWorkstreamToInitiative:Ou,assignTaskToWorkstream:Bu,attachWorkstreamToInitiative:gk,attachTaskToWorkstream:mk,archiveEntity:uu,unarchiveEntity:Kl,changeOwner:pk,changeIdentity:fk,createEntity:_b,updateEntity:Tb,addContextFile:hk,removeContextFile:yk,updateContextCaption:kk,showTaskCardStatusLabel:me,taskArrangeMode:M,setTaskArrangeMode:Nt,reorderWorkstreamTasks:wk}),[Lt,nr,pk,fk,Ou,Bu,mk,gk,uu,Kl,_b,hk,it,yk,lu,Si,kk,Ib,Wt,On,Kt.allInitiatives,Kt.allStandaloneWorkstreams,ou,Vd,e.fetchPlanningEntities,e.planningLoadState,me,M,wk,vn,Tb]),XT=a.jsx(nte,{open:Yn,leftOffset:56,returnFocusRef:io,theme:nr,initiatives:Fu.initiatives,standaloneWorkstreams:Fu.standaloneWorkstreams,planningLoadState:Fu.loadState,onRetryPlanning:Fu.retry,taskScope:Ot,activeInitiativeId:Re,activeWorkstreamId:rr,navigatorSort:Wi,navigatorSortReady:ru,onNavigatorSortChange:O,taskArrangeMode:M,onTaskArrangeModeChange:Nt,onReorderWorkstreamTasks:wk,planningFavorites:ru?Qt:[],onTogglePlanningFavorite:m=>{Pt(_=>wJ(_,m))},favoritesSectionCollapsed:tl,initiativesSectionCollapsed:Nn,workstreamsSectionCollapsed:vc,onToggleFavoritesSection:()=>zd(m=>!m),onToggleInitiativesSection:()=>Hd(m=>!m),onToggleWorkstreamsSection:()=>Bi(m=>!m),expandedInitiativeIds:Pl,detail:Lp,editor:Ko,secondaryEditor:Ks,secondaryPane:Op,primaryHydrationState:ky,secondaryHydrationState:vy,onRetryPrimaryHydration:gn?()=>{Lu(gn)}:void 0,onRetrySecondaryHydration:Un?()=>{Lu({type:"workstream",id:Un})}:void 0,onWidthChange:Sy,currentWorkspaceId:Lt,currentOwnerId:On==="anonymous"?"":On,linkOptions:ou,showTaskCardStatusLabel:me,assigneeOptions:Wt.map(m=>({value:String(m.value),label:m.label,icon:m.icon,color:m.color,kind:m.kind,avatarUrl:m.avatarUrl??null,avatarRevision:m.avatarRevision??null,avatarUpdatedAt:m.avatarUpdatedAt??null,username:m.username??null,surfaceType:m.surfaceType??null,providerMetadata:m.providerMetadata??null,archivedAt:m.archivedAt??null})),draftInitiativeSummary:Ay,draftTitle:kp,draftDescription:wc,draftOwner:Gd,draftInitiativeId:Yo,draftIcon:bc,draftColor:Sc,onChangeDraftTitle:gi,onChangeDraftDescription:Po,onChangeDraftOwner:$i,onChangeDraftInitiativeId:Zo,onChangeDraftIcon:Eo,onChangeDraftColor:rl,onCollapseTreePane:()=>mn(!0),onExpandTreePane:()=>mn(!1),onCollapsePrimaryPane:()=>cs(!0),onExpandPrimaryPane:()=>cs(!1),onCollapseSecondaryPane:()=>co(!0),onExpandSecondaryPane:()=>co(!1),onBackFromSecondary:()=>{Jo.current=!1,jn(!1),qo(null),Nr(null)},treeCollapsed:kc,primaryCollapsed:el,secondaryCollapsed:la,onCancelEditor:lk,onCancelSecondaryEditor:dk,onSubmitEditor:PT,isSubmittingEditor:km,onCreateInitiative:()=>uk("initiative"),onCreateWorkstream:()=>uk("workstream"),onCreateTaskInWorkstream:RT,onCreateWorkstreamInInitiative:m=>uk("workstream",m),onAssignInitiativeToWorkstream:Ou,onOpenTaskById:Fu.openTask,onSetTaskStatus:lu,onChangeTaskAssignee:Si,onArchivePlanningTask:Nc,onArchiveResolvedWorkstream:du,onArchiveResolvedInitiative:ll,taskReferences:vn,onAssignTaskToWorkstream:Bu,onAttachTaskToWorkstreamByReference:mk,onAttachWorkstreamToInitiativeByReference:gk,onAddPlanningContextFile:hk,onRemovePlanningContextFile:yk,onUpdatePlanningContextCaption:kk,onToggleInitiative:ET,onSelectInitiative:NT,onSelectWorkstream:jT,onOpenInitiativeDetails:mf,onOpenWorkstreamDetails:gf,onOpenNestedWorkstreamDetails:DT,onEditInitiative:m=>db("initiative",m),onEditWorkstream:m=>db("workstream",m),onChangePlanningOwner:pk,onChangePlanningIdentity:fk,onArchiveInitiative:m=>{e.archiveInitiative(m).then(()=>{dt("Initiative archived","success")}).catch(_=>{dt(_ instanceof Error?_.message:"Failed to archive initiative.","error")})},onUnarchiveInitiative:m=>{e.unarchiveInitiative(m).then(()=>{dt("Initiative unarchived","success")}).catch(_=>{dt(_ instanceof Error?_.message:"Failed to unarchive initiative.","error")})},onArchiveWorkstream:m=>{e.archiveWorkstream(m).then(()=>{dt("Workstream archived","success")}).catch(_=>{dt(_ instanceof Error?_.message:"Failed to archive workstream.","error")})},onUnarchiveWorkstream:m=>{e.unarchiveWorkstream(m).then(()=>{dt("Workstream unarchived","success")}).catch(_=>{dt(_ instanceof Error?_.message:"Failed to unarchive workstream.","error")})}}),QT=Uc.headerSections.map(m=>{const _=qT[m];return _?a.jsx(te.Fragment,{children:_},m):null}).filter(Boolean),e0=Uc.primaryAction?YT[Uc.primaryAction]:null,bk=Pa?a.jsx("div",{className:`${E.taskforceAgentDrawerOverlay} ${Cc?E.taskforceAgentDrawerOverlayCollapsed:""}`.trim(),style:{top:`${Oi}px`},"data-theme":nr,"aria-label":"Taskforce Agent chat",children:a.jsx("aside",{className:Cc?`${Xr.workspaceToolRail} ${Xr.workspaceToolRailRight}`:E.taskforceAgentDrawerPanel,children:Cc?a.jsxs("div",{className:Xr.workspaceToolRailMain,children:[a.jsx("button",{type:"button",className:`${Xr.workspaceToolButton} tf-control-icon tf-control-icon-quiet tf-control-icon-active`,onClick:()=>wi(!1),title:"Expand agent chat","aria-label":"Expand agent chat",children:a.jsx(Id,{size:16})}),a.jsx("button",{type:"button",className:`${Xr.workspaceToolButton} tf-control-icon tf-control-icon-quiet`,onClick:hf,title:"Close agent chat","aria-label":"Close agent chat",children:a.jsx(di,{size:16})})]}):a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:E.taskforceAgentDrawerHeader,children:[Rp||a.jsxs("div",{className:E.taskforceAgentDrawerHeaderFallback,children:[a.jsx("span",{className:E.taskforceAgentDrawerFallbackAvatar,"aria-hidden":"true",children:a.jsx(Id,{size:16})}),a.jsx("strong",{children:"Loading agent..."})]}),a.jsxs("div",{className:E.taskforceAgentDrawerHeaderActions,children:[a.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>wi(!0),title:"Collapse agent chat","aria-label":"Collapse agent chat",children:a.jsx(Od,{size:16})}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:hf,title:"Close agent chat","aria-label":"Close agent chat",children:a.jsx(di,{size:16})})]})]}),a.jsx(o.Suspense,{fallback:a.jsx("div",{className:E.taskforceAgentDrawerLoading,children:a.jsx(Hn,{size:18,className:E.spinner})}),children:a.jsx(BA,{workspaceId:Lt,launchContext:eu,onClearLaunchContext:hf,onOpenTaskContext:LT,taskReferences:vn,surface:"taskDrawer",runtimeMode:ir,cloudAuthConfigured:Gr,authSessionResolved:sn,isAuthenticated:wr,resolveCloudAuthUrl:er,theme:nr,rememberedAgentId:Bs,rememberedConversationId:ca,rememberedConversationByAgentId:Er,rememberedSelectionReady:As,onRememberSelection:Ol,onRenderDrawerHeader:Pp})})]})})}):null;return a.jsxs("div",{className:`${Xr.standaloneWrapper} ${v?E.zenModeEnabled:""}`,"data-theme":nr,children:[a.jsx("div",{ref:Vs,style:{flexShrink:0},children:a.jsx(kJ,{projectName:nd,currentWorkspaceId:Lt,runtimeMode:ir,theme:nr,onBrandClick:ud,meta:a.jsxs(a.Fragment,{children:[a.jsx("span",{className:E.taskCountBadge,title:tk,children:Du}),On&&On!=="anonymous"&&a.jsxs(a.Fragment,{children:[a.jsxs("button",{type:"button",className:`${E.taskCountBadge} ${E.taskCountBadgeButton} ${Ya==="assigned-to-me"?E.taskCountBadgeActive:""}`.trim(),onClick:()=>Eu("assigned-to-me"),title:Ya==="assigned-to-me"?"Clear assigned-to-me quick filter":"Filter to my open tasks","aria-label":`${Ya==="assigned-to-me"?"Clear":"Apply"} assigned to me quick filter (${Hl} task${Hl===1?"":"s"})`,"aria-pressed":Ya==="assigned-to-me",children:[a.jsx(sp,{size:13,className:E.taskCountBadgeIcon,"aria-hidden":"true"}),Hl]}),a.jsxs("button",{type:"button",className:`${E.taskCountBadge} ${E.taskCountBadgeButton} ${il>0?E.taskCountBadgeAlert:""} ${Ya==="overdue"?E.taskCountBadgeActive:""}`.trim(),onClick:()=>Eu("overdue"),title:Ya==="overdue"?"Clear my-overdue-tasks quick filter":"Filter to my overdue tasks","aria-label":`${Ya==="overdue"?"Clear":"Apply"} my overdue tasks quick filter (${il} task${il===1?"":"s"})`,"aria-pressed":Ya==="overdue",children:[a.jsx(X0,{size:13,className:E.taskCountBadgeIcon,"aria-hidden":"true"}),il]})]}),rk&&a.jsx("button",{className:"tf-control-icon",onClick:sg,title:`Sync manager: ${kl.label} | Last success: ${nk}`,style:{marginLeft:"6px",height:"24px",width:"24px",padding:0,borderRadius:"999px",border:`1px solid ${kl.border}`,background:kl.background,color:kl.color,display:"inline-flex",alignItems:"center",justifyContent:"center"},children:kl.icon==="off"?a.jsx(Q0,{size:16}):a.jsx(eC,{size:16})})]}),actions:a.jsxs(a.Fragment,{children:[l&&a.jsxs(a.Fragment,{children:[wr&&Ea?.stripeCustomerId&&a.jsx("button",{className:"tf-control-icon",onClick:()=>{ug()},title:"Manage billing",disabled:eg,children:"Manage billing"}),a.jsx("button",{className:"tf-control-icon",onClick:()=>{if(Ru){yl();return}d()},title:Ru?"Continue to Taskforce":"Back",disabled:Mc,children:Ru?"Take Me to Taskforce":"Back"})]}),!l&&a.jsxs(a.Fragment,{children:[QT,a.jsx(sh,{actions:HT}),e0]}),a.jsx(sh,{actions:KT}),!l&&a.jsx(sh,{actions:VT}),xT]})})}),a.jsx(Gh,{notice:f==="add"?null:ss,onDismiss:pi}),a.jsx(D_,{theme:nr}),dr&&a.jsx("div",{className:Xe.authBlockedBanner,children:"Authentication required for this environment. Use the Account menu to sign in."}),a.jsx("div",{className:`${E.taskforceAssistantWorkspace} ${Pa?E.taskforceAssistantWorkspaceOpen:""} ${Cc?E.taskforceAssistantWorkspaceCollapsed:""}`.trim(),children:a.jsx("div",{className:E.taskforceAssistantWorkspaceContent,children:l?a.jsx("div",{className:`${Xr.standalonePage} ${Xr.standaloneContent} ${E.appScrollbar} tf-scrollbar`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflowY:"auto",overflowX:"hidden",scrollbarGutter:"stable",background:"var(--surface-page)"},children:a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(Hn,{size:20,className:E.spinner})}),children:a.jsx($te,{...e,currentTheme:nr,projectName:sa,currentWorkspaceId:Lt,authUserId:Ur,apiBaseUrl:nf,connectedEnvironmentSource:e.config?.cloudAuthBaseUrl||e.config?.apiBaseUrl||"",resolveCloudAuthUrl:er,embedded:!0,shellOwnsScroll:!0,onAccountProfileSummaryChange:Jy,onContinueToTaskforce:yl,continueBusy:Mc})})}):jr==="planning"?a.jsxs("div",{className:`${Xr.standalonePage} ${Xr.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[md,a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(Hn,{size:20,className:E.spinner})}),children:a.jsx(Wte,{model:Fu})})]}):jr==="docs"&&bi?a.jsxs("div",{className:`${Xr.standalonePage} ${Xr.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[md,a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(Hn,{size:20,className:E.spinner})}),children:a.jsx(Lte,{taskReferences:vn,tasks:N,runtimeMode:ir,workspaceId:Lt,apiBaseUrl:e.config?.apiBaseUrl||"",cloudAuthBaseUrl:e.config?.cloudAuthBaseUrl||"",typeFilters:vp,attachmentFilters:wp,onTypeFiltersChange:No,onAttachmentFiltersChange:Sm,sortField:bp,sortOrder:Sp,onSortFieldChange:Am,onSortOrderChange:Cm,pinnedDocIds:Ap,onPinnedDocIdsChange:Im,searchQuery:Cp,onSearchQueryChange:_m,selectedDocId:Ip,onSelectedDocIdChange:Tm,selectionReady:ru,documentScrollByDocId:_p,onDocumentScrollChange:FT,documentListScrollTop:Tp,onDocumentListScrollChange:UT,documentTrayOpen:Ba,onCloseDocumentTray:()=>wa(!1),requestedDocPath:gy,requestedDocAssetId:hy,onRequestedDocHandled:()=>{El(null),Yd(null)},onBackToTask:BT,enableTaskGeneration:!0})})]}):jr==="annotate"&&Yi?a.jsxs("div",{className:`${Xr.standalonePage} ${Xr.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[md,a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(Hn,{size:20,className:E.spinner})}),children:a.jsx(Mte,{runtimeMode:ir,apiBaseUrl:e.config?.apiBaseUrl||"",cloudAuthBaseUrl:e.config?.cloudAuthBaseUrl||"",workspaceId:Lt,sessionLoadReady:Vi,requestedTarget:po,requestedSessionId:Xo,requestedOpenVersion:hi,imageTrayOpen:Us,onCloseImageTray:()=>un(!1),resolveTaskReferenceLabel:Dm,resolveImageReferenceLabel:Mm,onOpenTarget:WT,onContextChange:$T,viewportByContextKey:jl,onViewportChange:zT,onBackToTask:OT})})]}):jr==="workflowManager"?a.jsxs("div",{className:`${Xr.standalonePage} ${Xr.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[md,a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(Hn,{size:20,className:E.spinner})}),children:a.jsx(Ote,{workspaceId:Lt,libraryTrayOpen:Go,onCloseLibraryTray:()=>yc(!1),assigneeOptions:Wt,theme:nr,onUnsavedChangesChange:mi})})]}):jr==="taskforceAgents"?a.jsxs("div",{className:`${Xr.standalonePage} ${Xr.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[md,a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(Hn,{size:20,className:E.spinner})}),children:a.jsx(BA,{workspaceId:Lt,taskReferences:vn,agentRosterTrayOpen:To,onCloseAgentRosterTray:()=>Li(!1),runtimeMode:ir,cloudAuthConfigured:Gr,authSessionResolved:sn,isAuthenticated:wr,resolveCloudAuthUrl:er,theme:nr,rememberedAgentId:Bs,rememberedConversationId:ca,rememberedConversationByAgentId:Er,rememberedSelectionReady:As,onRememberSelection:Ol,onOpenConversation:MT})})]}):jr==="aiProfiles"?a.jsxs("div",{className:`${Xr.standalonePage} ${Xr.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[md,a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(Hn,{size:20,className:E.spinner})}),children:a.jsx(Bte,{workspaceId:Lt,runtimeMode:ir,cloudAuthConfigured:Gr,authSessionResolved:sn,isAuthenticated:wr,cloudAiProfileSeatUsage:Ea?.aiProfileSeatUsage??null,agentTrayOpen:is,onCloseAgentTray:()=>xs(!1),resolveCloudAuthUrl:er,theme:nr,onNotice:dt,mcpSettingsNode:a.jsx(OA,{settingsModel:{...Rt,initialSection:"mcp",onOpenCloudAuth:lf},renderMode:"mcp-only"})})})]}):a.jsxs("div",{className:`${Xr.standalonePage} ${Xr.standaloneContent} `,style:{position:"relative",opacity:e.loadingTasks?.7:1,transition:"opacity 0.2s ease, padding 220ms cubic-bezier(0.4, 0, 0.2, 1)",display:"flex",flex:1,minHeight:0,paddingLeft:"56px"},children:[md,a.jsxs("div",{style:{position:"relative",width:"100%",minWidth:0,flex:1,minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden"},children:[En&&GT,a.jsxs("div",{style:{position:"relative",width:"100%",minWidth:0,flex:1,minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden",transition:"padding 220ms cubic-bezier(0.4, 0, 0.2, 1)",paddingLeft:Yn?`${by+6}px`:"6px",paddingRight:h==="schedule"&&Fn?`${tw}px`:0},children:[a.jsx("div",{ref:JT,style:{position:"absolute",top:0,right:0,bottom:0,left:"-56px",zIndex:35,pointerEvents:"none"}}),e.loadingTasks&&Bp.length>0&&a.jsx("div",{className:E.boardRefreshIndicator,"aria-live":"polite","aria-label":"Refreshing tasks",children:a.jsx(Hn,{size:14,className:E.spinner})}),Ot==="deleted"&&a.jsx(j_,{theme:nr,selectedRecords:Ji.selectedRecords,matchingCount:Ji.matchingRecords.length,allMatchingSelected:Ji.allMatchingSelected,someMatchingSelected:Ji.someMatchingSelected,fullTrashCount:e.deletedTasks.length,onSelectAllMatching:Ji.selectAllMatching,onClearSelection:Ji.clear,onRestore:or,onEmptyEntireTrash:()=>{const m=e.deletedTasks.length;m>0&&window.confirm(`Permanently delete all ${m} tasks in Trash? Filters and selection do not limit this action. This cannot be undone.`)&&lr()}}),a.jsx(NZ,{tasks:Wm,allTasks:Cy,columns:nb,groupBy:h,scheduleDates:Hc,searchQuery:Lr,filterCategories:Me,filterTypes:pt,filterPriorities:At,filterStatus:R,filterAssignees:Tt,filtersReady:Ct,assigneeOptions:Wt,scheduleFilteredTaskIds:Iy,copiedId:qt,taxonomies:De,types:bt,priorities:Et,workspaceId:Lt,deletedTaskRecordByTaskId:Zi,selectedDeletedRecordIds:Ji.selectedIds,onDeletedSelectionChange:Ji.toggle,onUpdateTask:V,onTaskClick:I,taskReferences:lb,onCopyId:et,onToggleInProgress:Y,onToggleReview:Ke,onToggleComplete:le,onToggleCancel:It,onSetStatus:Ec,onArchiveTask:vt,onAddTaskToColumn:ql,showTaskCardStatusLabel:me,showTaskCardDescription:ir!=="cloud"&&ve,showTaskCardAttachments:ot,showTaskCardChecklistProgress:Oe,showTaskCardLatestActivity:A,tintTaskCardActivityBackground:G,onScheduleDaySelected:Wp,persistedScrollLeft:h==="schedule"?_s:void 0,onScrollLeftChange:$p,emptyColumnMode:S,categories:g,compressed:xt,readOnlyMode:Ot==="deleted"?"deleted":Ot==="archived"?"archived":null,recentlyChangedTaskIds:e.recentlyChangedTaskIds,sortBy:tr,sortOrder:e.sortOrder,planningDropTargets:Cb?pc.createPortal(XT,Cb):null,onAssignTaskToWorkstream:Bu,onAssignWorkstreamToInitiative:Ou,workstreams:e.workstreams,initiatives:e.initiatives,onUnarchive:_y,onDelete:$m},`${h}-${nb.map(m=>String(m.value)).join("|")}-${Hc.mon}`),h==="schedule"&&!Fn&&a.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>{ls(null),Sr(!0)},title:"Show Schedule Sidebar",style:{position:"absolute",top:"10px",right:"10px",zIndex:20},children:a.jsx(bo,{size:16})}),h==="schedule"&&a.jsx(_te,{open:Fn,onClose:()=>Sr(!1),scheduleSelectedDate:Cs,setScheduleSelectedDate:Is,scheduleCalendarMonth:Io,setScheduleCalendarMonth:Di,scheduleShowWeekends:va,setScheduleShowWeekends:hc,scheduleShowBacklog:xa,setScheduleShowBacklog:Co,scheduleOnlyExpired:Ra,setScheduleOnlyExpired:Oa,expiredScheduledCount:ol,overdueDueCount:Ty,expiredLeafCandidates:cu,expiredRecoveryCandidates:Rc,onMoveExpiredToSelectedWeek:IT,onMoveExpiredToBacklog:_T,scheduleBulkBusy:Gl,globalWeekStartsOn:Gt,resolvedLocale:dn,todayDateOnly:Zn,scheduleBaseTasks:au,scheduleWeekStart:fd,scheduleWeekLabel:TT})]})]})]})})}),bk&&typeof document<"u"?pc.createPortal(bk,document.body):bk,a.jsxs(Uo,{isOpen:f==="add",onClose:Fm,title:ne?kn?.isDeleted?"Deleted Task":"Edit Task":"New Task",size:Fs?"full":"xl",theme:nr,className:`${E.taskforceTaskModalOverlay} ${Pa?E.taskforceModalWithAssistantPanel:""} ${Cc?E.taskforceModalWithAssistantPanelCollapsed:""}`.trim(),overlayStyle:{"--taskforce-task-modal-backdrop-top":`${Oi}px`,"--taskforce-task-modal-backdrop-left":"56px"},headerActions:a.jsxs(a.Fragment,{children:[ne?null:a.jsxs("button",{type:"button",onClick:m=>$(m),disabled:L||!J.trim(),className:E.primaryUpdateBtn,title:_t("actionHeader.addTaskTitle"),children:[L?a.jsx(Hn,{size:16,className:E.spinner}):a.jsx(ci,{size:16}),_t("actionHeader.addTask")]}),a.jsx("button",{className:"tf-control-icon",onClick:()=>_o(m=>!m),title:Fs?"Exit full screen":"Enter full screen","aria-label":Fs?"Exit full screen":"Enter full screen",children:Fs?a.jsx(Eb,{size:18}):a.jsx(Pb,{size:18})})]}),draggable:!Fs,closeOnOverlayClick:!1,children:[a.jsxs("div",{className:E.taskNoticeAnchor,children:[a.jsx(N_,{editingTaskId:ne,loading:L,submitDisabled:xe,autoSaveState:Ir,title:J,status:we,onStatusChange:ke,showCreateSubmit:!1,currentTask:kn,currentTaskWorkstream:fi,currentTaskInitiative:$s,workstreams:e.workstreams,onWorkstreamInputChange:ft,onSetWorkstreamForCurrentTask:gt,handleSubmit:$,handleCopyId:et,copiedId:qt,tasks:N,handleToggleInProgress:Y,handleToggleReview:Ke,handleToggleComplete:le,handleToggleCancel:It,handleSetStatus:Ec,handleArchiveTask:vt,handleUnarchiveTask:m=>{if(kn?.isDeleted){const _=Zi.get(m);if(!_)return;Zt(_.id,_.taskId);return}gr(m)},handleRestoreDeletedTask:kn?.deletedRecordId?m=>{const _=e.deletedTasks.find(W=>W.id===m);Zt(m,_?.taskId)}:void 0,handlePermanentlyDeleteDeletedTask:kn?.deletedRecordId?m=>{window.confirm("Permanently delete this task? This cannot be undone.")&&(Dt(m),j(),p("tasks"))}:void 0,onAskAgent:vk}),a.jsx(Gh,{notice:ie?{message:ie,tone:"error"}:ss,onDismiss:()=>{oo(),pi()},placement:"task"})]}),a.jsx(E_,{editingTaskId:ne,initialActivityEntryId:e.initialActivityEntryId,title:J,description:ge,checklistItems:Ye,category:ce,type:K,priority:re,complexity:D,manualComplexityEnabled:He,assignee:ee,scheduledDate:H,dueDate:Te,formTaxonomies:_e,onTaxonomyChange:(m,_)=>Ne(W=>({...W,[m]:_})),taxonomies:De,comments:Ee,newCommentText:fe,contextFiles:q,currentWorkspaceId:Lt,descriptionImageDraftId:Ie,currentActorId:Ur,apiBaseUrl:nf,runtimeMode:ir,showImageReviews:!0,descriptionFocused:Be,showMarkdownHelp:Qe,checklistEnabled:Fe,categories:g,types:bt,priorities:Et,taxonomyDisplayLabels:mt,assigneeOptions:Wt,workstreams:e.workstreams,initiatives:e.initiatives,copiedId:qt,onTitleChange:ue,onTitleDraftChange:oe,onDescriptionChange:je,onDescriptionDraftChange:qe,onChecklistItemsChange:he,onCategoryChange:B,onTypeChange:Ae,onPriorityChange:F,onComplexityChange:z,onAssigneeChange:Z,onScheduledDateChange:ae,onDueDateChange:Le,onNewCommentTextChange:nt,onDescriptionFocusedChange:at,onShowMarkdownHelpChange:Ze,onOpenSettings:m=>{Kr(m),p("settings")},onSubmit:$,onDescriptionImageUploadStart:de,commentsEndRef:sr,onAddComment:()=>Pe(fe),taskReferences:lb,onAddContextFile:m=>{Ac(_=>[..._,m])},onRemoveContextFile:async m=>{Ac(_=>_.filter((W,Se)=>Se!==m))},onUpdateContextCaption:(m,_)=>{Ac(W=>W.map((Se,$e)=>$e!==m?Se:typeof Se=="string"?{path:Se,caption:_,timestamp:new Date().toISOString()}:{...Se,caption:_}))},onSetCardCover:async m=>{if(!ne)return;if(await V(ne,{cardCoverAssetId:m})===!1)throw new Error("Unable to update the task card image.")},cardCoverDisabled:Ve,onOpenContextImage:m=>{om(m,{ownerType:"task",ownerId:ne,ownerReferenceLabel:ys(kn),workspaceId:Lt})},onCopyId:et,onToggleInProgress:Y,onToggleReview:Ke,onToggleComplete:le,onToggleCancel:It,onSetStatus:Ec,onArchiveTask:vt,onUnarchive:m=>{if(kn?.isDeleted){const _=Zi.get(m);if(!_)return;Zt(_.id,_.taskId);return}gr(m)},currentTask:kn})]}),a.jsx(Uo,{isOpen:f==="settings",onClose:Fm,title:"Settings",size:"xl",theme:nr,draggable:!0,isSettings:!0,closeOnOverlayClick:!1,children:a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"2rem"},children:a.jsx(Hn,{size:20,className:E.spinner})}),children:a.jsx(OA,{settingsModel:{...Rt,onOpenCloudAuth:lf},onSectionChange:Kr})})}),a.jsx(yY,{prompt:gc,theme:nr,onClose:cr,onConfirm:ka}),a.jsx(kY,{isOpen:Gy,theme:nr,onClose:Qi,onConfirm:gl}),a.jsx(hY,{isOpen:Fp,theme:nr,onClose:()=>Yl(!1),supportMailtoHref:qy,onOpenSettings:()=>{Yl(!1),p("settings"),Kr("general")}}),a.jsx(Gq,{isOpen:Lo,theme:nr,displayName:Yp,email:ec,avatarDisplayUrl:_u,accountBadgeInitial:id,profileSaveBusy:Vy,profileAvatarBusy:rg,profileSaveError:ua,profileSaveNotice:ed,cloudAuthEnabled:Gr,availableAuthProviders:Ls,billingLoading:Jm,billingError:Qm,billingActionError:tg,billingNotice:da,billingActionBusy:eg,billingIntervalChoice:Xl,accountProfileSummary:Ea,onClose:sf,onSaveProfile:()=>{of()},onDisplayNameChange:Ql,onOpenAvatarManager:()=>{Xa(null),pa(null),pu(!0)},onFetchLoginMethods:Ca,onUnlinkLoginMethod:aa,onAddPassword:Ha,onChangePassword:ma,onLinkProvider:m=>ro(m),onBillingIntervalChange:Hy,onRefreshBilling:()=>{Ti()},onUpdateInterval:()=>{cf()},onManageBilling:()=>{ug()},onOpenPlans:()=>{Zl(!1),Xy()}}),a.jsx(mY,{isOpen:Um,theme:nr,title:"Edit Profile Photo",currentImageUrl:_u,fallbackInitial:id,accept:Fte,busy:rg,hasPendingImage:!!Zs,canRemove:!!_u,error:ua,notice:ed,onClose:()=>pu(!1),onApplyImage:cd,onRemoveImage:xu,onDiscardPendingImage:Bc}),a.jsx(hZ,{isOpen:Vm,theme:nr,teamPlanMode:Km,teamMgmtError:Ny,teamManagementTab:Ry,teamUsersLoading:jy,teamUsers:ku,teamActionBusyUserId:Jl,teamInviteFeedback:Ly,teamInviteEmail:Ys,teamInviteRole:wu,teamInvitePermissionMode:Dc,teamInviteBusy:My,pendingInvites:Qy,teamAuditLoading:Oy,teamAuditEvents:By,teamAuditPage:dl,teamAuditPages:Uy,teamAuditHasMore:$y,onClose:()=>Gm(!1),onOpenMembersTab:()=>{mu("members"),ld()},onOpenInvitesTab:()=>mu("invites"),onOpenAuditTab:()=>{mu("audit"),Wc(dl)},onMemberRoleChange:(m,_)=>{$c(m,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(m)}/role`,{method:"PATCH",headers:{"Content-Type":"application/json",...Oo()},credentials:"include",body:JSON.stringify({workspaceId:_i,role:_})}))},onMemberPermissionChange:(m,_)=>{$c(m,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(m)}/permission-mode`,{method:"PATCH",headers:{"Content-Type":"application/json",...Oo()},credentials:"include",body:JSON.stringify({workspaceId:_i,mode:_})}))},onToggleMemberDisabled:(m,_)=>{$c(m,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(m)}/disable`,{method:"PATCH",headers:{"Content-Type":"application/json",...Oo()},credentials:"include",body:JSON.stringify({workspaceId:_i,disabled:_})}))},onRevokeInvite:m=>{$c(m,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(m)}/invite/revoke`,{method:"POST",headers:{"Content-Type":"application/json",...Oo()},credentials:"include",body:JSON.stringify({workspaceId:_i})}))},onRemoveMember:m=>{$c(m,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(m)}?workspaceId=${encodeURIComponent(_i)}`,{method:"DELETE",headers:Oo(),credentials:"include"}))},onInviteEmailChange:Gp,onInviteRoleChange:bu,onInvitePermissionModeChange:Dy,onSubmitInvite:()=>{uf()},onLoadAuditPrevious:()=>{Wc(dl-1)},onLoadAuditNext:()=>{Wc(dl+1)}}),a.jsx(aq,{isOpen:xy,theme:nr,onClose:()=>Hp(!1),onConfirm:()=>dd({intent:"create-workspace"})}),a.jsx(gZ,{isOpen:Jp,theme:nr,currentWorkspaceLabel:nd,syncStatus:tt,syncStatusMeta:zc,workspaceCloudSyncEnabled:Ii,syncControlBusy:Xp,canManageWorkspaceSync:ti,workspaceSyncSummary:ho.summary,workspaceSyncRecommendedAction:ho.recommendedAction,workspaceSyncRepairBusy:AT,referenceMismatchCount:ff,syncStageLabel:CT,workspaceSyncPendingChanges:pf,incomingCloudChanges:fa?.incomingCloudChanges||"Unknown",formattedLastSyncTime:kg,formattedLastPullTime:hg,formattedLastPushTime:yg,syncLastError:Je,activeReferenceMismatchSummaries:bg,syncDiagnosticsSummary:ur,syncEventRows:Xs,syncEventsListRef:zn,workspaceSyncRepairQueued:vT,workspaceSyncBusy:vg,workspaceSyncCopied:wT,coordinatorOwnershipMode:C,coordinatorOwnershipTransferBusy:Q,coordinatorOwnershipTransferDisabled:X,onClose:Qp,onToggleWorkspaceSync:m=>{Ky(m)},onRepairSync:ST,onCopyReport:()=>{bT()},onRetrySync:()=>{yr().catch(()=>{})},onTransferCoordinatorOwnership:()=>{We()}}),a.jsx(wZ,{isOpen:!!zs,onKeepEditing:()=>Hs(null),onDiscard:()=>{const m=zs;Hs(null),xo.current=!0,m?.(),window.setTimeout(()=>{xo.current=!1},0)},theme:nr}),Ln&&pc.createPortal(a.jsx("div",{className:`${mr.overlay} ${mr.unsavedOverlay}`,style:{zIndex:2e3},children:a.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${mr.modal} ${mr.unsavedModal}`,"data-theme":nr,children:[a.jsx("div",{className:`tf-modal-header ${mr.unsavedHeader}`,children:a.jsxs("div",{className:`tf-modal-title ${mr.unsavedTitle}`,children:[a.jsx(Bd,{size:20}),"Unsaved Changes"]})}),a.jsx("div",{className:`${mr.form} ${mr.unsavedContent}`,children:a.jsx("p",{className:mr.unsavedText,children:"You have unsaved changes. Would you like to save them?"})}),a.jsxs("div",{className:`${mr.formActions} ${mr.unsavedActions}`,children:[a.jsx("button",{className:E.cancelBtn,onClick:()=>Ta(!1),title:"Close dialog and continue editing",children:"Keep Editing"}),a.jsx("button",{className:E.destructiveBtn,onClick:La,title:"Discard unsaved changes and leave",children:"Discard"}),a.jsxs("button",{className:E.submitBtn,onClick:$n,disabled:L,title:"Save changes and leave",children:[L?a.jsx(Hn,{size:16,className:E.spinner}):a.jsx(qA,{size:16}),"Save"]})]})]})}),document.body),An&&pc.createPortal(a.jsx("div",{className:Mn.overlay,children:a.jsxs("div",{className:Mn.browser,children:[a.jsxs("div",{className:Mn.header,children:[a.jsxs("div",{className:Mn.pathInfo,children:[a.jsx(lc,{size:14}),a.jsx("span",{children:Wn||"Project Root"})]}),a.jsxs("div",{className:Mn.actions,children:[Wn&&a.jsx("button",{className:E.helpLink,onClick:()=>{const m=Wn.split("/").filter(Boolean);m.pop(),ja(m.length?m.join("/")+"/":"")},children:"Back"}),a.jsx("button",{className:E.helpLink,onClick:()=>ao(!1),children:"Close"})]})]}),a.jsxs("div",{className:Mn.list,children:[oa&&typeof oa=="object"&&a.jsxs("div",{className:`${Mn.item} ${Mn.itemFile} ${Mn.itemCurrent}`,onClick:()=>ga(Wn),children:[a.jsx(ji,{size:14})," Select Current: ./",Wn||"(root)"]}),Ia.map(m=>a.jsxs("div",{className:Mn.item,onClick:()=>ja(Wn+m+"/"),children:[a.jsx(lc,{size:14})," ",m,"/"]},m)),as.map(m=>a.jsxs("div",{className:`${Mn.item} ${Mn.itemFile}`,onClick:()=>ga(Wn+m),children:[a.jsx(Jf,{size:14})," ",m]},m)),Ia.length===0&&as.length===0&&a.jsx("div",{className:`${Mn.item} ${Mn.empty}`,children:"No items found"})]})]})}),document.body)]})}function Gte(e){const t=e.setupState,r=e.runtimeMode,n=e.isAuthenticated,s=!!(t&&r==="cloud"&&n&&t.globalSetupState==="missing"),i=!!(t&&r==="local"&&t.globalSetupState==="missing"),l=!!(t&&r==="cloud"&&n&&t.workspaceSetupState==="missing"),c=!!(t&&r==="local"&&t.workspaceSetupState==="missing"),d=!!(t&&(t.forceSetup||t.forceGlobalSetup||t.forceWorkspaceSetup||s||l||i||c));if(!d)return{setupGateActive:!1,needsGlobalSetup:!1,needsWorkspaceSetup:!1,hasSetupReadError:!1,phase:"ready"};const f=!!(t&&(t.forceSetup||t.forceGlobalSetup||s||i)),p=!!(t&&(t.forceSetup||t.forceWorkspaceSetup||l||c)),g=!!(f&&t?.globalSetupState==="missing"),h=!!(p&&t?.workspaceSetupState==="missing"),y=!!(f&&t?.globalSetupState==="unreadable"),k=!!(p&&t?.workspaceSetupState==="unreadable"),w=y||k;return{setupGateActive:d,needsGlobalSetup:g,needsWorkspaceSetup:h,hasSetupReadError:w,phase:w?"setup-read-error":g?"needs-global-setup":h?"needs-workspace-setup":"ready"}}const cv="/taskforce/assets/taskforce-BxLPokNB.png";function $A(e){return{categories:!!e?.categories?.length,types:!!e?.types?.length,priorities:!!e?.priorities?.length}}function lv(e){return(Array.isArray(e)?e:[]).map(t=>String(t.label||t.value||"").trim()).filter(Boolean).join(", ")}function dv(e={}){const t=new URLSearchParams;t.set("screen","plans");for(const[r,n]of Object.entries(e)){const s=String(n||"").trim();s&&t.set(r,s)}return`/?${t.toString()}`}function Sd(e,t){const r=String(t||"").trim();if(!r.startsWith("/")||r==="/")return e;try{const n=new URL(e,"https://taskforce.local");return n.searchParams.set("next",r),`${n.pathname}${n.search}${n.hash}`}catch{return e}}function FA({config:e={},initialTaskId:t,initialActivityEntryId:r,onTaskCountChange:n,onHeaderMouseDown:s,isDragging:i,onClose:l,mode:c="standalone"}){const d=iC(),f=o.useMemo(()=>new URLSearchParams(d.search),[d.search]),p=String(f.get(Ei.workspaceId)||"").trim()||void 0,g=String(t||f.get(Ei.task)||"").trim()||void 0,h=String(r||f.get(Ei.activity)||f.get(Ei.comment)||"").trim()||void 0,y=String(f.get("planId")||"").trim(),k=String(f.get("planVersionId")||"").trim(),w=String(f.get("interval")||"").trim(),S=d.pathname==="/pricing",b=d.pathname==="/plans",v=d.pathname==="/"&&String(f.get("screen")||"").trim().toLowerCase()==="plans",T=dv(),R=dv({gate:"plan_selection_required"}),P=oC(),[N,I]=o.useState(""),[$,j]=o.useState(""),[x,V]=o.useState(""),[U,ne]=o.useState(""),[L,ie]=o.useState("login"),[J,ue]=o.useState(""),[oe,ge]=o.useState(!1),[je,qe]=o.useState(null),[Ye,he]=o.useState(null),[ce,B]=o.useState(null),[K,Ae]=o.useState(!1),[re,F]=o.useState(""),[D,z]=o.useState(""),[we,ke]=o.useState(null),[ee,Z]=o.useState(null),[H,ae]=o.useState("unknown"),[Te,Le]=o.useState(!1),[Ue,ft]=o.useState([]),[He,Fe]=o.useState(null),[me,ve]=o.useState(null),[ot,Oe]=o.useState(null),[A,G]=o.useState(!1),[_e,Ne]=o.useState(0),[Ee,fe]=o.useState(0),[nt,q]=o.useState(()=>Date.now()),[be,Ve]=o.useState("core"),[Ce,xe]=o.useState(!1),[Ie,de]=o.useState(null),[Be,at]=o.useState(null),[Qe,Ze]=o.useState(""),[Pe,gt]=o.useState(""),[it,De]=o.useState("local"),[bt,Et]=o.useState("details"),[mt,qt]=o.useState([]),[et,Y]=o.useState(""),[le,Ke]=o.useState(!1),[It,vt]=o.useState(null),[Mt,gr]=o.useState(!1),[Zt,or]=o.useState(null),[Dt,lr]=o.useState(!1),Rr=o.useRef(!1),Lr=o.useMemo(()=>OI(),[]),[Dr,Me]=o.useState(Lr),[rt,pt]=o.useState(()=>Lr.find(ye=>ye.isDefaultStarter)?.id||Lr[0]?.id||""),[ht,At]=o.useState(()=>$A(Lr.find(ye=>ye.isDefaultStarter)||Lr[0]||null)),[Ft,Tt]=o.useState(!1),[$t,Ct]=o.useState(null),[Wt,Ot]=o.useState(!1),[vr,xt]=o.useState(null),[ct,tr]=o.useState(!1),$r=FD({config:e,initialTaskId:g,initialActivityEntryId:h,requestedWorkspaceId:p,onTaskCountChange:n,onClose:l}),{runtimeMode:u,workspaceSwitchingEnabled:Rt,currentWorkspaceId:pr,cloudAuthConfigured:nr,authRequiredForApi:ar,authBlocked:an,isAuthenticated:Bt,hasBetaAccess:Qr,authSessionResolved:xr,setupState:Gt,runtimeCapabilities:Fr,refreshSetupContext:en,retryBootstrapChecks:ln,createWorkspace:tn,saveWorkspaceProfile:Ge,fetchWorkspaces:yn,applyWorkspaceSyncStateSnapshot:Kr,workspaceCloudSyncEnabled:ir,workspaceSyncPhase:wt,workspaceSyncSetupIntent:Gr,workspaceSyncSummary:Ut,workspaceSyncRecommendedAction:dr,workspaceSyncBusy:wr,workspaceLastErrorMessage:Ur,retryWorkspaceCloudSync:vs,settingsModel:ea,fetchTasks:ta,bootstrapState:rn,loginWithCredentials:sn,beginOAuthLogin:on,availableAuthProviders:Tn,registerWithCredentials:cn,requestEmailVerification:Ar,confirmEmailVerification:Or,requestPasswordReset:qr,confirmPasswordReset:Yr,inspectInviteAcceptance:ra,acceptInviteWithToken:Gn,joinInviteWithToken:Yt,authUserEmail:Zr,currentTheme:wn,logout:dt}=$r,Cr=o.useCallback(async(ye,St)=>{const Vt=await fetch("/api/taskforce/ui-state",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:ye,stateKey:"workspace-sync",patch:St})}),sr=await Vt.json().catch(()=>({}));if(!Vt.ok||sr?.success===!1)throw new Error(sr?.error||`Failed to configure workspace sync (${Vt.status})`);return sr},[]),pn=o.useMemo(()=>Dr.find(ye=>ye.id===rt)||Dr.find(ye=>ye.isDefaultStarter)||Dr[0]||null,[rt,Dr]);dC(wn);const pe=Zv,st=o.useMemo(()=>{const ye=String(e.cloudAuthBaseUrl||e.apiBaseUrl||"").trim();return ye?ye.replace(/\/+$/,""):""},[e.apiBaseUrl,e.cloudAuthBaseUrl]),yt=u==="cloud"||Fr?.runtimeMode==="cloud",Jt=!yt&&nr&&!!st,Xt=typeof window<"u"&&/^app\./i.test(window.location.hostname),yr=u==="cloud"&&ar,Sn=u==="cloud"&&an,br=d.pathname==="/login",Lt=d.pathname==="/setup",Pr=d.pathname==="/coming-soon",fn="/setup?step=workspace&source=cloud&postAuth=select-cloud-workspace",Kn=!yt&&it==="cloud",na=Kn&&Jt,er=o.useMemo(()=>{if(Zt)return Zt;if(Gr!=="attach-cloud-import")return null;const ye=String(pr||"").trim();if(!ye||ye.toLowerCase()==="default")return null;const St=mt.find(Vt=>Vt.id===ye);return{workspaceId:ye,name:St?.name||ye}},[mt,pr,Zt,Gr]),Ho=!!(er&&pr===er.workspaceId),Ca=!!(er&&Ho&&wt==="error"),aa=!!(er&&Ho&&ir&&wt==="active"&&!wr),Ha=o.useMemo(()=>{if(!er)return[];const ye=Ce?"In progress":"Complete",St=Ca?"Needs attention":wr||wt==="attach-cloud"?"In progress":wt==="active"?"Complete":"Waiting",Vt=Dt?"In progress":aa?"Ready":"Waiting";return[`Connect workspace: ${ye}`,`Import cloud data: ${St}`,`Open local workspace: ${Vt}`]},[er,Ce,Ca,wr,wt,Dt,aa]),ma=Xt?(!Bt||an)&&!S&&!b&&!v:(yr&&!Bt||Sn)&&!S&&!b&&!v,Ms=u==="cloud"&&Bt&&!Qr&&!S&&!b&&!v,ro=u==="cloud"&&Bt&&xr&&vr?.canAccessApp===!1&&vr?.canAccessPlans!==!1&&!S&&!b&&!v,Ls=u==="cloud"&&Bt&&(!xr||!ct),ws=nr,sa=o.useMemo(()=>{switch(L){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"}},[L]),xn=o.useMemo(()=>String(new URLSearchParams(d.search).get("step")||"").trim().toLowerCase(),[d.search]),no=o.useMemo(()=>String(new URLSearchParams(d.search).get("intent")||"").trim().toLowerCase(),[d.search]),An=Lt&&xn==="workspace"&&no==="create-workspace",ao=c!=="widget"&&rn.authPending&&!br&&!Lt&&!S&&!b&&!v&&(u==="cloud"||Xt),Ia=o.useMemo(()=>Gte({setupState:Gt?{globalSetupState:Gt.globalSetupState,workspaceSetupState:Gt.workspaceSetupState,runtimeMode:Gt.runtimeMode,workspaceId:Gt.workspaceId,mode:Gt.mode,forceSetup:Gt.forceSetup,forceGlobalSetup:Gt.forceGlobalSetup,forceWorkspaceSetup:Gt.forceWorkspaceSetup}:null,runtimeMode:u,isAuthenticated:Bt}),[Gt,u,Bt]),as=Ia.setupGateActive,Wn=Ia.needsGlobalSetup,ja=Ia.needsWorkspaceSetup,oa=Ia.hasSetupReadError,bs=c!=="widget"&&rn.auth.resolved&&!ma&&!Ms&&!S&&!b&&!v&&!br&&rn.appPending&&(Lt||u==="cloud"||Xt),ga=u==="cloud"&&K&&!v,Va=rn.subtitle,Da=An||Lt&&!!er||Lt&&as&&(oa||Wn||ja),Ma=o.useMemo(()=>ao?"auth-bootstrap":ga||bs?"app-bootstrap":br?"login":ma&&!br?"login-redirect":Pr&&Ms?"coming-soon":Da?"guided-setup":"app",[Pr,br,Ms,ma,ga,ao,bs,Da]),ia=o.useCallback((ye,St,Vt)=>{const sr=String(ye||"").trim().toLowerCase(),Ir=String(St||"").trim().toLowerCase();return!!(!sr||sr==="system default workspace"||Ir&&sr===Ir)},[]);o.useEffect(()=>{const ye=Gt?.mode==="operations"?"operations":"core";Ve(ye)},[Gt?.mode]),o.useEffect(()=>{if(u!=="cloud"||!Bt){xt(null),tr(!1);return}if(!xr){xt(null),tr(!1);return}xt(null),tr(!1);let ye=!1;return(async()=>{try{const St=await fetch("/api/taskforce/account/access-status",{method:"GET",credentials:"include"}),Vt=await St.json().catch(()=>({}));if(ye)return;if(!St.ok){xt(null),tr(!0);return}const sr=String(Vt?.gate||"").trim().toLowerCase();if(sr!=="ok"&&sr!=="plan_selection_required"&&sr!=="checkout_pending"&&sr!=="misconfigured"&&sr!=="missing_entitlement"){xt(null),tr(!0);return}xt({gate:sr,canAccessApp:Vt?.canAccessApp===!0,canAccessPlans:Vt?.canAccessPlans!==!1,message:typeof Vt?.message=="string"?Vt.message:null}),tr(!0)}catch{ye||(xt(null),tr(!0))}})(),()=>{ye=!0}},[xr,Bt,u,d.pathname,d.search]),o.useEffect(()=>{if(An){Ze(""),gt("");return}if(!Gt)return;const ye=String(Gt.workspace?.name||"").trim(),St=String(Gt.suggestedWorkspaceName||"").trim(),Vt=ia(ye,Gt.workspaceId,Gt.workspace?.description)?St:ye;Ze(Vt||St||ye),gt(String(Gt.workspace?.description||""))},[Gt?.workspace?.name,Gt?.workspace?.description,Gt?.suggestedWorkspaceName,Gt?.workspaceId,An,ia]),o.useEffect(()=>{if(!Lt||xn!=="workspace")return;if(Et("details"),er&&Jt){De("cloud"),gr(!1);return}if(String(new URLSearchParams(d.search).get("source")||"").trim().toLowerCase()==="cloud"&&Jt){De("cloud"),gr(!1);return}De("local")},[er,Jt,Lt,d.search,xn]);const Ss=o.useCallback(async()=>{if(!Jt||!Bt){qt([]),Y("");return}Ke(!0),vt(null);try{const ye=await fetch(`${st}/api/taskforce/workspaces`,{method:"GET",credentials:"include"}),St=await ye.json().catch(()=>({}));if(!ye.ok||St?.success===!1){qt([]),Y(""),vt(St?.error||`Failed to load cloud projects (${ye.status})`);return}const Vt=Array.isArray(St?.workspaces)?St.workspaces.map(sr=>({id:String(sr?.id||"").trim(),name:String(sr?.name||sr?.id||"").trim(),description:typeof sr?.description=="string"?sr.description:null})).filter(sr=>sr.id.length>0):[];qt(Vt),Y(sr=>sr&&Vt.some(Ir=>Ir.id===sr)?sr:Vt[0]?.id||"")}catch{qt([]),Y(""),vt("Failed to load cloud projects.")}finally{Ke(!1)}},[Jt,Bt,st]);o.useEffect(()=>{it==="cloud"&&Ss()},[Ss,it]),o.useEffect(()=>{if(!Lt||xn!=="workspace"||it==="cloud")return;let ye=!1;return Tt(!0),Ct(null),fetch("/api/taskforce/taxonomy-library",{method:"GET",credentials:"include"}).then(async St=>{if(!St.ok)throw new Error(`Failed to load setup libraries (${St.status})`);const Vt=await St.json().catch(()=>({})),sr=Array.isArray(Vt?.packs)?Vt.packs:[];ye||sr.length===0||(Me(sr),pt(Ir=>sr.some(Ln=>Ln.id===Ir)?Ir:sr.find(Ln=>Ln.isDefaultStarter)?.id||sr[0]?.id||""))}).catch(St=>{ye||(Me(Lr),Ct(St instanceof Error?St.message:"Failed to load setup libraries."))}).finally(()=>{ye||Tt(!1)}),()=>{ye=!0}},[Lr,Lt,xn,it]),o.useEffect(()=>{At($A(pn))},[rt,pn]),o.useEffect(()=>{it==="cloud"&&Et("details")},[it]),o.useEffect(()=>{na||(or(null),lr(!1),Rr.current=!1)},[na]),o.useEffect(()=>{!Ca||!er||(at(null),de(Ur||`Failed to import "${er.name}" from cloud. Retry import to continue.`))},[er,Ca,Ur]),o.useEffect(()=>{if(!aa||!er||Rr.current)return;let ye=!1;return Rr.current=!0,lr(!0),de(null),at(`Workspace import complete. Opening ${er.name}...`),(async()=>{try{if(await en(),await Promise.all([yn(),ta(!0)]),ye)return;await Cr(er.workspaceId,{setupIntent:null}),Kr({enabled:ir,phase:wt,setupIntent:null}),or(null),P("/",{replace:!0})}catch{if(ye)return;at(null),de(`Imported "${er.name}" but failed to finish opening it.`),lr(!1),Rr.current=!1}})(),()=>{ye=!0}},[er,Kr,ta,yn,aa,P,Cr,en]);const ut=o.useMemo(()=>{const ye=new URLSearchParams(d.search).get("next")||"/";if(ye.startsWith("/"))return ye==="/login"?"/":ye;try{const St=new URL(ye),Vt=St.hostname.toLowerCase(),sr=Vt==="localhost"||Vt==="127.0.0.1"||Vt==="::1",Ir=Vt==="taskforcehq.ai"||Vt.endsWith(".taskforcehq.ai");if((St.protocol==="http:"||St.protocol==="https:")&&(sr||Ir))return St.toString()}catch{return"/"}return"/"},[d.search]),kr=o.useMemo(()=>ut.startsWith("/")?ut:"/",[ut]),Jr=o.useCallback((ye,St)=>{if(ye){if(ye.startsWith("/")){P(ye,{replace:St?.replace===!0});return}typeof window<"u"&&(St?.replace===!0?window.location.replace(ye):window.location.assign(ye))}},[P]),Cn=o.useMemo(()=>{try{const ye=new URL(kr,"https://taskforce.local");return ye.pathname==="/setup"&&ye.searchParams.get("step")==="workspace"&&ye.searchParams.get("source")==="cloud"&&ye.searchParams.get("postAuth")==="select-cloud-workspace"}catch{return!1}},[kr]),In=o.useCallback((ye=ut)=>{const St=Cn?fn:"/setup?step=workspace";return Cn?St:Sd(St,ye)},[ut,Cn]),Os=w==="year"?"year":"month",so=o.useCallback(ye=>!!(ye?.planSelectionRequired||ye?.checkoutPending||ye?.commercialState==="pending_plan_selection"||ye?.commercialState==="checkout_pending"),[]),Bs=o.useCallback(ye=>ye?.planSelectionRequired||ye?.commercialState==="pending_plan_selection"?Sd(R,ut):ye?.checkoutPending||ye?.commercialState==="checkout_pending"?Sd(dv({gate:"checkout_pending",checkout:k?"start":null,planId:y||null,planVersionId:k||null,interval:k?Os:null}),ut):ut,[ut,R,Os,y,k]),ha=o.useMemo(()=>{const ye=String(new URLSearchParams(d.search).get("mode")||"").trim().toLowerCase();return ye==="register"?ws?"register":"login":ye==="verify"||ye==="forgot"||ye==="reset"||ye==="invite"?ye:"login"},[ws,d.search]),ca=o.useMemo(()=>String(new URLSearchParams(d.search).get("token")||"").trim(),[d.search]),Rn=o.useCallback(ye=>{const St=new URLSearchParams(d.search),Vt=ye==="register"&&!ws?"login":ye;Vt==="login"?St.delete("mode"):St.set("mode",Vt);const sr=St.toString();P(`/login${sr?`?${sr}`:""}`,{replace:!0})},[ws,d.search,P]);o.useEffect(()=>{br&&(ie(ha),ha==="verify"&&ca&&ue(ca),ha==="reset"&&ca&&F(ca),ha==="invite"&&ca&&z(ca))},[br,ha,ca]),o.useEffect(()=>{L!=="verify"&&(br&&ha==="verify"||(ge(!1),qe(null),he(null)))},[L,br,ha]),o.useEffect(()=>{L==="register"||L==="reset"||L==="invite"&&Te||ne("")},[L,Te]),o.useEffect(()=>{if(!ce||!Bt||!ce.commercialOnboardingGate&&(!xr||Ls))return;const ye=!ce.commercialOnboardingGate&&ce.workspaceSetupRequired?In():ce.path,St=`${d.pathname}${d.search}${d.hash||""}`;if(ye.startsWith("/")){St!==ye&&P(ye,{replace:!0});return}Jr(ye,{replace:!0})},[xr,Ls,Bt,d.hash,d.pathname,d.search,P,Jr,ce,In]),o.useEffect(()=>{if(!K||!xr)return;if(!Bt){Ae(!1),B(null);return}if(ct&&vr?.canAccessApp===!0){I(""),j(""),V(""),ne(""),B(null),Ae(!1);return}const ye=ce?.commercialOnboardingGate?ce.path:R,St=`${d.pathname}${d.search}${d.hash||""}`;if(ye.startsWith("/")){St!==ye&&P(ye,{replace:!0});return}Jr(ye,{replace:!0})},[vr?.canAccessApp,ct,xr,K,Bt,d.hash,d.pathname,d.search,P,Jr,ce,R]),o.useEffect(()=>{if(!ce||!Bt)return;const ye=!ce.commercialOnboardingGate&&ce.workspaceSetupRequired?In():ce.path;`${d.pathname}${d.search}${d.hash||""}`===ye&&(ce.commercialOnboardingGate||(I(""),j(""),V(""),ne(""),B(null)))},[d.hash,d.pathname,d.search,Bt,ce,In,u]),o.useEffect(()=>{br&&(document.title=sa)},[sa,br]),o.useEffect(()=>{if(!br||L!=="invite"||!D.trim())return;let ye=!0;return(async()=>{const St=await ra(D);if(ye)if(St.success){ke(St.email||null),Z(St.workspaceId||null),Le(St.passwordRequired===!0);const Vt=(St.availableMethods||[]).filter(Ln=>Ln==="google"||Ln==="github"||Ln==="apple");ft(St.inviteeState==="pending_setup"?Vt:[]);const sr=!!(Bt&&Zr&&St.email&&Zr.trim().toLowerCase()===St.email.trim().toLowerCase()),Ir=St.passwordRequired===!0?"new_user":sr?"existing_user_ready":"existing_user_signed_out";ae(Ir),Fe(Ir==="new_user"?"Create your account password to join this workspace.":Ir==="existing_user_ready"?"Invite ready. Confirm to join this workspace.":"Sign in with the invited account to join this workspace."),ve(null),Oe(null)}else ke(null),Z(null),ae("invalid"),Le(!1),ft([]),ve(Ka(St)),Oe(St.code||St.state||null)})(),()=>{ye=!1}},[br,L,D,ra,Bt,Zr]),o.useEffect(()=>{L==="invite"&&H==="existing_user_signed_out"&&we&&I(ye=>ye.trim()?ye:we)},[L,H,we]),o.useEffect(()=>{if(!(_e>Date.now()||Ee>Date.now()))return;const St=window.setInterval(()=>q(Date.now()),1e3);return()=>window.clearInterval(St)},[_e,Ee]);const Er=Math.max(0,Math.ceil((_e-nt)/1e3)),Ga=Math.max(0,Math.ceil((Ee-nt)/1e3)),As=Er>0,_a=Ga>0,ya=o.useMemo(()=>L_(),[]),Ka=ye=>{const St=ye.error||"Request failed.",Vt=ye.code||ye.state;return Vt?`[${Vt}] ${St}`:St},ss=ye=>ye?.deliveryAttempted===!1?ye?.intro||"If that account exists and still needs verification, we sent an email.":ye?.emailSent===!1?`Verification email failed to send. ${ye?.emailError||"Try Resend Verification again."}`:"Verification email resent.",pi=ye=>ye?.deliveryAttempted===!1?"If that account exists, we sent password reset instructions.":ye?.emailSent===!1?`Password reset email failed to send. ${ye?.emailError||"Try again in a minute."}`:"Password reset instructions sent.";o.useEffect(()=>{if(c==="widget"||br&&A)return;const ye=`${d.pathname}${d.search}${d.hash||""}`,St=Lt?ut:ye,Vt=u==="cloud"&&Bt&&ct&&vr?.canAccessApp===!1&&vr?.canAccessPlans!==!1;if(rn.workspace.pending&&!Vt)return;if(Ms){Pr||P("/coming-soon",{replace:!0});return}if(Pr&&!Ms){P("/",{replace:!0});return}if(ma){if(!br){const Ir=`${d.pathname}${d.search}${d.hash}`;P(`/login?next=${encodeURIComponent(Ir||"/")}`,{replace:!0});return}return}else{const Ir=br&&L==="invite"&&D.trim().length>0;if(br&&Bt&&!Ir&&(!!ce||rn.workspace.pending||L==="register"||L==="verify"||!rn.config.loaded||Ls))return;br&&Bt&&!Ir&&Jr(ut,{replace:!0})}if(!(br&&!Bt||ce&&Bt||br&&Bt&&(L==="register"||L==="verify"||L==="invite"&&D.trim().length>0))&&!K&&!v){if(ro){if(!v){const Ir=encodeURIComponent(String(vr?.gate||"plan_selection_required"));P(Sd(`/?screen=plans&gate=${Ir}`,ye),{replace:!0})}return}if(er){Lt&&xn==="workspace"&&new URLSearchParams(d.search).get("source")==="cloud"||P(fn,{replace:!0});return}if(!(v&&Ls)&&!(v&&u==="cloud"&&ct&&vr?.canAccessApp===!1&&vr?.canAccessPlans!==!1)){if(as){if(oa){(!Lt||xn!=="error")&&P(Sd("/setup?step=error",St),{replace:!0});return}if(Wn){(!Lt||xn!=="global")&&P(Sd("/setup?step=global",St),{replace:!0});return}if(ja){(!Lt||xn!=="workspace")&&P(In(St),{replace:!0});return}Lt&&Jr(ut,{replace:!0});return}Lt&&Gt&&!An&&Jr(ut,{replace:!0})}}},[c,ma,Ms,ro,br,Lt,Pr,b,v,vr,vr?.gate,ct,L,K,Ls,as,Gt,oa,An,er,Wn,ja,xn,rn,u,A,Bt,ct,D,d.pathname,d.search,d.hash,P,Jr,kr,ut,ce,fn]),o.useEffect(()=>{if(c==="widget"||u!=="local"||!rn.config.loaded||br||Lt)return;const ye=String(pr||"").trim().toLowerCase();if(!ye||ye==="default"){const St=`${d.pathname}${d.search}${d.hash||""}`;P(Sd("/setup?step=workspace",St),{replace:!0})}},[c,u,rn.config.loaded,br,Lt,pr,d.hash,d.pathname,d.search,P]);const oo=o.useCallback(async()=>{Ot(!0);try{await ln()}finally{Ot(!1)}},[ln]),os=o.useCallback(async()=>{await dt(),P("/login",{replace:!0})},[dt,P]);if(c==="widget")return a.jsx(RG,{...$r,initialActivityEntryId:h,onHeaderMouseDown:s,isDragging:i,onClose:l});if(S){const ye=new URLSearchParams(d.search);return ye.set("screen","plans"),a.jsx(Mb,{to:`/?${ye.toString()}${d.hash||""}`,replace:!0})}if(b){const ye=new URLSearchParams(d.search);return ye.set("screen","plans"),a.jsx(Mb,{to:`/?${ye.toString()}${d.hash||""}`,replace:!0})}if(Ma==="auth-bootstrap")return a.jsx("div",{className:Xr.standaloneWrapper,"data-theme":wn,children:a.jsx("div",{className:Xe.loginView,children:a.jsxs("div",{className:Xe.loginCard,children:[a.jsxs("div",{className:Xe.authBrandRow,children:[a.jsx("img",{src:pe,alt:"Taskforce",className:Xe.loginLogo}),a.jsx("h1",{className:Xe.loginTitle,children:"Loading Taskforce"})]}),a.jsx("p",{className:Xe.loginSubtitle,children:"Checking your session..."})]})})});if(Ma==="app-bootstrap")return a.jsx("div",{className:Xr.standaloneWrapper,"data-theme":wn,children:a.jsx("div",{className:Xe.loginView,children:a.jsxs("div",{className:Xe.loginCard,children:[a.jsxs("div",{className:Xe.authBrandRow,children:[a.jsx("img",{src:pe,alt:"Taskforce",className:Xe.loginLogo}),a.jsx("h1",{className:Xe.loginTitle,children:"Loading Taskforce"})]}),a.jsx("p",{className:Xe.loginSubtitle,children:Va}),rn.stalled&&a.jsxs(a.Fragment,{children:[a.jsx("p",{className:Xe.loginError,children:rn.error||"Startup checks timed out."}),a.jsx("button",{className:E.submitBtn,disabled:Wt,onClick:oo,children:Wt?"Retrying...":"Retry checks"}),yt&&a.jsx("button",{className:E.cancelBtn,disabled:Wt,onClick:os,children:"Go to sign-in"})]})]})})});const Ws=async()=>{if(G(!0),Fe(null),ve(null),Oe(null),L==="register"&&!$.trim()){ve("Display name is required."),G(!1);return}if(L==="register"||L==="reset"||L==="invite"&&Te){const St=qv(x,{email:N,displayName:$});if(!St.ok){ve(St.message||"Password does not meet the password policy."),Oe(St.code||null),G(!1);return}if(x!==U){ve("Passwords do not match."),Oe("PASSWORD_CONFIRMATION_MISMATCH"),G(!1);return}}let ye={success:!1};if(L==="login"?ye=await sn(N,x):L==="register"?ye=await cn(N,x,{displayName:$,planId:y||void 0,planVersionId:k||void 0,interval:w||void 0}):L==="verify"?ye=await Or(J):L==="forgot"?ye=await qr(N):L==="reset"?ye=await Yr(re,x):L==="invite"&&(H==="existing_user_signed_out"?ye=await sn(N,x):ye=Te?await Gn(D,x):await Yt(D)),ye.success)if(L==="register"){const St=Bs(ye),Vt=so(ye);ye.verificationRequired?(ge(!!ye.workspaceSetupRequired),qe(Vt?String(ye.commercialState||"").trim()||(ye.planSelectionRequired?"pending_plan_selection":"checkout_pending"):null),he(St),ye.verificationToken&&ue(ye.verificationToken),Ne(Date.now()+3e4),Rn("verify"),Fe(ye.emailSent===!1?`Account created, but verification email failed to send. ${ye.emailError||"Try Resend Verification again."}`:"Account created. Check your email for verification instructions.")):(Ae(Vt),B({path:St,workspaceSetupRequired:!!ye.workspaceSetupRequired,commercialOnboardingGate:Vt}))}else if(L==="verify"){await ln();const St=je==="pending_plan_selection"||je==="checkout_pending";Ae(St),B({path:Ye||ut,workspaceSetupRequired:oe,commercialOnboardingGate:St})}else if(L==="forgot"){const St=ye.deliveryAttempted===!0&&ye.emailSent===!1;ye.resetToken&&F(ye.resetToken),Fe(pi(ye)),St||(fe(Date.now()+3e4),Rn("reset"))}else if(L==="reset")Rn("login"),Fe("Password updated. Sign in with your new password.");else if(L==="invite"){if(H==="existing_user_signed_out"){const St=String(we||"").trim().toLowerCase(),Vt=N.trim().toLowerCase();if(St&&Vt===St){ie("invite"),ae("existing_user_ready"),V(""),ne(""),Fe("Signed in. Review the invite details to continue."),ve(null),Oe(null),G(!1);return}St&&I(we||""),ae("existing_user_signed_out"),V(""),ne(""),Fe(St?`Signed in, but this invite is for ${we}. Sign in with that account to continue.`:"Signed in, but this invite requires the invited account. Sign in with that account to continue."),ve("Sign in with the invited account to join this workspace."),Oe("INVITE_ACCOUNT_MISMATCH"),G(!1);return}if(ye.workspaceSetupRequired){P(In(),{replace:!0}),G(!1);return}Jr(ut,{replace:!0})}else if(L==="login"){if(D.trim()){ie("invite"),V(""),ne(""),Fe("Signed in. Review the invite details to continue."),G(!1);return}if(ye.workspaceSetupRequired){P(In(),{replace:!0}),G(!1);return}I(""),j(""),V(""),ne(""),Jr(ut,{replace:!0})}else I(""),j(""),V(""),ne(""),Jr(ut,{replace:!0});else{if(L==="register"&&(ye.code==="SIGNUP_PLAN_NOT_ENABLED"||ye.code==="SIGNUP_PLAN_VERSION_NOT_FOUND"||ye.code==="SIGNUP_PLAN_VERSION_REQUIRED")){P(R,{replace:!0}),G(!1);return}if(ve(Ka(ye)),Oe(ye.code||null),L==="login"&&(ye.code==="WORKSPACE_NOT_FOUND"||ye.code==="WORKSPACE_ID_REQUIRED")){P("/setup?step=workspace",{replace:!0}),G(!1);return}if(L==="login"&&ye.code==="EMAIL_NOT_VERIFIED"&&N.trim()){const St=await Ar(N);St.success&&(Ne(Date.now()+3e4),Rn("verify"),St.verificationToken&&ue(St.verificationToken),Fe(ss({...St,intro:"If that account exists and still needs verification, we sent an email."})),ve(null),Oe(null))}L==="register"&&ye.code==="EMAIL_ALREADY_EXISTS_UNVERIFIED"&&N.trim()&&(Ne(Date.now()+3e4),Rn("verify"),ye.verificationToken&&ue(ye.verificationToken),Fe(ye.emailSent===!1?`This email already has an unverified account, but verification email delivery failed. ${ye.emailError||"Try Resend Verification again."}`:"This email already has an unverified account. Check your email for verification instructions."),ve(null),Oe(null))}G(!1)};if(Ma==="login")return a.jsx("div",{className:Xr.standaloneWrapper,"data-theme":wn,children:a.jsx("div",{className:Xe.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${cv})`},children:a.jsxs("form",{className:Xe.loginCard,onSubmit:ye=>{ye.preventDefault(),Ws()},children:[!yt&&!ma&&a.jsx("button",{type:"button",className:Xe.loginCloseBtn,"aria-label":"Close sign in","data-testid":"auth-close-button",onClick:()=>P(kr,{replace:!0}),children:"×"}),a.jsxs("div",{className:Xe.authBrandRow,children:[a.jsx("img",{src:pe,alt:"Taskforce",className:Xe.loginLogo}),a.jsxs("h1",{className:Xe.loginTitle,children:["TASKFORCE ",a.jsx("span",{className:Xe.loginTitleAccent,children:"HQ"})]})]}),a.jsxs("p",{className:Xe.loginSubtitle,children:[L==="login"&&"Sign in with your account credentials.",L==="register"&&"Create your Taskforce account.",L==="verify"&&"Enter your verification token.",L==="forgot"&&"Request a password reset link.",L==="reset"&&"Set a new password using your reset token.",L==="invite"&&(H==="existing_user_ready"?`You've been invited to join ${ee||"this workspace"}.`:H==="existing_user_signed_out"?"Sign in to join this workspace.":"Create your account to join this workspace.")]}),(L==="login"||L==="register"||L==="verify"||L==="forgot"||L==="invite"&&H==="existing_user_signed_out")&&a.jsxs("label",{className:Xe.loginField,children:[a.jsx("span",{className:Xe.loginFieldLabel,children:"Email"}),a.jsx("input",{className:`${E.input} ${Xe.loginInput}`,type:"email",value:N,placeholder:"Email",autoComplete:"email","data-testid":"auth-email-input",onChange:ye=>I(ye.target.value)})]}),L==="register"&&a.jsxs("label",{className:Xe.loginField,children:[a.jsx("span",{className:Xe.loginFieldLabel,children:"Display name"}),a.jsx("input",{className:`${E.input} ${Xe.loginInput}`,type:"text",value:$,placeholder:"Display name",autoComplete:"nickname","data-testid":"auth-display-name-input",onChange:ye=>j(ye.target.value)})]}),(L==="login"||L==="register"||L==="reset"||L==="invite"&&(Te||H==="existing_user_signed_out"))&&a.jsxs("div",{className:Xe.loginField,children:[a.jsx("label",{className:Xe.loginFieldLabel,htmlFor:"auth-password-input",children:L==="reset"?"New password":L==="invite"&&Te?"Create password":"Password"}),a.jsx(ap,{id:"auth-password-input",className:`${E.input} ${Xe.loginInput}`,value:x,placeholder:L==="reset"?"New password":L==="invite"&&Te?"Create password":"Password",autoComplete:L==="register"||L==="reset"||L==="invite"&&Te?"new-password":"current-password",visibilityLabel:L==="reset"||L==="invite"&&Te?"new password":"password","data-testid":"auth-password-input",visibilityToggleTestId:"auth-password-visibility-toggle",onChange:ye=>V(ye.target.value)},`${L}-${Te?"new":"current"}`)]}),(L==="register"||L==="reset"||L==="invite"&&Te)&&a.jsxs("div",{className:Xe.loginField,children:[a.jsx("label",{className:Xe.loginFieldLabel,htmlFor:"auth-confirm-password-input",children:"Confirm password"}),a.jsx(ap,{id:"auth-confirm-password-input",className:`${E.input} ${Xe.loginInput}`,value:U,placeholder:"Confirm password",autoComplete:"new-password",visibilityLabel:"confirm password","data-testid":"auth-confirm-password-input",visibilityToggleTestId:"auth-confirm-password-visibility-toggle",onChange:ye=>ne(ye.target.value)},`${L}-confirm`)]}),(L==="register"||L==="reset"||L==="invite"&&Te)&&a.jsx("p",{className:Xe.loginSubtitle,children:ya.join(" ")}),L==="verify"&&a.jsxs("label",{className:Xe.loginField,children:[a.jsx("span",{className:Xe.loginFieldLabel,children:"Verification token"}),a.jsx("input",{className:`${E.input} ${Xe.loginInput}`,type:"text",value:J,placeholder:"Verification token",autoComplete:"one-time-code","data-testid":"auth-verification-token-input",onChange:ye=>ue(ye.target.value)})]}),L==="reset"&&a.jsxs("label",{className:Xe.loginField,children:[a.jsx("span",{className:Xe.loginFieldLabel,children:"Reset token"}),a.jsx("input",{className:`${E.input} ${Xe.loginInput}`,type:"text",value:re,placeholder:"Reset token",autoComplete:"one-time-code","data-testid":"auth-reset-token-input",onChange:ye=>F(ye.target.value)})]}),L==="invite"&&a.jsxs(a.Fragment,{children:[a.jsxs("label",{className:Xe.loginField,children:[a.jsx("span",{className:Xe.loginFieldLabel,children:"Invite token"}),a.jsx("input",{className:`${E.input} ${Xe.loginInput}`,type:"text",value:D,placeholder:"Invite token","data-testid":"auth-invite-token-input",onChange:ye=>z(ye.target.value)})]}),we&&a.jsxs("p",{className:Xe.loginSubtitle,children:["Invite for: ",a.jsx("strong",{children:we}),ee?` · Workspace: ${ee}`:""]})]}),He&&a.jsx("p",{className:Xe.loginSubtitle,children:He}),me&&a.jsx("p",{className:Xe.loginError,role:"alert",children:me}),L==="login"&&ot==="EMAIL_NOT_VERIFIED"&&N.trim()&&a.jsx("button",{type:"button",className:Xe.authModeLink,disabled:A||As,onClick:async()=>{G(!0),Fe(null);const ye=await Ar(N);ye.success?(Ne(Date.now()+3e4),Rn("verify"),ye.verificationToken&&ue(ye.verificationToken),Fe(ss(ye)),ve(null),Oe(null)):ve(Ka(ye)),G(!1)},children:As?`Resend in ${Er}s`:"Resend Verification Email"}),a.jsx("div",{className:Xe.authPrimaryActions,role:"group","aria-label":"Primary authentication action",children:a.jsx("button",{type:"submit",className:`${E.submitBtn} ${Xe.loginPrimaryBtn}`,disabled:A||L==="forgot"&&_a,"data-testid":"auth-submit-button",children:A?"Working...":L==="login"?"Sign In":L==="register"?"Create Account":L==="verify"?"Verify Email":L==="forgot"?_a?`Retry in ${Ga}s`:"Send Reset Link":L==="reset"?"Reset Password":H==="existing_user_signed_out"?"Sign In to Continue":Te?"Create Account and Join":"Join Workspace"})}),(L==="login"||L==="register")&&Tn.length>0&&a.jsxs("div",{className:Xe.oauthProviders,children:[a.jsx("div",{className:Xe.oauthDivider,children:a.jsx("span",{children:"or continue with"})}),a.jsxs("div",{className:Xe.oauthButtons,children:[Tn.includes("google")&&a.jsx("button",{type:"button",className:Xe.oauthButton,disabled:A,onClick:()=>on("google",ut),"aria-label":"Continue with Google",children:"Google"}),Tn.includes("github")&&a.jsx("button",{type:"button",className:Xe.oauthButton,disabled:A,onClick:()=>on("github",ut),"aria-label":"Continue with GitHub",children:"GitHub"}),Tn.includes("apple")&&a.jsx("button",{type:"button",className:Xe.oauthButton,disabled:A,onClick:()=>on("apple",ut),"aria-label":"Continue with Apple",children:"Apple"})]})]}),L==="invite"&&H==="new_user"&&Ue.length>0&&a.jsxs("div",{className:Xe.oauthProviders,children:[a.jsx("div",{className:Xe.oauthDivider,children:a.jsx("span",{children:"or join with"})}),a.jsxs("div",{className:Xe.oauthButtons,children:[Ue.includes("google")&&a.jsx("button",{type:"button",className:Xe.oauthButton,disabled:A,onClick:()=>on("google","/",D),"aria-label":"Join with Google",children:"Google"}),Ue.includes("github")&&a.jsx("button",{type:"button",className:Xe.oauthButton,disabled:A,onClick:()=>on("github","/",D),"aria-label":"Join with GitHub",children:"GitHub"}),Ue.includes("apple")&&a.jsx("button",{type:"button",className:Xe.oauthButton,disabled:A,onClick:()=>on("apple","/",D),"aria-label":"Join with Apple",children:"Apple"})]})]}),L==="register"&&a.jsxs("p",{className:Xe.registerConsent,children:["By creating an account, you agree to the"," ",a.jsx("a",{className:Xe.registerConsentLink,href:"https://taskforcehq.ai/legal/terms/",target:"_blank",rel:"noopener noreferrer",children:"Terms of Service"})," ","and acknowledge the"," ",a.jsx("a",{className:Xe.registerConsentLink,href:"https://taskforcehq.ai/legal/privacy/",target:"_blank",rel:"noopener noreferrer",children:"Privacy Policy"}),"."]}),a.jsxs("div",{className:Xe.authSecondaryActions,role:"group","aria-label":"Authentication navigation",children:[ws&&(L==="login"||L==="register")&&a.jsxs("p",{className:Xe.authModeSwitch,children:[L==="login"?"Need an account?":"Already have an account?"," ",a.jsx("button",{type:"button",className:Xe.authModeSwitchLink,disabled:A,"data-testid":"auth-switch-mode-button",onClick:()=>{ve(null),Oe(null),Fe(null),Rn(L==="login"?"register":"login")},children:L==="login"?"Register":"Sign In"})]}),a.jsxs("div",{className:Xe.authModeLinks,children:[(L==="login"||L==="register")&&a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:Xe.authModeLink,disabled:A||_a,"data-testid":"auth-forgot-password-button",onClick:()=>{ve(null),Oe(null),Fe(null),Rn("forgot")},children:_a?`Forgot Password (${Ga}s)`:"Forgot Password"}),a.jsx("button",{type:"button",className:Xe.authModeLink,disabled:A||As,"data-testid":"auth-resend-verification-button",onClick:()=>{ve(null),Oe(null),Fe(null),Rn("verify")},children:As?`Resend Verification (${Er}s)`:"Resend Verification"}),a.jsx("button",{type:"button",className:Xe.authModeLink,disabled:A,"data-testid":"auth-accept-invite-button",onClick:()=>{ve(null),Oe(null),Fe(null),Rn("invite")},children:"Accept Invite"})]}),L!=="login"&&L!=="register"&&a.jsxs(a.Fragment,{children:[L==="verify"&&a.jsx("button",{type:"button",className:Xe.authModeLink,disabled:A||As||!N.trim(),"data-testid":"auth-resend-verification-button",onClick:async()=>{G(!0),Fe(null),ve(null),Oe(null);const ye=await Ar(N);ye.success?(Ne(Date.now()+3e4),ye.verificationToken&&ue(ye.verificationToken),Fe(ss(ye))):ve(Ka(ye)),G(!1)},children:As?`Resend Verification (${Er}s)`:"Resend Verification"}),a.jsx("button",{type:"button",className:Xe.authModeLink,disabled:A,"data-testid":"auth-return-sign-in-button",onClick:()=>{ve(null),Oe(null),Fe(null),Rn("login")},children:L==="verify"?"Back to Sign In":"Sign In"}),ws&&L!=="verify"&&a.jsx("button",{type:"button",className:Xe.authModeLink,disabled:A,"data-testid":"auth-return-register-button",onClick:()=>{ve(null),Oe(null),Fe(null),Rn("register")},children:"Register"}),L==="reset"&&a.jsx("button",{type:"button",className:Xe.authModeLink,disabled:A||_a,"data-testid":"auth-return-forgot-password-button",onClick:()=>{ve(null),Oe(null),Fe(null),Rn("forgot")},children:_a?`Forgot Password (${Ga}s)`:"Forgot Password"})]})]})]})]})})});if(Ma==="login-redirect")return a.jsx("div",{className:Xr.standaloneWrapper,"data-theme":wn,children:a.jsx("div",{className:Xe.loginView,children:a.jsxs("div",{className:Xe.loginCard,children:[a.jsxs("div",{className:Xe.authBrandRow,children:[a.jsx("img",{src:pe,alt:"Taskforce",className:Xe.loginLogo}),a.jsx("h1",{className:Xe.loginTitle,children:"Loading Taskforce"})]}),a.jsx("p",{className:Xe.loginSubtitle,children:"Redirecting to sign in..."})]})})});if(Ma==="coming-soon")return a.jsx("div",{className:Xr.standaloneWrapper,"data-theme":wn,children:a.jsx("div",{className:Xe.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${cv})`},children:a.jsxs("div",{className:Xe.loginCard,children:[a.jsxs("div",{className:Xe.authBrandRow,children:[a.jsx("img",{src:pe,alt:"Taskforce",className:Xe.loginLogo}),a.jsx("h1",{className:Xe.loginTitle,children:"Beta Access"})]}),a.jsx("p",{className:Xe.loginSubtitle,children:"You are signed in, but your account does not have beta access yet."}),a.jsx("p",{className:Xe.loginSubtitle,children:"You will see the full app as soon as beta access is enabled."}),a.jsx("button",{className:E.cancelBtn,onClick:async()=>{await $r.logout(),P("/login",{replace:!0})},children:"Sign Out"})]})})});if(Ma==="guided-setup"){const ye=!An&&(oa||xn==="error"),St=!An&&!ye&&(Wn||xn==="global"),Vt=_t(ye?"setup.headingCheckFailed":St?"setup.headingGlobalRequired":"setup.headingWorkspaceRequired"),sr=ye?_t("setup.subtitleUnreadable"):St?_t("setup.subtitleGlobalRequired"):null,Ir="Workspace",Ln=yt||it!=="cloud",Ta=Ln&&bt==="details",qn=Ln&&bt==="library",Pn=!yt&&Jt&&Ta&&!er,kn=Fr?.runtimeMode==="cloud"?eC:nx,fi=pn?lv(pn.categories):"",$s=pn?lv(pn.types):"",gc=pn?lv(pn.priorities):"",ka=Ce?_t("setup.saving"):Kn?er?Ca?"Retry Import":"Importing Workspace...":"Connect Workspace":Ta?"Continue":qn?"Create Workspace":"Connect Workspace";return a.jsx("div",{className:Xr.standaloneWrapper,"data-theme":wn,children:a.jsx("div",{className:Xe.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${cv})`},children:a.jsxs("div",{className:Xe.loginCard,children:[a.jsxs("div",{className:Xe.setupHeaderRow,children:[a.jsxs("div",{className:Xe.authBrandRow,children:[a.jsx("img",{src:pe,alt:"Taskforce",className:Xe.loginLogo}),a.jsxs("h1",{className:Xe.loginTitle,children:["TASKFORCE ",a.jsx("span",{className:Xe.loginTitleAccent,children:"HQ"})]})]}),Fr&&a.jsx("span",{className:Xe.runtimeIconBadge,title:Fr.runtimeMode==="cloud"?"Cloud runtime":"Local runtime","aria-label":Fr.runtimeMode==="cloud"?"Cloud runtime":"Local runtime",children:te.createElement(kn,{size:16,"aria-hidden":!0})})]}),a.jsx("p",{className:Xe.loginSubtitle,children:a.jsx("strong",{children:Vt})}),sr?a.jsx("p",{className:Xe.loginSubtitle,children:sr}):null,Be&&a.jsx("p",{className:Xe.loginSubtitle,children:Be}),Ie&&a.jsx("p",{className:Xe.loginError,children:Ie}),St&&a.jsxs("div",{className:Xe.optionGrid,children:[a.jsxs("label",{className:`${Xe.authModeLink} ${Xe.optionRow}`,children:[a.jsx("input",{type:"radio",name:"setup-mode",value:"core",checked:be==="core",onChange:()=>Ve("core"),disabled:Ce}),a.jsx("span",{children:_t("setup.coreModeOption",{workspaceLabel:Ir})})]}),a.jsxs("label",{className:`${Xe.authModeLink} ${Xe.optionRow}`,children:[a.jsx("input",{type:"radio",name:"setup-mode",value:"operations",checked:be==="operations",onChange:()=>Ve("operations"),disabled:Ce}),a.jsx("span",{children:_t("setup.operationsModeOption")})]})]}),!ye&&!St&&a.jsxs("div",{className:Xe.optionGrid,children:[Pn&&a.jsxs("div",{className:Xe.optionGroup,children:[a.jsxs("label",{className:`${Xe.authModeLink} ${Xe.optionRow}`,children:[a.jsx("input",{type:"radio",name:"workspace-setup-source",value:"local",checked:it==="local",onChange:()=>De("local"),disabled:Ce}),a.jsxs("span",{children:["Create new local ",Ir.toLowerCase()]})]}),a.jsxs("label",{className:`${Xe.authModeLink} ${Xe.optionRow}`,children:[a.jsx("input",{type:"radio",name:"workspace-setup-source",value:"cloud",checked:it==="cloud",onChange:()=>De("cloud"),disabled:Ce}),a.jsxs("span",{children:["Sync existing cloud ",Ir.toLowerCase()]})]})]}),Kn?a.jsxs("div",{className:Xe.optionGroup,children:[!er&&!Jt&&a.jsx("p",{className:Xe.loginError,children:"Cloud workspace sync is unavailable right now. Switch back to local setup or refresh runtime configuration."}),!er&&Jt&&!Bt&&a.jsxs(a.Fragment,{children:[a.jsx("p",{className:Xe.inlineHint,children:"Sign in to choose one of your cloud projects."}),a.jsxs("div",{className:Xe.actionRowEnd,children:[a.jsx("button",{className:E.cancelBtn,disabled:Ce,onClick:()=>{P(`/login?mode=login&next=${encodeURIComponent(fn)}`,{replace:!0})},children:"Sign In"}),ws&&a.jsx("button",{className:E.submitBtn,disabled:Ce,onClick:()=>{P(`/login?mode=register&next=${encodeURIComponent(fn)}`,{replace:!0})},children:"Register"})]})]}),!er&&Jt&&Bt&&a.jsxs(a.Fragment,{children:[a.jsxs("select",{className:E.input,value:et,onChange:cr=>Y(cr.target.value),disabled:Ce||le||mt.length===0,children:[mt.length===0&&a.jsx("option",{value:"",children:le?"Loading cloud projects...":"No cloud projects found"}),mt.map(cr=>a.jsxs("option",{value:cr.id,children:[cr.name," (",cr.id,")"]},cr.id))]}),a.jsx("div",{className:Xe.actionRowEnd,children:a.jsx("button",{className:E.cancelBtn,disabled:Ce||le,onClick:()=>{Ss()},children:"Refresh Cloud Projects"})}),It&&a.jsx("p",{className:Xe.loginError,children:It})]}),er&&a.jsxs(a.Fragment,{children:[a.jsxs("p",{className:Xe.inlineHint,children:['Importing "',er.name,'" from cloud into local.']}),a.jsx("div",{className:Xe.optionGroup,children:Ha.map(cr=>a.jsx("p",{className:Xe.inlineHint,children:cr},cr))}),a.jsx("p",{className:Xe.inlineHint,children:Dt?"Finishing setup and opening your workspace.":Ut||"Pulling tasks, taxonomies, and settings into local."}),!Dt&&dr&&a.jsx("p",{className:Xe.inlineHint,children:dr})]})]}):a.jsxs(a.Fragment,{children:[Ta&&a.jsxs(a.Fragment,{children:[a.jsx("p",{className:Xe.loginSubtitle,children:"Workspace name"}),a.jsx("input",{className:E.input,type:"text",value:Qe,placeholder:"Workspace name",onChange:cr=>Ze(cr.target.value),disabled:Ce}),a.jsx("p",{className:Xe.loginSubtitle,children:"Workspace description"}),a.jsx("textarea",{className:E.textarea,value:Pe,placeholder:"Workspace description (optional)",onChange:cr=>gt(cr.target.value),disabled:Ce,rows:4})]}),qn&&a.jsxs("div",{className:Xe.optionGroup,children:[a.jsx("p",{className:Xe.loginSubtitle,children:"What are you working on?"}),a.jsxs("select",{className:E.input,value:rt,onChange:cr=>pt(cr.target.value),disabled:Ce||Ft||Dr.length===0,children:[Dr.length===0&&a.jsx("option",{value:"",children:Ft?"Loading setup options...":"No setup options available"}),Dr.map(cr=>a.jsx("option",{value:cr.id,children:cr.label},cr.id))]}),pn?a.jsx(a.Fragment,{children:pn.description?a.jsx("p",{className:Xe.inlineHint,children:pn.description}):null}):null,a.jsxs("div",{className:Xe.optionGroup,children:[a.jsx("p",{className:Xe.loginSubtitle,children:"Apply Setup Sections"}),a.jsxs("label",{className:`${Xe.authModeLink} ${Xe.optionRow}`,children:[a.jsx("input",{type:"checkbox",checked:ht.categories,onChange:()=>At(cr=>({...cr,categories:!cr.categories})),disabled:Ce||!pn?.categories.length}),a.jsx("span",{children:"Categories"})]}),fi?a.jsx("p",{className:Xe.inlineHint,children:fi}):null,a.jsxs("label",{className:`${Xe.authModeLink} ${Xe.optionRow}`,children:[a.jsx("input",{type:"checkbox",checked:ht.types,onChange:()=>At(cr=>({...cr,types:!cr.types})),disabled:Ce||!pn?.types.length}),a.jsx("span",{children:"Task Types"})]}),$s?a.jsx("p",{className:Xe.inlineHint,children:$s}):null,a.jsxs("label",{className:`${Xe.authModeLink} ${Xe.optionRow}`,children:[a.jsx("input",{type:"checkbox",checked:ht.priorities,onChange:()=>At(cr=>({...cr,priorities:!cr.priorities})),disabled:Ce||!pn?.priorities.length}),a.jsx("span",{children:"Priorities"})]}),gc?a.jsx("p",{className:Xe.inlineHint,children:gc}):null]}),Ft?a.jsx("p",{className:Xe.inlineHint,children:"Loading setup options…"}):null,$t?a.jsx("p",{className:Xe.loginError,children:$t}):null]}),!yt&&Jt&&Bt&&Ta&&a.jsxs("div",{className:Xe.optionGroup,children:[a.jsxs("label",{className:`${Xe.authModeLink} ${Xe.optionRow}`,children:[a.jsx("input",{type:"checkbox",checked:Mt,onChange:cr=>gr(cr.target.checked),disabled:Ce}),a.jsx("span",{children:"Sync to cloud after setup"})]}),a.jsx("p",{className:Xe.inlineHint,children:"When enabled, this project will connect to cloud sync as soon as setup finishes."})]})]})]}),a.jsxs("div",{className:Xe.authModeLinks,children:[qn?a.jsx("button",{className:E.cancelBtn,onClick:()=>{de(null),at(null),Et("details")},children:"Back"}):An?a.jsx("button",{className:E.cancelBtn,onClick:()=>{de(null),at(null),P("/",{replace:!0})},children:"Cancel"}):u==="cloud"?a.jsx("button",{className:E.cancelBtn,onClick:async()=>{await $r.logout(),P("/login",{replace:!0})},children:_t("setup.signOut")}):null,St?a.jsx("button",{className:E.submitBtn,disabled:Ce||na&&!!er&&!Ca,onClick:async()=>{xe(!0),at(null),de(null);try{const cr=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({setup:{mode:be}})}),vn=await cr.json().catch(()=>({}));!cr.ok||vn?.success===!1?de(vn?.error||_t("setup.saveFailedWithStatus",{status:cr.status})):(at(_t("setup.globalSetupSaved")),await en())}catch{de(_t("setup.saveFailed"))}finally{xe(!1)}},children:_t(Ce?"setup.saving":"setup.saveGlobalSetup")}):ye?a.jsx("button",{className:E.submitBtn,disabled:Ce,onClick:en,children:_t("setup.retrySetupCheck")}):a.jsx("button",{className:E.submitBtn,disabled:Ce||na&&!er&&!Bt,onClick:async()=>{if(na&&er){if(!Ca)return;xe(!0),at(`Retrying import for ${er.name}...`),de(null);try{await vs()}catch{at(null),de(`Failed to retry import for "${er.name}".`)}finally{xe(!1)}return}if(Kn){if(!Jt){de("Cloud workspace sync is unavailable right now."),xe(!1);return}if(!Bt){de("Sign in is required before syncing a cloud project."),xe(!1);return}const cr=mt.find(La=>La.id===et);if(!cr){de("Select a cloud project to sync."),xe(!1);return}const vn=await Ge({workspaceId:cr.id,name:cr.name||cr.id,description:cr.description||void 0});if(!vn.success){de(vn.error||_t("setup.saveWorkspaceFailed")),xe(!1);return}const dn=String(vn.workspaceId||cr.id||"").trim();if(!dn){de("Failed to resolve workspace id for sync setup."),xe(!1);return}try{await Cr(dn,{version:2,enabled:!0,phase:"attach-cloud",setupIntent:"attach-cloud-import",pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null,lastErrorMessage:null})}catch(La){de(La instanceof Error?La.message:"Failed to configure workspace sync."),xe(!1);return}Kr({enabled:!0,phase:"attach-cloud",setupIntent:"attach-cloud-import",pullCursor:null}),await en(),or({workspaceId:dn,name:cr.name||cr.id}),lr(!1),at(`Importing ${cr.name||cr.id} from cloud...`),xe(!1);return}if(Ta){if(!Qe.trim()){de("Workspace name is required before continuing.");return}de(null),at(null),Et("library");return}xe(!0),at(null),de(null);{const cr=An||Gt?.workspaceSetupState==="missing",vn=An||Rt&&cr,dn=vn?await tn(Qe,Pe||void 0):null,La=vn?null:await Ge({workspaceId:cr?void 0:Gt?.workspaceId,name:Qe,description:Pe}),$n=dn||La;if($n?.success){const va=String(dn?.workspace?.id||La?.workspaceId||Gt?.workspaceId||"").trim();if(!va){de("Failed to resolve workspace id for setup."),xe(!1);return}if(!!pn&&(ht.categories||ht.types||ht.priorities)&&pn){const Fn=await ea.onApplySystemTaxonomyPack({pack:pn,sections:ht,remapExistingValuesToDefault:!0,workspaceIdOverride:va});if(!Fn?.success){de(Fn?.error||"Failed to apply setup library."),xe(!1);return}}const xa=!!(!yt&&Mt&&Jt&&Bt),Ra=await fetch("/api/taskforce/ui-state",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:va,stateKey:"workspace-sync",patch:{version:2,enabled:xa,phase:xa?"provision-local":"idle",setupIntent:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null}})}),Oa=await Ra.json().catch(()=>({}));if(!Ra.ok||Oa?.success===!1){de(Oa?.error||`Failed to configure workspace sync (${Ra.status})`),xe(!1);return}Kr({enabled:xa,phase:xa?"provision-local":"idle",setupIntent:null,pullCursor:null}),at(xa?`${Ir} setup saved. Cloud sync enabled.`:_t("setup.workspaceSetupSaved",{workspaceLabel:Ir})),An&&(await en(),await ta(!0),Jr(ut,{replace:!0}))}else{if($n?.code==="WORKSPACE_LIMIT_REACHED"){xe(!1),P(T,{replace:!0});return}de($n?.error||_t("setup.saveWorkspaceFailed"))}}xe(!1)},children:ka})]})]})})})}return a.jsx(Vte,{...$r,initialActivityEntryId:h,onHeaderMouseDown:s,isDragging:i,onClose:l})}function Kte(e){return ux()?a.jsx(FA,{...e}):a.jsx(px,{children:a.jsx(FA,{...e})})}const kT={},UA="STAGING_MARKER_2026_02_24";typeof window<"u"&&(window.__TASKFORCE_BUILD_MARKER=UA,console.info(`[Taskforce] Build marker: ${UA}`));function qte(){if(typeof window<"u"){const t=window.location.hostname.toLowerCase();if(t==="localhost"||t==="127.0.0.1"||t==="::1")return}return bw(kT).apiBaseUrl||void 0}function Yte(e){const t=bw(kT),r=t.cloudAuthBaseUrl;if(r)if(typeof window<"u"){const n=window.location.hostname.toLowerCase(),s=n==="localhost"||n==="127.0.0.1"||n==="::1",i="".trim().toLowerCase()==="true";if(!s&&!i)try{const l=new URL(r,window.location.origin);if(l.origin!==window.location.origin)console.warn(`[Taskforce] Ignoring cross-origin cloud auth base in hosted runtime: ${l.origin}`);else return r}catch{}else return r}else return r;if(t.baseUrl)return t.baseUrl;if(e)return e}function Zte(){const e=qte(),t=Yte(e);return a.jsx(fx,{children:a.jsx(Kte,{mode:"standalone",config:{apiEndpoint:"/api/taskforce/task",apiBaseUrl:e,cloudAuthBaseUrl:t}})})}i0.createRoot(document.getElementById("root")).render(a.jsx(te.StrictMode,{children:a.jsx(Zte,{})}));export{xj as $,mre as A,_v as B,Tv as C,op as D,gI as E,dre as F,hI as G,kI as H,fp as I,HP as J,vI as K,KP as L,Uo as M,jw as N,qP as O,fre as P,Iv as Q,Kw as R,ure as S,li as T,pre as U,uq as V,nj as W,mY as X,N8 as Y,S_ as Z,hV as _,ey as a,s_ as a$,mI as a0,fJ as a1,gV as a2,kre as a3,vre as a4,wre as a5,bre as a6,Sre as a7,RC as a8,rm as a9,ys as aA,pT as aB,Cee as aC,Uee as aD,ym as aE,Xw as aF,Md as aG,uT as aH,X_ as aI,Xv as aJ,GQ as aK,KQ as aL,qQ as aM,Oq as aN,ww as aO,Vv as aP,wA as aQ,bA as aR,eJ as aS,kJ as aT,hC as aU,Vh as aV,sre as aW,are as aX,_h as aY,zv as aZ,Gf as a_,xC as aa,yp as ab,wZ as ac,oI as ad,sI as ae,lre as af,E8 as ag,Z1 as ah,ore as ai,yre as aj,R8 as ak,ire as al,cre as am,fT as an,sy as ao,fm as ap,Zee as aq,Jv as ar,Qw as as,EA as at,Jh as au,kh as av,Fo as aw,gs as ax,Ree as ay,Mee as az,So as b,om as b0,r_ as b1,t_ as b2,Zz as b3,Jz as b4,p9 as b5,mV as b6,UP as b7,dR as c,lm as d,Sx as e,YR as f,hre as g,_r as h,ip as i,a8 as j,Tte as k,OI as l,xte as m,_6 as n,Ad as o,sj as p,gre as q,Jn as r,Bf as s,E as t,s8 as u,tG as v,uy as w,qR as x,Cv as y,zj as z};