@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
@@ -1,7 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/EntityActivityTimeline-pJ2ZjZ-k.js","assets/vendor-react-CKJs5o3c.js","assets/vendor-icons-B8ZNsH1g.js","assets/vendor-markdown-_lhNCyq-.js","assets/vendor-dnd-CJ-AjP-Y.js","assets/vendor-router-AqJMU8Lz.js","assets/EntityActivityTimeline-BfJbZRdl.css","assets/TaskContextUpload-bl4fOOUz.js","assets/ContextAttachmentManager-CMxSzHqc.js","assets/TaskContextUpload-Ds4LnDzV.css","assets/TaskSettings-xVsxSa0g.js","assets/TaskSettings-CnIBL_Eb.css","assets/AnnotatedAttachmentWorkspace-DHNYaNg6.js","assets/AssetTraySortControl-DphbyHVc.js","assets/AssetTraySortControl-B9k5caQW.css","assets/AnnotatedAttachmentWorkspace-CBRZ8rca.css","assets/DocumentWorkspace-BC7sy5TG.js","assets/DocumentWorkspace-BIBGBfd7.css","assets/TaskforceAgentsModule-CkAxW19K.js","assets/AiIdentityRosterCard-DB1BLO_j.js","assets/TaskforceAgentsModule-D6IC0S7Q.css","assets/WorkflowManagerModule-BKqIGVnF.js","assets/WorkflowManagerModule-DF10XENz.css","assets/AiProfilesModule-DPxQeF9N.js","assets/PlanningModule-t5GbvVR9.js","assets/PlanningModule-CeTqXMMz.css","assets/PlansPage-BVH_NfgT.js","assets/PlansPage-C2nkK2Bp.css"])))=>i.map(i=>d[i]);
2
- import{r as o,j as n,R as Q,a as yc,b as dT}from"./vendor-react-CKJs5o3c.js";import{I as To,C as ad,a as dd,S as lg,F as uT,A as Xc,R as mi,L as Au,T as Lf,b as pk,c as gc,d as pT,P as Ko,e as hi,f as Xk,g as WS,h as Ln,i as sd,j as fT,k as mT,l as hT,m as $S,B as Yl,U as wu,n as FS,o as gT,X as fo,G as ev,p as pf,q as od,r as yT,s as US,t as Sf,D as kT,E as Bw,u as vT,v as Af,w as wT,x as zS,y as HS,z as bT,H as ST,K as AT,J as VS,M as CT,N as _T,O as IT,Q as TT,V as GS,W as xT,Y as tv,Z as lo,_ as KS,$ as RT,a0 as qS,a1 as PT,a2 as ET,a3 as NT,a4 as Py,a5 as jT,a6 as Ww,a7 as $w,a8 as MT,a9 as DT,aa as LT,ab as OT,ac as BT,ad as YS,ae as WT,af as Fw,ag as $T,ah as FT,ai as UT}from"./vendor-icons-B8ZNsH1g.js";import{s as zT,M as HT,r as Uw,a as VT}from"./vendor-markdown-_lhNCyq-.js";import{u as rv,a as Cf,P as nv,b as ZS,D as av,c as JS,S as sv,v as ov,d as iv,C as dg,e as cv,s as QS,K as XS,f as GT,p as KT,g as zw,h as qT,i as eA,j as YT}from"./vendor-dnd-CJ-AjP-Y.js";import{u as tA,a as rA,b as ZT,M as JT,N as Hw,B as QT}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"]'))a(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"&&a(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 a(s){if(s.ep)return;s.ep=!0;const i=r(s);fetch(s.href,i)}})();const bu="default",ug="General",po="task",XT=2,e0=[{value:bu,label:ug,icon:"Inbox"}],nA=[{value:po,label:"Task",icon:"CheckSquare",color:"blue-500"}],t0=[{value:XT,label:"Medium",color:"blue-500",icon:"Minus"}];function r0(){return e0.map(e=>({...e}))}function n0(){return nA.map(e=>({...e}))}function a0(e){const t=String(e||"").trim().toLowerCase();return nA.find(r=>r.value===t)}function aA(){return t0.map(e=>({...e}))}const s0={categories:r0(),types:n0(),priorities:aA(),taxonomies:[],apiEndpoint:"/api/taskforce/task",apiBaseUrl:void 0,cloudAuthBaseUrl:void 0,cloudMcpBaseUrl:void 0,wsBaseUrl:void 0,position:"bottom-right",offsetY:70,theme:"dawn",shortcut:"Alt+T",manualComplexityEnabled:!1,checklistDropdownEnabled:!0,showTaskCardStatusLabel:!1},o0=["light","dawn","dark","midnight"],Dh="dawn",i0=[{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"}],c0=new Set(o0),l0=new Set(i0.filter(e=>e.family==="light").map(e=>e.id));function d0(e){return typeof e=="string"&&c0.has(e)}function hu(e){if(typeof e!="string")return null;const t=e.trim().toLowerCase();return d0(t)?t:null}function sA(e){const t=hu(e);return t!==null&&l0.has(t)}function Lh(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 u0=new RegExp("(?<![\\w-])((?:IN|WS|D|I)-\\d+)(?![\\w-])","gi"),p0={IN:"initiative",WS:"workstream",D:"document",I:"image"};function oA(e){const r=String(e||"").trim().toUpperCase().match(/^(IN|WS|D|I)-(\d+)$/);if(!r)return null;const a=Lh(r[2]);return a?{kind:p0[r[1]],token:`${r[1]}-${a}`,referenceNumber:a}:null}function Cu(e,t){const r=Lh(typeof t=="object"&&t!==null?t.referenceNumber:t);return r?`${e}${r}`:""}function pg(e,t){const r=String(e||"").trim(),a=String(t||"").trim();if(!r||!a)return null;const s=r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),i=a.match(new RegExp(`^${s}(\\d+)$`,"i"));return i?Lh(i[1]):null}function Of(e,t){return t?typeof t.referenceLabel=="string"&&t.referenceLabel.trim().length>0?t.referenceLabel.trim():Cu(e,t.referenceNumber):""}const lv="T-",fk="LT-",f0=/^task-[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i,m0=/^task-\d{10,}-[a-z0-9]+$/i,h0=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 iA(e){const t=String(e||"").trim();return fg(t)!==null||lA(t)!==null||f0.test(t)||m0.test(t)}function g0(e,t){const r=String(t||"").trim();if(!r||!iA(r))return null;const a=r.toLowerCase(),s=fg(r),i=lA(r),l=e.filter(c=>c.id.toLowerCase()===a||s!==null&&c.referenceNumber===s||i!==null&&c.localReferenceNumber===i?!0:hs(c).toLowerCase()===a);return l.length===1?l[0].id:null}function y0(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(cA(s.referenceNumber),s.id),s.localReferenceNumber&&r(dv(s.localReferenceNumber),s.id),r(hs(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||!iA(i)?null:t.get(i.toLowerCase())??null}}}function cA(e){return Cu(lv,e)}function dv(e){return typeof e=="number"||e===null||e===void 0?Cu(fk,e):Cu(fk,{referenceNumber:e.localReferenceNumber??null})}function fg(e){return pg(lv,e)}function lA(e){return pg(fk,e)}function hs(e){if(!e)return"";if(typeof e.referenceLabel=="string"&&e.referenceLabel.trim().length>0)return e.referenceLabel.trim();const t=Of(lv,e);return t||dv(e.localReferenceNumber)}function k0(e){return!e?.referenceNumber&&!!e?.localReferenceNumber}function uv(e){return{label:hs(e),isProvisional:k0(e)}}aA();const v0={low:1,medium:2,high:3,critical:4,"on-hold":1};function w0(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 Oh(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)):v0[String(e||"").trim().toLowerCase()]??2}function xo(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?cA(t):dv(r),assignee:(()=>{const a=String(e.assignee||"").trim(),s=a.toLowerCase();return s==="agent"||s==="ai"?"agent":!a||s==="user"||s==="human"||s==="unassigned"||s==="none"||s==="null"?"unassigned":a})(),category:typeof e.category=="string"?e.category:e.category?.value||"default",type:(typeof e.type=="string"?e.type:e.type?.label||"task").toLowerCase(),priority:Oh(e.priority),complexity:typeof e.complexity=="number"?e.complexity:3,status:w0(e.status)}}function _f(e){return JSON.stringify(e)}function Vw(e,t){if(e.length===0)return t.length===0?e:t;const r=new Map(e.map(i=>[i.id,i]));let a=e.length!==t.length;const s=t.map((i,l)=>{const c=r.get(i.id),d=c&&_f(c)===_f(i)?c:i;return d!==e[l]&&(a=!0),d});return a?s:e}function b0(e,t,r){if(!e||typeof e!="object")return{tasks:t,archivedTasks:r};const a=xo(e),s=String(a.id||"").trim();if(!s)return{tasks:t,archivedTasks:r};const i=!!a.isArchived,l=i?{...a,isArchived:!0}:{...a,isArchived:!1},c=(i?r:t).find(h=>h.id===s),d=(i?t:r).some(h=>h.id===s);if(c&&!d&&_f(c)===_f(l))return{tasks:t,archivedTasks:r};const f=h=>[...h].sort((y,k)=>{const v=Date.parse(String(y.updatedAt||y.createdAt||"")),C=Date.parse(String(k.updatedAt||k.createdAt||""));if(Number.isFinite(v)&&Number.isFinite(C)&&v!==C)return C-v;if(Number.isFinite(v)!==Number.isFinite(C))return Number.isFinite(C)?1:-1;const S=Date.parse(String(k.createdAt||""))-Date.parse(String(y.createdAt||""));return Number.isFinite(S)&&S!==0?S: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 S0(e,t){if(!t.length||!e.length)return[];const r=new Set(t.map(s=>Number(s.value))),a=Array.from(new Set(e.map(s=>Number(s)).filter(s=>Number.isFinite(s)&&r.has(s))));return a.length>0?a:t.map(s=>Number(s.value))}function Ey(e,t){return t.some(r=>String(r)===String(e))}function A0(e,t){if(!e.length||!t.length)return e;const r=new Set(t.map(s=>s.value)),a=Array.from(new Set(e.filter(s=>r.has(s))));return a.length>0?a:t.map(s=>s.value)}const C0={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"}},_0={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"}},I0={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"}},dA=["en-US","es-419","pt-BR"],Bh="en-US",Ny={"en-US":C0,"es-419":_0,"pt-BR":I0},uA={en:"en-US",es:"es-419",pt:"pt-BR"};let ed=Bh;function T0(e){return e.split(".").filter(Boolean)}function jy(e,t){let r=e;for(const a of t){if(!r||typeof r!="object")return;r=r[a]}return typeof r=="string"?r:void 0}function pA(e){if(!e)return Bh;const t=dA.find(a=>a.toLowerCase()===e.toLowerCase());if(t)return t;const r=e.split("-")[0]?.toLowerCase()||"";return uA[r]||Bh}function My(e,t){return t?e.replace(/\{([^}]+)\}/g,(r,a)=>{const s=t[a];return s==null?"":String(s)}):e}function fA(){return ed}function x0(){return[...dA]}function mA(e){const t=pA(e);return ed=t,t}function R0(e){const t=typeof navigator<"u"?navigator.language:null;return ed=pA(t),ed}function _t(e,t){const r=T0(e),a=jy(Ny[ed],r);if(a)return My(a,t);const s=ed.split("-")[0]?.toLowerCase()||"",i=uA[s];if(i&&i!==ed){const c=jy(Ny[i],r);if(c)return My(c,t)}const l=jy(Ny[Bh],r);return l?My(l,t):e}const P0="default",id="bootstrap";function E0(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 mg(e){const t=String(e||"").trim().toLowerCase();return t?`${(t.replace(/[^a-z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")||"project").slice(0,56)}-${E0(t)}`:id}function pv(e){const t=String(e||"").trim().toLowerCase();if(!t)return id;const r=t.replace(/[^a-z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"");return r?r.slice(0,96):id}function hA(e){const t=String(e||"").trim();return t?mg(t):id}function N0(e){return(e.runtimeMode==="cloud"?"cloud":"local")==="cloud"?id:hA(e.projectRoot)}function j0(e){if((e.runtimeMode==="cloud"?"cloud":"local")==="cloud"){const r=String(e.workspaceId||"").trim();return r&&!fv(r)?mg(`cloud-workspace:${r}`):id}return hA(e.projectRoot)}function fv(e){return String(e||"").trim().toLowerCase()===P0}const M0={local:{runtimeMode:"local",authSource:"cloud",workspaceMode:"single-local",workspaceSwitchingEnabled:!1},cloud:{runtimeMode:"cloud",authSource:"cloud",workspaceMode:"multi-cloud",workspaceSwitchingEnabled:!0}};function D0(e){return String(e||"").trim().toLowerCase()==="cloud"?"cloud":"local"}function L0(e){return M0[D0(e)]}const If={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 hg(e){const t=String(e||"").trim().toLowerCase();return t==="production"||t==="staging"||t==="performance"?t:null}function O0(e){return hg(e)||"production"}function Gw(e){return If[O0(String(e||""))]}function B0(e){const t=String(e||"").trim().toLowerCase();if(!t)return null;for(const[r,a]of Object.entries(If))if(new URL(a.appBaseUrl).hostname.toLowerCase()===t||new URL(a.mcpBaseUrl).hostname.toLowerCase()===t)return r;return null}function mv(e){const t=String(e||"").trim();if(!t)return null;try{return B0(new URL(t).hostname)}catch{return null}}function W0(e){const t=mv(e);return t?If[t].mcpBaseUrl:null}function Wl(e,t){return String(e[t]||"").trim()}function Kw(e,t,r){e.push(t),r?.(t)}function $0(e,t){const r=[],a=Wl(e,"ENV"),s=hg(a);if(s)return Kw(r,`[Taskforce compat] ENV=${a} is deprecated; set TASKFORCE_CLOUD_ENVIRONMENT=${s} instead.`,t),{cloudEnvironment:s,warnings:r};const i=[{key:"TASKFORCE_CLOUD_PROXY_BASE_URL",value:Wl(e,"TASKFORCE_CLOUD_PROXY_BASE_URL")},{key:"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL",value:Wl(e,"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL")},{key:"VITE_TASKFORCE_CLOUD_MCP_BASE_URL",value:Wl(e,"VITE_TASKFORCE_CLOUD_MCP_BASE_URL")},{key:"VITE_TASKFORCE_API_BASE_URL",value:Wl(e,"VITE_TASKFORCE_API_BASE_URL")},{key:"VITE_TASKFORCE_BASE_URL",value:Wl(e,"VITE_TASKFORCE_BASE_URL")},{key:"TASKFORCE_BASE_URL",value:Wl(e,"TASKFORCE_BASE_URL")}];for(const l of i){if(!l.value)continue;const c=mv(l.value);if(c)return Kw(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 Mi(e,t){return String(e[t]||"").trim()}function F0(e){return e.toLowerCase()==="cloud"?"cloud":"local"}function su(e){return String(e||"").trim().replace(/\/+$/,"")}function U0(e){return String(e||"").trim().replace(/\/+$/,"")}function uc(...e){for(const t of e)if(String(t||"").trim())return String(t||"").trim();return""}function z0(e,t={}){const r=[],a=b=>{r.push(b),t.onWarning?.(b)},s=F0(Mi(e,"TASKFORCE_RUNTIME_MODE")),i=hg(Mi(e,"TASKFORCE_CLOUD_ENVIRONMENT")),l=i?{cloudEnvironment:i}:$0(e,a),c=i||l.cloudEnvironment,d=su(String(t.requestBaseUrl||"")),f=su(uc(Mi(e,"VITE_TASKFORCE_BASE_URL"),Mi(e,"TASKFORCE_BASE_URL"))),p=su(Mi(e,"VITE_TASKFORCE_API_BASE_URL")),g=su(Mi(e,"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL")),h=su(uc(Mi(e,"VITE_TASKFORCE_CLOUD_MCP_BASE_URL"),Mi(e,"TASKFORCE_CLOUD_MCP_BASE_URL"))),y=su(Mi(e,"TASKFORCE_CLOUD_PROXY_BASE_URL")),k=U0(Mi(e,"VITE_TASKFORCE_WS_BASE_URL")),v=c?If[c].appBaseUrl:"",C=c?If[c].mcpBaseUrl:"",S=uc(y,g,p,f,v),w=uc(h,C,S),_=uc(d,f,p,g,S),M=uc(d,p,f,S),R=uc(g,f,p,S),P=s==="local"?uc(k,d,p,f,y,g,v,S):uc(d,k,M,_,S);return{runtimeMode:s,cloudEnvironment:c,cloudBaseUrl:S,cloudMcpBaseUrl:w,baseUrl:_,apiBaseUrl:M,cloudAuthBaseUrl:R,wsBaseUrl:P,cloudAuthViaLocalProxy:s==="local"||!!y,warnings:r}}function hv(e){return z0({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 qw(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,a=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-${a}-${t}-e${r}-${s}`}function Dy(e,t){const r=String(t||"").trim();if(!r)return e;const a=new Headers(e?.headers||void 0);return a.has("x-taskforce-bootstrap-trace-id")||a.set("x-taskforce-bootstrap-trace-id",r),{...e||{},headers:a}}function H0(e){const t=String(e.activeWorkspaceId||"").trim();return{email:e.email,password:e.password,...t&&t!=="default"?{workspaceId:t}:{}}}const Wh="unassigned",gA="agent",Bf="UserRound",gg="color-mix(in srgb, var(--text-helper) 68%, transparent)",V0="user",G0=/^[0-9a-f]{8,}$/i,td={value:Wh,label:"Unassigned",icon:Bf,color:gg,kind:"unassigned"};function yA(e){const t=String(e||"").trim().toLowerCase();return t===gA||t==="ai"||t.startsWith("ai-profile-")}function gv(e){const t=String(e||"").trim().toLowerCase();return!t||t===Wh||t==="none"||t==="null"||t===V0}function mk(e){return yA(e)?"agent":gv(e)?"unassigned":"member"}function K0(e){const t=String(e.displayName||"").trim(),r=String(e.email||"").trim().toLowerCase();return t||r||String(e.userId||"").trim()||"Workspace member"}function el(){return[{...td}]}function q0(e){const t=new Map;for(const r of e){const a=String(r.userId||"").trim();a&&t.set(a,{value:a,label:K0(r),icon:"User",color:"#22c55e",kind:"member",avatarUrl:typeof r.avatarUrl=="string"&&r.avatarUrl.trim().length>0?r.avatarUrl.trim():null})}return _u(Array.from(t.values()))}function _u(e){const t=new Map;for(const a of el())t.set(a.value,a);for(const a of Array.isArray(e)?e:[]){const s=String(a?.value||"").trim(),i=typeof a?.archivedAt=="string"?a.archivedAt.trim():"";!s||i||s===Wh||s===gA||t.set(s,{value:s,label:String(a.label||s).trim()||s,icon:String(a.icon||(a.kind==="agent"?"Bot":"User")),color:String(a.color||(a.kind==="agent"?"#8b5cf6":"#22c55e")),kind:a.kind==="agent"?"agent":"member",avatarUrl:typeof a.avatarUrl=="string"&&a.avatarUrl.trim().length>0?a.avatarUrl.trim():null,avatarRevision:Number.isFinite(Number(a.avatarRevision))?Math.max(0,Math.floor(Number(a.avatarRevision))):null,avatarUpdatedAt:typeof a.avatarUpdatedAt=="string"&&a.avatarUpdatedAt.trim().length>0?a.avatarUpdatedAt.trim():null,username:typeof a.username=="string"&&a.username.trim().length>0?a.username.trim():null,surfaceType:typeof a.surfaceType=="string"&&a.surfaceType.trim().length>0?a.surfaceType.trim():null,providerMetadata:a.providerMetadata&&typeof a.providerMetadata=="object"&&!Array.isArray(a.providerMetadata)?a.providerMetadata:null,archivedAt:null,createdAt:typeof a.createdAt=="string"&&a.createdAt.trim().length>0?a.createdAt.trim():null,updatedAt:typeof a.updatedAt=="string"&&a.updatedAt.trim().length>0?a.updatedAt.trim():null})}const r=[Wh];return Array.from(t.values()).sort((a,s)=>{const i=r.indexOf(a.value),l=r.indexOf(s.value);return i>=0||l>=0?i<0?1:l<0?-1:i-l:a.label.localeCompare(s.label,void 0,{sensitivity:"base"})})}function kA(e,t){const r=String(t||"").trim();if(!r||e.some(i=>i.value===r))return e;const a=r.replace(/^ai-profile-/i,"").replace(/[-_]+/g," ").replace(/\s+/g," ").trim(),s=a?a.split(" ").map(i=>i.charAt(0).toUpperCase()+i.slice(1)).join(" "):r;if(mk(r)==="agent"){const i=String(r).toLowerCase().startsWith("ai-profile-")&&a.split(" ").every(l=>G0.test(l));return _u([...e,{value:r,label:i?"AI":s||"AI",icon:"Bot",color:"#8b5cf6",kind:"agent"}])}return mk(r)==="member"?_u([...e,{value:r,label:s||r,icon:"User",color:"#22c55e",kind:"member"}]):e}function vA(e){const t=Array.isArray(e)?e.filter(Boolean):[];return _u(t)}function Tf(e,t){const r=String(e||"").trim(),s=vA(t).find(i=>i.value===r);return s?s.label:yA(r)?"AI":gv(r)?"Unassigned":r||"Unassigned"}const hk=1,wA="taskforce.workspaceContext.v2",Y0="taskforce.uiState.app.v1",Z0="taskforce.bootstrapDebug.v1",Yw=5e3,Um=new Map;function zm(e){return Array.from(new Set(e.map(t=>String(t??"").trim()).filter(t=>t.length>0))).sort()}function Iu(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function Zl(e){if(Array.isArray(e))return Array.from(new Set(e.filter(t=>typeof t=="string").map(t=>t.trim()).filter(Boolean)))}function gk(e){if(Array.isArray(e))return Array.from(new Set(e.filter(t=>typeof t=="string"&&t.trim().length>0||typeof t=="number")))}function J0(e){if(!Iu(e))return;const t={};return Object.entries(e).forEach(([r,a])=>{const s=String(r||"").trim(),i=gk(a);!s||!i||(t[s]=i)}),t}function Q0(e){if(!Iu(e))return;const t={};return Object.entries(e).forEach(([r,a])=>{const s=String(r||"").trim();!s||typeof a!="boolean"||(t[s]=a)}),t}function X0(e){if(!Iu(e))return;const t={};return Object.entries(e).forEach(([r,a])=>{const s=String(r||"").trim();if(!s||typeof a!="string")return;const i=a.trim();i&&(t[s]=i)}),t}function ex(e){if(!Iu(e))return;const t=Zl(e.categories),r=Zl(e.types),a=Zl(e.priorities);if(!t||!r||!a)return;const s={};return Iu(e.taxonomies)&&Object.entries(e.taxonomies).forEach(([i,l])=>{const c=String(i||"").trim(),d=Zl(l);!c||!d||(s[c]=d)}),{categories:t,types:r,priorities:a,taxonomies:s}}function bA(e){if(!Iu(e))return null;const t={version:hk},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 a=e.activeWorkspaceModule==="agents"?"aiProfiles":e.activeWorkspaceModule==="workflows"?"tasks":e.activeWorkspaceModule;typeof a=="string"&&["tasks","planning","docs","annotate","workflowManager","taskforceAgents","aiProfiles"].includes(a)&&(t.activeWorkspaceModule=a),(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=Q0(e.collapsedCategories);i&&(t.collapsedCategories=i);const l=Zl(e.filterCategories);l&&(t.filterCategories=l);const c=gk(e.filterPriorities);c&&(t.filterPriorities=c);const d=Zl(e.filterTypes);d&&(t.filterTypes=d);const f=gk(e.filterStatus);f&&(t.filterStatus=f);const p=Zl(e.filterAssignees);p&&(t.filterAssignees=p),typeof e.filterAssigneesAllSelected=="boolean"&&(t.filterAssigneesAllSelected=e.filterAssigneesAllSelected);const g=J0(e.filterTaxonomies);g&&(t.filterTaxonomies=g);const h=ex(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=X0(e.taskforceAgentConversationByAgentId);return y&&Object.keys(y).length>0&&(t.taskforceAgentConversationByAgentId=y),t}function tx(e){const t=zm(e.categories.map(i=>i.value)),r=zm(e.types.map(i=>i.value)),a=zm(e.priorities.map(i=>i.value));if(t.length===0||r.length===0||a.length===0)return null;const s={};return(e.taxonomies||[]).forEach(i=>{const l=String(i.id??"").trim();l&&(s[l]=zm((i.options||[]).map(c=>c.value)))}),{categories:t,types:r,priorities:a,taxonomies:s}}function zp(e,t){return e.length===t.length&&e.every((r,a)=>r===t[a])}function rx(e,t){if(!e||!t||!zp(e.categories||[],t.categories||[])||!zp(e.types||[],t.types||[])||!zp(e.priorities||[],t.priorities||[]))return!1;const r=Object.keys(e.taxonomies||{}).sort(),a=Object.keys(t.taxonomies||{}).sort();return zp(r,a)?r.every(s=>zp(e.taxonomies[s]||[],t.taxonomies[s]||[])):!1}function nx(){if(typeof window>"u")return!1;try{const e=String(window.localStorage.getItem(Z0)||"").trim().toLowerCase();return e==="1"||e==="true"||e==="on"||e==="yes"}catch{return!1}}function hr(e,t){if(!nx())return;console.info("[Taskforce Bootstrap]",e,t&&typeof t=="object"?t:{})}function ax(e,t,r,a=!1){const s=String(e).trim()||"default",i=String(t).trim()||"default",l=String(r||"default").trim()||"default";return`${a?"cloud":"same-origin"}::${i}::${s}::${l}`}async function ff(e){const t=String(e.stateKey||"default").trim()||"default",r=String(e.workspaceId||"").trim(),a=e.patch&&typeof e.patch=="object"?e.patch:{},s=JSON.stringify(a),i=ax(t,r||"default",e.dedupeScope,e.useCloudProxy),l=Date.now(),c=Um.get(i);if(c&&c.serializedPatch===s){if(c.status==="success"&&e.skipIfUnchanged!==!1)return hr("ui_state_persist_skipped",{stateKey:t,workspaceId:r||"default",reason:"unchanged"}),{skipped:!0,reason:"unchanged"};if(e.respectFailureCooldown!==!1&&c.retryAfter>l)return hr("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:a})}),f=await d.json().catch(()=>({}));if(d.ok&&f?.success!==!1)return Um.set(i,{serializedPatch:s,status:"success",retryAfter:0}),{skipped:!1,response:d,payload:f};if(Um.set(i,{serializedPatch:s,status:"failure",retryAfter:l+(e.failureRetryMs??Yw)}),hr("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(Um.set(i,{serializedPatch:s,status:"failure",retryAfter:l+(e.failureRetryMs??Yw)}),hr("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 yv(e){const t=mg(e);return`${wA}.${t}`}function SA(e){const t=pv(e);return`${wA}.${t}`}function yk(e){if(typeof window>"u")return"";try{const t=yv(e),r=String(window.localStorage.getItem(t)||"").trim();if(r&&r.length<=120&&!/\s/.test(r))return r;const a=SA(e),s=String(window.localStorage.getItem(a)||"").trim();return s&&s.length<=120&&!/\s/.test(s)?(window.localStorage.setItem(t,s),s):""}catch{return""}}function sx(e,t){if(typeof window>"u")return;const r=String(e||"").trim();try{if(!r||fv(r))return;const a=yv(t),s=String(window.localStorage.getItem(a)||"").trim();if(!r&&s&&s.toLowerCase()!=="default")return;window.localStorage.setItem(a,r)}catch{}}function Zw(e){if(!(typeof window>"u"))try{window.localStorage.removeItem(yv(e)),window.localStorage.removeItem(SA(e))}catch{}}function AA(e){const t=pv(e);return`${Y0}.${t}`}function Jw(e){if(typeof window>"u")return null;try{const t=window.localStorage.getItem(AA(e));if(!t)return null;const r=JSON.parse(t);return bA(r)}catch{return null}}function ox(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(AA(t),JSON.stringify(e))}catch{}}const kk="taskforce.localMutationActorUserId.v1";function CA(e){return typeof e=="string"?e.trim().replace(/\/+$/,""):""}function ix(e){const t=String(e||"").trim().toLowerCase();return t==="localhost"||t==="127.0.0.1"||t==="::1"||t==="[::1]"}function rf(e){if(!(typeof window>"u"))try{const t=String(e||"").trim();if(!t||t==="anonymous"){window.sessionStorage.removeItem(kk);return}window.sessionStorage.setItem(kk,t)}catch{}}function kv(){if(typeof window>"u")return"";try{return String(window.sessionStorage.getItem(kk)||"").trim()}catch{return""}}function cx(e,t){if(typeof window>"u"||!e.startsWith("/api/taskforce/")||!ix(window.location.hostname))return!1;try{return new URL(t,window.location.origin).origin===window.location.origin}catch{return e.startsWith("/")}}function lx(e,t,r){if(!cx(e,t))return r;const a=kv();if(!a)return r;const s=new Headers(r?.headers||void 0);return s.has("x-taskforce-user-id")||s.set("x-taskforce-user-id",a),{...r,headers:s}}function dx(e,t){if(!e.startsWith("/"))return e;const r=CA(t);return r?`${r}${e}`:e}async function ux(e,t,r){const a=dx(e,r),s=CA(r).length>0,i=lx(e,a,t),l=typeof performance<"u"?performance.now():Date.now();try{const c=await fetch(a,i);if(!(s&&a!==e&&e.startsWith("/api/taskforce/")&&(c.status===401||c.status===403)))return c;hr("taskforce_api_auth_fallback_retry",{path:e,primaryUrl:a,fallbackUrl:e,status:c.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-l)});try{const f=await fetch(e,i);return hr("taskforce_api_auth_fallback_completed",{path:e,primaryUrl:a,fallbackUrl:e,primaryStatus:c.status,fallbackStatus:f.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-l)}),f}catch{return hr("taskforce_api_auth_fallback_failed",{path:e,primaryUrl:a,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;hr("taskforce_api_network_fallback_retry",{path:e,primaryUrl:a,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 hr("taskforce_api_network_fallback_completed",{path:e,primaryUrl:a,fallbackUrl:e,fallbackStatus:d.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-l)}),d}}const nf=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:4,coverageDigest:"c622f33d62c9f9251559a5b3644ba617da31c1b53d4fd0927b529e76c89948d1"}),vv=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"]),af=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:5,coverageDigest:"1227152d1998809427f8560f85c8ef2da8780d3ea697390fbaa48c9e85a97be2"}),px=vv,sf=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:6,coverageDigest:"0aa90b110c71cf37a1234617b098d055f1df1e8da389184c7b147833164e338d"}),fx=Object.freeze([...vv,"workstream-task-order/full-v1"]),ka=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:3,coverageDigest:"48544ecfcb72c44866cdd39d02d0ba83222bc5e236045880f7f62b979be46117"}),mx=1,hx=Object.freeze(["task/root-v1","task-relationship/full-v1","taxonomy/full-v1","initiative/full-v1","workstream/full-v1"]);function tl(e){const t=String(e.coverageProfileId||"").trim(),r=Number(e.coverageVersion),a=String(e.coverageDigest||"").trim();return t===ka.coverageProfileId&&r===ka.coverageVersion&&a===ka.coverageDigest?{coverage:ka,excludedProjections:hx,nestedWriterPrerequisitesRequired:!1,workflowWriterPrerequisitesRequired:!1,planningOrderWriterPrerequisitesRequired:!1}:t===nf.coverageProfileId&&r===nf.coverageVersion&&a===nf.coverageDigest?{coverage:nf,excludedProjections:vv,nestedWriterPrerequisitesRequired:!0,workflowWriterPrerequisitesRequired:!1,planningOrderWriterPrerequisitesRequired:!1}:t===af.coverageProfileId&&r===af.coverageVersion&&a===af.coverageDigest?{coverage:af,excludedProjections:px,nestedWriterPrerequisitesRequired:!0,workflowWriterPrerequisitesRequired:!0,planningOrderWriterPrerequisitesRequired:!1}:t===sf.coverageProfileId&&r===sf.coverageVersion&&a===sf.coverageDigest?{coverage:sf,excludedProjections:fx,nestedWriterPrerequisitesRequired:!0,workflowWriterPrerequisitesRequired:!1,planningOrderWriterPrerequisitesRequired:!0}:null}function _A(e){for(const t of[ka,nf,af,sf]){const r=tl(t);if(e.length===r.excludedProjections.length&&r.excludedProjections.every((a,s)=>e[s]===a))return t}return null}function wv(e,t=ka){if(!e||typeof e!="object"||Array.isArray(e))return!1;const r=e,a=r.coverage;return r.capabilityVersion===mx&&r.runtimeMode==="cloud"&&r.routeAvailable===!0&&r.writerPrerequisitesReady===!0&&r.activationReady===!0&&Array.isArray(r.missingPrerequisites)&&r.missingPrerequisites.length===0&&!!a&&typeof a=="object"&&!Array.isArray(a)&&a.coverageProfileId===t.coverageProfileId&&a.coverageVersion===t.coverageVersion&&a.coverageDigest===t.coverageDigest}function bv(e,t=ka){if(!e||typeof e!="object"||Array.isArray(e))return!1;const r=e,a=r.excludedProjections,s=tl(t);return s?r.cloudWritesFenced===!0&&Array.isArray(a)&&a.length===s.excludedProjections.length&&s.excludedProjections.every((i,l)=>a[l]===i):!1}function gx(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 IA=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","workstream-task-order/full-v1"]),yx=new Set(IA);function Qw(e){const t=new Set;for(const r of e||[]){const a=String(r||"").trim();if(!a||!yx.has(a)||t.has(a))throw new Error("Workspace sync v2 projection exclusions are invalid.");t.add(a)}return IA.filter(r=>t.has(r))}function kx(e,t){try{const r=Qw(e),a=Qw(t);return r.length===a.length&&r.every((s,i)=>s===a[i])}catch{return!1}}function vx(e,t){const r=[],a={},s=i=>{a[i]=(a[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-v1");if(t.has("task/root-v1")&&l&&c&&d){s("task/root-v1"),s("task-comments/full-v1"),s("task-checklist/full-v1"),s("task-attachment-links/full-v1");continue}if(l||c||d){const f={...i.task};l&&(delete f.comments,s("task-comments/full-v1")),c&&(delete f.checklistItems,s("task-checklist/full-v1")),d&&(delete f.attachments,s("task-attachment-links/full-v1")),r.push({...i,task:f});continue}}if(t.has("task/root-v1")&&i.op==="delete"){s("task/root-v1");continue}if(t.has("task-relationship/full-v1")&&(i.op==="task-relationship-upsert"||i.op==="task-relationship-delete")){s("task-relationship/full-v1");continue}if(t.has("taxonomy/full-v1")&&i.op==="taxonomy-upsert"){s("taxonomy/full-v1");continue}if(t.has("initiative/full-v1")&&i.op==="initiative-upsert"){s("initiative/full-v1");continue}if(t.has("workstream/full-v1")&&i.op==="workstream-upsert"){s("workstream/full-v1");continue}if(t.has("entity-event/full-v1")&&(i.op==="task-event-upsert"||i.op==="entity-event-upsert")){s("entity-event/full-v1");continue}r.push(i)}return{changes:r,suppressedCounts:a}}function vk(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(vk);if(typeof e=="object"){const t={};for(const r of Object.keys(e).sort()){const a=e[r];a!==void 0&&(t[r]=vk(a))}return t}throw new Error(`Canonical JSON cannot contain ${typeof e}.`)}function En(e){return JSON.stringify(vk(e))}const TA=1;function wx(e){if(e.version!==TA)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,a)=>!r||r!==e.permitIds[a]))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.");En(e.previousBoundary),En(e.expectedBoundary)}const mo=45e3,Sv=18e4;function yg(e,t){const r=t?.completionGroup;if(!r)return{};if(wx(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 xA(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 RA(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 bx(e,t,r=[],a=[],s=zA){const i=await s(e);if(!i.ok)return i;const l=new Set(Array.from(t,b=>String(b||"").trim()).filter(Boolean)),c=new Set(Array.from(r,b=>String(b||"").trim()).filter(Boolean)),d=new Set(Array.from(a,b=>String(b||"").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(b=>typeof b!="string"||!b.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?tl({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 b of f.tasks){const $=String(b?.taskId||"").trim();if(!b||typeof b!="object"||Array.isArray(b)||!$||typeof b.activeOperation!="boolean"||typeof b.activeCreateOperation!="boolean"||b.activeDeleteOperation!==void 0&&typeof b.activeDeleteOperation!="boolean"||b.deleteOwned!==void 0&&typeof b.deleteOwned!="boolean"||typeof b.activeLifecycleOperation!="boolean"||typeof b.activeReopenOperation!="boolean"||typeof b.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:b,taskId:$})}const y=h.filter(({taskId:b})=>b.length>0&&l.has(b)),k=Array.from(new Set(y.filter(({entry:b})=>b?.activeOperation===!0).map(({taskId:b})=>b))).sort(),v=Array.from(new Set(y.filter(({entry:b})=>b?.activeCreateOperation===!0).map(({taskId:b})=>b))).sort(),C=Array.from(new Set(y.filter(({entry:b})=>b?.activeDeleteOperation===!0||b?.deleteOwned===!0).map(({taskId:b})=>b))).sort(),S=Array.from(new Set(y.filter(({entry:b})=>b?.activeLifecycleOperation===!0).map(({taskId:b})=>b))).sort(),w=Array.from(new Set(y.filter(({entry:b})=>b?.activeReopenOperation===!0).map(({taskId:b})=>b))).sort(),_=Array.from(new Set(f.activeTaskRelationshipIds.map(b=>String(b).trim()))).sort(),M=[],R=[];for(const b of f.initiatives){const $=String(b?.entityId||"").trim();if(!(b&&typeof b=="object"&&!Array.isArray(b)&&b.domain==="initiative"&&$.length>0&&typeof b.activeOperation=="boolean"&&typeof b.owned=="boolean"&&typeof b.entityRevision=="string"&&/^\d+$/.test(b.entityRevision)&&typeof b.lifecycleRevision=="string"&&/^\d+$/.test(b.lifecycleRevision)&&(b.lastSequence===null||typeof b.lastSequence=="string"&&/^\d+$/.test(b.lastSequence))&&(b.canonicalFingerprint===null||typeof b.canonicalFingerprint=="string"&&/^[a-f0-9]{64}$/.test(b.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($)&&(b.activeOperation===!0&&M.push($),(b.activeOperation===!0||b.owned===!0)&&R.push($))}const P=[];for(const b of f.workstreams){const $=String(b?.entityId||"").trim();if(!(b&&typeof b=="object"&&!Array.isArray(b)&&b.domain==="workstream"&&$.length>0&&typeof b.activeOperation=="boolean"&&typeof b.owned=="boolean"&&typeof b.entityRevision=="string"&&/^\d+$/.test(b.entityRevision)&&typeof b.lifecycleRevision=="string"&&/^\d+$/.test(b.lifecycleRevision)&&(b.lastSequence===null||typeof b.lastSequence=="string"&&/^\d+$/.test(b.lastSequence))&&(b.canonicalFingerprint===null||typeof b.canonicalFingerprint=="string"&&/^[a-f0-9]{64}$/.test(b.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($)&&(b.activeOperation===!0||b.owned===!0)&&P.push($)}return{ok:!0,status:i.status,data:{activeMetadataTaskIds:k,activeCreateTaskIds:v,activeDeleteTaskIds:C,activeLifecycleTaskIds:S,activeReopenTaskIds:w,activeTaskRelationshipIds:_,activeInitiativeIds:Array.from(new Set(M)).sort(),protectedInitiativeIds:Array.from(new Set(R)).sort(),protectedWorkstreamIds:Array.from(new Set(P)).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 Sx(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 a={};if(r)try{a=JSON.parse(r)}catch{a={error:!t.ok&&t.statusText?`${t.status} ${t.statusText}`:r.slice(0,400)}}else!t.ok&&t.statusText&&(a={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:a,retryAfterMs:i}}catch(t){const a=String(t?.name||"").trim()==="AbortError"?{error:"Workspace sync pull request timed out."}:{};return{ok:!1,status:Sx(t),data:a}}}function Ms(e,t,r){const a=typeof AbortController=="function"?new AbortController:null,s=a?globalThis.setTimeout(()=>a.abort(),Math.max(1,Math.floor(r))):null;return fetch(e,{...t,...a?{signal:a.signal}:{}}).finally(()=>{s!==null&&globalThis.clearTimeout(s)})}async function Ax(e){return Qn(fetch(e("/api/taskforce/sync/user-settings"),{method:"GET",credentials:"include"}))}async function Cx(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 _x(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 Ix(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 Tx(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=_A(t.excludedProjections);i&&(r.set("coverageProfileId",i.coverageProfileId),r.set("coverageVersion",String(i.coverageVersion)),r.set("coverageDigest",i.coverageDigest))}const a=e("/api/taskforce/sync/workspace/pull"),s=a.includes("?")?"&":"?";return Qn(Ms(`${a}${s}${r.toString()}`,{method:"GET",credentials:"include"},mo))}async function PA(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 a=e("/api/taskforce/sync/v3/workspace/feed"),s=a.includes("?")?"&":"?";return Qn(Ms(`${a}${s}${r.toString()}`,{method:"GET",credentials:"include"},mo))}async function EA(e,t){const r=t.coverage||ka,a=new URLSearchParams({workspaceId:t.workspaceId,limit:String(t.limit||100),coverageProfileId:r.coverageProfileId,coverageVersion:String(r.coverageVersion),coverageDigest:r.coverageDigest});t.cursor&&a.set("cursor",t.cursor),t.repairCursor&&a.set("repairCursor",t.repairCursor),t.forceRepair===!0&&a.set("forceRepair","1");const s=e("/api/taskforce/sync/v3/workspace/feed"),i=s.includes("?")?"&":"?",l=t.forceRepair===!0||t.repairCursor?Sv:mo;return Qn(Ms(`${s}${i}${a.toString()}`,{method:"GET",credentials:"include"},l))}async function NA(e){const t=new URLSearchParams({workspaceId:e});return Qn(Ms(`/api/taskforce/sync/v3/local/feed?${t.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},mo))}async function jA(e,t,r){return Qn(Ms("/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,...yg(e,r)})},mo))}async function MA(e,t=ka){const r=new URLSearchParams({workspaceId:e,coverageProfileId:t.coverageProfileId,coverageVersion:String(t.coverageVersion),coverageDigest:t.coverageDigest});return Qn(Ms(`/api/taskforce/sync/v3/local/feed?${r.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},mo))}async function DA(e,t,r=ka,a){return Qn(Ms("/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,...yg(e,a)})},mo))}async function LA(e){const t=new URLSearchParams({workspaceId:e});return Qn(Ms(`/api/taskforce/sync/v3/local/task-comment-audit?${t.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},mo))}async function OA(e,t){const r=new URLSearchParams({workspaceId:t.workspaceId,limit:String(t.limit||50)});t.cursor&&r.set("cursor",t.cursor);const a=e("/api/taskforce/sync/v3/workspace/task-comment-audit"),s=a.includes("?")?"&":"?";return Qn(Ms(`${a}${s}${r.toString()}`,{method:"GET",credentials:"include"},mo))}async function BA(e,t,r){return Qn(Ms("/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,...yg(e,r)})},mo))}async function xx(e){return Qn(Ms("/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)},mo))}async function WA(e,t){const r=new URLSearchParams({workspaceId:t.workspaceId,limit:String(t.limit||100)});t.cursor&&r.set("cursor",t.cursor);const a=e("/api/taskforce/sync/workspace/initiative-repair"),s=a.includes("?")?"&":"?";return Qn(Ms(`${a}${s}${r.toString()}`,{method:"GET",credentials:"include"},Sv))}async function $A(e,t){const r=t.coverage||ka,a=new URLSearchParams({workspaceId:t.workspaceId,limit:String(t.limit||100),coverageProfileId:r.coverageProfileId,coverageVersion:String(r.coverageVersion),coverageDigest:r.coverageDigest});t.cursor&&a.set("cursor",t.cursor);const s=e("/api/taskforce/sync/workspace/combined-repair"),i=s.includes("?")?"&":"?";return Qn(Ms(`${s}${i}${a.toString()}`,{method:"GET",credentials:"include"},Sv))}async function FA(e){const t=new URLSearchParams({workspaceId:e});return Qn(Ms(`/api/taskforce/sync/workspace/content-manifest?${t.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},mo))}async function Rx(e,t){return Qn(Ms(e("/api/taskforce/sync/workspace/content"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(t)},mo))}async function UA(e,t={}){const r=e.changes.filter(I=>I.op==="upsert").map(I=>String(I.task?.id||"").trim()).filter(Boolean),a=e.changes.filter(I=>I.op==="delete").map(I=>String(I.taskId||"").trim()).filter(Boolean),s=new Set(r),i=e.changes.filter(I=>I.op==="initiative-upsert").map(I=>String(I.initiative?.id||"").trim()).filter(Boolean),l=e.changes.filter(I=>I.op==="workstream-upsert").map(I=>String(I.workstream?.id||"").trim()).filter(Boolean);let c=[],d=[],f=[],p=new Set,g=new Set,h=new Set,y=!1,k=[],v=new Set,C=new Set,S="v2",w="v2",_="0",M=null,R=[];if(e.changes.length>0){const I=await bx(e.workspaceId,[...r,...a],i,l,t.readOwnership);if(!I.ok)return{ok:!1,status:I.status,data:I.data,retryAfterMs:I.retryAfterMs};p=new Set(I.data.activeCreateTaskIds),g=new Set(I.data.activeDeleteTaskIds),h=new Set(I.data.activeTaskRelationshipIds),y=I.data.taxonomyProtected,k=I.data.activeInitiativeIds,v=new Set(I.data.protectedInitiativeIds),C=new Set(I.data.protectedWorkstreamIds),S=I.data.initiativeProjectionOwner,w=I.data.combinedProjectionOwner,_=I.data.combinedProjectionEpoch,M=I.data.combinedCoverage||null,R=I.data.combinedExcludedProjections||[],c=I.data.activeMetadataTaskIds.filter(E=>s.has(E)&&!p.has(E)),d=I.data.activeLifecycleTaskIds.filter(E=>s.has(E)&&!p.has(E)),f=I.data.activeReopenTaskIds.filter(E=>s.has(E)&&!p.has(E))}const P=e.changes.filter(I=>I.op==="upsert"?!p.has(String(I.task?.id||"").trim()):I.op==="delete"?!g.has(String(I.taskId||"").trim()):I.op==="task-relationship-upsert"||I.op==="task-relationship-delete"?!h.has(String(I.relationship?.id||"").trim()):I.op==="taxonomy-upsert"?!y:I.op==="initiative-upsert"?S!=="v3"&&!v.has(String(I.initiative?.id||"").trim()):I.op==="workstream-upsert"?!C.has(String(I.workstream?.id||"").trim()):!0),b=vx(P,new Set(R)).changes,$=w==="v3"?e.changes.length-b.length:0;return{ok:!0,status:200,data:{changes:b,ownership:{activeV3TaskMetadataIds:c,activeV3TaskLifecycleIds:d,activeV3TaskReopenAssigneeIds:f,activeV3InitiativeIds:k,initiativeProjectionOwner:S,combinedProjectionOwner:w,combinedProjectionEpoch:_,combinedCoverage:M,combinedExcludedProjections:R,combinedV3SuppressedChangeCount:$}}}}async function Px(e,t){const r=await UA({workspaceId:t.workspaceId,changes:t.changes});if(!r.ok)return r;const{changes:a,ownership:s}=r.data;return a.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:a,...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 zA(e){const t=new URLSearchParams({workspaceId:e});return Qn(Ms(`/api/taskforce/sync/v3/local/metadata-ownership?${t.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},mo))}async function HA(e,t,r){const a=JSON.stringify({workspaceId:e,changes:t,workspaceMembers:Array.isArray(r?.workspaceMembers)?r.workspaceMembers:void 0,...r?.repairMode===!0?{repair:!0}:{},excludedProjections:r?.excludedProjections,contentPullObligations:r?.contentPullObligations,contentPullResolutionClaims:r?.contentPullResolutionClaims,...yg(e,r),bootstrapSnapshot:r?.bootstrapSnapshot?{currentAnnotatedAttachmentSessionIds:Array.isArray(r.bootstrapSnapshot.currentAnnotatedAttachmentSessionIds)?r.bootstrapSnapshot.currentAnnotatedAttachmentSessionIds:[]}:void 0}),s="/api/taskforce/sync/workspace/apply-local",i=[];try{const l=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e},credentials:"include",body:a});if(l.ok){const f=await l.json().catch(()=>({}));return{ok:!0,status:l.status,data:f,failures:i}}const c=await l.text().catch(()=>"");let d={};if(c)try{d=JSON.parse(c)}catch{d={error:c.slice(0,400)}}else l.statusText&&(d={error:`${l.status} ${l.statusText}`});return i.push(`${s}:${l.status}`),{ok:!1,status:l.status,data:d,failures:i}}catch{i.push(`${s}:network`)}return{ok:!1,status:0,data:{},failures:i}}function pc(e){return`${e.kind}:${e.path}`}const Xw="WORKSPACE_SYNC_V3_APPLY_NOT_COMMITTED";function Av(e){return{handshakeWorkspace:t=>_x(e,t),provisionWorkspace:t=>Ix(e,t),pushWorkspaceChanges:({ownership:t,pushBoundary:r,...a})=>Px(e,a),pullWorkspaceChanges:t=>Tx(e,t),pullWorkspaceContent:({previousCursor:t,...r})=>Rx(e,r),pullInitiativeFeed:t=>PA(e,t),pullInitiativeRepair:t=>WA(e,t),pullCombinedFeed:t=>EA(e,t),pullCombinedRepair:t=>$A(e,t),pullTaskCommentAudit:t=>OA(e,t),abandonTransferReceipts:()=>{},acknowledgeNonApplyingTransferReceipts:()=>{},buildV2ApplyCompletionGroup:()=>{},buildV2PushApplyCompletionGroup:()=>{},buildV3ApplyCompletionGroup:()=>{}}}const VA=1;function GA(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:VA,projection:"v2-push",batchOperationIdentities:Object.freeze([...e])})}function Hm(e){if(!e||typeof e!="object"||Array.isArray(e)||e.version!==VA||e.projection!=="v2-push"||!Array.isArray(e.batchOperationIdentities))throw new TypeError("The V2 push boundary is invalid.");return GA(e.batchOperationIdentities)}function Ch(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 KA(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 a=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=a.map(i=>String(i.task.id).trim());if(a.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 a}const wk="V1:AESGCM:",Cv="AES-GCM",Ex=12;async function qA(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:Cv},!1,["encrypt","decrypt"])}async function eb(e,t){if(!e)return e;const r=crypto.getRandomValues(new Uint8Array(Ex)),a=await qA(t),i=new TextEncoder().encode(e),l=await crypto.subtle.encrypt({name:Cv,iv:r},a,i),c=Buffer.from(l).toString("base64"),d=Buffer.from(r).toString("base64");return`${wk}${d}:${c}`}async function tb(e,t){if(!e||!e.startsWith(wk))return e;const r=e.slice(wk.length),[a,s]=r.split(":");if(!a||!s)throw new Error("Malformed encrypted document payload.");const i=Buffer.from(a,"base64"),l=Buffer.from(s,"base64"),c=await qA(t);try{const d=await crypto.subtle.decrypt({name:Cv,iv:i},c,l);return new TextDecoder("utf-8").decode(d)}catch(d){throw new Error(`Failed to decrypt document: ${d.message}`)}}async function _h(e,t){t&&(e.op==="document-upsert"&&typeof e.content=="string"&&(e.content=await tb(e.content,t)),e.op==="asset-upsert"&&typeof e.contentBase64=="string"&&(e.contentBase64=await tb(e.contentBase64,t)))}async function $h(e,t){const r=e==="document"?new TextEncoder().encode(t):Uint8Array.from(atob(t),s=>s.charCodeAt(0)),a=await crypto.subtle.digest("SHA-256",r);return{sha256:Array.from(new Uint8Array(a),s=>s.toString(16).padStart(2,"0")).join(""),sizeBytes:r.byteLength}}function rb(e){return String(e||"").trim().toLowerCase()}function nb(e){return/^[a-f0-9]{64}$/.test(e)}function ab(e){return Number.isSafeInteger(e)&&e>=0}function Nx(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=[],a=rb(e.sha256),s=rb(t.sha256);return!nb(a)||!nb(s)?r.push("unknown-hash"):a!==s&&r.push("hash-mismatch"),(!ab(e.sizeBytes)||!ab(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 sb=1;var Yc={};function ya(e){return e&&typeof e=="object"?e:{}}const jx=3e4,Mx=60*6e4;function Dx(e,t=Date.now()){const r=Math.max(0,Math.floor(Number(e.attempts)||0));if(r===0)return!0;const a=Date.parse(String(e.updatedAt||""));if(!Number.isFinite(a))return!0;const s=Math.min(Mx,jx*2**Math.min(r-1,7));return a+s<=t}function Go(e){const t=Number(e||0);return t===0||t===429||t>=500}function ob(e,t){const r=String(e.code||"").trim().toUpperCase(),a=String(e.error||"").trim();return r==="WORKSPACE_ID_ALREADY_EXISTS"||a.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.":a||`Workspace provisioning failed (${t})`}function Lx(e,t){if(t!==400)return!1;const r=String(e.code||"").trim().toUpperCase(),a=String(e.error||"").trim().toLowerCase();return r==="WORKSPACE_ID_REQUIRED"&&a.includes("no cloud workspace is selected")}async function Ox(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||Av(e.resolveCloudAuthUrl);let r=await t.handshakeWorkspace(e.workspaceId);if(r.ok)return{success:!0,provisioned:!1};const a=ya(r.data);if(r.status===401)return{success:!1,statusCode:401,transient:!1,error:String(a.error||"Authentication required for workspace sync.")};if(r.status===429)return{success:!1,statusCode:429,retryAfterMs:r.retryAfterMs,transient:!0,error:String(a.error||"Workspace sync rate limited. Please retry later.")};if(Lx(a,r.status)){const s=await t.provisionWorkspace({workspaceId:e.workspaceId,name:e.workspaceName||e.workspaceId});if(!s.ok){const i=ya(s.data);return{success:!1,statusCode:s.status,transient:Go(s.status),retryAfterMs:s.retryAfterMs,error:ob(i,s.status)}}if(r=await t.handshakeWorkspace(e.workspaceId),!r.ok){const i=ya(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:Go(r.status),error:String(i.error||`Workspace sync handshake failed (${r.status})`)}}return{success:!0,provisioned:!0}}if(r.status===409&&a.code==="WORKSPACE_ID_MISMATCH"){if(e.allowProvisionOnMismatch===!1)return{success:!1,statusCode:409,transient:!1,error:String(a.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=ya(s.data);return{success:!1,statusCode:s.status,error:ob(i,s.status)}}if(r=await t.handshakeWorkspace(e.workspaceId),!r.ok){const i=ya(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:Go(r.status),error:String(i.error||`Workspace sync handshake failed (${r.status})`)}}return{success:!0,provisioned:!0}}return{success:!1,statusCode:r.status,transient:Go(r.status),error:String(a.error||`Workspace sync handshake failed (${r.status})`)}}catch{return{success:!1,statusCode:0,transient:!0,error:"Failed to validate workspace sync access."}}}function Bx(e,t,r){if(!e)return;const a={};for(const i of t)a[i.op]=(a[i.op]||0)+1;const s=(i,l)=>i&&{...i,changeCount:l};return{...e,totalChanges:t.length,byOp:a,domains:{...e.domains,tasks:s(e.domains.tasks,(a.upsert||0)+(a.delete||0)),taskRelationships:s(e.domains.taskRelationships,(a["task-relationship-upsert"]||0)+(a["task-relationship-delete"]||0)),initiatives:s(e.domains.initiatives,a["initiative-upsert"]||0),workstreams:s(e.domains.workstreams,a["workstream-upsert"]||0),taxonomy:s(e.domains.taxonomy,a["taxonomy-upsert"]||0)},...r?.combinedV3SuppressedChangeCount?{combinedV3SuppressedChangeCount:r.combinedV3SuppressedChangeCount}:{}}}async function Wx(e,t,r){const a=En({contractVersion:1,workspaceId:e,repairMode:r,changes:t});try{const s=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(a));return Array.from(new Uint8Array(s)).map(i=>i.toString(16).padStart(2,"0")).join("")}catch{let s=2166136261;for(let l=0;l<a.length;l+=1)s^=a.charCodeAt(l),s=Math.imul(s,16777619);const i=(s>>>0).toString(16).padStart(8,"0");return`${e}:fallback:${i}`}}const $x=64,ib=4*1024*1024,Fx=45*1024*1024,Ux=64*1024;function cb(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"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 zx(e,t){const r=new Map;for(const[s,i]of e.entries()){const l=cb(i),c=r.get(l)||[];c.push(s),r.set(l,c)}const a=new Map;return t.map(s=>{const i=cb(s),l=r.get(i)||[],c=a.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}.`);a.set(i,c+1);const f=e[d];return JSON.stringify(f)===JSON.stringify(s)?{sourceChangeIndex:d}:{sourceChangeIndex:d,preparedChange:s}})}function Hx(e,t){const r=new Set;return t.batches.map(a=>a.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 YA(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"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 Vx(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 lb(e,t){return Ux+new TextEncoder().encode(JSON.stringify({workspaceId:e.workspaceId,idempotencyKey:"0".repeat(64),changes:t,repairMode:e.repairMode===!0,repair:e.repairMode===!0})).byteLength}function Gx(e,t,r){const a=t.map((l,c)=>({plain:l,safe:r[c],phase:YA(l),preparedIndex:c})).sort((l,c)=>l.phase-c.phase||l.preparedIndex-c.preparedIndex);if(a.length===0)return{batches:[[]],oversizedChangeIndex:null};const s=[];let i=[];for(const l of a){const c=lb(e,[l.safe]);if(c>Fx)return{batches:[],oversizedChangeIndex:l.preparedIndex};const d=i.length>0&&i[0].phase!==l.phase,f=[...i,l],p=i.length>0&&lb(e,f.map(g=>g.safe))>ib;(d||i.length>=$x||p)&&(s.push(i),i=[]),i.push(l),c>ib&&(s.push(i),i=[])}return i.length>0&&s.push(i),{batches:s,oversizedChangeIndex:null}}async function Kx(e){const t=e.remoteServices||Av(e.resolveCloudAuthUrl);let r={activeV3TaskMetadataIds:[],activeV3TaskLifecycleIds:[],activeV3TaskReopenAssigneeIds:[],activeV3InitiativeIds:[],initiativeProjectionOwner:"v2",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0",combinedV3SuppressedChangeCount:0},a,s=e.preparedPlan||null,i=null;if(s){if(s.contractVersion!==sb)throw new Error("Persisted V2 push prepared plan version is unsupported.");i=Hx(e.payload.changes,s),a=i.flat(),r=s.ownership}else a=e.payload.changes;if(!s&&a.length>0){const I=await UA({workspaceId:e.workspaceId,changes:a},{readOwnership:e.localServices?.readPushOwnership});if(!I.ok){const E=ya(I.data);return{success:!1,status:I.status,error:typeof E.error=="string"?E.error:"Local workspace sync ownership could not be verified.",code:typeof E.code=="string"?E.code:void 0,retryAfterMs:I.retryAfterMs,transient:Go(I.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:[]}}a=I.data.changes,r=I.data.ownership}const l=a.length,c=Bx(e.payload.deltaDiagnostics,a,r),d=e.payload.deleteTaskIds.size;let f=0;if(l===0&&e.repairMode!==!0&&(r?.combinedProjectionOwner==="v3"||!!e.payload.deltaDiagnostics&&e.payload.deltaDiagnostics?.baselineResetReason!=="missing-baseline"))return{success:!0,syncedAt:new Date().toISOString(),requestMs:0,changeCount:0,effectiveDeltaDiagnostics:c,deleteCount:d,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 g=a;if(typeof process<"u"&&Yc?.TASKFORCE_SYNC_KEY){const I=Yc.TASKFORCE_SYNC_KEY,E=[];for(const K of g)K.op==="document-upsert"&&typeof K.content=="string"?E.push({...K,content:await eb(K.content,I)}):K.op==="asset-upsert"&&typeof K.contentBase64=="string"&&K.contentBase64.length>0?E.push({...K,contentBase64:await eb(K.contentBase64,I)}):E.push(K);g=E}let h=Gx(e,a,g);if(i){let I=0;h={oversizedChangeIndex:null,batches:i.map(E=>E.map(K=>{const U={plain:K,safe:g[I],phase:YA(K),preparedIndex:I};return I+=1,U}))}}if(h.oversizedChangeIndex!==null){const I=a[h.oversizedChangeIndex];return{success:!1,status:413,error:`Workspace sync change ${h.oversizedChangeIndex+1} (${I.op}) exceeds the single-change transfer limit.`,transient:!1,requestMs:f,changeCount:l,deleteCount:d,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 y=new Set,k=[];let v;if(s){if(v=[...s.batchOperationIdentities],v.length!==h.batches.length||new Set(v).size!==v.length||v.some(I=>!/^[a-f0-9]{64}$/.test(I)))throw new Error("Persisted V2 push prepared plan fingerprint does not match its frozen batches.")}else{v=await Promise.all(h.batches.map(E=>Wx(e.workspaceId,E.map(K=>K.plain),e.repairMode===!0)));const I=zx(e.payload.changes,a);s={contractVersion:sb,ownership:r,batches:h.batches.map(E=>E.map(K=>I[K.preparedIndex])),batchOperationIdentities:[...v]}}const C=GA(v),S=e.acknowledgedNonApplyingBatchOperationIdentities||[];if(new Set(S).size!==S.length)throw new Error("Persisted V2 push batch acknowledgement state does not match the frozen push plan.");for(const I of S){const E=v.indexOf(I);if(E>=0&&Ch(h.batches[E].map(K=>K.plain)).length>0)throw new Error("Persisted V2 push batch acknowledgement state does not match the frozen push plan.")}const w=S.filter(I=>{const E=v.indexOf(I);return E>=0&&Ch(h.batches[E].map(K=>K.plain)).length===0}),_=e.preparedPlan?[]:S.filter(I=>!w.includes(I));s&&!e.preparedPlan&&await e.onPreparedPlan?.({plan:s,acknowledgedOperationIdentities:w,replayedLegacyAcknowledgementIdentities:_});const M=new Set(w);if(e.preparedPlan&&M.size!==S.length)throw new Error("Persisted V2 push batch acknowledgement state does not match the frozen push plan.");let R=0,P=0;const b=[],$=async I=>{if(b.length===0)return;const E=b.splice(0);await t.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:E,errorCode:I})};try{for(const[I,E]of h.batches.entries()){const K=E.map(Re=>Re.plain),U=E.map(Re=>Re.safe),L=Ch(K),D=v[I];if(M.has(D)){R+=1,P+=K.length;continue}const ie=async()=>{const Re=Date.now(),je=await t.pushWorkspaceChanges({workspaceId:e.workspaceId,idempotencyKey:D,pushBoundary:C,changes:U,ownership:r,repairMode:e.repairMode===!0});return f+=Date.now()-Re,je};let H=await ie(),be=ya(H.data),Z=H.status===409&&be.code==="SYNC_PUSH_IN_PROGRESS";if(!H.ok&&!Z&&(H.status===403||H.status===409)&&(await e.ensureCloudWorkspaceReadyForSync()).success&&(H=await ie(),be=ya(H.data),Z=H.status===409&&be.code==="SYNC_PUSH_IN_PROGRESS"),H.transferReceipt&&b.push(H.transferReceipt),!H.ok){await $("WORKSPACE_SYNC_V2_PUSH_ATTEMPT_FAILED");const Re=ya(H.data),je=Array.from(new Set(K.map(ue=>ue.op))),ye=K.filter(Vx).length;return{success:!1,status:H.status,error:typeof Re.error=="string"?Re.error:void 0,code:typeof Re.code=="string"?Re.code:void 0,batchProgress:{totalBatches:h.batches.length,completedBatches:R,completedChanges:P,failedBatchIndex:I,failedChangeCount:K.length,failedOperations:je,failureDomain:ye===K.length?"content":ye===0?"metadata":"mixed"},retryAfterMs:H.retryAfterMs,transient:Z||Go(H.status),requestMs:f,changeCount:l,deleteCount:d,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 me=ya(H.data);if(Array.isArray(me.emittedEventIds))for(const Re of me.emittedEventIds.map(je=>String(je||"").trim()).filter(Boolean))y.add(Re);const Ve=KA(me,L);if(k.push(...Ve),H.transferReceipt&&Ve.length===0){await t.acknowledgeNonApplyingTransferReceipts({workspaceId:e.workspaceId,receipts:[H.transferReceipt]});const Re=b.indexOf(H.transferReceipt);Re>=0&&b.splice(Re,1),M.add(D),await e.onNonApplyingBatchAcknowledged?.({operationIdentity:D,acknowledgedOperationIdentities:v.filter(je=>M.has(je))})}R+=1,P+=K.length}}catch(I){throw await $("WORKSPACE_SYNC_V2_PUSH_ATTEMPT_FAILED"),I}return{success:!0,syncedAt:new Date().toISOString(),requestMs:f,changeCount:l,batchProgress:{totalBatches:h.batches.length,completedBatches:R,completedChanges:P,failedBatchIndex:null,failedChangeCount:0,failedOperations:[],failureDomain:null},effectiveDeltaDiagnostics:c,deleteCount:d,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(y),appliedTaskUpserts:k,pushBoundary:C,pushTransferReceipts:b}}async function qx(e){const t=e.remoteServices||Av(e.resolveCloudAuthUrl);let r=[];const a=be=>{be.transferReceipt&&r.push(be.transferReceipt)},s=async be=>{if(r.length===0)return;const Z=r;await t.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:Z,errorCode:be}),r=[]},i=e.localServices?.readContentManifest||FA,l=e.localServices?.applyV2Batch||HA,c=e.localServices?.listContentPullObligations||xA,d=e.localServices?.recordContentPullObligationFailures||RA,f=async(be,Z)=>{const me=await d(e.workspaceId,be,Z);if(!me.ok)throw new Error(String(me.data?.error||"Failed to persist content-pull retry state."))};let p=e.cursor,g=!0,h=0,y=0,k=0,v=0;const C=new Set;let S=!1,w=!1,_=!1,M=!1,R=!1,P=!1,b=!1,$=!1;const I=new Set,E=new Set,K=new Set;let U=null;const L={manifestEntries:0,bodiesRequested:0,bodiesTransferred:0,contentBytesTransferred:0,contentBytesAvoided:0,obligationsAttempted:0,obligationsResolved:0,obligationsRemaining:0},D=Number.isFinite(Number(e.maxPages))?Math.max(1,Math.floor(Number(e.maxPages))):20;let ie=new Map;const H=new Set;try{{const be=await c(e.workspaceId,100);if(!be.ok)throw new Error(String(be.data?.error||`Local content-pull obligation read failed (${be.status}).`));const Z=Array.isArray(be.data?.obligations)?be.data.obligations:[];Z.forEach(Ve=>{H.add(pc(Ve))});const me=Z.filter(Ve=>Dx(Ve));if(L.obligationsAttempted=me.length,me.length>0){const Ve=await t.pullWorkspaceContent({workspaceId:e.workspaceId,requests:me.map(({kind:Re,path:je})=>({kind:Re,path:je})),previousCursor:p});if(a(Ve),Ve.ok){const Re=Ve.data||{},je=Array.isArray(Re.changes)?Re.changes:[],ye=Array.isArray(Re.contentMetadata)?Re.contentMetadata:[],ue=new Map(ye.map(se=>[`${se.kind}:${se.path}`,se])),ve=new Map(me.map(se=>[pc(se),se]));if(ue.size!==ye.length||ye.some(se=>!ve.has(`${se.kind}:${se.path}`)))throw await f(me.map(pc),"Content response contained duplicate or unexpected authoritative metadata."),new Error("Workspace content obligation response contained invalid authoritative metadata.");const Pe=[],Le=[];for(const se of je){if(se.op!=="document-upsert"&&se.op!=="asset-upsert")throw await f(me.map(pc),`Content response contained invalid operation ${se.op}.`),new Error(`Workspace content obligation returned invalid operation: ${se.op}.`);const V=se.op==="document-upsert"?"document":"asset",W=`${V}:${se.path}`;if(!ve.has(W))throw await f(me.map(pc),`Content response contained unexpected body ${W}.`),new Error(`Workspace content obligation returned an unexpected body: ${W}.`);const z=ue.get(W);if(!z)throw await f([W],"Content response omitted authoritative metadata."),new Error(`Workspace content obligation omitted authoritative metadata: ${W}.`);if(Pe.includes(W))throw await f([W],"Content response contained a duplicate body."),new Error(`Workspace content obligation returned a duplicate body: ${W}.`);if(typeof process<"u"&&Yc?.TASKFORCE_SYNC_KEY)try{await _h(se,Yc.TASKFORCE_SYNC_KEY)}catch(Y){throw await f([W],String(Y?.message||"Content decryption failed.")),Y}const fe=await $h(V,se.op==="document-upsert"?se.content:se.contentBase64);if(fe.sha256!==String(z.sha256||"").toLowerCase()||fe.sizeBytes!==Number(z.sizeBytes)||String(z.updatedAt||"")<String(ve.get(W)?.sourceWatermark||"")||String(se.updatedAt||"")<String(ve.get(W)?.sourceWatermark||""))throw await f([W],"Authoritative content response was stale or failed verification."),new Error(`Workspace content obligation verification failed: ${W}.`);Pe.push(W);const ke=ve.get(W);Le.push({kind:V,path:se.path,resolution:"exact-version",sourceWatermark:ke.sourceWatermark,metadataFingerprint:ke.metadataFingerprint})}if(je.length>0){const se=r.length>0?t.buildV2ApplyCompletionGroup({workspaceId:e.workspaceId,previousCursor:p,nextCursor:p,receipts:r}):void 0;if(r.length>0&&!se)throw new Error("Content-obligation receipts did not produce an apply completion group.");let V;try{V=await l(e.workspaceId,je,{repairMode:e.repairMode===!0,excludedProjections:e.excludedProjections,contentPullResolutionClaims:Le,...se?{completionGroup:se}:{}})}catch(z){throw await f(Pe,String(z?.message||"Content obligation apply failed.")),z}if(!V.ok||ya(V.data).success===!1)throw await f(Pe,String(ya(V.data).error||"Workspace content obligation apply failed.")),new Error(String(ya(V.data).error||"Workspace content obligation apply failed."));r=[],L.obligationsResolved=Pe.length;const W=me.map(pc).filter(z=>!Pe.includes(z));W.length>0&&await f(W,"Authoritative content body remains unavailable.")}else{if(r.length>0){const se=t.buildV2ApplyCompletionGroup({workspaceId:e.workspaceId,previousCursor:p,nextCursor:p,receipts:r});if(!se)throw new Error("Unavailable content receipts did not produce an apply completion group.");const V=await l(e.workspaceId,[],{repairMode:e.repairMode===!0,excludedProjections:e.excludedProjections,completionGroup:se});if(!V.ok||ya(V.data).success===!1)throw new Error(String(ya(V.data).error||"Unavailable content receipt settlement failed."));r=[]}await f(me.map(pc),"Authoritative content body remains unavailable.")}}else await s("WORKSPACE_SYNC_CONTENT_OBLIGATION_RETRY"),await f(me.map(pc),String(ya(Ve.data).error||`Content pull failed (${Ve.status}).`))}L.obligationsRemaining=Math.max(0,Z.length-L.obligationsResolved)}if(e.contentMode==="manifest"){const be=await i(e.workspaceId);if(!be.ok)throw new Error(`Local workspace content manifest failed (${be.status||0}).`);const Z=Array.isArray(be.data?.entries)?be.data.entries:[];ie=new Map(Z.map(me=>[`${me.kind}:${me.path}`,me]))}for(;g&&h<D;){const be=async()=>{const W=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()-W,z};let Z=await be();if(a(Z),!Z.ok&&Z.status===403&&e.ensureCloudWorkspaceReadyForSync&&(await e.ensureCloudWorkspaceReadyForSync()).success&&(await s("WORKSPACE_SYNC_V2_PULL_RETRY"),Z=await be(),a(Z)),!Z.ok){await s("WORKSPACE_SYNC_V2_PULL_REJECTED");const W=ya(Z.data);return{success:!1,kind:"pull_http",status:Z.status,errorCode:typeof W.code=="string"?W.code:void 0,error:typeof W.error=="string"?W.error:void 0,retryAfterMs:Z.retryAfterMs,transient:Go(Z.status),cursor:p,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:v,pulledDeleteTaskIds:C,pulledActiveUpserts:S,pulledArchivedUpserts:w,pulledTaskEventUpserts:_,pulledPlanningUpserts:M,pulledTaskforceAgentUpserts:R,pulledTaskforceAgentSkillUpserts:b,pulledAgentConversationUpserts:$,documentDecryptFailures:Array.from(I),serverDiagnostics:null}}const me=Z.data||{};if(!kx(me.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:v,pulledDeleteTaskIds:C,pulledActiveUpserts:S,pulledArchivedUpserts:w,pulledTaskEventUpserts:_,pulledPlanningUpserts:M,pulledTaskforceAgentUpserts:R,pulledTaskforceAgentSkillUpserts:b,pulledAgentConversationUpserts:$,documentDecryptFailures:Array.from(I),serverDiagnostics:null};let Ve=Array.isArray(me?.changes)?me.changes:[];const Re=new Map,je=[];if(e.contentMode==="manifest"){const W=[],z=[];for(const ke of Ve){if(ke.op!=="document-manifest"&&ke.op!=="asset-manifest"){z.push(ke);continue}const Y=ke.manifest;if(L.manifestEntries+=1,!Y.existsLocally){je.push({manifest:Y,sourceWatermark:Y.updatedAt}),H.add(`${Y.kind}:${Y.path}`);continue}const we=`${Y.kind}:${Y.path}`,q=Nx(Y,ie.get(we));q.shouldFetch?q.reasons.every(le=>le==="metadata-mismatch")?(z.push(ke),L.contentBytesAvoided+=Math.max(0,Y.sizeBytes)):(W.push({kind:Y.kind,path:Y.path}),Re.set(we,Y),L.bodiesRequested+=1):L.contentBytesAvoided+=Math.max(0,Y.sizeBytes)}const fe=[...W];for(;fe.length>0;){let ke=fe.splice(0,100);for(;ke.length>0;){const Y=await t.pullWorkspaceContent({workspaceId:e.workspaceId,requests:ke,previousCursor:p});if(!Y.ok)throw a(Y),new Error(`Workspace content pull failed (${Y.status||0}).`);a(Y);const we=Y.data||{},q=Array.isArray(we.changes)?we.changes:[],le=Array.isArray(we.missing)?we.missing:[];if(le.length>0){const re="path"in le[0]?le[0].path:le[0].assetId;throw new Error(`Workspace content changed or disappeared during reconciliation: ${le[0].kind}:${re}`)}z.push(...q);const $e=Array.isArray(we.remaining)?we.remaining:[];if(q.length===0&&$e.length>=ke.length)throw new Error("Workspace content pull made no progress.");ke=$e}}Ve=z}else{const W=[];for(const z of Ve){if(z.op!=="document-manifest"&&z.op!=="asset-manifest"){W.push(z);continue}je.push({manifest:z.manifest,sourceWatermark:z.manifest.updatedAt}),H.add(`${z.manifest.kind}:${z.manifest.path}`)}Ve=W}const ye=me?.diagnostics&&typeof me.diagnostics=="object"?me.diagnostics:null;U=ye;const ue=Array.isArray(me?.workspaceMembers),ve=ue?me.workspaceMembers:void 0;for(const W of Ve){if(W.op==="upsert"){W?.archived===!0||W?.task?.isArchived===!0?w=!0:S=!0;continue}if(W.op==="annotated-attachment-session-upsert"){const fe=String(W?.session?.id||"").trim();fe&&K.add(fe);continue}if(W.op==="task-event-upsert"||W.op==="entity-event-upsert"){_=!0;continue}if(W.op==="initiative-upsert"||W.op==="workstream-upsert"){M=!0;continue}if(W.op==="taskforce-agent-upsert"){R=!0;continue}if(W.op==="agent-role-upsert"){P=!0;continue}if(W.op==="taskforce-agent-skill-upsert"){b=!0;continue}if(W.op==="agent-conversation-upsert"){$=!0;continue}if(W.op==="document-upsert"){if(typeof W.content=="string"&&typeof process<"u"&&Yc?.TASKFORCE_SYNC_KEY)try{await _h(W,Yc.TASKFORCE_SYNC_KEY)}catch{const fe=String(W.path||"").trim();fe&&I.add(fe)}continue}if(W.op==="asset-upsert"){if(typeof W.contentBase64=="string"&&typeof process<"u"&&Yc?.TASKFORCE_SYNC_KEY)try{await _h(W,Yc.TASKFORCE_SYNC_KEY)}catch{const fe=String(W.path||"").trim();fe&&I.add(fe)}continue}if(W.op!=="delete")continue;const z=String(W.taskId||"").trim();z&&C.add(z)}if(e.contentMode==="manifest"&&Re.size>0){const W=new Set;for(const z of Ve){if(z.op!=="document-upsert"&&z.op!=="asset-upsert")continue;const fe=z.op==="document-upsert"?"document":"asset",ke=Re.get(`${fe}:${z.path}`);if(!ke)continue;const Y=await $h(fe,z.op==="document-upsert"?z.content:z.contentBase64);if(ke.sha256&&Y.sha256!==ke.sha256.toLowerCase()||Y.sizeBytes!==ke.sizeBytes)throw new Error(`Workspace content verification failed for ${fe}:${z.path}.`);W.add(`${fe}:${z.path}`),L.bodiesTransferred+=1,L.contentBytesTransferred+=Y.sizeBytes}if(W.size!==Re.size)throw new Error("Workspace content pull did not return every requested body.")}e.onPagePulled&&e.onPagePulled();const Pe=me&&"nextCursor"in me&&(me.nextCursor===null||typeof me.nextCursor=="string")?me.nextCursor:p,Le=Ve.flatMap(W=>W.op!=="document-delete"&&W.op!=="asset-delete"?[]:W.deletedAt?[{kind:W.op==="document-delete"?"document":"asset",path:W.path,resolution:"at-or-before-watermark",sourceWatermark:W.deletedAt}]:[]),se=e.bootstrap&&!me?.hasMore,V=r.length>0?t.buildV2ApplyCompletionGroup({workspaceId:e.workspaceId,previousCursor:p,nextCursor:Pe,receipts:r}):void 0;if(r.length>0&&!V)throw new Error("V2 sync transfer receipts did not produce an apply completion group.");if(Ve.length>0||je.length>0||ue||V||se){const W=Date.now(),z=await l(e.workspaceId,Ve,{...ue?{workspaceMembers:ve}:{},repairMode:e.repairMode===!0,excludedProjections:e.excludedProjections,...se?{bootstrapSnapshot:{currentAnnotatedAttachmentSessionIds:Array.from(K)}}:{},...V?{completionGroup:V}:{},...je.length>0?{contentPullObligations:je}:{},...Le.length>0?{contentPullResolutionClaims:Le}:{}}),fe=z.failures;if(!z.ok){v+=Date.now()-W,await s("WORKSPACE_SYNC_V2_APPLY_NOT_COMMITTED");const Y=ya(z.data);if(fe.some(le=>le.endsWith(":401")))return{success:!1,kind:"apply_auth",status:401,transient:!1,failures:fe,cursor:p,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:v,pulledDeleteTaskIds:C,pulledActiveUpserts:S,pulledArchivedUpserts:w,pulledTaskEventUpserts:_,pulledPlanningUpserts:M,pulledTaskforceAgentUpserts:R,pulledTaskforceAgentSkillUpserts:b,pulledAgentConversationUpserts:$,documentDecryptFailures:Array.from(I),serverDiagnostics:ye};const q=fe.some(le=>{if(le.endsWith(":network"))return!0;const $e=le.split(":").pop()||"",re=Number.parseInt($e,10);return Number.isFinite(re)&&(re===429||re>=500)});return{success:!1,kind:"apply_all_candidates",status:z.status||void 0,transient:q,error:String(Y.error||"").trim()||void 0,failures:fe,hasTransientApplyFailure:q,cursor:p,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:v,pulledDeleteTaskIds:C,pulledActiveUpserts:S,pulledArchivedUpserts:w,pulledTaskEventUpserts:_,pulledPlanningUpserts:M,pulledTaskforceAgentUpserts:R,pulledTaskforceAgentSkillUpserts:b,pulledAgentConversationUpserts:$,documentDecryptFailures:Array.from(I),emittedEventIds:Array.from(E),serverDiagnostics:U}}const ke=ya(z.data);if(ke.success===!1)return v+=Date.now()-W,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:v,pulledDeleteTaskIds:C,pulledActiveUpserts:S,pulledArchivedUpserts:w,pulledTaskEventUpserts:_,pulledPlanningUpserts:M,pulledTaskforceAgentUpserts:R,pulledTaskforceAgentSkillUpserts:b,pulledAgentConversationUpserts:$,documentDecryptFailures:Array.from(I),emittedEventIds:Array.from(E),serverDiagnostics:U};if(v+=Date.now()-W,y+=Ve.length,Array.isArray(ke.emittedEventIds))for(const Y of ke.emittedEventIds)E.add(String(Y));Ve.some(Y=>Y.op==="ai-profile-upsert")&&e.onAiProfilesApplied?.(),e.onChangesApplied&&e.onChangesApplied(Ve.length),Le.forEach(Y=>{H.delete(pc(Y))})}r=[],me&&"nextCursor"in me&&(me.nextCursor===null||typeof me.nextCursor=="string")&&(p=me.nextCursor),g=!!me?.hasMore,h+=1}return{success:!0,hasMore:g,syncedAt:new Date().toISOString(),cursor:p||null,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:v,pulledDeleteTaskIds:C,pulledActiveUpserts:S,pulledArchivedUpserts:w,pulledTaskEventUpserts:_,pulledPlanningUpserts:M,pulledTaskforceAgentUpserts:R,pulledAgentRoleUpserts:P,pulledTaskforceAgentSkillUpserts:b,pulledAgentConversationUpserts:$,documentDecryptFailures:Array.from(I),emittedEventIds:Array.from(E),serverDiagnostics:e.contentMode==="manifest"?{...U||{},contentReconciliation:L}:U}}catch(be){let Z=be;try{await s("WORKSPACE_SYNC_V2_APPLY_NOT_COMMITTED")}catch(me){Z=me}return{success:!1,kind:"exception",status:0,transient:!0,error:String(Z?.message||Z||"Workspace sync pull failed unexpectedly."),cursor:p||null,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:v,pulledDeleteTaskIds:C,pulledActiveUpserts:S,pulledArchivedUpserts:w,pulledTaskEventUpserts:_,pulledPlanningUpserts:M,pulledTaskforceAgentUpserts:R,pulledTaskforceAgentSkillUpserts:b,pulledAgentConversationUpserts:$,documentDecryptFailures:Array.from(I),emittedEventIds:Array.from(E),serverDiagnostics:e.contentMode==="manifest"?{...U||{},contentReconciliation:L}:U}}}async function Yx(e){const t=await Ax(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:Go(h)}}const r=ya(t.data),a=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(a),{success:!0,mode:"pulled",updatedAt:s};if(Number.isFinite(c)&&(!Number.isFinite(l)||c>l))return await e.applyRemoteSettings(a),{success:!0,mode:"pulled",updatedAt:s};const d=i||new Date().toISOString(),f=await Cx(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:Go(h)}}const p=ya(f.data);return{success:!0,mode:"pushed",updatedAt:typeof p.updatedAt=="string"&&p.updatedAt.trim().length>0?p.updatedAt.trim():d}}function Zx(e){const t=Math.max(1,Math.floor(Number(e)||1)),r=Math.min(12e4,1500*2**Math.max(0,t-1)),a=Math.floor(r*(.15*Math.random()));return r+a}function Jx(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(a=>a==="."||a==="..")?null:r.join("/")}function Qx(e){const t=Jx(e);return!t||!["users/","workspaces/","system/","tmp/","quarantine/"].some(a=>t.startsWith(a))?null:t}function Xx(e){return String(e||"").trim()}function eR(e,t){return Xx(e).replace(/[^a-zA-Z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")||t}function tR(e,t){const r=eR(t,"default"),a=String(e||"").replace(/\\/g,"/");return(a.startsWith(`workspaces/${r}/assets/ai-profiles/`)||a.startsWith(`workspaces/${r}/assets/images/ai-profiles/`))&&a.includes("/avatar/")}function rR(e,t){const r=String(e||"").trim();if(!r.startsWith("/api/taskforce/context/"))return null;const a=r.slice(23).split(/[?#]/,1)[0]||"";if(!a)return null;try{return t(decodeURIComponent(a))}catch{return null}}function nR(e,t){return tR(e,t)}function aR(e){const t=e.split("/").pop()||"",r=t.lastIndexOf("."),a=r>=0?t.slice(r).toLowerCase():"";return a===".png"?"image/png":a===".jpg"||a===".jpeg"?"image/jpeg":a===".webp"?"image/webp":a===".gif"?"image/gif":"application/octet-stream"}function sR(e){return String(e||"").match(/(^|\/)(asset-[a-f0-9]{32})(?=[^/]*$)/i)?.[2]}function oR(e,t,r){const a=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=rR(l,r);!c||!nR(c,t)||a.has(c)||a.set(c,{updatedAt:i,assetId:sR(c),originalFilename:c.split("/").pop()||c,mimeType:aR(c)})}}return a}const iR=new Set(["assetId","path","caption","displayName","originalFilename","referenceNumber","referenceLabel","linkRole"]);[...iR];function bk(e,t){return e<t?-1:e>t?1:0}function Vo(e){return typeof e!="string"?void 0:e.trim()||void 0}function xf(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 a=t,s=Vo(a.id),i=Vo(a.author),l=Date.parse(String(a.timestamp||"").trim());if(!s||!i||!Number.isFinite(l))throw new Error(`Planning comment ${r} has invalid identity, author, or timestamp.`);const c=Vo(a.submittedAuthor);return{id:s,author:i,...c?{submittedAuthor:c}:{},text:String(a.text||""),timestamp:new Date(l).toISOString()}}).sort((t,r)=>bk(t.timestamp,r.timestamp)||bk(t.id,r.id))}}function Rf(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 a=t,s=Vo(a.path);if(!s)throw new Error(`Planning attachment ${r} path is required.`);const i=Vo(a.fsPath),l=Vo(a.timestamp),c=a.assetId===null?null:Vo(a.assetId),d=a.referenceNumber===null?null:Number.isFinite(Number(a.referenceNumber))?Math.max(1,Math.floor(Number(a.referenceNumber))):void 0,f=a.referenceLabel===null?null:Vo(a.referenceLabel),p=a.taskId===null?null:Vo(a.taskId),g=a.linkRole==="attachment"||a.linkRole==="image"||a.linkRole==="reference"?a.linkRole:void 0;return{path:s,...i?{fsPath:i}:{},...typeof a.caption=="string"?{caption:a.caption}:{},...typeof a.displayName=="string"?{displayName:a.displayName}:{},...typeof a.originalFilename=="string"?{originalFilename:a.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 cR(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 a=t,s=Vo(a.assetId),i=Vo(a.path);if(!s||!i)throw new Error(`Durable planning attachment ${r} requires assetId and path.`);const l=a.referenceNumber===null?null:Number.isInteger(a.referenceNumber)&&Number(a.referenceNumber)>0?Number(a.referenceNumber):void 0,c=a.referenceLabel===null?null:Vo(a.referenceLabel),d=a.linkRole==="attachment"||a.linkRole==="image"||a.linkRole==="reference"?a.linkRole:void 0;return{assetId:s,path:i,...typeof a.caption=="string"?{caption:a.caption}:{},...typeof a.displayName=="string"?{displayName:a.displayName}:{},...typeof a.originalFilename=="string"?{originalFilename:a.originalFilename}:{},...l!==void 0?{referenceNumber:l}:{},...c!==void 0?{referenceLabel:c}:{},...d?{linkRole:d}:{}}}).sort((t,r)=>bk(`${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 lR(e){return Array.isArray(e)?e.slice(0,24).flatMap(t=>{if(!t||typeof t!="object"||Array.isArray(t))return[];const r=t,a=String(r.name||"").trim();if(!a)return[];const s=String(r.resultText||"").trim().slice(0,4e3);return[{name:a.slice(0,120),...r.arguments&&typeof r.arguments=="object"&&!Array.isArray(r.arguments)?{arguments:r.arguments}:{},ok:r.ok!==!1,...s?{resultText:s}:{}}]}):[]}function dR(e){return Array.isArray(e)?e.flatMap(t=>{if(!t||typeof t!="object"||Array.isArray(t))return[];const r=t,a=r.role==="assistant"?"assistant":r.role==="user"?"user":null,s=String(r.content||"").trim();if(!a||!s)return[];const i={role:a,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=lR(r.toolActivity);return a==="assistant"&&l.length>0&&(i.toolActivity=l),[i]}):[]}const uR=["chat_app","ide","cli","coding_tool","agent"],pR={chat_app:"Chat App",ide:"IDE",cli:"CLI",coding_tool:"Coding Tool",agent:"Agent"},fR={chat_app:"Chat Apps",ide:"IDEs",cli:"CLI",coding_tool:"Coding Tools",agent:"Agents",unclassified:"Unclassified"};function mR(e){return typeof e=="string"&&uR.includes(e)}function ZA(e){if(typeof e!="string")return null;const t=e.trim();return t==="other"?"agent":mR(t)?t:null}function bX(e){return pR[e]}function SX(e){return e??"unclassified"}function AX(e){return fR[e]}const hR=["cloud_metered","local_unmetered"],gR={cloud_metered:"Cloud MCP",local_unmetered:"Local MCP"};function yR(e){return typeof e=="string"&&hR.includes(e)}function JA(e){if(typeof e!="string")return null;const t=e.trim();return yR(t)?t:null}function CX(e){return gR[e]}function Jc(e){if(e==null)return;const t=String(e).trim();return t.length>0?t:void 0}function On(e){if(e==null)return null;const t=String(e).trim();return t.length>0?t:null}function Pf(e){return Jc(e)}function wc(e){return On(e)}function ms(e){return On(e)}function Tu(e){const t=On(e);return t&&t.startsWith("/api/taskforce/context/")?t:null}function Ly(e){return Jc(e)}function Vm(e){if(e!==void 0)return On(e)}function kR(e){return typeof e=="boolean"?e:void 0}function Gm(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 a=Math.floor(r);return Number.isFinite(t?.min)&&a<Number(t?.min)?t?.nullable?null:void 0:a}function vR(e){if(!e||typeof e!="object"||Array.isArray(e))return;const r=Object.entries(e).reduce((a,[s,i])=>s==="approach"?a:Array.isArray(i)?(a[s]=i.map(l=>String(l??"")),a):(i==null||(a[s]=String(i)),a),{});return Object.keys(r).length>0?r:{}}function wR(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 bR(e){return Array.isArray(e)?e:void 0}function SR(e){return Array.isArray(e)?e:void 0}function QA(e){const t=e&&typeof e=="object"?e:{};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:Gm(t.priority,{min:1})??void 0,complexity:Gm(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:Ly(t.updatedAt),completedAt:t.completedAt===void 0?void 0:t.completedAt||null,isArchived:kR(t.isArchived),taxonomies:vR(t.taxonomies),createdBy:Ly(t.createdBy),assignee:Ly(t.assignee),scheduledDate:Vm(t.scheduledDate),dueDate:Vm(t.dueDate),scheduledWeekKey:Vm(t.scheduledWeekKey),orderInDay:Gm(t.orderInDay,{min:0,nullable:!0}),workstreamId:Vm(t.workstreamId),referenceNumber:Gm(t.referenceNumber,{min:1,nullable:!0}),comments:wR(t.comments),attachments:bR(t.attachments),checklistItems:SR(t.checklistItems)}}function AR(e){if(!e||typeof e!="object"||Array.isArray(e))return{};const t=Object.entries(e).filter(([a])=>String(a||"").trim().length>0).sort(([a],[s])=>a.localeCompare(s)),r={};for(const[a,s]of t){if(Array.isArray(s)){r[a]=s.map(i=>String(i??"")).sort((i,l)=>i.localeCompare(l));continue}s!=null&&(r[a]=String(s))}return r}function CR(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 a=Number.parseInt(t.order,10),s=Number.parseInt(r.order,10);return Number.isFinite(a)&&Number.isFinite(s)&&a!==s?a-s:t.title!==r.title?t.title.localeCompare(r.title):t.id.localeCompare(r.id)}):[]}function _R(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:Jc(r?.submittedAuthor)||"",text:String(r?.text||""),timestamp:ms(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 IR(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:Jc(r?.fsPath)||"",caption:Jc(r?.caption)||"",displayName:Jc(r?.displayName)||"",originalFilename:Jc(r?.originalFilename)||"",assetId:Pf(r?.assetId)||"",referenceNumber:r?.referenceNumber===void 0||r.referenceNumber===null?"":String(r.referenceNumber),taskId:wc(r?.taskId)||"",timestamp:ms(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 TR(e,t){const r=QA(e);return JSON.stringify({id:r.id,title:r.title,description:On(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:On(r.canceledReason)||"",createdAt:r.createdAt,completedAt:ms(r.completedAt)||"",taxonomies:AR(r.taxonomies),createdBy:Pf(r.createdBy)||"",assignee:Pf(r.assignee)||"",scheduledDate:On(r.scheduledDate)||"",dueDate:On(r.dueDate)||"",scheduledWeekKey:On(r.scheduledWeekKey)||"",orderInDay:r.orderInDay===void 0||r.orderInDay===null?"":String(r.orderInDay),workstreamId:wc(r.workstreamId)||"",referenceNumber:r.referenceNumber===void 0||r.referenceNumber===null?"":String(r.referenceNumber),comments:_R(r.comments),attachments:IR(r.attachments),checklistItems:CR(r.checklistItems),isArchived:t?"1":"0"})}function xR(...e){return e.reduce((t,r)=>{const a=ms(r)||"";return t?a&&a>t?a:t:a},"")}function RR(e){const t=e||{};return xR(t.createdAt,t.updatedAt,t.lastActiveAt,t.colorUpdatedAt,t.archivedAt,t.rosterStateUpdatedAt)}function XA(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:On(t.colorSource)||"",colorUpdatedAt:ms(t.colorUpdatedAt)||"",avatarUrl:Tu(t.avatarUrl)||"",avatarSourceUrl:Tu(t.avatarSourceUrl)||"",avatarRevision:Number.isFinite(Number(t.avatarRevision))?Math.max(0,Math.floor(Number(t.avatarRevision))):0,avatarUpdatedAt:ms(t.avatarUpdatedAt)||"",description:On(t.description)||"",role:On(t.role)||"",provider:On(t.provider)||"",model:On(t.model)||"",surfaceType:On(t.surfaceType)||"",seatScope:On(t.seatScope)||"",providerMetadata:t.providerMetadata&&typeof t.providerMetadata=="object"&&!Array.isArray(t.providerMetadata)?t.providerMetadata:null,archivedAt:ms(t.archivedAt)||"",archivedBy:Pf(t.archivedBy)||"",archivedReason:On(t.archivedReason)||"",mergedIntoProfileId:Pf(t.mergedIntoProfileId)||"",rosterStateUpdatedAt:ms(t.rosterStateUpdatedAt)||"",createdAt:ms(t.createdAt)||"",updatedAt:ms(t.updatedAt)||"",lastActiveAt:ms(t.lastActiveAt)||""})}function PR(e){return JSON.stringify(e.map(t=>XA(t)).sort())}function _v(e){return En(e||null)}function eC(e){return e.taxonomyState&&typeof e.taxonomyState=="object"?En({taxonomyState:e.taxonomyState}):Array.isArray(e.taxonomies)?En({taxonomies:e.taxonomies}):""}const Ho={kind:"task",getId:e=>String(e?.id||"").trim(),getWatermark:e=>String(e?.updatedAt||e?.createdAt||"").trim(),getChangeKey:e=>TR(e,!!e?.isArchived)},mf={kind:"ai-profile",getId:e=>String(e?.id||"").trim(),getWatermark:e=>RR(e),getChangeKey:e=>XA(e)};function db(e,t,r){const a=e.getId(t);if(!a)return!1;const s=e.getChangeKey(t),i=r?.watermarks;if(!i||i.size===0||!i.has(a))return!0;const c=r?.changeKeys?.get(a);return typeof c=="string"?c!==s:(i.get(a)||"")!==s}function ub(e){return QA(e)}function pb(e,t){const r=e??t;return new Set(Array.from(r).map(a=>String(a||"").trim()).filter(a=>a.length>0))}function ER(e){return[...e].sort((t,r)=>{const a=String(t?.createdAt||"").trim(),s=String(r?.createdAt||"").trim(),i=a.localeCompare(s);return i!==0?i:String(t?.id||"").trim().localeCompare(String(r?.id||"").trim())})}function fb(e){return[...e].sort((t,r)=>{const a=String(t?.id||"").trim(),s=String(r?.id||"").trim();return a.localeCompare(s)})}function NR(e){const t=new Date().toISOString(),r=new Set(Array.from(e.pendingDeletedTaskIds).map(u=>String(u||"").trim()).filter(u=>u.length>0)),a=new Map(Array.from(e.pendingDeletedTaskWatermarks||new Map).map(([u,ht])=>[String(u||"").trim(),String(ht||"").trim()]).filter(([u,ht])=>u.length>0&&Number.isFinite(Date.parse(ht)))),s=new Map((e.deletedTasks||[]).map(u=>[String(u.taskId||"").trim(),u])),i=u=>{const ht=s.get(u);return{op:"delete",taskId:u,deletedAt:ht?.deletedAt||a.get(u)||t,...ht?{actor:ht.actor,actorType:ht.actorType,source:ht.source,details:ht.details}:{}}},l=e.lastPushedWatermarks,c=e.lastPushedTaskChangeKeys,d=(u,ht)=>(u?.referenceNumber===void 0||u?.referenceNumber===null)&&Number.isFinite(Number(u?.localReferenceNumber))?!0:db(Ho,{...u,isArchived:ht},{watermarks:l,changeKeys:c}),f=fb(e.tasks||[]),p=fb(e.archivedTasks||[]),g=new Map,h=new Map,y=new Map,k=new Map,v=f.filter(u=>!r.has(String(u?.id||"").trim())&&d(u,!1)).map(u=>{const ht=String(u?.id||"").trim(),yr=Ho.getWatermark(u),Er=Ho.getChangeKey({...u,isArchived:!1});return ht&&(y.set(ht,yr),k.set(ht,Er)),{op:"upsert",archived:!1,task:ub(u)}}),C=p.filter(u=>!r.has(String(u?.id||"").trim())&&d(u,!0)).map(u=>{const ht=String(u?.id||"").trim(),yr=Ho.getWatermark(u),Er=Ho.getChangeKey({...u,isArchived:!0});return ht&&(y.set(ht,yr),k.set(ht,Er)),{op:"upsert",archived:!0,task:ub(u)}}),S=new Set;for(const u of e.tasks||[]){const ht=String(u?.id||"").trim();ht&&(S.add(ht),g.set(ht,Ho.getWatermark(u)),h.set(ht,Ho.getChangeKey({...u,isArchived:!1})))}for(const u of e.archivedTasks||[]){const ht=String(u?.id||"").trim();ht&&(S.add(ht),g.set(ht,Ho.getWatermark(u)),h.set(ht,Ho.getChangeKey({...u,isArchived:!0})))}const w=Array.from(e.lastPushedTaskIds).filter(u=>!S.has(u)).map(u=>i(u)),_=Array.from(r).map(u=>i(u)),M=new Set([...w.map(u=>String(u.taskId)),..._.map(u=>String(u.taskId))]),R=e.lastPushedTaskRelationshipChangeKeys,P=new Map,b=(Array.isArray(e.taskRelationships)?e.taskRelationships:[]).filter(u=>u?.id&&Number.isFinite(Date.parse(String(u.updatedAt||"")))).map(u=>{const ht=String(u.id||"").trim(),yr=_v(u);return P.set(ht,yr),{op:u.deletedAt?"task-relationship-delete":"task-relationship-upsert",relationship:u,relationshipId:ht,changeKey:yr}}).filter(u=>R?.get(u.relationshipId)!==u.changeKey).map(({relationshipId:u,changeKey:ht,...yr})=>yr),$=new Set((Array.isArray(e.initiatives)?e.initiatives:[]).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),I=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)),E=e.lastPushedInitiativeWatermarks,K=!E||E.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:xf(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:Rf(u?.attachments),isArchived:!!u?.isArchived}})).filter(u=>u.initiative.id.length>0).filter(u=>K?!0:E.get(u.initiative.id)!==u.initiative.updatedAt),L=new Set((Array.isArray(e.workstreams)?e.workstreams:[]).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),D=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,H=!ie||ie.size===0,be=(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:xf(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:Rf(u?.attachments),isArchived:!!u?.isArchived}})).filter(u=>u.workstream.id.length>0).filter(u=>H?!0:ie.get(u.workstream.id)!==u.workstream.updatedAt),Z=new Set((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),me=new Map((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(u=>[String(u?.id||"").trim(),mf.getWatermark(u)]).filter(([u])=>u.length>0)),Ve=new Map((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(u=>[String(u?.id||"").trim(),mf.getChangeKey(u)]).filter(([u])=>u.length>0)),Re=e.lastPushedAiProfileWatermarks,je=e.lastPushedAiProfileChangeKeys,ye=!Re||Re.size===0,ue=(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:Tu(u.avatarUrl),avatarSourceUrl:Tu(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:ZA(u.surfaceType),seatScope:JA(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=>ye?!0:db(mf,u.profile,{watermarks:Re,changeKeys:je})),ve=pb(e.currentDocumentPaths,(Array.isArray(e.documents)?e.documents:[]).map(u=>String(u?.path||"").trim())),Pe=new Set(Array.from(e.lastPushedDocumentPaths||new Set).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!ve.has(u))),Le=new Map((Array.isArray(e.documents)?e.documents:[]).map(u=>[String(u?.path||"").trim(),String(u?.updatedAt||"").trim()]).filter(([u])=>u.length>0)),se=e.lastPushedDocumentWatermarks,V=!se||se.size===0,W=(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=>V?!0:se.get(u.path)!==u.updatedAt),z=pb(e.currentAssetPaths,(Array.isArray(e.assets)?e.assets:[]).map(u=>String(u?.path||"").trim())),fe=new Set(Array.from(e.lastPushedAssetPaths||new Set).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!z.has(u))),ke=new Map((Array.isArray(e.assets)?e.assets:[]).map(u=>[String(u?.path||"").trim(),String(u?.updatedAt||"").trim()]).filter(([u])=>u.length>0)),Y=e.lastPushedAssetWatermarks,we=!Y||Y.size===0,q=(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=>we?!0:Y.get(u.path)!==u.updatedAt),le=Array.isArray(e.documentReviewSessions)?e.documentReviewSessions:[],$e=new Set(le.map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),re=new Set(le.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),de=e.lastPushedDocumentReviewSessionIds||new Set,He=new Map(le.map(u=>[String(u?.id||"").trim(),String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),ce=e.lastPushedDocumentReviewSessionWatermarks,pe=!ce||ce.size===0,xe=le.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=>pe?!0:ce.get(u.session.id)!==u.session.updatedAt),N=le.filter(u=>String(u?.deletedAt||"").trim().length>0).map(u=>({sessionId:String(u?.id||"").trim(),deletedAt:String(u?.deletedAt||u?.updatedAt||u?.createdAt||t).trim()||t})).filter(u=>u.sessionId.length>0).filter(u=>pe?!0:ce.get(u.sessionId)!==u.deletedAt),X=Array.from(de).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!$e.has(u)),Ae=[...X.map(u=>({sessionId:u,deletedAt:t})),...N],Te=new Set([...X,...N.map(u=>u.sessionId)]),he=Array.isArray(e.documentReviewComments)?e.documentReviewComments:[],ot=new Set(he.map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),We=new Set(he.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),Xe=e.lastPushedDocumentReviewCommentIds||new Set,ae=new Map(he.map(u=>[String(u?.id||"").trim(),[u?.deletedAt,u?.threadStatusUpdatedAt,u?.updatedAt,u?.createdAt].map(ht=>String(ht||"").trim()).filter(ht=>Number.isFinite(Date.parse(ht))).sort().at(-1)||""]).filter(([u])=>u.length>0)),G=e.lastPushedDocumentReviewCommentWatermarks,Ie=!G||G.size===0,Fe=he.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=>Ie?!0:G.get(u.comment.id)!==([u.comment.threadStatusUpdatedAt,u.comment.updatedAt].filter(ht=>typeof ht=="string"&&Number.isFinite(Date.parse(ht))).sort().at(-1)||u.comment.updatedAt)),it=he.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=>Ie?!0:G.get(u.commentId)!==u.deletedAt),Me=Array.from(Xe).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!ot.has(u)),qe=[...Me.map(u=>({commentId:u,deletedAt:t,deletedByActorId:null})),...it],ge=new Set([...Me,...it.map(u=>u.commentId)]),_e=Array.isArray(e.annotatedAttachmentSessions)?e.annotatedAttachmentSessions:[],Be=new Set(_e.map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),Ge=new Set(_e.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),F=e.lastPushedAnnotatedAttachmentSessionIds||new Set,Ne=new Map(_e.map(u=>[String(u?.id||"").trim(),String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),Ce=e.lastPushedAnnotatedAttachmentSessionWatermarks,ut=!Ce||Ce.size===0,mt=_e.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=>ut?!0:Ce.get(u.session.id)!==u.session.updatedAt),Ue=_e.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=>ut?!0:Ce.get(u.sessionId)!==u.deletedAt),wt=Array.from(F).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!Be.has(u)),kt=[...wt.map(u=>({sessionId:u,deletedAt:t})),...Ue],rt=new Set([...wt,...Ue.map(u=>u.sessionId)]),Ht=Array.isArray(e.taskforceAgents)?e.taskforceAgents:[],lr=new Set(Ht.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),rr=new Map(Ht.map(u=>[String(u?.id||"").trim(),String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),wr=e.lastPushedTaskforceAgentWatermarks,st=!wr||wr.size===0,zt=Ht.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=>st?!0:wr.get(u.agent.id)!==(u.agent.deletedAt||u.agent.updatedAt)),Lt=Array.isArray(e.agentRoles)?e.agentRoles:[];Lt.forEach(u=>{const ht=String(u?.id||"").trim();if(!ht)return;const yr=`agent-role:${ht}`;String(u?.deletedAt||"").trim()||lr.add(yr),rr.set(yr,String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim())});const Mt=Lt.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(st)return!0;const ht=`agent-role:${u.role.id}`;return wr.get(ht)!==(u.role.deletedAt||u.role.updatedAt)}),Ee=Array.isArray(e.taskforceAgentSkills)?e.taskforceAgentSkills:[],ct=new Set(Ee.map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),lt=new Map(Ee.map(u=>[String(u?.id||"").trim(),String(u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),Je=e.lastPushedTaskforceAgentSkillWatermarks,nt=!Je||Je.size===0,Ct=Ee.map(u=>({op:"taskforce-agent-skill-upsert",skill:{...u,id:String(u.id||"").trim(),tenantId:String(u.tenantId||"").trim()||void 0,workspaceId:String(u.workspaceId||"").trim(),revision:Number(u.revision),contentHash:String(u.contentHash||"").trim(),createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim()}})).filter(u=>u.skill.id.length>0&&u.skill.workspaceId.length>0&&Number.isInteger(u.skill.revision)&&u.skill.revision>0).filter(u=>nt?!0:Je.get(u.skill.id)!==u.skill.updatedAt),Rt=Array.isArray(e.agentConversations)?e.agentConversations:[],Dt=new Set(Rt.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),It=new Map(Rt.map(u=>[String(u?.id||"").trim(),String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),Qt=e.lastPushedAgentConversationWatermarks,ir=!Qt||Qt.size===0,dr=Rt.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:dR(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=>ir?!0:Qt.get(u.conversation.id)!==(u.conversation.deletedAt||u.conversation.updatedAt)),sr=ER(Array.isArray(e.taskEvents)?e.taskEvents:[]),pr=new Map(sr.map(u=>[String(u?.id||"").trim(),String(u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),Jr=e.lastPushedTaskEventWatermarks,Tr=!Jr||Jr.size===0,br=sr.map(u=>{const ht=u.entityType==="initiative"||u.entityType==="workstream"?u.entityType:"task",yr=String(u.entityId||u.taskId||"").trim(),Er={id:String(u.id||"").trim(),workspaceId:String(u.workspaceId||"").trim(),entityType:ht,entityId:yr,taskId:ht==="task"?String(u.taskId||yr).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 ht==="task"?{op:"task-event-upsert",event:{...Er,entityType:"task",taskId:String(Er.taskId||yr).trim()}}:{op:"entity-event-upsert",event:{...Er,entityType:ht,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=>Tr?!0:Jr.get(u.event.id)!==u.event.createdAt),ur=eC({taxonomyState:e.taxonomyState,taxonomies:e.taxonomies}),Qr=ur.length>0&&e.lastPushedTaxonomyChangeKey!==ur,Hr=[...U,...be,...Qr&&e.taxonomyState&&typeof e.taxonomyState=="object"?[{op:"taxonomy-upsert",taxonomyState:e.taxonomyState,updatedAt:t}]:Qr&&Array.isArray(e.taxonomies)?[{op:"taxonomy-upsert",taxonomies:e.taxonomies,updatedAt:t}]:[],...ue,...W,...Array.from(Pe).map(u=>({op:"document-delete",path:u,deletedAt:t})),...q,...Array.from(fe).map(u=>({op:"asset-delete",path:u,deletedAt:t})),...xe,...Ae.map(u=>({op:"document-review-session-delete",sessionId:u.sessionId,deletedAt:u.deletedAt})),...Fe,...qe.map(u=>({op:"document-review-comment-delete",commentId:u.commentId,deletedAt:u.deletedAt,deletedByActorId:u.deletedByActorId})),...mt,...kt.map(u=>({op:"annotated-attachment-session-delete",sessionId:u.sessionId,deletedAt:u.deletedAt})),...zt,...Mt,...Ct,...dr,...br,...v,...C,...b.filter(u=>!u.relationship.deletedAt),...b.filter(u=>!!u.relationship.deletedAt),...Array.from(M).map(u=>i(u))],Gt=e.baselineResetReason??null,bt=u=>{const ht=u.upsertCount+(u.deleteCount||0);if(u.currentCount===0&&ht===0)return{mode:"none",reason:null,currentCount:0,baselineCount:u.baselineCount,changeCount:ht};if(u.alwaysFull)return{mode:ht>0?"send-all":"none",reason:ht>0?"full-state-domain":null,currentCount:u.currentCount,baselineCount:u.baselineCount,changeCount:ht};const yr=u.baselineCount===0&&u.currentCount>0&&u.upsertCount>=u.currentCount;return{mode:yr?"send-all":"delta",reason:yr?Gt||"missing-baseline":null,currentCount:u.currentCount,baselineCount:u.baselineCount,changeCount:ht}},gr=Hr.reduce((u,ht)=>{const yr=String(ht.op||"").trim();return u[yr]=(u[yr]||0)+1,u},{});return{changes:Hr,currentTaskIds:new Set(Array.from(S).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:P,currentTaxonomyChangeKey:ur,deleteTaskIds:M,currentInitiativeIds:$,currentInitiativeWatermarks:I,currentWorkstreamIds:L,currentWorkstreamWatermarks:D,currentAiProfileIds:Z,currentAiProfileWatermarks:me,currentAiProfileChangeKeys:Ve,currentDocumentPaths:ve,deleteDocumentPaths:Pe,currentDocumentWatermarks:Le,currentAssetPaths:z,deleteAssetPaths:fe,currentAssetWatermarks:ke,currentDocumentReviewSessionIds:re,deleteDocumentReviewSessionIds:Te,currentDocumentReviewSessionWatermarks:He,currentDocumentReviewCommentIds:We,deleteDocumentReviewCommentIds:ge,currentDocumentReviewCommentWatermarks:ae,currentAnnotatedAttachmentSessionIds:Ge,deleteAnnotatedAttachmentSessionIds:rt,currentAnnotatedAttachmentSessionWatermarks:Ne,currentTaskforceAgentIds:lr,currentTaskforceAgentWatermarks:rr,currentTaskforceAgentSkillIds:ct,currentTaskforceAgentSkillWatermarks:lt,currentAgentConversationIds:Dt,currentAgentConversationWatermarks:It,currentTaskEventWatermarks:pr,pushedWatermarks:y,pushedTaskChangeKeys:k,deltaDiagnostics:{totalChanges:Hr.length,byOp:gr,baselineResetReason:Gt,domains:{tasks:bt({currentCount:S.size,baselineCount:l?.size||0,upsertCount:v.length+C.length,deleteCount:M.size}),taskRelationships:bt({currentCount:P.size,baselineCount:R?.size||0,upsertCount:gr["task-relationship-upsert"]||0,deleteCount:gr["task-relationship-delete"]||0}),initiatives:bt({currentCount:$.size,baselineCount:E?.size||0,upsertCount:U.length}),workstreams:bt({currentCount:L.size,baselineCount:ie?.size||0,upsertCount:be.length}),aiProfiles:bt({currentCount:Z.size,baselineCount:Re?.size||0,upsertCount:ue.length}),documents:bt({currentCount:ve.size,baselineCount:se?.size||0,upsertCount:W.length,deleteCount:Pe.size}),assets:bt({currentCount:z.size,baselineCount:Y?.size||0,upsertCount:q.length,deleteCount:fe.size}),documentReviewSessions:bt({currentCount:re.size,baselineCount:ce?.size||0,upsertCount:xe.length,deleteCount:Te.size}),documentReviewComments:bt({currentCount:We.size,baselineCount:G?.size||0,upsertCount:Fe.length,deleteCount:ge.size}),annotatedAttachmentSessions:bt({currentCount:Ge.size,baselineCount:Ce?.size||0,upsertCount:mt.length,deleteCount:rt.size}),taskforceAgents:bt({currentCount:lr.size,baselineCount:wr?.size||0,upsertCount:zt.length+Mt.length}),taskforceAgentSkills:bt({currentCount:ct.size,baselineCount:Je?.size||0,upsertCount:Ct.length}),agentConversations:bt({currentCount:Dt.size,baselineCount:Qt?.size||0,upsertCount:dr.length}),taskEvents:bt({currentCount:pr.size,baselineCount:Jr?.size||0,upsertCount:br.length}),taxonomy:bt({currentCount:e.taxonomyState&&typeof e.taxonomyState=="object"||Array.isArray(e.taxonomies)?1:0,baselineCount:e.lastPushedTaxonomyChangeKey?1:0,upsertCount:gr["taxonomy-upsert"]||0})}}}}function jR(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(),a=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:_v(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:xf(c.comments)||[],attachments:Rf(c.attachments)||[],isArchived:!!c.isArchived})).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:xf(c.comments)||[],attachments:Rf(c.attachments)||[],isArchived:!!c.isArchived})).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:a})}function Sk(e,t,r=[],a=[]){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 a||[]){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 Va(e){return Object.freeze(structuredClone(Array.from(e||[])))}function mb(e,t){return new Set(e?Array.from(e):t)}function MR(e){const t=Va(e.tasks),r=Va(e.archivedTasks),a=Va(e.deletedTasks),s=Va(e.initiatives),i=Va(e.workstreams),l=Va(e.documents),c=Va(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 a){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?Va(e.taskEvents):Object.freeze(Sk(t,r,s,i));return Object.freeze({workspaceId:String(e.workspaceId||"").trim(),tasks:t,archivedTasks:r,deletedTasks:a,pendingDeletedTaskIds:d,pendingDeletedTaskWatermarks:f,taskRelationships:Va(e.taskRelationships),initiatives:s,workstreams:i,taxonomies:Va(e.taxonomies),taxonomyState:e.taxonomyState?structuredClone(e.taxonomyState):void 0,aiProfiles:Va(e.aiProfiles),documents:l,assets:c,currentDocumentPaths:mb(e.currentDocumentPaths,l.map(g=>g.path)),currentAssetPaths:mb(e.currentAssetPaths,c.map(g=>g.path)),documentReviewSessions:Va(e.documentReviewSessions),documentReviewComments:Va(e.documentReviewComments),annotatedAttachmentSessions:Va(e.annotatedAttachmentSessions),taskforceAgents:Va(e.taskforceAgents),agentRoles:Va(e.agentRoles),taskforceAgentSkills:Va(e.taskforceAgentSkills),agentConversations:Va(e.agentConversations),taskEvents:p})}function io(e){return new Set(e)}function ds(e){return new Map(e)}function DR(e,t){return new Set(oR(Array.from(e),t,r=>Qx(String(r||"").trim())).keys())}function LR(e){const{snapshot:t,baseline:r}=e,a=e.forceAllAiProfiles===!0,s=a?DR(t.aiProfiles,t.workspaceId):new Set,i=io(r.lastPushedAssetPaths),l=ds(r.lastPushedAssetWatermarks),c=io(r.lastPushedDocumentPaths),d=ds(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(NR({tasks:Array.from(t.tasks),archivedTasks:Array.from(t.archivedTasks),taskRelationships:Array.from(t.taskRelationships),taskEvents:Array.from(t.taskEvents),lastPushedTaskIds:io(r.lastPushedTaskIds),pendingDeletedTaskIds:io(t.pendingDeletedTaskIds),pendingDeletedTaskWatermarks:ds(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:io(r.lastPushedInitiativeIds),lastPushedInitiativeWatermarks:ds(r.lastPushedInitiativeWatermarks),lastPushedWorkstreamIds:io(r.lastPushedWorkstreamIds),lastPushedWorkstreamWatermarks:ds(r.lastPushedWorkstreamWatermarks),aiProfiles:Array.from(t.aiProfiles),lastPushedAiProfileIds:a?new Set:io(r.lastPushedAiProfileIds),lastPushedAiProfileWatermarks:a?new Map:ds(r.lastPushedAiProfileWatermarks),lastPushedAiProfileChangeKeys:a?new Map:ds(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:io(r.lastPushedDocumentReviewSessionIds),lastPushedDocumentReviewSessionWatermarks:ds(r.lastPushedDocumentReviewSessionWatermarks),lastPushedDocumentReviewCommentIds:io(r.lastPushedDocumentReviewCommentIds),lastPushedDocumentReviewCommentWatermarks:ds(r.lastPushedDocumentReviewCommentWatermarks),lastPushedAnnotatedAttachmentSessionIds:io(r.lastPushedAnnotatedAttachmentSessionIds),lastPushedAnnotatedAttachmentSessionWatermarks:ds(r.lastPushedAnnotatedAttachmentSessionWatermarks),lastPushedTaskforceAgentIds:a?new Set:io(r.lastPushedTaskforceAgentIds),lastPushedTaskforceAgentWatermarks:a?new Map:ds(r.lastPushedTaskforceAgentWatermarks),lastPushedTaskforceAgentSkillIds:a?new Set:io(r.lastPushedTaskforceAgentSkillIds),lastPushedTaskforceAgentSkillWatermarks:a?new Map:ds(r.lastPushedTaskforceAgentSkillWatermarks),lastPushedAgentConversationIds:io(r.lastPushedAgentConversationIds),lastPushedAgentConversationWatermarks:ds(r.lastPushedAgentConversationWatermarks),lastPushedTaskEventWatermarks:ds(r.lastPushedTaskEventWatermarks),baselineResetReason:r.baselineResetReason,lastPushedWatermarks:ds(r.lastPushedWatermarks),lastPushedTaskChangeKeys:ds(r.lastPushedTaskChangeKeys),lastPushedTaskRelationshipChangeKeys:ds(r.lastPushedTaskRelationshipChangeKeys),lastPushedTaxonomyChangeKey:r.lastPushedTaxonomyChangeKey})),p=tC(t);return Object.freeze({snapshot:t,signature:p,payload:f})}function tC(e){return jR({workspaceId:e.workspaceId,tasks:Array.from(e.tasks),archivedTasks:Array.from(e.archivedTasks),taskRelationships:Array.from(e.taskRelationships),taskEvents:Array.from(e.taskEvents),pendingDeletedTaskIds:io(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 rC(e){return Jc(e)}function $i(e){return On(e)}function OR(e,t,r){if(!e||typeof e!="object"||Array.isArray(e))return null;const a=e,s=String(a.id||"").trim(),i=String(a.workspaceId||t||"").trim(),l=Number(a.currentRevision),c=Number.isInteger(l)&&l>0?l:0,d=String(a.currentContentHash||"").trim(),f=a.lifecycleStatus;return!s||!i||!c||!d||f!=="active"&&f!=="retired"||t&&i!==t?null:{id:s,tenantId:rC(a.tenantId),workspaceId:i,lifecycleStatus:f,currentRevision:c,currentContentHash:d,definition:a.definition,revisions:Array.isArray(a.revisions)?a.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:$i(p?.createdByActorId),createdAt:String(p?.createdAt||r||"").trim()})):[],createdByActorId:$i(a.createdByActorId),updatedByActorId:$i(a.updatedByActorId),createdAt:String(a.createdAt||r||"").trim(),updatedAt:String(a.updatedAt||r||a.createdAt||"").trim(),retiredAt:$i(a.retiredAt),deletedAt:$i(a.deletedAt)}}function BR(e,t,r){if(!e||typeof e!="object"||Array.isArray(e))return null;const a=e,s=String(a.id||"").trim(),i=String(a.workspaceId||t||"").trim(),l=String(a.lifecycleStatus||"").trim(),c=Number(a.revision);return!s||!i||!Number.isInteger(c)||c<1||t&&i!==t||l!=="active"&&l!=="retired"||!Array.isArray(a.revisions)?null:{id:s,tenantId:rC(a.tenantId),workspaceId:i,lifecycleStatus:l,definition:a.definition,revision:c,contentHash:String(a.contentHash||"").trim(),revisions:a.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:$i(f.createdByActorId),createdAt:String(f.createdAt||r||"").trim()}}).filter(d=>d!==null),createdByActorId:$i(a.createdByActorId),updatedByActorId:$i(a.updatedByActorId),createdAt:String(a.createdAt||r||"").trim(),updatedAt:String(a.updatedAt||r||a.createdAt||"").trim(),retiredAt:$i(a.retiredAt),retiredByActorId:$i(a.retiredByActorId)}}function hb(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 nC(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 WR(e){const t=e||{};return{categories:Array.isArray(t.categories)?t.categories.map(a=>typeof a=="string"?{value:a.toLowerCase().replace(/\s+/g,"-"),label:a}:a):[],types:Array.isArray(t.types)?t.types.map(a=>({...a0(a.value),...a,aliases:Array.isArray(a.aliases)?a.aliases.filter(i=>typeof i=="string"&&i.trim().length>0).map(i=>i.trim()):void 0,status:a.status==="retired"?"retired":"active"})):[],priorities:Array.isArray(t.priorities)?t.priorities:[],taxonomies:Array.isArray(t.taxonomies)?t.taxonomies.map(a=>({...a,aliases:hb(a.aliases),options:Array.isArray(a.options)?a.options.map(s=>({...s,aliases:hb(s.aliases),status:s.status==="retired"?"retired":"active"})):[],status:a.status==="retired"?"retired":"active",formEnabled:a.formEnabled!==!1,filterEnabled:a.filterEnabled!==!1,sortEnabled:a.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 Ih(){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 gb(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,r=t.counter,a=typeof t.writerId=="string"?t.writerId.trim():"";return!Number.isSafeInteger(r)||Number(r)<1||!a||a.length>200?null:{counter:Number(r),writerId:a}}function $R(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 FR(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 Di(e){const t=String(e||"").trim();return t.length>0?t:null}function yb(e){return String(e||"").trim().toLowerCase()==="attach-cloud-import"?"attach-cloud-import":null}function UR(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 zR(e){return Array.isArray(e)?e.map(t=>String(t||"").trim()).filter(t=>t.length>0):[]}function kb(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,r=a=>Array.isArray(t[a])?t[a].map(s=>UR(s)).filter(s=>Array.isArray(s)):[];return{taskIds:zR(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 HR(e,t){if(!!!(e.enabled??e.cloudSyncEnabled))return"idle";const a=String(e.phase||"").trim().toLowerCase();if(a==="idle"||a==="provision-local"||a==="attach-cloud"||a==="active"||a==="error")return a;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 Oy(e){const t=Ih();if(!e||typeof e!="object")return{state:t,changed:!1};const r=e,a=r.lastErrorMessage,s=typeof a=="string"&&a.trim().length>0?a:null,i={version:2,revision:gb(r.revision),enabled:!!(r.enabled??r.cloudSyncEnabled),phase:"idle",setupIntent:yb(r.setupIntent),startupFullReconcileCompletedAt:Di(r.startupFullReconcileCompletedAt),pullCursor:Di(r.pullCursor),lastPullAt:Di(r.lastPullAt),lastPushAt:Di(r.lastPushAt),lastSyncedAt:Di(r.lastSyncedAt),lastErrorMessage:s,pushBaseline:kb(r.pushBaseline)};i.phase=HR(r,i),i.enabled||(i.phase="idle",i.pullCursor=null);const c=Number(r.version||0)!==2||JSON.stringify(gb(r.revision))!==JSON.stringify(i.revision)||!!(r.enabled??r.cloudSyncEnabled)!==i.enabled||String(r.phase||"").trim()!==i.phase||yb(r.setupIntent)!==i.setupIntent||Di(r.startupFullReconcileCompletedAt)!==i.startupFullReconcileCompletedAt||Di(r.pullCursor)!==i.pullCursor||Di(r.lastPullAt)!==i.lastPullAt||Di(r.lastPushAt)!==i.lastPushAt||Di(r.lastSyncedAt)!==i.lastSyncedAt||s!==i.lastErrorMessage||JSON.stringify(kb(r.pushBaseline))!==JSON.stringify(i.pushBaseline);return{state:i,changed:c}}const VR="taskforce.sync.lease.v1",GR="taskforce.sync.completed.v1",KR="taskforce.sync.lease.v1",qR=2500,YR=9e3,ZR=()=>!0;function Kc(e){const t=String(e||"").trim();return t.length>0&&t.toLowerCase()!=="default"}function Hp(e){const t=String(e||"").trim();return t.length>0?t:null}function By(e){return`${VR}.${e}`}function vb(e,t){return`${GR}.${e}.${t}`}function JR(e){if(!e)return null;try{const t=JSON.parse(e),r=String(t?.workspaceId||"").trim(),a=String(t?.operation||"").trim(),s=String(t?.completedAt||"").trim();return!r||!Number.isFinite(Date.parse(s))||a!=="pull"&&a!=="push"&&a!=="repair"?null:{workspaceId:r,operation:a,completedAt:s}}catch{return null}}function QR(e){if(!e)return null;try{const t=JSON.parse(e),r=String(t?.ownerId||"").trim(),a=String(t?.workspaceId||"").trim(),s=String(t?.operation||"").trim(),i=String(t?.heartbeatAt||"").trim(),l=String(t?.expiresAt||"").trim();return!r||!a||!i||!l||s!=="pull"&&s!=="push"&&s!=="repair"?null:{ownerId:r,workspaceId:a,operation:s,heartbeatAt:i,expiresAt:l}}catch{return null}}function XR(e,t,r,a){return{ownerId:e,workspaceId:t,operation:r,heartbeatAt:new Date(a).toISOString(),expiresAt:new Date(a+YR).toISOString()}}function eP(e,t=Date.now()){if(!e)return!0;const r=Date.parse(e.expiresAt);return!Number.isFinite(r)||r<=t}function Wy(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:Hp(t.startupFullReconcileCompletedAt),pullCursor:t.pullCursor===void 0?e.pullCursor:Hp(t.pullCursor),lastPullAt:t.lastPullAt===void 0?e.lastPullAt:Hp(t.lastPullAt),lastPushAt:t.lastPushAt===void 0?e.lastPushAt:Hp(t.lastPushAt),lastSyncedAt:t.lastSyncedAt===void 0?e.lastSyncedAt:Hp(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 wb(e){return{...e,pushBaseline:null}}function tP(e){const{currentWorkspaceId:t,setWorkspaceCloudSyncEnabled:r,setWorkspaceSyncPhase:a,setWorkspaceSyncSetupIntent:s,setWorkspaceLastPullAt:i,setWorkspaceLastPushAt:l,setWorkspaceLastErrorMessage:c,isWorkspaceOperationAuthorized:d=ZR}=e,[f,p]=o.useState(null),g=o.useRef(null),h=o.useRef(null),y=o.useRef(0),k=o.useRef(!1),v=o.useRef(!1),C=o.useRef(""),S=o.useRef(""),w=o.useRef(new Set),_=o.useRef(new Set),M=o.useRef(new Map),R=o.useRef(null),P=o.useRef(Ih()),b=o.useRef(""),$=o.useRef(null),I=o.useRef(null),E=o.useRef(null),K=o.useRef(null);if(!b.current){const Y=Date.now().toString(36),we=Math.random().toString(36).slice(2,10);b.current=`sync-lease-${Y}-${we}`}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)},[]),L=o.useCallback((Y,we)=>{if(typeof window>"u"||!d())return;const q=Math.max(1,y.current+1);y.current=q;const le=Zx(q),$e=Number(we?.minDelayMs),re=Number.isFinite($e)&&$e>0?Math.max(le,Math.floor($e)):le,de=Date.now()+re;h.current=de,p(new Date(de).toISOString()),g.current!==null&&window.clearTimeout(g.current),g.current=window.setTimeout(()=>{g.current=null,h.current=null,p(null),d()&&Y()},re)},[d]),D=o.useCallback(()=>{const Y=h.current;return typeof Y=="number"&&Number.isFinite(Y)&&Y>Date.now()},[]),ie=o.useCallback(Y=>{if(typeof window>"u")return null;const we=String(Y||"").trim();return Kc(we)?QR(window.localStorage.getItem(By(we))):null},[]),H=o.useCallback((Y,we)=>{if(typeof window>"u")return null;const q=String(Y||"").trim();if(!Kc(q))return null;try{const le=JR(window.localStorage.getItem(vb(q,we)));return le?.workspaceId===q&&le.operation===we?le:null}catch{return null}},[]),be=o.useCallback(Y=>{const we=String(Y||"").trim();if(we)try{K.current?.postMessage({workspaceId:we})}catch{}},[]),Z=o.useCallback((Y,we)=>{const q=String(Y||"").trim();if(Kc(q))try{K.current?.postMessage({kind:"state",workspaceId:q,state:wb(we)})}catch{}},[]),me=o.useCallback((Y,we,q=new Date().toISOString())=>{if(typeof window>"u")return;const le=String(Y||"").trim();if(!(!Kc(le)||!Number.isFinite(Date.parse(q))))try{window.localStorage.setItem(vb(le,we),JSON.stringify({workspaceId:le,operation:we,completedAt:new Date(q).toISOString()}))}catch{return}},[]),Ve=o.useCallback((Y,we,q,le=Date.now())=>{const $e=H(Y,we),re=$e?Date.parse($e.completedAt):NaN,de=Number(q);return Number.isFinite(re)&&Number.isFinite(de)&&de>0&&re<=le&&le-re<de},[H]),Re=o.useCallback((Y,we)=>{if(typeof window>"u")return null;const q=String(Y||"").trim();if(!Kc(q))return null;const le=XR(b.current,q,we,Date.now());try{window.localStorage.setItem(By(q),JSON.stringify(le))}catch{return null}return be(q),le},[be]),je=o.useCallback(()=>{E.current!==null&&typeof window<"u"&&(window.clearInterval(E.current),E.current=null)},[]),ye=o.useCallback((Y,we)=>{if(typeof window>"u")return;const q=String(Y||$.current||"").trim();if(!q)return;const le=ie(q),$e=le?.ownerId===b.current;if(!(!we?.force&&le&&!$e)){je();try{window.localStorage.removeItem(By(q))}catch{}$.current=null,I.current=null,be(q)}},[be,ie,je]),ue=o.useCallback((Y,we)=>{typeof window>"u"||(je(),E.current=window.setInterval(()=>{if(!d()){je();return}const q=String($.current||"").trim(),le=I.current;if(!q||!le){je();return}if(ie(q)?.ownerId!==b.current){je(),$.current=null,I.current=null;return}Re(q,le)},qR),$.current=Y,I.current=we)},[d,ie,je,Re]),ve=o.useCallback(async(Y,we)=>{if(!d())return!1;if(typeof window>"u")return!0;const q=String(Y||"").trim();if(!Kc(q))return!1;const le=ie(q);if(le?.ownerId===b.current)return Re(q,we)?(ue(q,we),!0):!1;if(le&&!eP(le)||!Re(q,we))return!1;const de=ie(q);return!de||de.ownerId!==b.current?!1:(ue(q,we),!0)},[d,ie,ue,Re]),Pe=o.useCallback(Y=>{ye(Y,{force:!0})},[ye]),Le=o.useCallback(Y=>{const we=P.current,q=Wy(we,{enabled:!!Y.enabled,phase:Y.phase||we.phase,setupIntent:Y.setupIntent,pullCursor:Y.pullCursor,lastPullAt:Y.lastPullAt,lastPushAt:Y.lastPushAt,lastSyncedAt:Y.lastSyncedAt,lastErrorMessage:Y.lastErrorMessage});P.current=q,R.current=q.pullCursor,r(q.enabled),a(q.phase),s(q.setupIntent??null),i(q.lastPullAt),l(q.lastPushAt),c(q.lastErrorMessage??null)},[r,a,s,i,l,c]),se=o.useCallback((Y,we)=>{const q=P.current.revision,le=Y.revision;if(le){const $e=$R(le,q);if($e<0||$e===0&&!we?.allowEqualRevision)return!1}else if(q||!we?.allowUnversioned)return!1;return P.current=Y,Le(Y),!0},[Le]),V=o.useCallback(Y=>{const we=Wy(P.current,Y);return Le(we),we},[Le]),W=o.useCallback(()=>P.current,[]),z=o.useCallback(async Y=>{const we=Wy(P.current,{...Y,revision:FR(P.current.revision,b.current)});P.current=we,R.current=we.pullCursor;const q=await ff({workspaceId:t,stateKey:"workspace-sync",patch:wb(we),throwOnError:!0,respectFailureCooldown:!1}),le=q.response,$e=q.payload;if(q.skipped)return se(we,{allowEqualRevision:!0})&&Z(t,we),P.current;if(!le)throw new Error("Failed to persist workspace sync state (missing response)");if(!le.ok||$e?.success===!1)throw new Error($e?.error||`Failed to persist workspace sync state (${le.status})`);const re=$e?.state&&typeof $e.state=="object"&&!Array.isArray($e.state)?Oy($e.state).state:we;return se(re,{allowEqualRevision:!0})&&Z(t,re),P.current},[se,Z,t]),fe=o.useCallback(async()=>{if(!Kc(t)){const Y=Ih();P.current=Y,Le(Y);return}try{const Y=await fetch(`/api/taskforce/ui-state?key=workspace-sync&workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!Y.ok)return;const we=await Y.json().catch(()=>({})),q=Oy(we?.state&&typeof we.state=="object"?we.state:null);se(q.state,{allowEqualRevision:!0,allowUnversioned:!0})&&(q.changed||!q.state.revision)&&z(q.state)}catch{}},[se,t,z]),ke=o.useCallback(async(Y,we)=>{if(!Kc(t))return{success:!1,error:"Workspace setup is required before enabling sync."};try{if(!Y.enabled)return await z({enabled:!1,phase:"idle",setupIntent:null,pullCursor:null}),{success:!0};if(!we.isAuthenticated)return{success:!1,error:"Sign in is required before enabling workspace sync."};if(!we.cloudAuthConfigured)return{success:!1,error:"Cloud authentication endpoint is not configured."};const q=await we.ensureCloudWorkspaceReadyForSync();return q.success?(await z({enabled:!0,phase:q.provisioned?"provision-local":"attach-cloud",setupIntent:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null}),{success:!0}):{success:!1,error:q.error||"Workspace sync handshake failed."}}catch{return{success:!1,error:"Failed to save workspace sync settings."}}},[t,z]);return o.useEffect(()=>{C.current="",S.current="",w.current=new Set,_.current=new Set,M.current=new Map,R.current=null,P.current=Ih(),k.current=!1,v.current=!1,ye(),U()},[U,t,ye]),o.useEffect(()=>{if(typeof window>"u"||typeof BroadcastChannel>"u")return;const Y=new BroadcastChannel(KR);return K.current=Y,Y.onmessage=we=>{const q=we.data;if(q?.kind!=="state"||String(q.workspaceId||"").trim()!==t||!q.state||typeof q.state!="object"||Array.isArray(q.state))return;const le=Oy(q.state);se(le.state)},()=>{Y.onmessage=null,Y.close(),K.current===Y&&(K.current=null)}},[se,t]),o.useEffect(()=>()=>{g.current!==null&&typeof window<"u"&&(window.clearTimeout(g.current),g.current=null),ye()},[ye]),{workspaceRetryAt:f,isWorkspaceRetryPending:D,workspacePushInFlightRef:k,workspacePullInFlightRef:v,workspaceLastPushedSignatureRef:C,workspacePendingSignatureRef:S,workspaceLastPushedTaskIdsRef:w,workspaceDeletedTaskIdsRef:_,workspaceDeletedTaskWatermarksRef:M,workspacePullCursorRef:R,clearWorkspaceRetry:U,scheduleWorkspaceRetry:L,persistWorkspaceSyncPatch:z,applyWorkspaceSyncPatchLocally:V,readWorkspaceSyncStateSnapshot:W,loadWorkspaceSyncState:fe,applyWorkspaceSyncStateSnapshot:Le,saveWorkspaceCloudSyncSettings:ke,acquireWorkspaceSyncLease:ve,releaseWorkspaceSyncLease:ye,forceClearWorkspaceSyncLease:Pe,readWorkspaceSyncLease:ie,readWorkspaceSyncCompletion:H,recordWorkspaceSyncCompletion:me,wasWorkspaceSyncOperationCompletedRecently:Ve}}class rP{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 a=typeof t.serverEpoch=="string"?t.serverEpoch.trim():"",s=Number(t.seq);if(!(a.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!==a)return this.activeEpoch=a,this.lastSeq=l,r&&this.rememberEventId(r),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1};if(!this.activeEpoch)return this.activeEpoch=a,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 aC(e){const{enabled:t,workspaceId:r,websocketUrl:a,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),v=o.useRef(0),C=o.useRef(""),S=o.useRef(!1),w=o.useRef(null),_=o.useRef(null),M=o.useRef(new rP),R=o.useRef(d),P=o.useRef(f);o.useEffect(()=>{R.current=d},[d]),o.useEffect(()=>{P.current=f},[f]);const[b,$]=o.useState({accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0}),I=o.useMemo(()=>String(r||"").trim(),[r]),E=o.useMemo(()=>String(a||"").trim(),[a]);return o.useEffect(()=>{let K=!1;const U=()=>{k.current!==null&&(window.clearTimeout(k.current),k.current=null)},L=()=>{const ye=y.current;if(y.current=null,ye)try{ye.close()}catch{}},D=ye=>ye==="taskforce:replay-gap"||ye==="taskforce:replay-reset"?4:ye==="taskforce:mutation"||ye==="taskforce:replay"?3:1,ie=ye=>{const ue=_.current;if(ue){const ve=D(ue.type),Pe=D(ye.type);if(Pe<ve)return;Pe===ve&&(ye={...ye,eventIds:Array.from(new Set([...ue.eventIds||[],...ue.eventId?[ue.eventId]:[],...ye.eventIds||[],...ye.eventId?[ye.eventId]:[]])),invalidations:[...ue.invalidations||[],...ye.invalidations||[]]})}_.current=ye,w.current!==null&&window.clearTimeout(w.current),w.current=window.setTimeout(()=>{w.current=null;const ve=R.current;if(!_.current||typeof ve!="function")return;const Pe=_.current;_.current=null,ve(Pe)},80)},H=ye=>{try{const ue=JSON.parse(String(ye.data||""));return!ue||typeof ue!="object"?null:ue}catch{return null}},be=ye=>{const ue=typeof ye.serverEpoch=="string"?ye.serverEpoch.trim():"",ve=Number(ye.seq);!ue||!Number.isFinite(ve)||ve<0||(C.current=`${ue}:${Math.floor(ve)}`,S.current=!1)},Z=ye=>{const ue=typeof ye.entityType=="string"?ye.entityType.trim():"";if(!ue)return null;const ve=Array.isArray(ye.affectedCollections)?ye.affectedCollections.map(Le=>typeof Le=="string"?Le.trim():"").filter(Boolean):void 0,Pe=Number(ye.dataVersion);return{entityType:ue,changeType:typeof ye.changeType=="string"?ye.changeType.trim():void 0,entityIds:Array.isArray(ye.entityIds)?ye.entityIds.map(Le=>typeof Le=="string"?Le.trim():"").filter(Boolean):[],affectedCollections:ve,lifecycleTransition:typeof ye.lifecycleTransition=="string"?ye.lifecycleTransition.trim():void 0,dataVersion:Number.isFinite(Pe)?Pe:void 0}},me=()=>{const ye=M.current.getTelemetry();$(ye);const ue=P.current;typeof ue=="function"&&ue(ye)},Ve=ye=>{const ue={type:"taskforce:replay",workspaceId:I,limit:c},ve=C.current;ve&&(ue.cursor=ve),ye.send(JSON.stringify(ue))},Re=()=>{if(!t||K)return;U(),v.current+=1;const ye=v.current,ue=Math.max(50,Math.floor(s)),ve=Math.max(ue,Math.floor(i)),Pe=Math.min(ve,ue*Math.pow(2,Math.max(0,ye-1)));h(ye>=l?"degraded-fallback":"reconnecting"),k.current=window.setTimeout(()=>{K||(k.current=null,je())},Pe)},je=()=>{if(!t||K||!I||!E)return;L();let ye;try{ye=new WebSocket(E)}catch{Re();return}y.current=ye,ye.addEventListener("open",()=>{v.current=0,h("connected"),ye.send(JSON.stringify({type:"taskforce:subscribe",workspaceId:I,userId:p||void 0})),Ve(ye)}),ye.addEventListener("message",ue=>{const ve=H(ue);if(!ve||typeof ve.type!="string")return;const Pe=typeof ve.workspaceId=="string"?ve.workspaceId.trim():I;if(!(!Pe||Pe!==I)){if(ve.type==="taskforce:update"){ie({type:"taskforce:update",workspaceId:I,eventId:typeof ve.eventId=="string"?ve.eventId.trim():void 0});return}if(ve.type==="taskforce:mutation"){const Le=M.current.process({eventId:ve.eventId,serverEpoch:ve.serverEpoch,seq:ve.seq});if(!Le.accepted){me(),Le.shouldRecover&&(C.current="",S.current||(S.current=!0,ie({type:"taskforce:replay-gap",workspaceId:I})));return}be(ve),me();const se=Z(ve);ie({type:ve.type,workspaceId:I,eventId:typeof ve.eventId=="string"?ve.eventId.trim():void 0,invalidations:se?[se]:void 0});return}if(ve.type==="taskforce:replay"){const Le=Array.isArray(ve.events)?ve.events:[];let se=0;const V=[],W=[];for(const z of Le){if(!M.current.process({eventId:z.eventId,serverEpoch:z.serverEpoch,seq:z.seq}).accepted)continue;se+=1,be(z);const ke=Z(z);ke&&V.push(ke),typeof z.eventId=="string"&&z.eventId.trim()&&W.push(z.eventId.trim())}S.current=!1,me(),(se>0||ve.truncated===!0)&&ie({type:"taskforce:replay",workspaceId:I,eventIds:W,invalidations:V}),ve.truncated===!0&&Ve(ye);return}if(ve.type==="taskforce:replay-gap"||ve.type==="taskforce:replay-reset"){if(C.current="",S.current)return;S.current=!0,ie({type:ve.type,workspaceId:I})}}}),ye.addEventListener("close",ue=>{if(y.current===ye&&(y.current=null),!K&&t){const ve=Number(ue?.code||0),Pe=String(ue?.reason||"").trim();console.warn(`[Taskforce] Realtime socket closed workspace=${I} user=${String(p||"anonymous").trim()||"anonymous"} code=${ve}${Pe?` reason=${Pe}`:""}`)}Re()}),ye.addEventListener("error",()=>{try{ye.close()}catch{}})};return!t||!I||!E?(h("degraded-fallback"),U(),L(),()=>{U(),L()}):(h("reconnecting"),je(),()=>{K=!0,U(),w.current!==null&&(window.clearTimeout(w.current),w.current=null),_.current=null,L()})},[t,I,E,s,i,l,c,p]),{connectionState:g,telemetry:b}}const Ak="taskforce:context-assets-mutated";function nP(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(Ak,{detail:e}))}const Ck="taskforce:ai-profiles-mutated";function sC(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(Ck,{detail:e}))}const _k="taskforce:agents-mutated";function oC(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(_k,{detail:e}))}const Ik="taskforce:agent-skills-mutated";function iC(e){typeof window>"u"||window.dispatchEvent(new CustomEvent(Ik,{detail:e}))}const aP=4,Km=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>=aP)return"[MaxDepth]";if(typeof e=="function"||typeof e=="symbol"||typeof e>"u")return String(e);if(Array.isArray(e))return e.slice(0,Km).map(a=>of(a,t+1,r));if(e instanceof Set)return Array.from(e.values()).slice(0,Km).map(a=>of(a,t+1,r));if(e instanceof Map){const a={};for(const[s,i]of Array.from(e.entries()).slice(0,Km))a[String(s)]=of(i,t+1,r);return a}if(typeof e=="object"){if(r.has(e))return"[Circular]";r.add(e);const a={};for(const[s,i]of Object.entries(e).slice(0,Km))a[s]=of(i,t+1,r);return r.delete(e),a}return String(e)}function kg(e){if(!(!e||typeof e!="object"||Array.isArray(e)))return of(e,0,new WeakSet)}function cC(e){const t=kg(e);if(!t)return"null";try{return JSON.stringify(t)}catch{return"[UnserializableSyncEventDetails]"}}const lC="anthropic",sP="anthropic.claude-sonnet-4-6",dC=[{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"}],Iv=[{key:sP,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.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 oP(e){return e.visible&&e.availability!=="account_unavailable"}function _X(e){const t=String(e||"").trim();return Iv.find(r=>r.key===t)||null}function Tv(e){const t=String(e||"").trim().toLowerCase();return dC.some(r=>r.key===t)?t:lC}function iP(e){const t=Tv(e);return Iv.filter(r=>r.providerKey===t&&lP(r))}function cP(e,t){const r=String(e||"").trim(),a=iP(t??lC);return a.some(s=>s.key===r)?r:a[0]?.key||""}function lP(e){return oP(e)}function IX(e){const t=Tv(e);return dC.find(r=>r.key===t)?.label||"Anthropic"}function TX(e){const t=String(e||"").trim();return Iv.find(r=>r.key===t)?.label||t||"No configured model"}const uC="taskforce.userGlobalSyncMeta.v1",dP="taskforce.syncDebug.v1",uP=12e4,pC="taskforce.syncWatermarks.v3",pP=300*1e3,bb="Another local window is already syncing this workspace. Wait a few seconds, or press Repair in that window.";function mc(e){const t=String(e||"").trim();return t.length>0&&t.toLowerCase()!=="default"}function fP(){if(typeof window>"u")return!1;try{const e=String(window.localStorage.getItem(dP)||"").trim().toLowerCase();return e==="1"||e==="true"||e==="on"||e==="yes"}catch{return!1}}function Ns(e,t){if(!fP())return;console.info("[Taskforce Sync]",e,t&&typeof t=="object"?t:{})}function mP(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:Tu(e?.avatarUrl??e?.avatar_url),avatarSourceUrl:Tu(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:ms(e?.avatarUpdatedAt??e?.avatar_updated_at),description:On(e?.description),role:On(e?.role),provider:On(e?.provider),model:On(e?.model),surfaceType:ZA(e?.surfaceType??e?.surface_type),seatScope:JA(e?.seatScope??e?.seat_scope),providerMetadata:t&&typeof t=="object"&&!Array.isArray(t)?t:null,archivedAt:ms(e?.archivedAt??e?.archived_at),archivedBy:wc(e?.archivedBy??e?.archived_by),archivedReason:On(e?.archivedReason??e?.archived_reason),mergedIntoProfileId:wc(e?.mergedIntoProfileId??e?.merged_into_profile_id),rosterStateUpdatedAt:ms(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:ms(e?.lastActiveAt??e?.last_active_at)}}function hP(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:Tv(e?.providerKey??e?.provider_key),modelKey:cP(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:wc(e?.createdByUserId??e?.created_by_user_id),updatedByUserId:wc(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:ms(e?.deletedAt??e?.deleted_at)}}function gP(e){const t=Array.isArray(e?.messages)?e.messages.map(a=>({role:a?.role==="assistant"?"assistant":"user",content:String(a?.content||"").trim()})).filter(a=>a.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:wc(e?.taskId??e?.task_id),title:String(e?.title||"Agent chat").trim()||"Agent chat",messages:t,modelProvider:On(e?.modelProvider??e?.model_provider),modelId:On(e?.modelId??e?.model_id),usage:r,latencyMs:Number.isFinite(Number(e?.latencyMs??e?.latency_ms))?Number(e?.latencyMs??e?.latency_ms):null,createdByUserId:wc(e?.createdByUserId??e?.created_by_user_id),updatedByUserId:wc(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:ms(e?.deletedAt??e?.deleted_at)}}function Sb(){if(typeof window>"u")return{};try{const e=window.localStorage.getItem(uC);if(!e)return{};const t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return{}}}function yP(e){if(!(typeof window>"u"))try{window.localStorage.setItem(uC,JSON.stringify(e))}catch{}}function kP(e){try{return JSON.stringify(e&&typeof e=="object"?e:null)}catch{return"null"}}function vP(e){return e.flatMap(t=>{const r=String(t?.id||"").trim();return!r||!Array.isArray(t?.comments)?[]:t.comments.map(a=>({id:String(a?.id||"").trim(),sessionId:r,body:String(a?.body||""),anchor:a?.anchor??null,order:Number.isFinite(Number(a?.order))?Math.max(0,Math.floor(Number(a.order))):0,authorActorId:typeof a?.authorActorId=="string"&&a.authorActorId.trim().length>0?a.authorActorId.trim():null,updatedByActorId:typeof a?.updatedByActorId=="string"&&a.updatedByActorId.trim().length>0?a.updatedByActorId.trim():null,deletedByActorId:typeof a?.deletedByActorId=="string"&&a.deletedByActorId.trim().length>0?a.deletedByActorId.trim():null,createdAt:String(a?.createdAt||"").trim(),updatedAt:String(a?.updatedAt||a?.createdAt||"").trim(),deletedAt:typeof a?.deletedAt=="string"&&a.deletedAt.trim().length>0?a.deletedAt.trim():null})).filter(a=>a.id.length>0&&a.sessionId.length>0)})}function fC(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 mC(e,t){if(!e||typeof e!="object")return null;const r=typeof e.taxonomyStateFingerprint=="string"?e.taxonomyStateFingerprint:"",a=!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(a.keys())),taskWatermarks:a,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 $y(e,t){if(typeof window>"u")return null;try{const r=`${pC}.${e}`,a=window.localStorage.getItem(r);if(!a)return null;const s=JSON.parse(a);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:mC(s,t)}catch{return null}}function Ab(e,t){if(typeof window>"u")return!1;try{const r=`${pC}.${e}`;return window.localStorage.setItem(r,JSON.stringify({v:12,savedAt:new Date().toISOString(),...fC(t)})),!0}catch{return!1}}function wP({currentWorkspaceId:e,workspaceSyncPhase:t,clearWorkspaceRetry:r,setWorkspaceSyncBusy:a,setUserGlobalSyncStatus:s,setUserGlobalSyncError:i,setWorkspaceLastErrorMessage:l,setWorkspaceLastErrorAt:c,reportSyncEvent:d,setAuthBlocked:f,setIsAuthenticated:p,checkAuthSession:g,ensureCloudWorkspaceReadyForSync:h,scheduleWorkspaceSyncRetry:y,persistWorkspaceSyncPatchSafely:k}){const v=async(S,w)=>{r(),a(!1),s("error");const _="Session expired. Sign in again to resume cloud sync.";i(_),l(_),c(new Date().toISOString()),d(e,{eventType:S==="handshake"?"handshake":S,status:"error",statusCode:w,errorMessage:_}),f(!0),p(!1),await g()};return{handleSyncAuthFailure:v,ensureWorkspaceSyncReady:async()=>{if(!mc(e)){const _="Workspace sync blocked: local workspace ID is unresolved.";return l(_),c(new Date().toISOString()),i(_),s("error"),!1}const S=await h();if(S.success)return!0;if(S.statusCode===401)return await v("handshake",401),!1;const w=S.error||"Workspace sync handshake failed.";return l(w),c(new Date().toISOString()),i(w),s("error"),d(e,{eventType:"handshake",status:"error",statusCode:S.statusCode,errorMessage:w}),S.transient||Go(S.statusCode)?y(S.retryAfterMs):(t==="active"||t==="attach-cloud"||t==="provision-local")&&k({phase:"error",lastErrorMessage:w}),!1}}}const hC=5*6e4;function Fy(e){if(!e)return null;const t=Date.parse(e);return Number.isFinite(t)?t:null}function Wf(e){return e.cloudAuthConfigured&&e.runtimeMode==="local"&&e.workspaceCloudSyncEnabled&&e.authSessionResolved}function bP({enabled:e,phase:t,busy:r,retryAt:a,lastErrorMessage:s,lastErrorAt:i,lastPullAt:l,lastPushAt:c,nowMs:d,pullLagToleranceMs:f=hC,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 C=g?.blocked||0,S=g?.pending||0;return{status:"attention",summary:`${C} durable local change${C===1?"":"s"} could not sync${S>0?`; ${S} later change${S===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(a)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=Fy(l),y=Fy(c),k=Fy(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 SP(e){return Wf(e)&&e.workspaceSyncPhase!=="attach-cloud"&&e.workspaceSyncReferenceSnapshotsReady}function AP(e){return Wf(e)&&e.workspaceSyncPhase==="active"&&e.workspaceSyncReferenceSnapshotsReady}function CP(e){return Wf(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 _P(e){return Wf(e)&&e.isAuthenticated&&e.workspaceSyncPhase==="active"}function IP(e){return Wf(e)&&e.isAuthenticated&&e.workspaceSyncPhase!=="provision-local"&&e.workspaceSyncPhase!=="attach-cloud"&&!e.alreadyRan}function TP(e){const{workspaceSyncPhase:t,lastBootstrapPhase:r,workspaceLastPullAt:a}=e;return t==="provision-local"?"provision-local":t==="attach-cloud"?"attach-cloud":t==="active"||r==="active"?"active":r==="provision-local"||r==="attach-cloud"?r:a?"attach-cloud":"provision-local"}function xP({workspaceSyncPhase:e,lastBootstrapPhaseRef:t,bootstrapPhaseStartedAtRef:r,bootstrapLastProgressAtRef:a}){if(e==="attach-cloud"||e==="provision-local"){t.current=e,r.current===null&&(r.current=Date.now()),a.current=null;return}r.current=null,a.current=null}function RP({currentWorkspaceId:e,workspaceCloudSyncEnabled:t,workspaceSyncPhase:r,workspacePullInFlightRef:a,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"||a.current||s.current)return;const v=Math.max(i.current??0,l.current??0);if(v>0&&Date.now()-v<uP)return;const S=`Workspace sync ${r==="attach-cloud"?"initial cloud pull":"initial cloud upload"} stalled. Press Repair to restart sync for this workspace.`;d(S),f(new Date().toISOString()),p("error"),g(S),h(!1),y({phase:"error",lastErrorMessage:S}),Ns("workspace_sync_bootstrap_timeout",{workspaceId:e,phase:r})},1e4);return()=>window.clearInterval(k)}function PP(e){const t=String(e||"").trim();return t.length>0&&t.toLowerCase()!=="default"}const xv={allowed:!0};function gs(e,t){return{allowed:!1,reason:e,retainPendingSignature:t?.retainPendingSignature===!0}}function Rv(e,t){return e.cloudAuthConfigured?e.runtimeMode!=="local"?gs("runtime-not-local"):e.workspaceCloudSyncEnabled?(t?.requireValidWorkspace??!0)&&!PP(e.currentWorkspaceId)?gs("invalid-workspace"):null:gs("sync-disabled"):gs("cloud-auth-unconfigured")}function Tk(e){const t=Rv(e);return t||(e.repairModeActive&&!e.repairModeBypass?gs("repair-active",{retainPendingSignature:!0}):e.workspaceSyncPhase==="attach-cloud"&&!e.repairModeBypass?gs("attach-cloud",{retainPendingSignature:!0}):e.isAuthenticated?e.pushInFlight?gs("push-in-flight",{retainPendingSignature:!0}):e.pullInFlight?gs("pull-in-flight",{retainPendingSignature:!0}):xv:gs("auth-required"))}function xk(e){const t=Rv(e);return t||(e.repairModeActive&&!e.repairModeBypass?gs("repair-active"):e.workspaceSyncPhase==="provision-local"?gs("provision-local"):e.retryPending?gs("retry-pending"):e.isAuthenticated?e.pullInFlight?gs("pull-in-flight"):e.pushInFlight?gs("push-in-flight"):xv:gs("auth-required"))}function Rk(e){const t=Rv(e,{requireValidWorkspace:!1});return t||(e.isAuthenticated?xv:gs("auth-required"))}function EP(e){return gs("lease-held",{retainPendingSignature:e==="push"})}const NP=512;function jP({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:r,workspaceSyncPhase:a,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,v=!1,C=null,S=!1;const w=()=>{if(v||!p())return;const I=S?[]:C;I&&(S=!1,C=null,v=!0,g?.(I).catch(()=>{}).finally(()=>{v=!1,w()}))},_=I=>{if(!S){if(!v&&C===null){C=I,w();return}if(C===null){C=I;return}C=null,S=!0}},M=()=>{C=null,S=!0,w()},R=()=>{if(!k&&y.size===0)return;const I=k?[]:Array.from(y);y.clear(),k=!1,I.length===0?M():_(I)};return{handleRealtimeSignal:I=>{if(!e||t!=="local"||!r||a==="provision-local")return;const E=Array.from(new Set([...I?.eventIds||[],...I?.eventId?[I.eventId]:[]].map(U=>String(U||"").trim()).filter(Boolean)));let K=E.length===0;for(const U of E)l.current.delete(U)||(K=!0);if(K){if(p()){if(E.length===0)k=!0;else if(!k)for(const U of E)y.add(U),y.size>=NP&&(_(Array.from(y)),y.clear());i.current!==null&&window.clearTimeout(i.current),i.current=window.setTimeout(()=>{i.current=null,R()},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:(I,E)=>{const K=E?.queueRef,U=Number.isFinite(E?.maxQueueSize)?Math.max(1,Number(E?.maxQueueSize)):2048,L=Number.isFinite(E?.ttlMs)?Math.max(0,Number(E?.ttlMs)):null;for(const D of I){const ie=String(D||"").trim();!ie||l.current.has(ie)||(l.current.add(ie),K&&K.current.push(ie),L!==null&&window.setTimeout(()=>{l.current.delete(ie)},L))}if(K)for(;K.current.length>U;){const D=K.current.shift();D&&l.current.delete(D)}},clearRealtimePullDebounce:()=>{i.current!==null&&(window.clearTimeout(i.current),i.current=null),y.clear(),k=!1,C=null,S=!1}}}function gC(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 MP(e){gC(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 DP(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 LP({currentWorkspaceId:e,workspaceCloudSyncEnabled:t,workspaceSyncPhase:r,workspaceLastPullAt:a,runtime:s,localServices:i,acquireWorkspaceSyncLease:l,releaseWorkspaceSyncLease:c,forceClearWorkspaceSyncLease:d,clearWorkspaceRetry:f,clearWorkspaceIssue:p,reportWorkspaceWindowContention:g,reportSyncEvent:h,persistWorkspaceSyncPatch:y,persistWorkspaceSyncWatermarksSnapshotBestEffort:k,buildWorkspaceSyncSignature:v,pullWorkspaceChangesFromCloud:C,pushWorkspaceChangesToCloud:S,cloudAuthConfigured:w,runtimeMode:_,isAuthenticated:M,checkAuthSession:R,isExecutionAuthorized:P=()=>!0,coordinatorGeneration:b=null}){const $=s.lastBootstrapPhase,I=s.repairMode,E=s.forceFullAiProfilePush,K=s.startupRepairRan,U=s.startupFullReconcileRan,L=s.fullReconcileInFlight,D=s.pullCursor,ie=s.attachBootstrapBaselineSignature,H=s.captureAttachBootstrapBaseline,be=s.pendingSignature,Z=s.pendingPushReplay,me=s.lastPushedSignature;s.baselineResetReason;const Ve=s.bootstrapPhaseStartedAtMs,Re=s.bootstrapLastProgressAtMs,je=r==="provision-local"?"push":r==="attach-cloud"?"bootstrap":"pull";return{retryWorkspaceCloudSync:async()=>{if(!P())return!1;f();let ve=Rk({cloudAuthConfigured:w,runtimeMode:_,workspaceCloudSyncEnabled:t,currentWorkspaceId:e,isAuthenticated:M});if(!ve.allowed&&ve.reason==="auth-required"){if(!await R())return h(e,{eventType:je,status:"error",errorMessage:"Manual sync retry blocked: sign in is required.",details:{source:"retry.blocked",reason:"auth-required",phase:r}}),!1;ve=Rk({cloudAuthConfigured:w,runtimeMode:_,workspaceCloudSyncEnabled:t,currentWorkspaceId:e,isAuthenticated:!0})}if(!ve.allowed)return h(e,{eventType:je,status:"error",errorMessage:`Manual sync retry blocked: ${ve.reason}.`,details:{source:"retry.blocked",reason:ve.reason,phase:r}}),!1;if(E.current=!0,r==="provision-local"){const V=v();return V?S(V,{forceAllAiProfiles:!0}):!1}const Pe=Z.current;if(r==="active"&&Pe)return be.current=Pe.signature,S(Pe.signature,{forceAllAiProfiles:Pe.forceAllAiProfiles,repairMode:Pe.repairMode});const Le=await C();if(r==="attach-cloud")return Le;const se=v();if(se){be.current=se;const V=await S(se,{forceAllAiProfiles:E.current===!0});return Le||V}return Le},resetWorkspaceSyncCursorAndPull:async()=>{if(!P())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 Pe=TP({workspaceSyncPhase:r,lastBootstrapPhase:$.current,workspaceLastPullAt:a}),Le=Pe==="provision-local",se=Pe==="active"||Pe==="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 V=null;if(Pe!=="provision-local")try{V=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(Ve.current=null,Re.current=null,D.current=null,ie.current="",H.current=!1,be.current="",me.current="",E.current=!1,K.current=!1,U.current=!1,L.current=!1,Le&&(MP(s),k()),I.current=!0,h(e,{eventType:"bootstrap",status:"success",errorMessage:"Manual sync repair started.",details:{source:"repair.started",phase:r,repairPhase:Pe,lastBootstrapPhase:$.current}}),await y({phase:Pe,pullCursor:null,startupFullReconcileCompletedAt:null,lastErrorMessage:null}),Pe==="provision-local"){const ke=v();if(!ke)return;await S(ke,{forceAllAiProfiles:!0,repairMode:!0});return}const W=await C({repairMode:!0,...V?.kind==="recovery"&&V.needsAuthoritativeRepair?{forceV3AuthoritativeRepair:!0,recoveryBatchId:V.recoveryBatchId}:{}});if(Pe!=="active"&&Pe!=="attach-cloud"||!W)return;se&&(gC(s),k());const z=v();if(!z)return;if(be.current=z,await S(z,{forceAllAiProfiles:!0,repairMode:!0})&&b!==null&&i.completeAuthoritativeRepair){const ke=await i.completeAuthoritativeRepair({workspaceId:e,coordinatorGeneration:b,repairId:`repair-${globalThis.crypto.randomUUID()}`,stateSignatureSha256:await DP(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{I.current=!1,c(e)}}}}function OP({workspaceSyncPhase:e,forceCursorNull:t,currentCursor:r}){const a=e==="attach-cloud";return{bootstrap:a,cursor:a||t===!0?null:r,successEventType:a?"bootstrap":"pull"}}function BP({workspaceSyncPhase:e,forceCursorNull:t,repairMode:r,startupFullReconcileRan:a,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&&!a,deferredPushSignature:p}}function yC(e){if(typeof e!="string")return;const t=e.trim();return t.length>0?t:void 0}function WP(e){return yC(e)??null}function $P(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 FP(e){if(e==null||e==="")return null;const t=typeof e=="number"?e:Number(e);return Number.isFinite(t)?Math.floor(t):null}function UP(e,t,r){if(e===void 0||!e||typeof e!="object"||Array.isArray(e))return;const a=e,s=["canonicalFingerprint","contractVersion","domain","entityId","entityRevision","lifecycleRevision","mutationKind","sequence"],i=Object.keys(a).sort(),l=new Set(["create","metadata-update","append-comment","archive","unarchive"]);if(!(i.length!==s.length||i.some((c,d)=>c!==s[d])||a.contractVersion!==3||a.domain!==t||a.entityId!==r||typeof a.mutationKind!="string"||!l.has(a.mutationKind)||typeof a.sequence!="string"||!/^[1-9]\d*$/.test(a.sequence)||typeof a.entityRevision!="string"||!/^\d+$/.test(a.entityRevision)||typeof a.lifecycleRevision!="string"||!/^\d+$/.test(a.lifecycleRevision)||a.entityRevision==="0"||a.mutationKind==="create"&&(a.entityRevision!=="1"||a.lifecycleRevision!=="0")||(a.mutationKind==="archive"||a.mutationKind==="unarchive")&&a.lifecycleRevision==="0"||typeof a.canonicalFingerprint!="string"||!/^[a-f0-9]{64}$/.test(a.canonicalFingerprint)))return a}function zP(e,t){if(!e||typeof e!="object"||Array.isArray(e))return null;const r=e,a=String(r.id||"").trim();if(!a)return null;const s=UP(r.durableRevision,"initiative",a);if(Object.prototype.hasOwnProperty.call(r,"durableRevision")&&!s)throw new Error("Initiative durable revision is invalid.");const i=xf(r.comments);return{id:a,referenceNumber:$P(r.referenceNumber),referenceLabel:yC(r.referenceLabel),title:String(r.title||"").trim(),description:typeof r.description=="string"?r.description:null,ownerId:WP(r.ownerId),...i?{comments:i}:{},createdAt:String(r.createdAt||t||"").trim(),updatedAt:String(r.updatedAt||t||r.createdAt||"").trim(),order:FP(r.order),attachments:Rf(r.attachments),isArchived:!!r.isArchived,...s?{durableRevision:s}:{}}}function HP(e){const t=zP(e);if(!t||!t.createdAt||!t.updatedAt)throw new Error("Initiative is missing canonical sync identity or watermarks.");return{...t,attachments:cR(e.attachments)}}const kC=["create","metadata-update","append-comment","archive","unarchive"],VP={coverageProfileId:"covered-metadata",coverageVersion:1,projections:[{projectionId:"initiative/full-v1",domain:"initiative",schemaVersion:1,mutationKinds:kC,fields:["id","referenceNumber","referenceLabel","title","description","ownerId","comments","attachments","order","createdAt","updatedAt","isArchived"],dependencies:[],operationAtomic:!0}]};function Pk(e){return Array.isArray(e)?e.every(Pk):!e||typeof e!="object"?!0:Object.entries(e).every(([t,r])=>t!=="content"&&t!=="contentBase64"&&Pk(r))}function vC(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)&&En({coverageProfileId:t.coverageProfileId,coverageVersion:t.coverageVersion,projections:t.projections})===En(VP)}function wC(e){const t=a=>/^\d+$/.test(String(a??""));if(e.projection!=="initiative/full-v1"||e.domain!=="initiative"||!e.entityId||!kC.includes(e.mutationKind)||!t(e.sequence)||!t(e.entityRevision)||!t(e.lifecycleRevision)||!/^[a-f0-9]{64}$/.test(e.payloadFingerprint)||!Pk(e.payload)||e.contentSha256!==void 0||e.sizeBytes!==void 0)throw new Error("Workspace sync v3 initiative entry is invalid.");const r=HP(e.payload);if(r.id!==e.entityId||En(r)!==En(e.payload))throw new Error("Workspace sync v3 initiative payload is not canonical.")}const GP={getLocalProjection:NA,applyLocalProjection:jA,pullFeed:PA,pullInitiativeRepair:WA};function KP(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 hf(e){return e.data?.result?.projection||e.data?.projection||null}function Zc(e,t,r){return{kind:"transient-failure",status:e.status,retryAfterMs:e.retryAfterMs,error:String(e.data?.error||r),excludeInitiativesFromV2:t==="v3"}}function qm(e){return e===0||e===429||e>=500}function Cb(e,t){const r=e.data,a=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||!vC(a)||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(wC)}catch{return null}return s}function qP(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"||!vC(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(wC)}catch{return null}return r}async function YP(e){let t=e.projection,r=t.repair?.cursor||null;const a=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}:Zc(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=hf(l);if(!l.ok||!c)return Zc(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||a.has(d))return{kind:"transient-failure",status:502,error:"Initiative fallback repair made no progress.",excludeInitiativesFromV2:!1};a.add(d),r=d}}async function $l(e){return YP(e)}async function Ym(e){const t=await e.dependencies.applyLocalProjection(e.workspaceId,{kind:"rollback",epoch:e.projection.epoch}),r=hf(t);return!t.ok||!r||r.owner!=="v2"?Zc(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 Ek(e){const t={...GP,...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}},a=await r.getLocalProjection(e.workspaceId),s=KP(a,e.workspaceId);if(!s)return Zc(a,"v2","Local initiative projection state is unavailable.");if(s.owner==="v3"&&s.repair?.resumeCursor.startsWith("v2-fallback:"))return $l({...e,projection:s,dependencies:r});if(!e.activationEnabled)return s.owner==="v3"?$l({...e,projection:s,dependencies:r}):s.repair?Ym({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&&!qm(l.status))return i.owner==="v3"?$l({...e,projection:i,dependencies:r}):Ym({workspaceId:e.workspaceId,projection:i,dependencies:r});if(qm(l.status))return Zc(l,"v2","Workspace sync v3 feed is temporarily unavailable.");const c=Cb(l,e.workspaceId);if(!c)return i.owner==="v3"?$l({...e,projection:i,dependencies:r}):Ym({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=hf(d);if(!d.ok||!f)return Ym({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&&!qm(l.status))return $l({...e,projection:i,dependencies:r});if(qm(l.status))return Zc(l,"v3","Workspace sync v3 feed is temporarily unavailable.");if(l.status===409){const p=Cb(l,e.workspaceId);if(!p)return $l({...e,projection:i,dependencies:r});const g=await r.applyLocalProjection(e.workspaceId,{kind:"repair",epoch:i.epoch,previousCursor:null,page:p}),h=hf(g);if(!g.ok||!h)return Zc(g,"v3","Initiative repair could not be applied locally.");if(i=h,i.repair)return Ek({...e,dependencies:t});continue}const c=qP(l,e.workspaceId);if(!c||!i.opaqueCursor)return $l({...e,projection:i,dependencies:r});const d=await r.applyLocalProjection(e.workspaceId,{kind:"delta",epoch:i.epoch,previousCursor:i.opaqueCursor,page:c}),f=hf(d);if(!d.ok||!f)return Zc(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 Jl=Object.freeze([]),ZP=960*1e3,JP="coverage/task-planning-metadata-v1",QP={getLocalProjection:MA,applyLocalProjection:DA,pullFeed:EA,pullFallbackRepair:$A,getLocalTaskCommentAudit:LA,pullTaskCommentAudit:OA,applyLocalTaskCommentAudit:BA};function Th(e){return tl(e)?.coverage||null}function Qc(e){return e.owner!=="v3"?Jl:tl(e)?.excludedProjections||Jl}function Oi(e,t){return e.coverageProfileId===t.coverageProfileId&&e.coverageVersion===t.coverageVersion&&e.coverageDigest===t.coverageDigest}function XP(e,t){return Oi(t,ka)?e:{...e,coverage:t}}function uu(e,t,r,a){return Oi(a,ka)?e.applyLocalProjection(t,r):e.applyLocalProjection(t,r,a)}function bC(e){return!!(e&&e.coverageId===JP&&(e.owner==="v2"||e.owner==="v3")&&tl(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 eE(e,t){const r=e.data?.projection;return!e.ok||e.data?.success!==!0||e.data?.contractVersion!==3||e.data?.workspaceId!==t||!bC(r)?null:r}function pu(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&&bC(r)?r:null}function Vp(e){return e.ok&&e.data?.success===!0&&e.data?.result?.state==="invalidated"}function co(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:Qc(t)}}function us(e,t){return{kind:"transient-failure",status:502,error:t,excludedProjections:Qc(e)}}function tE(e,t,r){if(!e||typeof e!="object"||Array.isArray(e))return!1;const a=e;return a.success===!0&&a.contractVersion===3&&a.workspaceId===t&&a.previousCursor===r&&Array.isArray(a.entries)&&typeof a.hasMore=="boolean"&&a.hasMore===!!a.nextCursor}async function rE(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,a=t.data?.nextSweepAt==null?null:String(t.data.nextSweepAt);if(r===void 0)return co(t,e.projection,"Local task comment audit state is unavailable.");const s=Date.now(),i=Date.parse(a||""),l=Number.isFinite(i)&&i>s&&i<=s+ZP;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:Qc(e.projection)};if(!c.ok||!tE(c.data,e.workspaceId,r))return co(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)?co(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 Gp(e){return e===0||e===429||e>=500}function vg(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 Pv(e,t,r){if(!e||typeof e!="object"||Array.isArray(e))return!1;const a=e;return a.success===!0&&a.protocolVersion===3&&a.workspaceId===t&&vg(a.coverage,r)&&!!a.snapshotId&&/^\d+$/.test(String(a.snapshotSequence||""))&&Number.isFinite(Date.parse(String(a.expiresAt||"")))&&Array.isArray(a.entries)&&typeof a.hasMore=="boolean"&&a.hasMore===!!a.nextRepairCursor&&!!a.resumeCursor&&!!a.diagnostics&&a.diagnostics.returnedEntries===a.entries.length}function nE(e,t,r){const a=e.data,s=String(a?.code||"unknown");let i="repair envelope is incompatible";a?.protocolVersion!==3||a?.workspaceId!==t?i="protocol or workspace scope is incompatible":["CURSOR_EXPIRED","COVERAGE_CHANGED","EXPLICIT_REPAIR"].includes(s)?vg(a.coverage,r)?a.repairMode!=="authoritative-covered-projection-snapshot"?i="repair mode is incompatible":wv(a.peerCapability,r)?bv(a.legacyV2Boundary,r)?Pv(a.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(a?.error||"").trim();return`Cloud combined workspace sync returned an invalid repair response (${s}; ${i}).`+(l?` Cloud error: ${l}`:"")}function Zm(e,t,r){const a=e.data;return e.status===409&&a?.protocolVersion===3&&a.workspaceId===t&&(a.code==="CURSOR_EXPIRED"||a.code==="COVERAGE_CHANGED"||a.code==="EXPLICIT_REPAIR")&&vg(a.coverage,r)&&a.repairMode==="authoritative-covered-projection-snapshot"&&wv(a.peerCapability,r)&&bv(a.legacyV2Boundary,r)&&Pv(a.repair,t,r)?a.repair:null}function aE(e,t,r){const a=e.data;return e.ok&&a?.success===!0&&a.protocolVersion===3&&a.workspaceId===t&&vg(a.coverage,r)&&wv(a.peerCapability,r)&&bv(a.legacyV2Boundary,r)&&Array.isArray(a.entries)&&typeof a.nextCursor=="string"&&a.nextCursor&&typeof a.hasMore=="boolean"&&/^\d+$/.test(String(a.cycleHighWatermark||""))&&/^\d+$/.test(String(a.lastScannedSequence||""))&&a.diagnostics&&a.diagnostics.coveredCount===a.entries.length&&a.diagnostics.scannedCount>=a.entries.length?a:null}function sE(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 oE(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 Jm(e){let t=e.projection;const r=Th(t);if(!r)return us(t,"Persisted combined workspace sync coverage is unsupported.");let a=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,XP({workspaceId:e.workspaceId,cursor:a,limit:100},r));if(l.status===401)return{kind:"auth-failure",status:401,excludedProjections:Qc(t)};if(l.status===410&&a&&!i&&l.data?.success===!1&&l.data.code==="WORKSPACE_SYNC_V3_COMBINED_REPAIR_SNAPSHOT_UNAVAILABLE"){i=!0,a=null,s.clear();continue}if(!l.ok)return co(l,t,"Combined v2 fallback repair failed.");const c=Pv(l.data,e.workspaceId,r)&&gx(l.data.legacyV2Boundary)?l.data:null;if(!c)return us(t,"Combined v2 fallback repair returned an invalid page.");const d=await uu(e.dependencies,e.workspaceId,{kind:"fallback-repair",epoch:t.epoch,previousCursor:a,page:c},r),f=pu(d,e.workspaceId);if(!d.ok||!f)return co(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:Jl}:us(t,"Combined v2 fallback repair did not release v3 ownership.");const p=String(c.nextRepairCursor||"");if(!p||p===a||s.has(p)||t.owner!=="v3"||t.repair?.cursor!==p||!t.repair.resumeCursor.startsWith("v2-fallback:"))return us(t,"Combined v2 fallback repair made no progress.");s.add(p),a=p}}function _b(e){return Nk(e,!1)}async function Nk(e,t){const r={...QP,...e.dependencies},a={...r,applyLocalProjection:async(...C)=>{const S=await r.applyLocalProjection(...C);return S.ok&&S.data?.success!==!1&&!Vp(S)&&e.onChangesApplied?.(C[1].page.entries.length),S}},s=e.coverage||ka,i=tl(s);if(!i)return{kind:"transient-failure",status:502,error:"Requested combined workspace sync coverage is unsupported.",excludedProjections:Jl};const l=await a.getLocalProjection(e.workspaceId,s),c=eE(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:Jl};if(c.owner==="v3"&&c.repair?.resumeCursor.startsWith("v2-fallback:"))return Jm({...e,projection:c,dependencies:a});if(!e.activationEnabled)return c.owner==="v3"?Jm({...e,projection:c,dependencies:a}):{kind:"v2-fallback",excludedProjections:Jl};let d=c,f=!1,p=!1,g=t;const h=Th(d);if(!h)return us(d,"Persisted combined workspace sync coverage is unsupported.");if(d.coverageRepairRequired||d.owner==="v3"&&!d.repair&&!Oi(h,s)){const C=await a.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,...d.owner==="v3"&&d.opaqueCursor?{cursor:d.opaqueCursor}:{},limit:100,...Oi(s,ka)?{}:{coverage:s}});if(C.status===401)return{kind:"auth-failure",status:401,excludedProjections:Qc(d)};if(Gp(C.status))return co(C,d,"Combined workspace sync coverage upgrade is temporarily unavailable.");const S=Zm(C,e.workspaceId,s);if(!S)return us(d,"Cloud combined workspace sync did not provide the required coverage upgrade repair.");const w=await uu(a,e.workspaceId,{kind:"repair",epoch:d.epoch,previousCursor:null,page:S,...e.recoveryBatchId?{recoveryBatchId:e.recoveryBatchId}:{}},s),_=pu(w,e.workspaceId),M=_?Th(_):null;if(_&&Vp(w)){if(g)return us(_,"A refreshed combined repair snapshot still predates authoritative local state.");d=_,p=!0,g=!0}else if(!w.ok||!_||!M||(S.hasMore?!_.repair||_.repair.cursor!==S.nextRepairCursor||!Oi(M,h):_.coverageRepairRequired||_.repair!==null||!Oi(M,s)))return co(w,d,"Combined workspace sync coverage upgrade could not be applied locally.");d=_,f=!!(e.recoveryBatchId&&!d.repair)}if(e.forceAuthoritativeRepair&&!f&&d.owner==="v3"&&!d.repair){const C=await a.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,limit:100,forceRepair:!0,...Oi(s,ka)?{}:{coverage:s}});if(C.status===401)return{kind:"auth-failure",status:401,excludedProjections:Qc(d)};if(Gp(C.status))return co(C,d,"Combined workspace sync authoritative recovery is temporarily unavailable.");const S=Zm(C,e.workspaceId,s);if(!S)return us(d,"Cloud combined workspace sync did not provide the requested authoritative repair.");const w=await uu(a,e.workspaceId,{kind:"repair",epoch:d.epoch,previousCursor:null,page:S,...e.recoveryBatchId?{recoveryBatchId:e.recoveryBatchId}:{}},s),_=pu(w,e.workspaceId);if(!w.ok||!_)return co(w,d,"Combined workspace sync authoritative recovery could not be applied locally.");if(d=_,Vp(w)){if(g)return us(d,"A refreshed combined repair snapshot still predates authoritative local state.");p=!0,g=!0}}let y=!1,k=!1;for(;d.owner==="v2"||d.repair||p;){const C=y||p?null:d.repair?.cursor||null,S=await a.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,...y||p?{forceRepair:!0}:{repairCursor:C},limit:100,...Oi(s,ka)?{}:{coverage:s}});if(S.status===401)return{kind:"auth-failure",status:401,excludedProjections:Qc(d)};if(C&&!k&&oE(S)){k=!0,y=!0;continue}if(Gp(S.status))return co(S,d,"Combined workspace sync feed is temporarily unavailable.");const w=Zm(S,e.workspaceId,s);if(!w)return us(d,sE(S));const _=await uu(a,e.workspaceId,{kind:"repair",epoch:d.epoch,previousCursor:C,page:w,...e.recoveryBatchId?{recoveryBatchId:e.recoveryBatchId}:{}},s),M=pu(_,e.workspaceId);if(!_.ok||!M)return co(_,d,"Combined workspace sync repair could not be applied locally.");if(d=M,y=!1,p=!1,Vp(_)){if(g)return us(d,"A refreshed combined repair snapshot still predates authoritative local state.");g=!0,p=!0;continue}if(d.repair?.cursor===C)return us(d,"Combined workspace sync repair made no local progress.")}const v=Th(d);if(d.owner!=="v3"||!v||!Oi(v,s))return us(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 C=await a.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,cursor:d.opaqueCursor,limit:100,...Oi(s,ka)?{}:{coverage:s}});if(C.status===401)return{kind:"auth-failure",status:401,excludedProjections:Qc(d)};if(C.status===404||C.status!==409&&!C.ok&&!Gp(C.status))return Jm({...e,projection:d,dependencies:a});if(Gp(C.status))return co(C,d,"Combined workspace sync feed is temporarily unavailable.");if(C.status===409){const M=Zm(C,e.workspaceId,s);if(!M)return us(d,nE(C,e.workspaceId,s));const R=await uu(a,e.workspaceId,{kind:"repair",epoch:d.epoch,previousCursor:null,page:M,...e.recoveryBatchId?{recoveryBatchId:e.recoveryBatchId}:{}},s),P=pu(R,e.workspaceId);if(!R.ok||!P)return co(R,d,"Combined workspace sync repair could not be applied locally.");if(d=P,Vp(R))return g?us(d,"A refreshed combined repair snapshot still predates authoritative local state."):Nk({...e,forceAuthoritativeRepair:!0},!0);if(d.repair)return Nk({...e,dependencies:r},g);continue}const S=aE(C,e.workspaceId,s);if(!S||!d.opaqueCursor)return Jm({...e,projection:d,dependencies:a});const w=await uu(a,e.workspaceId,{kind:"delta",epoch:d.epoch,previousCursor:d.opaqueCursor,page:S},s),_=pu(w,e.workspaceId);if(!w.ok||!_)return co(w,d,"Combined workspace sync page could not be applied locally.");if(_.owner!=="v3"||_.repair||_.opaqueCursor!==S.nextCursor)return us(d,"Combined workspace sync feed did not commit its exact v3 cursor.");if(!S.hasMore)return await rE({resolveCloudAuthUrl:e.resolveCloudAuthUrl,workspaceId:e.workspaceId,projection:_,dependencies:a,onChangesApplied:e.onChangesApplied})||{kind:"v3-active",excludedProjections:i.excludedProjections};if(_.opaqueCursor===d.opaqueCursor)return us(d,"Combined workspace sync feed made no local progress.");d=_}return{kind:"v2-fallback",excludedProjections:Jl}}var iE={};async function SC(e){const t=e.remoteServices,r=e.localServices.applyV2Batch,a=await t.pullWorkspaceContent({workspaceId:e.workspaceId,requests:[{kind:"asset",assetId:e.assetId}],previousCursor:null}),s=a.transferReceipt;let i=!1;try{if(!a.ok)return{success:!1,error:`Workspace attachment asset hydration failed (${a.status||0}).`};const l=a.data||{};if((l.missing?.length||0)>0||(l.remaining?.length||0)>0)return{success:!1,error:`Workspace attachment asset is unavailable in cloud content: ${e.assetId}`};const c=Array.isArray(l.changes)?l.changes:[],d=c.filter(w=>(w.op==="document-upsert"||w.op==="asset-upsert")&&String(w.assetId||"").trim()===e.assetId);if(c.length!==1||d.length!==1)return{success:!1,error:`Workspace attachment asset hydration returned an unexpected payload: ${e.assetId}`};try{await _h(d[0],typeof process<"u"?iE?.TASKFORCE_SYNC_KEY:void 0)}catch{return{success:!1,error:`Workspace attachment asset hydration decryption failed: ${e.assetId}`}}const f=Array.isArray(l.contentMetadata)?l.contentMetadata:[],p=d[0].op==="document-upsert"?"document":"asset",g=f.filter(w=>w.kind===p&&w.assetId===e.assetId&&w.path===d[0].path);if(f.length!==1||g.length!==1)return{success:!1,error:`Workspace attachment asset hydration metadata is unavailable: ${e.assetId}`};const h=g[0],y=d[0].op==="document-upsert"?await $h("document",d[0].content):await $h("asset",d[0].contentBase64);if(y.sha256!==h.sha256.toLowerCase()||y.sizeBytes!==h.sizeBytes)return{success:!1,error:`Workspace attachment asset hydration verification failed: ${e.assetId}`};const k=s?t.buildV2ApplyCompletionGroup({workspaceId:e.workspaceId,previousCursor:null,nextCursor:null,receipts:[s]}):void 0;if(s&&!k)return{success:!1,error:"Workspace attachment asset hydration could not bind its transfer to local apply."};const v=k?await r(e.workspaceId,d,{completionGroup:k}):await r(e.workspaceId,d);if(!v.ok)return{success:!1,error:`Workspace attachment asset hydration apply failed (${v.status||0}).`};i=!0;const C=v.data&&typeof v.data=="object"?v.data:{},S=Array.isArray(C.emittedEventIds)?C.emittedEventIds.map(w=>String(w||"").trim()).filter(Boolean):[];return{success:!0,appliedChanges:d.length,emittedEventIds:S}}finally{s&&!i&&await t.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:[s],errorCode:"WORKSPACE_SYNC_V3_ATTACHMENT_HYDRATION_NOT_COMMITTED"})}}function cE(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 lE(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 Ib(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 dE(e){const t=new WeakMap,r=new Set,a=f=>{const p=lE(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:Xw})}catch{await e.remoteServices.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:f,errorCode:Xw})}},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 v=t.get(f);t.delete(f),v&&r.delete(v)}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:Ib({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)=>a(await e.remoteServices.pullInitiativeFeed(p)),pullInitiativeRepair:async(f,p)=>a(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:Ib({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)=>a(await e.remoteServices.pullCombinedFeed(p)),pullFallbackRepair:async(f,p)=>a(await e.remoteServices.pullCombinedRepair(p)),pullTaskCommentAudit:async(f,p)=>a(await e.remoteServices.pullTaskCommentAudit(p))}}}function uE({cloudAuthConfigured:e,runtimeMode:t,initiativeFeedActivationEnabled:r,combinedFeedActivationEnabled:a,combinedFeedCoverage:s,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:d,checkAuthSession:f,resolveCloudAuthUrl:p,ensureCloudWorkspaceReadyForSync:g,ensureWorkspaceSyncReady:h,handleSyncAuthFailure:y,clearWorkspaceRetry:k,clearWorkspaceIssue:v,isWorkspaceRetryPending:C,isDurableRecoveryBlockingOrdinaryPush:S,isExecutionAuthorized:w=()=>!0,scheduleWorkspaceSyncRetry:_,persistWorkspaceSyncPatchSafely:M,persistWorkspaceSyncPatchBestEffort:R,persistWorkspaceSyncWatermarksSnapshotBestEffort:P,refreshWorkspaceAiProfilePushBaselineFromPersistence:b,reportSyncEvent:$,acquireWorkspaceSyncLease:I,releaseWorkspaceSyncLease:E,recordWorkspaceSyncCompletion:K,reportWorkspaceWindowContention:U,refreshWorkspaceSyncMarkdownDocumentsSnapshot:L,refreshWorkspaceSyncAiProfilesSnapshot:D,refreshWorkspaceSyncAssetsSnapshot:ie,refreshWorkspaceSyncTaxonomySnapshot:H,refreshWorkspaceSyncPlanningEntitiesSnapshot:be,refreshWorkspaceSyncDocumentReviewSessionsSnapshot:Z,refreshWorkspaceSyncAnnotatedAttachmentSessionsSnapshot:me,refreshWorkspaceSyncTaskforceAgentsSnapshot:Ve,refreshLocalWorkspaceTaskCollections:Re,buildWorkspaceSyncPayload:je,buildWorkspaceSyncSignature:ye,seedWorkspaceSnapshotPushBaseline:ue,shouldSuppressAttachBootstrapPush:ve,recordSuppressedEventIds:Pe,runtime:Le,localServices:se,remoteServices:V,setWorkspaceSyncBusy:W,setUserGlobalSyncStatus:z,setUserGlobalSyncError:fe,setWorkspaceLastErrorMessage:ke,setWorkspaceLastErrorAt:Y,setWorkspaceLastPullAt:we,setWorkspaceLastPushAt:q,setWorkspaceSyncPendingChanges:le,setTasks:$e,setArchivedTasks:re,now:de,scheduleTask:He,logDebug:ce=()=>{},notifyAiProfilesMutated:pe=()=>{},notifyAgentsMutated:xe=()=>{},notifyAgentSkillsMutated:N=()=>{}}){const{repairMode:X,forceFullAiProfilePush:Ae,pushInFlight:Te,pullInFlight:he,pullAfterPushRequested:ot,pendingPushReplay:We,blockedPushSignature:Xe,lastPushedSignature:ae,pendingSignature:G,lastPushedTaskIds:Ie,deletedTaskIds:Fe,deletedTaskWatermarks:it,pullCursor:Me,lastPushedWatermarks:qe,lastPushedTaskChangeKeys:ge,lastPushedTaskRelationshipChangeKeys:_e,lastPushedTaxonomyChangeKey:Be,lastPushedInitiativeIds:Ge,lastPushedInitiativeWatermarks:F,lastPushedWorkstreamIds:Ne,lastPushedWorkstreamWatermarks:Ce,lastPushedAiProfileIds:ut,lastPushedAiProfileWatermarks:mt,lastPushedAiProfileChangeKeys:Ue,lastPushedDocumentPaths:wt,lastPushedDocumentWatermarks:kt,lastPushedAssetPaths:rt,lastPushedAssetWatermarks:Ht,lastPushedDocumentReviewSessionIds:lr,lastPushedDocumentReviewSessionWatermarks:rr,lastPushedDocumentReviewCommentIds:wr,lastPushedDocumentReviewCommentWatermarks:st,lastPushedAnnotatedAttachmentSessionIds:zt,lastPushedAnnotatedAttachmentSessionWatermarks:Lt,lastPushedTaskforceAgentIds:Mt,lastPushedTaskforceAgentWatermarks:Ee,lastPushedTaskforceAgentSkillIds:ct,lastPushedTaskforceAgentSkillWatermarks:lt,lastPushedAgentConversationIds:Je,lastPushedAgentConversationWatermarks:nt,lastPushedTaskEventWatermarks:Ct,baselineResetReason:Rt,captureAttachBootstrapBaseline:Dt,startupFullReconcileRan:It,startupFullReconcileRequested:Qt,fullReconcileInFlight:ir,bootstrapLastProgressAtMs:dr,realtimeSuppressedEventQueue:sr}=Le,pr=new Map;let Jr=!1;const Tr=(Gt,bt,gr)=>{if(Jr||!w()||pr.has(Gt))return;let u=null;u=He(()=>{pr.delete(Gt),!Jr&&w()&&bt()},gr),pr.set(Gt,u)},br=()=>{if(!Jr){Jr=!0;for(const Gt of pr.values())Gt.cancel();pr.clear()}},ur=async(Gt,bt)=>{if(!w())return!1;if(bt?.repairMode!==!0&&S())return G.current=Gt,!1;let gr=Tk({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:d,repairModeActive:X.current===!0,repairModeBypass:bt?.repairMode===!0,pushInFlight:Te.current,pullInFlight:he.current});if(!gr.allowed&&gr.reason==="auth-required"){if(!await f())return!1;gr=Tk({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:!0,repairModeActive:X.current===!0,repairModeBypass:bt?.repairMode===!0,pushInFlight:Te.current,pullInFlight:he.current})}if(!gr.allowed)return gr.retainPendingSignature&&(G.current=Gt),!1;if(ve(Gt))return!1;if(!await I(l,"push")){const Ut=EP("push");return!Ut.allowed&&Ut.retainPendingSignature&&(G.current=Gt),U("push"),!1}Te.current=!0,W(!0),z("syncing"),fe(null);const ht=de().getTime(),yr=bt?.forceAllAiProfiles===!0||Ae.current===!0,Er=bt?.repairMode===!0||X.current===!0;let mn=null,qt=!1,Vr=Gt,Tt=!1;try{b?.();const Ut=[await L(),await D(),await ie(),await H(),await be(),await Z(),await me(),await Ve?.()];if(Er&&Ut.some(ft=>ft===!1)){const ft="Workspace sync repair could not refresh the complete local snapshot. Press Repair to retry.";return k(),z("error"),fe(ft),ke(ft),Y(de().toISOString()),await R({phase:"error",lastErrorMessage:ft}),$(l,{eventType:"push",status:"error",errorMessage:ft,details:{recovery:"repair-snapshot-refresh-failed"}}),!1}if(!await h()||!w())return!1;const $t=ye();if($t&&(Vr=$t),ve(Vr))return!1;const Mr=We.current,Vt=Mr&&Mr.signature===Vr&&(!yr||Mr.forceAllAiProfiles===!0)&&(!Er||Mr.repairMode===!0)?Mr:null,Dr=Vt?.payload||je({forceAllAiProfiles:yr});mn=Dr,qt=Vt!==null,le(Dr.changes.length);const Ye=await Kx({resolveCloudAuthUrl:p,workspaceId:l,payload:Dr,ensureCloudWorkspaceReadyForSync:g,repairMode:Vt?.repairMode??Er,remoteServices:V,localServices:se});if(!Ye.success){if(Ye.status===401)return Tt=!0,We.current=null,await y("push",401),!1;let ft=Ye.error?`Workspace sync push failed (${Ye.status||0}): ${Ye.error}`:`Workspace sync push failed (${Ye.status||0})`;return Ye.status===413&&(ft="Workspace sync failed because the payload is too large. This usually happens when one or more attachments exceed the project limit."),z("error"),fe(ft),ke(ft),Y(de().toISOString()),$(l,{eventType:"push",status:"error",statusCode:Ye.status,errorMessage:ft,requestMs:Ye.requestMs,details:{payloadDiagnostics:Dr.deltaDiagnostics||null,replayedPayload:qt,...Ye.batchProgress?{pushBatchProgress:Ye.batchProgress}:{}}}),G.current=Vr,Ye.transient||Go(Ye.status)?(We.current={signature:Vr,payload:Dr,forceAllAiProfiles:Vt?.forceAllAiProfiles??yr,repairMode:Vt?.repairMode??Er},_(Ye.retryAfterMs)):(Tt=!0,Xe.current=Vr,We.current=null,c==="active"&&M({phase:"error",lastErrorMessage:ft})),!1}const en=Ye.appliedTaskUpserts||[];if(en.length>0){const ft=Ye.pushTransferReceipts||[],rn=Ye.pushBoundary?V.buildV2PushApplyCompletionGroup({workspaceId:l,pushBoundary:Ye.pushBoundary,receipts:ft}):void 0;if(ft.length>0&&!rn)throw await V.abandonTransferReceipts({workspaceId:l,receipts:ft,errorCode:"WORKSPACE_SYNC_V2_PUSH_APPLY_COMPLETION_INVALID"}),new Error("Accepted V2 push echoes are missing an atomic local apply completion group.");let Nt;try{const or=en.map(xr=>({op:"upsert",archived:xr.archived===!0,task:xr.task,...xr.durableRevision?{durableRevision:xr.durableRevision}:{}}));Nt=rn?await se.applyV2Batch(l,or,{completionGroup:rn}):await se.applyV2Batch(l,or)}catch(or){throw ft.length>0&&await V.abandonTransferReceipts({workspaceId:l,receipts:ft,errorCode:"WORKSPACE_SYNC_V2_PUSH_AUTHORITATIVE_APPLY_FAILED"}),or}if(!Nt.ok)throw ft.length>0&&await V.abandonTransferReceipts({workspaceId:l,receipts:ft,errorCode:"WORKSPACE_SYNC_V2_PUSH_AUTHORITATIVE_APPLY_FAILED"}),new Error(`Authoritative V2 push echo apply failed (${Nt.status||0}).`);for(const or of en){const xr=String(or.task.id||"").trim(),hn=String(or.task.updatedAt||or.task.createdAt||"").trim();!xr||!hn||(Ye.currentTaskWatermarks?.set(xr,hn),Ye.pushedWatermarks.set(xr,hn))}try{await Re()}catch{ce("push_local_task_refresh_failed",{workspaceId:l,taskCount:en.length})}}We.current=null,Xe.current="",ae.current=Vr,Ie.current=Ye.currentTaskIds,qe.current=Ye.currentTaskWatermarks?new Map(Ye.currentTaskWatermarks):new Map(qe.current),ge.current=Ye.currentTaskChangeKeys?new Map(Ye.currentTaskChangeKeys):new Map(ge.current),_e&&(_e.current=Ye.currentTaskRelationshipChangeKeys?new Map(Ye.currentTaskRelationshipChangeKeys):new Map(_e.current)),Be&&(Be.current=Ye.currentTaxonomyChangeKey??Be.current),Ge.current=new Set(Ye.currentInitiativeIds),F.current=new Map(Ye.currentInitiativeWatermarks),Ne.current=new Set(Ye.currentWorkstreamIds),Ce.current=new Map(Ye.currentWorkstreamWatermarks),ut.current=new Set(Ye.currentAiProfileIds),mt.current=new Map(Ye.currentAiProfileWatermarks),Ue.current=Ye.currentAiProfileChangeKeys?new Map(Ye.currentAiProfileChangeKeys):new Map(Ue.current),wt.current=new Set(Ye.currentDocumentPaths),kt.current=new Map(Ye.currentDocumentWatermarks),rt.current=new Set(Ye.currentAssetPaths),Ht.current=new Map(Ye.currentAssetWatermarks),lr.current=new Set(Ye.currentDocumentReviewSessionIds),rr.current=new Map(Ye.currentDocumentReviewSessionWatermarks),wr.current=new Set(Ye.currentDocumentReviewCommentIds),st.current=new Map(Ye.currentDocumentReviewCommentWatermarks),zt.current=new Set(Ye.currentAnnotatedAttachmentSessionIds),Lt.current=new Map(Ye.currentAnnotatedAttachmentSessionWatermarks),Mt&&(Mt.current=new Set(Ye.currentTaskforceAgentIds)),Ee&&(Ee.current=new Map(Ye.currentTaskforceAgentWatermarks)),ct&&(ct.current=new Set(Ye.currentTaskforceAgentSkillIds)),lt&&(lt.current=new Map(Ye.currentTaskforceAgentSkillWatermarks)),Je&&(Je.current=new Set(Ye.currentAgentConversationIds)),nt&&(nt.current=new Map(Ye.currentAgentConversationWatermarks)),Ct.current=new Map(Ye.currentTaskEventWatermarks),yr&&(Ae.current=!1);for(const[ft,rn]of Ye.pushedWatermarks)qe.current.set(ft,rn);for(const[ft,rn]of Ye.pushedTaskChangeKeys||new Map)ge.current.set(ft,rn);if(Ye.deleteTaskIds.size>0)for(const ft of Ye.deleteTaskIds)Fe.current.delete(ft),it.current.delete(ft),qe.current.delete(ft),ge.current.delete(ft);const bn=await P();Rt.current=bn?null:"storage-write-failed",Array.isArray(Ye.emittedEventIds)&&Ye.emittedEventIds.length>0&&Pe(Ye.emittedEventIds,{queueRef:sr,maxQueueSize:2048}),k();const tn=Ye.syncedAt||de().toISOString();return ae.current=ye(),q(tn),le(0),z("idle"),M({phase:"active",lastPushAt:tn,lastSyncedAt:tn}),$(l,{eventType:c==="provision-local"?"bootstrap":"push",status:"success",changeCount:Ye.changeCount,requestMs:Ye.requestMs,details:{payloadDiagnostics:Ye.effectiveDeltaDiagnostics||Dr.deltaDiagnostics||null,...Ye.batchProgress?{pushBatchProgress:Ye.batchProgress}:{},...Ye.effectiveDeltaDiagnostics&&Dr.deltaDiagnostics&&Ye.effectiveDeltaDiagnostics.totalChanges!==Dr.deltaDiagnostics.totalChanges?{candidatePayloadDiagnostics:Dr.deltaDiagnostics}:{},replayedPayload:qt}}),!0}catch(Ut){const fr="Workspace sync push failed.";return z("error"),fe(fr),ke(fr),Y(de().toISOString()),G.current=Vr,mn&&(We.current={signature:Vr,payload:mn,forceAllAiProfiles:yr,repairMode:Er}),_(),$(l,{eventType:"push",status:"error",errorMessage:`${fr} ${String(Ut?.message||"").trim()}`.trim(),details:{replayedPayload:qt}}),ce("push_failed_exception",{workspaceId:l,elapsedMs:de().getTime()-ht}),!1}finally{Te.current=!1,W(he.current),E(l),ot.current&&!he.current&&!C()&&Tr("pull-after-push",()=>{Qr()},0);const Ut=G.current,fr=ye();Ut&&fr&&fr!==ae.current&&!he.current&&!C()&&!Tt&&Tr("pending-push",()=>{const $t=G.current||fr;G.current="",ur($t)},120)}},Qr=async Gt=>{if(!w())return!1;const bt=Gt?.repairMode===!0,gr=async mn=>{bt&&(k(),await R({phase:"error",lastErrorMessage:mn}))};let u=xk({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:d,repairModeActive:X.current===!0,repairModeBypass:bt,retryPending:C(),pullInFlight:he.current,pushInFlight:Te.current});if(!u.allowed&&u.reason==="auth-required"){if(!await f())return await gr("Session expired. Sign in again, then press Repair to resume cloud sync."),!1;u=xk({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:!0,repairModeActive:X.current===!0,repairModeBypass:bt,retryPending:C(),pullInFlight:he.current,pushInFlight:Te.current})}if(!u.allowed)return u.reason==="push-in-flight"&&!bt&&(ot.current=!0),!1;if(ot.current=!1,!await I(l,"pull"))return U("pull"),!1;he.current=!0,W(!0),z("syncing"),fe(null);const yr=de().getTime();let Er=!1;try{if(!await h())return await gr("Workspace sync repair could not validate cloud access. Resolve the reported error, then press Repair to retry."),!1;if(!w())return!1;const qt={authFailure:!1,failure:null};let Vr=!1,Tt=[],Ut=0;const fr=Nt=>{Ut+=Math.max(0,Number(Nt)||0)},$t=dE({workspaceId:l,remoteServices:V,localServices:se});let Mr="",Fr="";const Vt=(Nt,or)=>Nt.kind==="auth-failure"?(qt.authFailure=!0,!1):Nt.kind==="transient-failure"?(qt.failure={status:Nt.status,retryAfterMs:Nt.retryAfterMs,error:String(Nt.error||"Workspace projection synchronization failed."),projectionCycle:or},!1):!0;try{if(a===!0){const Nt=await Ek({activationEnabled:!1,resolveCloudAuthUrl:p,workspaceId:l,onChangesApplied:fr,dependencies:$t.initiative});if(Vt(Nt,"initiative")){const or=await _b({activationEnabled:!0,coverage:s,resolveCloudAuthUrl:p,workspaceId:l,forceAuthoritativeRepair:Gt?.forceV3AuthoritativeRepair===!0,...Gt?.recoveryBatchId?{recoveryBatchId:Gt.recoveryBatchId}:{},onChangesApplied:fr,dependencies:$t.combined});Tt=or.excludedProjections;const xr=or.kind==="transient-failure"?cE(or):null;xr?(Mr=xr,Fr=or.kind==="transient-failure"?or.error:""):Vt(or,"combined")}}else{if(a!==void 0){const Nt=await _b({activationEnabled:!1,coverage:s,resolveCloudAuthUrl:p,workspaceId:l,onChangesApplied:fr,dependencies:$t.combined});Vt(Nt,"combined")}if(!qt.authFailure&&!qt.failure&&r!==void 0){const Nt=await Ek({activationEnabled:r,resolveCloudAuthUrl:p,workspaceId:l,onChangesApplied:fr,dependencies:$t.initiative});Vt(Nt,"initiative")&&(Vr=Nt.excludeInitiativesFromV2)}}}finally{await $t.abandonPendingReceipts()}if(qt.authFailure)return await y("pull",401),await gr("Session expired. Sign in again, then press Repair to resume cloud sync."),!1;if(qt.failure)return ke(qt.failure.error),Y(de().toISOString()),$(l,{eventType:"apply",status:"error",statusCode:qt.failure.status,errorMessage:qt.failure.error,details:{recovery:"projection-cycle-retry",projectionCycle:qt.failure.projectionCycle,...qt.failure.retryAfterMs!==void 0?{retryAfterMs:qt.failure.retryAfterMs}:{}}}),bt?await R({phase:"error",lastErrorMessage:qt.failure.error}):_(qt.failure.retryAfterMs),!1;if(Mr){const Nt=await SC({workspaceId:l,assetId:Mr,remoteServices:V,localServices:se}).catch(or=>({success:!1,error:or instanceof Error?or.message:String(or||"Unknown hydration failure.")}));return Nt.success&&Nt.emittedEventIds.length>0&&Pe(Nt.emittedEventIds,{ttlMs:6e4}),z("error"),fe(Fr),ke(Fr),Y(de().toISOString()),$(l,{eventType:"apply",status:"error",errorMessage:Fr,changeCount:Nt.success?Nt.appliedChanges:0,details:{recovery:Nt.success?"combined-attachment-asset-hydrated-retry-pending":"combined-attachment-asset-hydration-failed",assetId:Mr,...Nt.success?{}:{hydrationError:Nt.error}}}),_(),!1}const Dr=OP({workspaceSyncPhase:c,forceCursorNull:Gt?.forceCursorNull===!0,currentCursor:Me.current}),Ye=await qx({resolveCloudAuthUrl:p,workspaceId:l,cursor:bt?null:Dr.cursor,bootstrap:Dr.bootstrap,ensureCloudWorkspaceReadyForSync:g,maxPages:bt?200:20,repairMode:bt||X.current===!0,contentMode:Gt?.forceCursorNull===!0?"manifest":"full",excludeInitiatives:Vr,excludedProjections:Tt,onPagePulled:()=>{dr.current=de().getTime()},onAiProfilesApplied:()=>{pe({workspaceId:l,reason:"sync-apply",origin:"sync-orchestrator"})},onChangesApplied:()=>{dr.current=de().getTime()},remoteServices:V,localServices:se});if(!Ye.success){if(Ye.kind==="pull_http"&&Ye.status===401)return await y("pull",401),await gr("Session expired. Sign in again, then press Repair to resume cloud sync."),!1;if(Ye.kind==="apply_auth")return await y("apply",401),await gr("Session expired. Sign in again, then press Repair to resume cloud sync."),!1;if(Ye.kind==="pull_http"&&Ye.errorCode==="INVALID_SYNC_CURSOR"){const or="Saved sync cursor was invalid. Clearing it and retrying from the beginning.";return Me.current=null,M({pullCursor:null}),z("error"),fe(or),ke(or),Y(de().toISOString()),$(l,{eventType:"pull",status:"error",statusCode:Ye.status,errorMessage:or,requestMs:Ye.pullRequestMs,details:{recovery:"cursor-reset",...Ye.serverDiagnostics?{serverPullDiagnostics:Ye.serverDiagnostics}:{}}}),bt?await R({phase:"error",lastErrorMessage:or}):_(150),!1}let Nt=Ye.kind==="apply_payload"||Ye.kind==="apply_all_candidates"||Ye.kind==="exception"?String(Ye.error||"Workspace sync apply failed."):`Workspace sync pull failed (${Ye.status||0})`;return Ye.status===413&&(Nt="Local sync failed because the downloaded payload is too large. This usually happens when the workspace contains massive attachments."),z("error"),fe(Nt),ke(Nt),Y(de().toISOString()),$(l,{eventType:Ye.kind?.startsWith("apply")?"apply":"pull",status:"error",statusCode:Ye.status,errorMessage:Nt,requestMs:Ye.pullRequestMs,details:{pages:Ye.pages,applyMs:Ye.applyMs,...Ye.serverDiagnostics?{serverPullDiagnostics:Ye.serverDiagnostics}:{}}}),bt?await R({phase:"error",lastErrorMessage:Nt}):Ye.transient||Ye.hasTransientApplyFailure||Go(Ye.status)?_(Ye.retryAfterMs):M({phase:"error",lastErrorMessage:Nt}),!1}if(bt&&Ye.hasMore===!0){const Nt="Workspace sync repair stopped before the full cloud snapshot was downloaded. Press Repair to retry.";return z("error"),fe(Nt),ke(Nt),Y(de().toISOString()),await R({phase:"error",lastErrorMessage:Nt}),$(l,{eventType:"pull",status:"error",errorMessage:Nt,requestMs:Ye.pullRequestMs,details:{pages:Ye.pages,applyMs:Ye.applyMs,recovery:"repair-pull-incomplete"}}),!1}Array.isArray(Ye.emittedEventIds)&&Pe(Ye.emittedEventIds,{ttlMs:6e4}),(Ye.pulledTaskforceAgentUpserts||Ye.pulledAgentRoleUpserts||Ye.pulledTaskforceAgentSkillUpserts||Ye.pulledAgentConversationUpserts)&&await Ve?.(),(Ye.pulledTaskforceAgentUpserts||Ye.pulledAgentRoleUpserts||Ye.pulledAgentConversationUpserts)&&xe({workspaceId:l,reason:"sync-apply"}),Ye.pulledTaskforceAgentSkillUpserts&&N({workspaceId:l,reason:"sync-apply"}),Ye.pulledDeleteTaskIds.size>0&&($e(Nt=>Nt.filter(or=>!Ye.pulledDeleteTaskIds.has(String(or.id||"")))),re(Nt=>Nt.filter(or=>!Ye.pulledDeleteTaskIds.has(String(or.id||"")))));const bn=Array.isArray(Ye.documentDecryptFailures)?Ye.documentDecryptFailures.filter(Nt=>String(Nt||"").trim().length>0):[];if(bn.length>0&&ce("pull_document_decrypt_failures",{workspaceId:l,failureCount:bn.length}),Me.current=Ye.cursor||null,Ut>0||Ye.appliedChanges>0&&(bt||Ye.pulledActiveUpserts||Ye.pulledArchivedUpserts||Ye.pulledTaskEventUpserts||Ye.pulledPlanningUpserts||Ye.pulledDeleteTaskIds.size>0))try{await Re()}catch{if(ce("pull_local_refresh_failed",{workspaceId:l,appliedChanges:Ye.appliedChanges+Ut}),bt){const Nt="Workspace sync repair could not refresh tasks and relationships after the cloud pull. Press Repair to retry.";return k(),z("error"),fe(Nt),ke(Nt),Y(de().toISOString()),await R({phase:"error",lastErrorMessage:Nt}),!1}}k(),v();const tn=Ye.syncedAt||de().toISOString();we(tn),le(0),z("idle");const ft=BP({workspaceSyncPhase:c,forceCursorNull:Gt?.forceCursorNull===!0,repairMode:bt,startupFullReconcileRan:It.current,pendingSignature:G.current,fallbackSignature:ye(),lastPushedSignature:ae.current});if(ft.shouldCaptureAttachBootstrapBaseline&&(Dt.current=!0),ft.shouldClearPendingSignature&&(G.current=ft.deferredPushSignature||"",We.current=null),await R({phase:"active",pullCursor:Me.current,lastPullAt:tn,lastSyncedAt:tn,...Gt?.forceCursorNull===!0?{startupFullReconcileCompletedAt:tn}:{},lastErrorMessage:null}),$(l,{eventType:ft.successEventType,status:"success",changeCount:Ye.appliedChanges+Ut,requestMs:Ye.pullRequestMs,details:{pages:Ye.pages,applyMs:Ye.applyMs,...Ye.serverDiagnostics?{serverPullDiagnostics:Ye.serverDiagnostics}:{}}}),ft.shouldRefreshReferenceSnapshots&&(await L(),await ie(),await Z(),await me()),ft.shouldSeedWorkspaceSnapshotPushBaseline&&ue(),ft.shouldRefreshReferenceSnapshots||ft.shouldSeedWorkspaceSnapshotPushBaseline)return Er=!0,!0;if(ft.shouldScheduleStartupFullReconcile&&(Qt.current=!0,Tr("startup-full-reconcile",()=>{!Qt.current||ir.current||(Qt.current=!1,It.current=!0,ir.current=!0,Qr({forceCursorNull:!0}).finally(()=>{ir.current=!1}))},250)),Gt?.forceCursorNull===!0&&!bt&&c==="active"){const Nt=ye();Nt&&(Ae.current=!0,G.current=Nt,Tr("pending-push",()=>{const or=G.current||Nt;G.current="",ur(or,{forceAllAiProfiles:!0})},120))}else if(ft.deferredPushSignature){const Nt=ft.deferredPushSignature;Tr("pending-push",()=>{const or=G.current||Nt;G.current="",ur(or)},120)}return Er=!0,!0}catch(mn){const qt=String(mn?.message||"").trim(),Vr=qt?`Workspace sync pull failed. ${qt}`:"Workspace sync pull failed.";return z("error"),fe(Vr),ke(Vr),Y(de().toISOString()),bt?await R({phase:"error",lastErrorMessage:Vr}):_(),$(l,{eventType:"pull",status:"error",errorMessage:Vr,requestMs:de().getTime()-yr}),ce("pull_failed_exception",{workspaceId:l,elapsedMs:de().getTime()-yr,error:qt||null}),!1}finally{he.current=!1,W(Te.current),Er&&K(l,"pull"),E(l)}};return{pushWorkspaceChangesToCloud:ur,pullWorkspaceChangesFromCloud:Qr,resumeDeferredWork:()=>{w()&&(ot.current&&Tr("pull-after-push",()=>{Qr()},0),G.current&&Tr("pending-push",()=>{const Gt=G.current;Gt&&(G.current="",ur(Gt,{forceAllAiProfiles:Ae.current}))},120),Qt.current&&Tr("startup-full-reconcile",()=>{!Qt.current||ir.current||(Qt.current=!1,It.current=!0,ir.current=!0,Qr({forceCursorNull:!0}).finally(()=>{ir.current=!1}))},250))},dispose:br}}function pE(e){return uE({now:()=>new Date,scheduleTask:(t,r)=>{const a=window.setTimeout(t,r);return{cancel:()=>window.clearTimeout(a)}},logDebug:Ns,notifyAiProfilesMutated:sC,notifyAgentsMutated:oC,notifyAgentSkillsMutated:iC,...e})}const fE="/api/taskforce/sync/v3/local/dispatch",mE=20,hE=1e5;function gE(e){if(e===void 0)return;if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Local outbox dispatch returned an invalid outbox status.");const t=e,r=v=>{const C=Number(t[v]);return Number.isInteger(C)&&C>=0?C:null},a=r("activeDepth"),s=r("pending"),i=r("inFlight"),l=r("blocked");let c;if(t.operationStates!==void 0){if(!t.operationStates||typeof t.operationStates!="object"||Array.isArray(t.operationStates))throw new Error("Local outbox dispatch returned invalid operation states.");const v=t.operationStates,C=w=>{const _=Number(v[w]);return Number.isInteger(_)&&_>=0?_:null},S={pending:C("pending"),retryScheduled:C("retryScheduled"),inFlight:C("inFlight"),stale:C("stale"),blocked:C("blocked")};if(Object.values(S).some(w=>w===null)||s===null||i===null||l===null||S.pending+S.retryScheduled!==s||S.inFlight+S.stale!==i||S.blocked!==l)throw new Error("Local outbox dispatch returned inconsistent operation states.");c={pending:S.pending,retryScheduled:S.retryScheduled,inFlight:S.inFlight,stale:S.stale,blocked:S.blocked}}const d=v=>t[v]===null||typeof t[v]=="string"?t[v]: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 v=h,C=b=>{const $=Number(v[b]);return Number.isInteger($)&&$>=0?$:null},S=String(v.state||""),w=C("replayTotal"),_=C("replayPending"),M=C("replayInFlight"),R=C("replayBlocked"),P=C("replayAccepted");if(typeof v.recoveryBatchId!="string"||!["awaiting_baseline","baseline_ready","replay_queued","completed"].includes(S)||w===null||_===null||M===null||R===null||P===null||w<_+M+R+P||typeof v.createdAt!="string"||typeof v.updatedAt!="string"||v.completedAt!==null&&typeof v.completedAt!="string")throw new Error("Local outbox dispatch returned an invalid recovery status.");y={recoveryBatchId:v.recoveryBatchId,state:S,replayTotal:w,replayPending:_,replayInFlight:M,replayBlocked:R,replayAccepted:P,createdAt:v.createdAt,updatedAt:v.updatedAt,completedAt:v.completedAt}}let k;if(t.attachmentApplyObligations!==void 0){if(!t.attachmentApplyObligations||typeof t.attachmentApplyObligations!="object"||Array.isArray(t.attachmentApplyObligations))throw new Error("Local outbox dispatch returned invalid attachment apply obligations.");const v=t.attachmentApplyObligations,C=Number(v.open),S=Number(v.due),w=Number(v.totalAttempts);if(![C,S,w].every(_=>Number.isInteger(_)&&_>=0)||S>C||v.oldestOpenCreatedAt!==null&&typeof v.oldestOpenCreatedAt!="string"||v.nextAttemptAt!==null&&typeof v.nextAttemptAt!="string"||v.lastError!==null&&typeof v.lastError!="string")throw new Error("Local outbox dispatch returned invalid attachment apply obligations.");k={open:C,due:S,totalAttempts:w,oldestOpenCreatedAt:v.oldestOpenCreatedAt,nextAttemptAt:v.nextAttemptAt,lastError:v.lastError}}if(a===null||s===null||i===null||l===null||a!==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:a,pending:s,inFlight:i,blocked:l,...c?{operationStates:c}:{},oldestActiveCreatedAt:f,...p!==void 0?{oldestActionableAt:p}:{},blockedErrorCode:g,recovery:y,...k?{attachmentApplyObligations:k}:{}}}function yE(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),a=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||a.length!==r||a.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(a.some(i=>!s(i)))throw new Error("Local outbox dispatch returned an invalid retry dependency.");return{success:!0,claimed:r,outcomes:a,outbox:gE(t.outbox)}}async function kE(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,a=Math.max(1,Math.min(100,Math.floor(e.operationBudget??mE))),s=Math.max(1,Math.floor(e.requestTimeoutMs??hE));let i=0;const l=new Set;let c;for(;i<a;){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 S=await r(fE,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceId:t,limit:1}),signal:d.signal});if(!S.ok)throw new Error(`Local outbox dispatch failed (${S.status}).`);return yE(await S.json())})(),k=await Promise.race([y,g]);if(c=k.outbox,k.claimed===0)return{processed:i,retryRecommended:!1,budgetExhausted:!1,...c?{outbox:c}:{}};i+=k.claimed;const v=k.outcomes[0],C=v?.disposition;if(C==="retry"&&v.retryDependency?.kind==="asset"){const S=`${v.retryDependency.kind}:${v.retryDependency.assetId}`;if(l.has(S))return{processed:i,retryRecommended:!0,budgetExhausted:!1,...c?{outbox:c}:{}};if(!e.hydrateAsset||!await e.hydrateAsset(v.retryDependency.assetId))return{processed:i,retryRecommended:!0,budgetExhausted:!1,...c?{outbox:c}:{}};l.add(S);continue}if(C==="retry"||C==="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 vE=3e4,wE=1e3,bE=3e4;function SE(e){const t=o.useRef(null),r=o.useRef(""),a=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(()=>{a.current!==null&&(window.clearTimeout(a.current),a.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()){a.current===null&&(a.current=window.setTimeout(()=>{a.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 v=await kE({workspaceId:f,signal:y.controller.signal,hydrateAsset:async S=>{const w=i.current;if(y.controller.signal.aborted||!w.enabled||w.workspaceId!==f||w.authorityScope!==y.authorityScope||w.remoteServices!==p||w.isAuthorityCurrent?.(y.authorityScope)===!1)return!1;const _=await SC({workspaceId:f,assetId:S,remoteServices:p,localServices:d.localServices}).catch(()=>({success:!1,error:"Attachment hydration failed."})),M=i.current;return y.controller.signal.aborted||!M.enabled||M.workspaceId!==f||M.authorityScope!==y.authorityScope||M.remoteServices!==p||M.isAuthorityCurrent?.(y.authorityScope)===!1||!_.success?!1:(_.emittedEventIds.length>0&&d.onHydratedEventIds?.(_.emittedEventIds),!0)}}),C=i.current;if(!C.enabled||C.workspaceId!==f||C.authorityScope!==y.authorityScope)return;v.retryRecommended&&(k=v.budgetExhausted?wE:bE,s.current={key:f,authorityScope:y.authorityScope,at:Date.now()+k}),v.outbox&&d.onOutboxStatus?.(v.outbox)}catch{}finally{t.current===y&&(t.current=null)}if(!(!i.current.enabled||i.current.workspaceId!==f)){if(r.current===f){r.current="",c();return}k>0&&(a.current=window.setTimeout(()=>{a.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()},vE);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 AE="/api/taskforce/sync/v3/local/recovery";async function CE(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)(AE,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceId:t})}),a=await r.json().catch(()=>null);if(!r.ok||a?.success!==!0){const c=String(a?.error||`Local workspace sync recovery failed (${r.status}).`),d=typeof a?.code=="string"?a.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(a.kind==="none"&&a.needsAuthoritativeRepair===!1&&a.recovery===null)return{kind:"none",needsAuthoritativeRepair:!1,recoveryBatchId:null};if(a.kind!=="recovery"||typeof a.needsAuthoritativeRepair!="boolean"||!a.recovery||typeof a.recovery!="object"||Array.isArray(a.recovery))throw new Error("Local workspace sync recovery returned an invalid response.");const s=a.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)||a.needsAuthoritativeRepair===!0&&l!=="awaiting_baseline")throw new Error("Local workspace sync recovery returned an invalid state.");return{kind:"recovery",needsAuthoritativeRepair:a.needsAuthoritativeRepair,recoveryBatchId:i,state:l}}function _E(e={}){return{readPushOwnership:zA,readContentManifest:FA,applyV2Batch:HA,listContentPullObligations:xA,recordContentPullObligationFailures:RA,readInitiativeProjection:NA,applyInitiativeProjection:jA,readCombinedProjection:MA,applyCombinedProjection:DA,readTaskCommentAuditCursor:LA,applyTaskCommentAuditPage:BA,prepareOutboxRecovery:t=>CE({workspaceId:t,...e.recoveryFetchImpl?{fetchImpl:e.recoveryFetchImpl}:{}}),completeAuthoritativeRepair:xx}}const oo="/api/taskforce/sync/v3/local/coordinator";class Ya extends Error{constructor(t,r,a){super(t),this.code=r,this.status=a,this.name="LocalSyncCoordinatorBrowserClientError"}}class AC{fetchImpl;constructor(t){this.fetchImpl=t||globalThis.fetch.bind(globalThis)}attachWorkspace(t){return this.requestJson(`${oo}/attach`,pi("POST",t))}readStatus(t){const r=Qm(t);return this.requestJson(`${oo}/status?${r.toString()}`,{method:"GET",credentials:"include"})}attachCredential(t){return this.requestJson(`${oo}/credential`,pi("POST",t))}switchWorkspace(t){return this.requestJson(`${oo}/workspace-switch`,pi("POST",t))}clearCredential(t){const r=Qm(t);return this.requestJson(`${oo}/credential?${r.toString()}`,{method:"DELETE",credentials:"include"})}issuePermit(t){return this.requestJson(`${oo}/permits`,pi("POST",t))}issueCommand(t){return this.requestJson(`${oo}/commands`,pi("POST",t))}signalWake(t){return this.requestJson(`${oo}/wake`,pi("POST",t))}transferOwnership(t){return this.requestJson(`${oo}/ownership-transfer`,pi("POST",t))}readCommand(t){const r=Qm(t);return t.rootCommandId&&r.set("rootCommandId",t.rootCommandId),this.requestJson(`${oo}/commands/${encodeURIComponent(t.commandId)}?${r.toString()}`,{method:"GET",credentials:"include"})}readPermit(t){const r=Qm(t);return this.requestJson(`${oo}/permits/${encodeURIComponent(t.permitId)}?${r.toString()}`,{method:"GET",credentials:"include"})}async executeGateway(t){return await this.fetchImpl(`${oo}/gateway`,pi("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",pi("POST",{workspaceId:t.workspaceId,executionPermitId:t.executionPermitId,coordinatorGeneration:t.coordinatorGeneration,...r,...t.coverage}))}releasePermit(t){return this.requestJson(`${oo}/permits/${encodeURIComponent(t.permitId)}/release`,pi("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(`${oo}/permits/${encodeURIComponent(t.permitId)}/${r}`,pi("POST",{workspaceId:t.workspaceId,coordinatorGeneration:t.coordinatorGeneration,...t.errorCode?{errorCode:t.errorCode}:{}}))}async requestJson(t,r){const a=await this.fetchImpl(t,r);return a.ok||await IE(a),a.json()}}function Qm(e){return new URLSearchParams({workspaceId:e.workspaceId,coordinatorGeneration:String(e.coordinatorGeneration)})}function pi(e,t){return{method:e,headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(t)}}async function IE(e){let t={};try{t=await e.json()}catch{}throw new Ya(String(t.error||`Local sync coordinator request failed (${e.status}).`),String(t.code||"SYNC_COORDINATOR_REQUEST_FAILED"),e.status)}const Tb="taskforce.local-sync-coordinator.command.v1",TE=500,xE=240,RE=8,PE=600*1e3;function Ev(e,t="default"){return t==="priority"?`${Tb}.priority:${e}`:`${Tb}:${e}`}function EE(e,t,r=()=>new Date,a="default"){e.setItem(Ev(t.workspaceId,a),JSON.stringify({storedAt:r().toISOString(),envelope:t}))}function xb(e,t,r=()=>new Date,a="default"){const s=Ev(t,a);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>PE?(gu(e,t,a),null):d}catch{return gu(e,t,a),null}}function NE(e,t,r="default"){e.removeItem(Ev(t,r))}async function Uy(e){const{client:t,envelope:r,storage:a=null,pollIntervalMs:s=TE,maxPollAttempts:i=xE,delay:l=OE,recoverExisting:c=!1,storageLane:d="default"}=e;if(a&&!c)try{EE(a,r,void 0,d)}catch{}try{let f=c?await jE(t,r,{delay:l,pollIntervalMs:s,maxPollAttempts:i}):await ME(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 Ya("The local sync coordinator command references contain a cycle.","SYNC_COORDINATOR_COMMAND_REFERENCE_CYCLE",409);if(p.add(f.commandId),f.status==="succeeded")return gu(a,r.workspaceId,d),f;if(f.status==="failed")throw gu(a,r.workspaceId,d),new Ya(f.errorMessage||"The local sync coordinator command failed.",f.errorCode||"SYNC_COORDINATOR_COMMAND_FAILED",409);if(f.status==="superseded"){const h=DE(f);if(!h)return gu(a,r.workspaceId,d),f;if(p.size>=RE)throw new Ya("The local sync coordinator command reference chain is too long.","SYNC_COORDINATOR_COMMAND_REFERENCE_LIMIT",409);f=await Fh(t,r,h);continue}await l(Math.max(1,s)),f=await Fh(t,r,f.commandId),p.delete(f.commandId)}throw new Ya("The local sync coordinator command did not finish before the browser wait limit.","SYNC_COORDINATOR_COMMAND_WAIT_TIMEOUT",408)}catch(f){const p=zh(f);throw a&&LE(p)&&gu(a,r.workspaceId,d),p}}function gu(e,t,r){if(e)try{NE(e,t,r)}catch{}}async function jE(e,t,r){for(let a=0;a<r.maxPollAttempts;a+=1)try{return await Fh(e,t,t.commandId)}catch(s){const i=zh(s);if(i.code==="SYNC_COORDINATOR_COMMAND_NOT_FOUND")return(await e.issueCommand(t)).command;if(!Uh(i))throw i;await r.delay(Math.max(1,r.pollIntervalMs))}throw CC()}async function ME(e,t,r){try{return(await e.issueCommand(t)).command}catch(a){const s=zh(a);if(!Uh(s))throw s;for(let i=0;i<r.maxPollAttempts;i+=1)try{return await Fh(e,t,t.commandId)}catch(l){const c=zh(l);if(c.code==="SYNC_COORDINATOR_COMMAND_NOT_FOUND")return(await e.issueCommand(t)).command;if(!Uh(c))throw c;await r.delay(Math.max(1,r.pollIntervalMs))}throw CC()}}async function Fh(e,t,r){return(await e.readCommand({commandId:r,workspaceId:t.workspaceId,coordinatorGeneration:t.coordinatorGeneration,rootCommandId:t.commandId})).command}function DE(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 Uh(e){return e.status===0||e.status===408||e.status===429||e.status>=500}function LE(e){return!Uh(e)&&e.code!=="SYNC_COORDINATOR_COMMAND_WAIT_TIMEOUT"}function CC(){return new Ya("The local sync coordinator command did not finish before the browser wait limit.","SYNC_COORDINATOR_COMMAND_WAIT_TIMEOUT",408)}function zh(e){return e instanceof Ya?e:new Ya(e instanceof Error&&e.message.trim()?e.message:"The local sync coordinator request failed.","SYNC_COORDINATOR_REQUEST_FAILED",0)}function OE(e){return new Promise(t=>{setTimeout(t,e)})}const jk="taskforce:auth-session-changed";function Rb(){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new Event(jk))}const BE=new AC;function WE(e){const t=e.client||BE,r=Math.max(1e3,e.pollIntervalMs??3e3),[a,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=a.snapshot;const p=o.useCallback(w=>{const _=c.current;if(_?.workspaceId===e.workspaceId)return _.promise;const M=zy(),R=M?xb(M,e.workspaceId):null;if(!R)return null;const P=Uy({client:t,envelope:R,storage:M,recoverExisting:!0}),b={workspaceId:e.workspaceId,scope:w,promise:P};return c.current=b,P.catch(()=>{}).finally(()=>{c.current===b&&(c.current=null)}),P},[t,e.workspaceId]),g=o.useCallback(w=>{const _=d.current;if(_?.workspaceId===e.workspaceId)return _.promise;const M=zy(),R=M?xb(M,e.workspaceId,void 0,"priority"):null;if(!R)return null;const P=Uy({client:t,envelope:R,storage:M,recoverExisting:!0,storageLane:"priority"}),b={workspaceId:e.workspaceId,scope:w,promise:P};return d.current=b,P.catch(()=>{}).finally(()=>{d.current===b&&(d.current=null)}),P},[t,e.workspaceId]),h=o.useCallback(async(w,_)=>{const M=await t.attachWorkspace({workspaceId:e.workspaceId});if(i.current!==w||l.current!==_)return null;if(M.runtimeResumePending===!0)throw new Ya("The local sync runtime has not resumed yet.",M.runtimeResumeErrorCode||"SYNC_COORDINATOR_RUNTIME_RESUME_PENDING",503);const R=await t.readStatus({workspaceId:e.workspaceId,coordinatorGeneration:M.state.coordinatorGeneration});if(i.current!==w||l.current!==_)return null;if(R.credential.status!=="ready")throw new Ya("The local sync coordinator credential is not ready after attach.","SYNC_COORDINATOR_CREDENTIAL_BLOCKED",409);return f.current=R,s({phase:"ready",snapshot:R,error:null}),p(w),g(w),R},[t,e.workspaceId,p,g]),y=o.useCallback(async()=>{if(!e.enabled||!e.workspaceId)return null;const w=i.current,_=l.current+1;l.current=_;try{const M=f.current;if(!M)return await h(w,_);const R=await t.readStatus({workspaceId:e.workspaceId,coordinatorGeneration:M.state.coordinatorGeneration});return i.current!==w||l.current!==_?null:R.credential.status!=="ready"||R.serverInstanceId!==M.serverInstanceId?await h(w,_):(f.current=R,s({phase:"ready",snapshot:R,error:null}),p(w),g(w),R)}catch(M){if(i.current!==w||l.current!==_)return null;const R=Hy(M);if(R.code==="SYNC_COORDINATOR_STALE_GENERATION"||R.code==="SYNC_COORDINATOR_INACTIVE_WORKSPACE")try{return await h(w,_)}catch(P){if(i.current!==w||l.current!==_)return null;const b=Hy(P);return s($=>({phase:"error",snapshot:$.snapshot,error:b})),null}return s(P=>({phase:"error",snapshot:P.snapshot,error:R})),null}},[h,t,e.enabled,e.workspaceId,p,g]);o.useEffect(()=>{const w=i.current+1;if(i.current=w,f.current=null,!e.enabled||!e.workspaceId||typeof window>"u"){s({phase:"idle",snapshot:null,error:null});return}let _=!1,M=null;s({phase:"attaching",snapshot:null,error:null});const R=()=>{_||(M=window.setTimeout(()=>{M=null,y().finally(R)},r))},P=()=>{document.visibilityState==="visible"&&y()},b=()=>{y()},$=()=>{f.current=null,y()},I=()=>{y().then(K=>{if(K?.state.ownershipMode==="server")return t.signalWake({workspaceId:e.workspaceId,coordinatorGeneration:K.state.coordinatorGeneration,source:"connectivity"}).catch(()=>{})})};document.addEventListener("visibilitychange",P),window.addEventListener("focus",b),window.addEventListener("online",I),window.addEventListener(jk,$);const E=l.current+1;return l.current=E,h(w,E).catch(K=>{i.current!==w||l.current!==E||s({phase:"error",snapshot:null,error:Hy(K)})}).finally(R),()=>{_=!0,i.current+=1,M!==null&&window.clearTimeout(M),document.removeEventListener("visibilitychange",P),window.removeEventListener("focus",b),window.removeEventListener("online",I),window.removeEventListener(jk,$)}},[h,t,e.enabled,e.workspaceId,r,y]);const k=o.useCallback(async(w,_=null)=>{const M=f.current;if(!M)throw new Ya("The local sync coordinator is not attached.","SYNC_COORDINATOR_UNAVAILABLE",409);const R=w==="DisableSync";if(R){const U=d.current;if(U?.workspaceId===e.workspaceId)return U.promise;const L=g(i.current);if(L)return L}const P=c.current;if(!R&&P?.workspaceId===e.workspaceId&&await P.promise,!R){const U=p(i.current);U&&await U}const b={commandId:crypto.randomUUID(),workspaceId:e.workspaceId,coordinatorGeneration:M.state.coordinatorGeneration,type:w,version:1,args:_},$=Uy({client:t,envelope:b,storage:zy(),storageLane:R?"priority":"default"}),I={workspaceId:e.workspaceId,scope:i.current,promise:$},E=R?d:c;E.current=I;const K=()=>{E.current===I&&(E.current=null),i.current===I.scope&&e.workspaceId===I.workspaceId&&y()};return $.then(K,K),$},[t,e.workspaceId,y,p,g]),v=o.useCallback(async(w,_=[])=>{const M=f.current;return!M||M.state.ownershipMode!=="server"?!1:(await t.signalWake({workspaceId:e.workspaceId,coordinatorGeneration:M.state.coordinatorGeneration,source:w,eventIds:_}),!0)},[t,e.workspaceId]),C=o.useCallback(async w=>{const _=f.current,M=String(_?.state.activeWorkspaceId||"").trim(),R=String(w||"").trim();if(!_||!M)throw new Ya("The local sync coordinator is not attached to an active workspace.","SYNC_COORDINATOR_UNAVAILABLE",409);if(!R)throw new Ya("The target workspace is required.","SYNC_COORDINATOR_COMMAND_INVALID",400);if(R===M)return _.state;const P=i.current,b=await t.switchWorkspace({commandId:crypto.randomUUID(),expectedActiveWorkspaceId:M,targetWorkspaceId:R,coordinatorGeneration:_.state.coordinatorGeneration,version:1});return i.current===P&&(l.current+=1,f.current=null,s({phase:"attaching",snapshot:null,error:null})),b.state},[t]),S=o.useCallback(async w=>{const _=f.current;if(!_)throw new Ya("The local sync coordinator is not attached.","SYNC_COORDINATOR_UNAVAILABLE",409);if(_.state.ownershipMode===w)return _.state;const M=i.current,R=await t.transferOwnership({commandId:crypto.randomUUID(),workspaceId:e.workspaceId,coordinatorGeneration:_.state.coordinatorGeneration,targetMode:w,version:1});if(i.current===M){const P={..._,state:R.state};f.current=P,s({phase:"ready",snapshot:P,error:null}),y()}return R.state},[t,e.workspaceId,y]);return o.useMemo(()=>({...a,refresh:y,issueCommand:k,signalWake:v,switchWorkspace:C,transferOwnership:S}),[k,y,v,a,C,S])}function zy(){if(typeof window>"u")return null;try{return window.sessionStorage}catch{return null}}function Hy(e){return e instanceof Ya?e:new Ya(e instanceof Error&&e.message.trim()?e.message:"The local sync coordinator request failed.","SYNC_COORDINATOR_REQUEST_FAILED",0)}function $E(e){return e.serverCommandMode}function FE(e){return e.runtimeMode==="local"}function Pb(e){const t=String(e.workspaceId||"").trim(),r=e.snapshot,a=r?.state,s=r?.credential,i=r?[r.serverInstanceId,a?.activeWorkspaceId||"",a?.coordinatorGeneration??"",a?.ownershipMode||"",a?.transitionState||"",s?.status||"",s?.coordinatorGeneration??""].join(":"):`${e.phase}:unavailable`;let l,c=!1,d=!1,f=!0;return e.phase!=="ready"||!r||!a||!s?l="coordinator-unavailable":!t||a.activeWorkspaceId!==t?l="workspace-mismatch":s.status!=="ready"||s.workspaceId!==t?l="credential-blocked":s.coordinatorGeneration!==a.coordinatorGeneration?l="generation-mismatch":a.transitionState!=="idle"?l="transition-active":a.ownershipMode==="browser-gateway"?(l="browser-owner",c=!0,f=!1):a.ownershipMode==="server"?(l="server-owner",c=!0,d=!0,f=!1):a.ownershipMode==="stopped"?l="coordinator-stopped":l="transition-active",{browserSchedulingAllowed:l==="browser-owner",coordinatorAuthorityReady:c,serverCommandMode:d,transitionFenced:f,reason:l,authorityEpoch:i}}class UE extends Error{constructor(t,r){super(t),this.code=r,this.name="WorkspaceSyncTransportGatewayError"}}function zE(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 HE("The requested sync gateway operation is not supported.")}function HE(e){return new UE(e,"SYNC_COORDINATOR_GATEWAY_OPERATION_INVALID")}function VE(e){return e.type==="v3-dispatch"?9e4:e.type==="initiative-repair"||e.type==="combined-repair"||e.type==="v3-feed-repair"||e.type==="push"&&e.repairMode===!0||e.type==="pull"&&e.repairMode===!0||e.type==="v3-feed"&&(e.forceRepair===!0||e.repairCursor)?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 GE=5e3;function Eb(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function KE(e,t){return!Eb(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||Eb(e.diagnostics)}function Xm(e){return{cursor:e??null}}function Kp(e){return{version:1,projection:e.projection,cursor:e.cursor??null,...e.coverage?{coverage:{...e.coverage}}:{}}}async function qE(e,t){const r=await e.text();let a={},s=!1;if(r)try{a=JSON.parse(r),s=!!(a&&typeof a=="object"&&!Array.isArray(a))}catch{a={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:a,...l===void 0?{}:{retryAfterMs:l}},validJsonObject:s}}function YE(e){const t=e.now,r=e.createPermitId||(()=>crypto.randomUUID()),a=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??VE(p.operation)+GE)),y=zE(p.operation),k={operationClass:y,operationIdentity:p.operationIdentity||null},v=r();let C;try{C=await e.client.issuePermit({permitId:v,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(v,$,k)}const S=C?.permit;if(!S||S.permitId!==v||S.workspaceId!==e.workspaceId||S.coordinatorGeneration!==e.coordinatorGeneration||S.serverInstanceId!==e.serverInstanceId||S.ownerMode!=="browser-gateway"||S.operationClass!==y||S.operationIdentity!==k.operationIdentity||S.state!=="issued-idle")return l(v,new Error("The browser-gateway execution permit is invalid."),k);let w;try{w=await e.client.executeGateway({permitId:S.permitId,workspaceId:e.workspaceId,coordinatorGeneration:e.coordinatorGeneration,operationIdentity:p.operationIdentity||null,operation:p.operation})}catch($){return l(v,$,k)}let _;try{_=await qE(w,g.getTime())}catch($){return l(v,$,k)}const M=_.result;let R;try{R=await e.client.readPermit({permitId:v,workspaceId:e.workspaceId,coordinatorGeneration:e.coordinatorGeneration})}catch($){return l(v,$,k)}const P=R?.permit;if(!P||P.permitId!==v||P.workspaceId!==e.workspaceId||P.coordinatorGeneration!==e.coordinatorGeneration||P.serverInstanceId!==e.serverInstanceId||P.ownerMode!=="browser-gateway"||P.operationClass!==y||P.operationIdentity!==k.operationIdentity||P.state!=="gateway-complete-awaiting-apply"||!["accepted","rejected","unknown"].includes(P.upstreamDisposition||""))return l(v,new Error("The browser-gateway did not settle its execution permit."),k);if(P.upstreamDisposition==="accepted"&&(p.requireAcceptedJsonObject&&!_.validJsonObject||p.validateAcceptedData&&!p.validateAcceptedData(M.data)))return l(v,new Error("The accepted browser-gateway sync response is invalid."),k);if(!p.applying){if(P.upstreamDisposition==="accepted"){let $;try{$=await e.client.releasePermit({permitId:v,workspaceId:e.workspaceId,coordinatorGeneration:e.coordinatorGeneration})}catch(E){return l(v,E,k)}const I=$?.permit;if(!I||I.permitId!==v||I.workspaceId!==e.workspaceId||I.coordinatorGeneration!==e.coordinatorGeneration||I.serverInstanceId!==e.serverInstanceId||I.ownerMode!=="browser-gateway"||I.operationClass!==y||I.operationIdentity!==k.operationIdentity||I.state!=="released")return l(v,new Error("The browser-gateway execution permit was not released."),k)}else await i(v,void 0,k);return M}if(P.upstreamDisposition!=="accepted")return await i(v,void 0,k),M;if(!p.previousBoundary)return l(v,new Error("A browser-gateway applying request did not declare its prior boundary."),k);const b=Object.freeze({});return a.set(b,{permitId:v,workspaceId:e.workspaceId,previousBoundary:p.previousBoundary,operationClass:y,operationIdentity:k.operationIdentity}),{...M,transferReceipt:{token:b}}},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 v=k.token;if(!v||typeof v!="object")throw new TypeError("The browser-gateway transfer receipt token is invalid.");const C=a.get(v);if(!C||C.workspaceId!==p)throw new TypeError("The browser-gateway transfer receipt does not belong to this adapter.");if(h&&En(C.previousBoundary)!==En(h))throw new TypeError("The browser-gateway transfer receipt starts at a different boundary.");return C});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:TA,workspaceId:p,coordinatorGeneration:e.coordinatorGeneration,ownerMode:"browser-gateway",serverInstanceId:e.serverInstanceId,permitIds:k.map(v=>v.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=Hm(p.pushBoundary),y=Ch(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 KA(k,y),!0}catch{return!1}}})},pullWorkspaceChanges:p=>{const g=p.excludedProjections?.length?_A(p.excludedProjections):null;return c({operation:{type:"pull",...p,...g?{coverage:g}:{},excludedProjections:p.excludedProjections?[...p.excludedProjections]:void 0},previousBoundary:Xm(p.cursor),applying:!0,requireAcceptedJsonObject:!0,validateAcceptedData:h=>KE(h,p.workspaceId)})},pullWorkspaceContent:p=>{const{previousCursor:g,...h}=p;return c({operation:{type:"content-pull",...h},previousBoundary:Xm(g),applying:!0})},pullInitiativeFeed:p=>c({operation:{type:"v3-feed",...p,limit:p.limit||100},previousBoundary:Kp({projection:"initiative",cursor:p.repairCursor||p.cursor}),applying:!0}),pullInitiativeRepair:p=>c({operation:{type:"initiative-repair",...p,limit:p.limit||100},previousBoundary:Kp({projection:"initiative",cursor:p.cursor}),applying:!0}),pullCombinedFeed:p=>c({operation:{type:"v3-feed",...p,limit:p.limit||100},previousBoundary:Kp({projection:"combined",cursor:p.repairCursor||p.cursor,coverage:p.coverage||ka}),applying:!0}),pullCombinedRepair:p=>c({operation:{type:"combined-repair",...p,limit:p.limit||100,coverage:p.coverage||ka},previousBoundary:Kp({projection:"combined",cursor:p.cursor,coverage:p.coverage||ka}),applying:!0}),pullTaskCommentAudit:p=>c({operation:{type:"task-comment-audit",...p,limit:p.limit||50},previousBoundary:Kp({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:Hm(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,Xm(g),Xm(h)),buildV2PushApplyCompletionGroup:({workspaceId:p,pushBoundary:g,receipts:h})=>f(p,h,Hm(g),Hm(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(S=>En(S.previousBoundary)!==En(k)))throw new TypeError("The v3 transfer receipts do not match the applied projection.");const v=g.kind==="repair"&&g.previousCursor===null&&y.every(S=>S.operationClass==="pull");if(k.cursor!==g.previousCursor&&!v)throw new TypeError("The v3 apply does not start at the receipt boundary.");const C=g.kind==="delta"||g.kind==="audit"?"pull":"repair";if(!v&&y.some(S=>S.operationClass!==C))throw new TypeError("The v3 transfer receipt operation does not match the apply.");return f(p,h,k,{...k,cursor:g.nextCursor})}}}function Nb(e){const t=e.current===e.captured&&e.current.mode!=="blocked"&&e.browserSchedulingAllowed;return t||e.onDenied?.(),t}function ZE(e){if(!e.authority.browserSchedulingAllowed)return{mode:"blocked",remoteServices:null};const t=String(e.workspaceId||"").trim(),r=e.snapshot,a=r?.state,s=r?.credential;if(e.phase!=="ready"||e.authority.reason!=="browser-owner"||!t||!r||!a||!s||a.activeWorkspaceId!==t||a.ownershipMode!=="browser-gateway"||a.transitionState!=="idle"||s.status!=="ready"||s.workspaceId!==t||s.coordinatorGeneration!==a.coordinatorGeneration||!Number.isSafeInteger(a.coordinatorGeneration)||a.coordinatorGeneration<1||!String(r.serverInstanceId||"").trim())return{mode:"blocked",remoteServices:null};const i=e.createGatewayRemoteServices||YE;let l;return l={mode:"browser-gateway",remoteServices:i({workspaceId:t,coordinatorGeneration:a.coordinatorGeneration,serverInstanceId:r.serverInstanceId,client:e.client,now:()=>new Date,isExecutionAuthorized:()=>e.isSelectionAuthorized?.(l)!==!1}),coordinatorGeneration:a.coordinatorGeneration,serverInstanceId:r.serverInstanceId},l}const jb={documents:!1,aiProfiles:!1,assets:!1,documentReviewSessions:!1,annotatedAttachmentSessions:!1,taskforceAgents:!1};function JE(e){const{currentWorkspaceId:t,cloudAuthConfigured:r,runtimeMode:a,authSessionResolved:s,isAuthenticated:i,authUserId:l,projectName:c,resolveCloudAuthUrl:d,resolveWebSocketUrl:f,realtimeSyncEnabled:p,localOutboxDispatchEnabled:g,localCoordinatorBrowserAuthorityGateEnabled:h=!1,localCoordinatorClient:y,initiativeFeedActivationEnabled:k,combinedFeedActivationEnabled:v,combinedFeedCoverage:C,tasks:S,archivedTasks:w,deletedTasks:_=[],initiatives:M,workstreams:R,taxonomies:P,taxonomyState:b,setupState:$,globalTheme:I,locale:E,globalWeekStartsOn:K,themeUseGlobalDefault:U,setTasks:L,setArchivedTasks:D,setAuthBlocked:ie,setIsAuthenticated:H,checkAuthSession:be,setGlobalTheme:Z,setCurrentTheme:me,setSetupState:Ve,setLocale:Re,setGlobalWeekStartsOn:je,fetchPlanningEntities:ye}=e,ue=o.useMemo(()=>kP(b),[b]),[ve,Pe]=o.useState("disconnected"),[Le,se]=o.useState(null),[V,W]=o.useState(null),[z,fe]=o.useState(null),[ke,Y]=o.useState(null),[we,q]=o.useState(null),[le,$e]=o.useState(!1),[re,de]=o.useState("idle"),[He,ce]=o.useState(null),[pe,xe]=o.useState(!1),[N,X]=o.useState(0),[Ae,Te]=o.useState(null),he=o.useRef(null),ot=o.useCallback(O=>{he.current=O,Te(O)},[]),[We,Xe]=o.useState([]),[ae,G]=o.useState(""),Ie=o.useRef(S||[]),Fe=o.useRef(w||[]),it=o.useRef(_||[]),Me=o.useRef([]),[qe,ge]=o.useState([]),_e=o.useCallback(O=>{Me.current=O,ge(O)},[]),Be=o.useRef(M||[]),Ge=o.useRef(R||[]),F=o.useRef(b),Ne=o.useRef(P||[]),Ce=o.useRef([]),ut=o.useRef(new Set),[mt,Ue]=o.useState([]),[wt,kt]=o.useState(""),[rt,Ht]=o.useState(null),[lr,rr]=o.useState(null),[wr,st]=o.useState(0),[zt,Lt]=o.useState(null),Mt=o.useRef([]),[Ee,ct]=o.useState([]),[lt,Je]=o.useState(""),nt=o.useRef([]),Ct=o.useRef(new Set),[Rt,Dt]=o.useState([]),[It,Qt]=o.useState(""),ir=o.useRef([]),dr=o.useRef([]),[sr,pr]=o.useState([]),[Jr,Tr]=o.useState(""),br=o.useRef([]),[ur,Qr]=o.useState([]),[Hr,Gt]=o.useState(""),bt=o.useRef([]),gr=o.useRef([]),u=o.useRef([]),ht=o.useRef([]),[yr,Er]=o.useState(jb),[mn,qt]=o.useState("degraded-fallback"),[Vr,Tt]=o.useState({accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0}),Ut=o.useRef(!1),fr=o.useRef(null),$t=o.useRef("missing-baseline"),Mr=o.useRef(0),Fr=o.useRef(!1),Vt=o.useRef(new Set),Dr=o.useRef(""),Ye=o.useRef(""),en=o.useRef(""),bn=o.useRef(""),tn=o.useRef(""),ft=o.useRef(""),rn=o.useRef(""),Nt=o.useRef(!1),or=o.useRef(null),xr=o.useRef(new Set),hn=o.useRef([]),ys=o.useRef(null),Nn=o.useRef(""),Sn=o.useRef(()=>Promise.resolve(!1)),kr=o.useRef(""),cr=o.useRef(async()=>{}),Wr=o.useRef(null),on=o.useRef(null),dt=o.useRef("idle"),Un=o.useCallback(()=>{fr.current!==null&&(window.clearTimeout(fr.current),fr.current=null)},[]),Tn=o.useCallback(O=>{if(typeof window>"u")return;Un();const j=Math.max(1,Math.floor(Mr.current)+1);Mr.current=j;const xt=1500*2**Math.max(0,j-1),Et=Number.isFinite(Number(O))?Math.max(0,Math.floor(Number(O))):0,At=Math.max(Math.min(12e4,xt),Et);fr.current=window.setTimeout(()=>{fr.current=null,cr.current({preferCloudOnFirstSync:!1})},At)},[Un]),jn=o.useCallback(O=>{Er(j=>j[O]?j:{...j,[O]:!0})},[]),an=Object.values(yr).every(Boolean),Ds=o.useMemo(()=>y||new AC,[y]),da=FE({runtimeMode:a}),J=WE({enabled:da,workspaceId:t,client:Ds}),Qe=o.useMemo(()=>Pb({workspaceId:t,phase:J.phase,snapshot:J.snapshot}),[t,J.phase,J.snapshot,h]),St=o.useMemo(()=>Pb({workspaceId:t,phase:J.phase,snapshot:J.snapshot}),[t,J.phase,J.snapshot]),Xt=o.useRef(Qe);o.useLayoutEffect(()=>{Xt.current=Qe},[Qe]);const at=o.useCallback(()=>Xt.current.browserSchedulingAllowed,[]),{workspaceRetryAt:Ft,isWorkspaceRetryPending:Lr,workspacePushInFlightRef:Nr,workspacePullInFlightRef:Rr,workspaceLastPushedSignatureRef:Kt,workspacePendingSignatureRef:Bn,workspaceLastPushedTaskIdsRef:Xn,workspaceDeletedTaskIdsRef:va,workspaceDeletedTaskWatermarksRef:Cr,workspacePullCursorRef:cn,clearWorkspaceRetry:kn,scheduleWorkspaceRetry:zn,persistWorkspaceSyncPatch:ea,applyWorkspaceSyncPatchLocally:La,readWorkspaceSyncStateSnapshot:mr,loadWorkspaceSyncState:Zo,applyWorkspaceSyncStateSnapshot:Za,saveWorkspaceCloudSyncSettings:ks,acquireWorkspaceSyncLease:Eo,releaseWorkspaceSyncLease:xa,forceClearWorkspaceSyncLease:Ja,recordWorkspaceSyncCompletion:Ra,wasWorkspaceSyncOperationCompletedRecently:vs}=tP({currentWorkspaceId:t,setWorkspaceCloudSyncEnabled:$e,setWorkspaceSyncPhase:de,setWorkspaceSyncSetupIntent:ce,setWorkspaceLastPullAt:W,setWorkspaceLastPushAt:fe,setWorkspaceLastErrorMessage:q,isWorkspaceOperationAuthorized:at}),Qa=o.useCallback(O=>{(O.phase==="attach-cloud"||O.phase==="provision-local")&&(dt.current=O.phase,Wr.current===null&&(Wr.current=Date.now()),on.current=null),Za(O)},[Za]),ws=o.useRef(new Map),ln=o.useRef(new Map),Oa=o.useRef(new Map),yn=o.useRef(""),Vs=o.useRef(new Set),Mn=o.useRef(new Map),Ls=o.useRef(new Set),vt=o.useRef(new Map),nr=o.useRef(new Set),nn=o.useRef(new Map),vn=o.useRef(new Map),ta=o.useRef(new Set),ho=o.useRef(new Map),Os=o.useRef(new Set),wa=o.useRef(new Map),Bs=o.useRef(new Set),Xa=o.useRef(new Map),Xr=o.useRef(new Set),Ar=o.useRef(new Map),An=o.useRef(new Set),es=o.useRef(new Map),Wn=o.useRef(new Set),ra=o.useRef(new Map),ts=o.useRef(new Set),rs=o.useRef(new Map),na=o.useRef(new Set),aa=o.useRef(new Map),un=o.useRef(new Map),bs=o.useCallback(O=>O?(Xn.current=new Set(O.taskIds),ws.current=O.taskWatermarks,ln.current=O.taskChangeKeys||new Map,Oa.current=O.taskRelationshipChangeKeys||new Map,yn.current=O.taxonomyChangeKey||"",Vs.current=new Set(Array.from(O.initiativeWatermarks.keys())),Mn.current=O.initiativeWatermarks,Ls.current=new Set(Array.from(O.workstreamWatermarks.keys())),vt.current=O.workstreamWatermarks,nr.current=new Set(Array.from(O.aiProfileWatermarks.keys())),nn.current=O.aiProfileWatermarks,vn.current=O.aiProfileChangeKeys||new Map,Wn.current=new Set(Array.from((O.taskforceAgentWatermarks||new Map).keys())),ra.current=O.taskforceAgentWatermarks||new Map,ts.current=new Set(Array.from((O.taskforceAgentSkillWatermarks||new Map).keys())),rs.current=O.taskforceAgentSkillWatermarks||new Map,na.current=new Set(Array.from((O.agentConversationWatermarks||new Map).keys())),aa.current=O.agentConversationWatermarks||new Map,ta.current=new Set(Array.from(O.documentWatermarks.keys())),ho.current=O.documentWatermarks,Os.current=new Set(Array.from(O.assetWatermarks.keys())),wa.current=O.assetWatermarks,Bs.current=new Set(Array.from(O.documentReviewSessionWatermarks.keys())),Xa.current=O.documentReviewSessionWatermarks,Xr.current=new Set(Array.from(O.documentReviewCommentWatermarks.keys())),Ar.current=O.documentReviewCommentWatermarks,An.current=new Set(Array.from(O.annotatedAttachmentSessionWatermarks.keys())),es.current=O.annotatedAttachmentSessionWatermarks,un.current=O.taskEventWatermarks,$t.current=null,!0):!1,[Xn]),Ws=o.useCallback(()=>({taskIds:Xn.current,taskWatermarks:ws.current,taskChangeKeys:ln.current,taskRelationshipChangeKeys:Oa.current,taxonomyChangeKey:yn.current,initiativeWatermarks:Mn.current,workstreamWatermarks:vt.current,aiProfileWatermarks:nn.current,aiProfileChangeKeys:vn.current,taskforceAgentWatermarks:ra.current,taskforceAgentSkillWatermarks:rs.current,agentConversationWatermarks:aa.current,documentWatermarks:ho.current,assetWatermarks:wa.current,documentReviewSessionWatermarks:Xa.current,documentReviewCommentWatermarks:Ar.current,annotatedAttachmentSessionWatermarks:es.current,taskEventWatermarks:un.current}),[]),go=o.useCallback(()=>{if($t.current==="repair-reset"||$t.current==="storage-write-failed")return!1;const O=$y(t,ue);return!O||O.aiProfileWatermarks.size===0?!1:(nr.current=new Set(O.aiProfileWatermarks.keys()),nn.current=new Map(O.aiProfileWatermarks),vn.current=new Map(O.aiProfileChangeKeys||[]),!0)},[t,ue]),pn=o.useRef(!1),Hn=o.useRef(!1),ua=o.useRef(!1),Pa=o.useRef(!1),Gs=o.useRef(!1),Vn=o.useRef(""),wn=o.useRef(!1),oe=3e4,yt=p?3e4:15e3,Yt=Math.max(3e4,yt),[vr,Ur]=o.useState(null);o.useEffect(()=>{const O=Date.now();if(a!=="local"||!le||re!=="active")return;const j=V?Date.parse(V):NaN;if(!Number.isFinite(j))return;const xt=j+hC-O;if(xt<=0)return;const Et=window.setTimeout(()=>{Ur(Date.now())},xt+50);return()=>window.clearTimeout(Et)},[a,le,re,V]);const sa=o.useMemo(()=>{const O=V?Date.parse(V):NaN,j=z?Date.parse(z):NaN;return Number.isFinite(O)&&Number.isFinite(j)?O>=j?V:z:Number.isFinite(O)?V:Number.isFinite(j)?z:null},[V,z]),Dn=bP({enabled:le,phase:re,busy:pe,retryAt:Ft,lastErrorMessage:we,lastErrorAt:ke,lastPullAt:V,lastPushAt:z,nowMs:vr??Date.now(),pendingChanges:N,durableOutbox:Ae}),Cn=Dn.status,gi=Dn.summary,ba=Dn.recommendedAction,Ba=o.useCallback(O=>{const j=String(O||"").trim();if(!j)return null;const Et=Sb()[j]?.updatedAt;return typeof Et=="string"&&Et.trim().length>0?Et.trim():null},[]),yo=o.useCallback((O,j)=>{const xt=String(O||"").trim(),Et=String(j||"").trim();if(!xt||!Et)return;const At=Sb();At[xt]={updatedAt:Et},yP(At)},[]),Ss=o.useCallback(()=>{const O=$?.mode==="operations"?"operations":"core";return{theme:I,operatingMode:O,localization:{locale:E,weekStartsOn:K}}},[I,$?.mode,E,K]),ko=o.useCallback(async O=>{if(!(!O||typeof O!="object")){Fr.current=!0;try{const j={},xt=hu(O.theme);if(xt&&(Z(xt),U&&me(xt),j.theme=xt),(O.operatingMode==="core"||O.operatingMode==="operations")&&(Ve(Et=>Et&&{...Et,mode:O.operatingMode}),j.setup={mode:O.operatingMode}),O.localization&&typeof O.localization=="object"){const Et={};if(typeof O.localization.locale=="string"&&O.localization.locale.trim().length>0){const De=mA(O.localization.locale.trim());Re(De)}const At=String(O.localization.weekStartsOn||"").trim().toLowerCase();(At==="sunday"||At==="monday")&&(je(At),Et.weekStartsOn=At),Object.keys(Et).length>0&&(j.schedulePreferences=Et)}Object.keys(j).length>0&&await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(j)})}finally{Fr.current=!1}}},[U,Z,me,Ve,Re,je]),Bt=o.useCallback(async O=>{const j=O?.preferCloudOnFirstSync!==!1;if(!r)return;if(a!=="local"||!i){Un(),Mr.current=0,Pe("disconnected");return}const xt=String(l||"").trim();if(!xt||xt==="anonymous"){Un(),Mr.current=0,Pe("disconnected");return}if(!Ut.current){Pe("syncing"),se(null),Ut.current=!0;try{const Et=await Yx({resolveCloudAuthUrl:d,userId:xt,preferCloudOnFirstSync:j,getLocalUpdatedAt:Ba,buildLocalSettings:Ss,applyRemoteSettings:ko});if(!Et.success){Pe("error"),Et.transient?(se(Et.error||"Sync failed temporarily. Retrying automatically."),Tn(Et.retryAfterMs)):(Un(),Mr.current=0,se(Et.error||"Sync failed."));return}Un(),Mr.current=0;const At=String(Et.updatedAt||"").trim()||new Date().toISOString();yo(xt,At),Pe("idle"),se(null),Vt.current.add(xt),Et.mode==="pulled"&&(Dr.current="")}catch{Pe("error"),se("Sync failed temporarily. Retrying automatically."),Tn()}finally{Ut.current=!1}}},[r,a,i,l,d,Ba,Ss,ko,yo,Un,Tn]);o.useEffect(()=>{cr.current=Bt},[Bt]),o.useEffect(()=>()=>{Un()},[Un]);const Gn=o.useCallback(()=>{q(null),Y(null)},[]),$n=o.useCallback(O=>{q(bb),Y(new Date().toISOString()),Pe("error"),se(bb),Ns("workspace_sync_window_contention",{workspaceId:t,operation:O})},[t]),sn=o.useCallback(async O=>{try{return await ea(O)}catch{return La(O)}},[La,ea]),Sa=o.useCallback(O=>{sn(O).catch(()=>{})},[sn]),ns=o.useCallback(()=>{const O={...Ws(),taxonomyStateFingerprint:ue},j=Ab(t,O);return sn({pushBaseline:fC(O)}).catch(()=>{}),j},[Ws,t,sn,ue]);o.useEffect(()=>{Ye.current="",en.current="",bn.current="",tn.current="",ft.current="",rn.current="",Vn.current="",wn.current=!1,Xe([]),G(""),Mt.current=[],Ue([]),kt(""),ct([]),Je(""),ir.current=[],dr.current=[],Dt([]),Qt(""),br.current=[],pr([]),Tr(""),bt.current=[],gr.current=[],ht.current=[],Qr([]),Gt(""),Er(jb),q(null),Y(null),X(0),xr.current=new Set,hn.current=[],ws.current=new Map,ln.current=new Map,Oa.current=new Map,yn.current="",Vs.current=new Set,Mn.current=new Map,Ls.current=new Set,vt.current=new Map,nr.current=new Set,nn.current=new Map,vn.current=new Map,ta.current=new Set,ho.current=new Map,Os.current=new Set,wa.current=new Map,Bs.current=new Set,Xa.current=new Map,Xr.current=new Set,Ar.current=new Map,An.current=new Set,es.current=new Map,Wn.current=new Set,ra.current=new Map,ts.current=new Set,rs.current=new Map,na.current=new Set,aa.current=new Map,un.current=new Map,Hn.current=!!mr().startupFullReconcileCompletedAt,No.current=!1;const O=$y(t,ue);bs(O)||($t.current="missing-baseline")},[t,bs,ue]),o.useEffect(()=>{if($t.current!=="missing-baseline")return;const O=$y(t,ue);if(bs(O))return;const j=mC(mr().pushBaseline,ue);bs(j)&&Ab(t,{...Ws(),taxonomyStateFingerprint:ue})},[Ws,t,bs,mr,ue,le,re]),o.useEffect(()=>{Hn.current=!!mr().startupFullReconcileCompletedAt},[t,mr,V,re]);const As=o.useCallback(O=>{zn(()=>Sn.current(),{minDelayMs:O})},[zn]);o.useEffect(()=>{xP({workspaceSyncPhase:re,lastBootstrapPhaseRef:dt,bootstrapPhaseStartedAtRef:Wr,bootstrapLastProgressAtRef:on})},[re]),o.useEffect(()=>RP({currentWorkspaceId:t,workspaceCloudSyncEnabled:le,workspaceSyncPhase:re,workspacePullInFlightRef:Rr,workspacePushInFlightRef:Nr,bootstrapPhaseStartedAtRef:Wr,bootstrapLastProgressAtRef:on,isExecutionAuthorized:at,setWorkspaceLastErrorMessage:O=>q(O),setWorkspaceLastErrorAt:O=>Y(O),setUserGlobalSyncStatus:Pe,setUserGlobalSyncError:O=>se(O),setWorkspaceSyncBusy:xe,persistWorkspaceSyncPatchSafely:Sa}),[t,le,re,Sa,Rr,Nr,Qe.authorityEpoch,at]),o.useEffect(()=>{Ie.current=S||[]},[S]),o.useEffect(()=>{Fe.current=w||[]},[w]),o.useEffect(()=>{let O=!1;return fetch("/api/taskforce/task-relationships",{method:"GET",credentials:"include"}).then(j=>j.ok?j.json():null).then(j=>{!O&&Array.isArray(j?.relationships)&&_e(j.relationships)}).catch(()=>{}),()=>{O=!0}},[w,t,S,_e]),o.useEffect(()=>{it.current=_||[],va.current=new Set((_||[]).map(O=>String(O?.taskId||"").trim()).filter(O=>O.length>0)),Cr.current=new Map((_||[]).map(O=>[String(O?.taskId||"").trim(),String(O?.deletedAt||"").trim()]).filter(([O,j])=>O.length>0&&Number.isFinite(Date.parse(j))))},[_,va,Cr]),o.useEffect(()=>{Be.current=M||[]},[M]),o.useEffect(()=>{Ge.current=R||[]},[R]),o.useEffect(()=>{F.current=b,Ne.current=P||[]},[P,b]);const Ks=o.useRef(!1),No=o.useRef(!1),jo=o.useMemo(()=>({repairMode:Pa,forceFullAiProfilePush:Ks,pushInFlight:Nr,pullInFlight:Rr,pullAfterPushRequested:Gs,pendingPushReplay:ys,blockedPushSignature:Nn,lastPushedSignature:Kt,pendingSignature:Bn,lastPushedTaskIds:Xn,deletedTaskIds:va,deletedTaskWatermarks:Cr,pullCursor:cn,lastPushedWatermarks:ws,lastPushedTaskChangeKeys:ln,lastPushedTaskRelationshipChangeKeys:Oa,lastPushedTaxonomyChangeKey:yn,lastPushedInitiativeIds:Vs,lastPushedInitiativeWatermarks:Mn,lastPushedWorkstreamIds:Ls,lastPushedWorkstreamWatermarks:vt,lastPushedAiProfileIds:nr,lastPushedAiProfileWatermarks:nn,lastPushedAiProfileChangeKeys:vn,lastPushedDocumentPaths:ta,lastPushedDocumentWatermarks:ho,lastPushedAssetPaths:Os,lastPushedAssetWatermarks:wa,lastPushedDocumentReviewSessionIds:Bs,lastPushedDocumentReviewSessionWatermarks:Xa,lastPushedDocumentReviewCommentIds:Xr,lastPushedDocumentReviewCommentWatermarks:Ar,lastPushedAnnotatedAttachmentSessionIds:An,lastPushedAnnotatedAttachmentSessionWatermarks:es,lastPushedTaskforceAgentIds:Wn,lastPushedTaskforceAgentWatermarks:ra,lastPushedTaskforceAgentSkillIds:ts,lastPushedTaskforceAgentSkillWatermarks:rs,lastPushedAgentConversationIds:na,lastPushedAgentConversationWatermarks:aa,lastPushedTaskEventWatermarks:un,baselineResetReason:$t,captureAttachBootstrapBaseline:wn,attachBootstrapBaselineSignature:Vn,startupRepairRan:pn,startupFullReconcileRan:Hn,startupFullReconcileRequested:ua,fullReconcileInFlight:No,lastBootstrapPhase:dt,bootstrapPhaseStartedAtMs:Wr,bootstrapLastProgressAtMs:on,realtimeSuppressedEventQueue:hn}),[]),pa=o.useMemo(()=>_E(),[]),Wa=o.useRef(null),Yr=o.useMemo(()=>ZE({workspaceId:t,phase:J.phase,snapshot:J.snapshot,authority:Qe,client:Ds,isSelectionAuthorized:O=>Wa.current===O&&at()}),[Qe.authorityEpoch,Qe.browserSchedulingAllowed,Qe.reason,t,Ds,J.phase,J.snapshot?.credential.coordinatorGeneration,J.snapshot?.credential.status,J.snapshot?.credential.workspaceId,J.snapshot?.serverInstanceId,J.snapshot?.state.activeWorkspaceId,J.snapshot?.state.coordinatorGeneration,J.snapshot?.state.ownershipMode,J.snapshot?.state.transitionState,h]),$a=Yr.remoteServices;o.useLayoutEffect(()=>(Wa.current=Yr,()=>{Wa.current===Yr&&(Wa.current=null)}),[Yr]);const Kn=o.useCallback(async()=>{const O=Yr,j=Wa.current??{mode:"blocked",remoteServices:null};return!$a||!Nb({current:j,captured:O,browserSchedulingAllowed:at()})?{success:!1,statusCode:409,transient:!0,error:"Browser workspace sync authority changed before cloud readiness validation."}:Ox({cloudAuthConfigured:r,runtimeMode:a,isAuthenticated:i,resolveCloudAuthUrl:d,workspaceId:t,workspaceName:c||t,allowProvisionOnMismatch:re!=="attach-cloud",remoteServices:$a})},[r,t,i,at,c,d,a,$a,re,Yr]),Mo=o.useRef(t);Mo.current=t;const yi=o.useCallback(()=>MR({workspaceId:Mo.current,tasks:Ie.current,archivedTasks:Fe.current,taskRelationships:Me.current,deletedTasks:it.current,pendingDeletedTaskIds:va.current,pendingDeletedTaskWatermarks:Cr.current,initiatives:Be.current,workstreams:Ge.current,taxonomies:Ne.current,taxonomyState:F.current,aiProfiles:Mt.current,documents:Ce.current,assets:nt.current,currentDocumentPaths:ut.current,currentAssetPaths:Ct.current,documentReviewSessions:ir.current,documentReviewComments:dr.current,annotatedAttachmentSessions:br.current,taskforceAgents:bt.current,agentRoles:gr.current,taskforceAgentSkills:u.current,agentConversations:ht.current}),[]),qs=o.useCallback(O=>{const j=yi();return LR({snapshot:j,forceAllAiProfiles:O?.forceAllAiProfiles===!0,baseline:{lastPushedTaskIds:Xn.current,lastPushedWatermarks:ws.current,lastPushedTaskChangeKeys:ln.current,lastPushedTaskRelationshipChangeKeys:Oa.current,lastPushedTaxonomyChangeKey:yn.current,lastPushedInitiativeIds:Vs.current,lastPushedInitiativeWatermarks:Mn.current,lastPushedWorkstreamIds:Ls.current,lastPushedWorkstreamWatermarks:vt.current,lastPushedAiProfileIds:nr.current,lastPushedAiProfileWatermarks:nn.current,lastPushedAiProfileChangeKeys:vn.current,lastPushedDocumentPaths:ta.current,lastPushedDocumentWatermarks:ho.current,lastPushedAssetPaths:Os.current,lastPushedAssetWatermarks:wa.current,lastPushedDocumentReviewSessionIds:Bs.current,lastPushedDocumentReviewSessionWatermarks:Xa.current,lastPushedDocumentReviewCommentIds:Xr.current,lastPushedDocumentReviewCommentWatermarks:Ar.current,lastPushedAnnotatedAttachmentSessionIds:An.current,lastPushedAnnotatedAttachmentSessionWatermarks:es.current,lastPushedTaskforceAgentIds:Wn.current,lastPushedTaskforceAgentWatermarks:ra.current,lastPushedTaskforceAgentSkillIds:ts.current,lastPushedTaskforceAgentSkillWatermarks:rs.current,lastPushedAgentConversationIds:na.current,lastPushedAgentConversationWatermarks:aa.current,lastPushedTaskEventWatermarks:un.current,baselineResetReason:$t.current}})},[yi]),Ys=o.useCallback(O=>qs(O).payload,[qs]),Aa=o.useCallback((O,j)=>{if(a==="local")try{const xt={...j,workspaceId:O,details:kg(j.details)};fetch("/api/taskforce/sync/events",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(xt)}).catch(Et=>{Ns("sync_event_post_failed",{workspaceId:O,eventType:j.eventType,status:j.status,error:String(Et?.message||Et||"")})})}catch(xt){Ns("sync_event_post_failed",{workspaceId:O,eventType:j.eventType,status:j.status,error:String(xt?.message||xt||"")})}},[a]),as=o.useCallback(()=>tC(yi()),[yi]),Cs=o.useMemo(()=>JSON.stringify({tasks:(S||[]).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,j)=>O.id.localeCompare(j.id)),archivedTasks:(w||[]).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,j)=>O.id.localeCompare(j.id)),initiatives:(M||[]).map(O=>({id:String(O.id||"").trim(),updatedAt:String(O.updatedAt||O.createdAt||"").trim(),isArchived:!!O.isArchived})).sort((O,j)=>O.id.localeCompare(j.id)),workstreams:(R||[]).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,j)=>O.id.localeCompare(j.id)),taskEvents:Sk(S||[],w||[],M||[],R||[]).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,j)=>O.id.localeCompare(j.id)),deletedTasks:(_||[]).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,j)=>O.taskId.localeCompare(j.taskId)),taxonomies:Array.isArray(P)?P:[],taxonomyState:b&&typeof b=="object"?b:null}),[S,w,_,M,R,P,b]);SE({enabled:g===!0&&a==="local"&&St.browserSchedulingAllowed&&le,workspaceId:t,mutationFingerprint:Cs,authorityScope:Yr,remoteServices:$a,localServices:pa,isAuthorityCurrent:O=>Wa.current===O&&at(),onHydratedEventIds:O=>{Lo.current.recordSuppressedEventIds(O,{ttlMs:6e4})},onOutboxStatus:ot});const Do=o.useCallback(()=>{if(g!==!0)return!1;const O=he.current;return O===null||O.recovery!==null&&O.recovery.state!=="completed"},[g]),Zs=o.useMemo(()=>{const O=[];for(const j of S||[]){const xt=Array.isArray(j.attachments)?j.attachments.length:0;xt>0&&O.push(`${j.id}:${xt}`)}return O.join("|")},[S]),_s=o.useCallback(O=>{if(!O)return!1;if(wn.current)return wn.current=!1,Vn.current=O,Kt.current=O,X(0),!0;const j=Vn.current;return j?O===j?(Kt.current=O,X(0),!0):(Vn.current="",!1):!1},[]),Js=o.useCallback(async()=>{if(a!=="local"||!mc(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 j=await O.json();return nC(j)?(F.current=j,Ne.current=Array.isArray(j.taxonomies)?j.taxonomies:[],!0):!1}catch(O){return Ns("taxonomy_snapshot_refresh_failed",{workspaceId:t,error:String(O?.message||O||"")}),!1}},[a,t,r,s,i]),qn=o.useCallback(async()=>{if(a!=="local"||!mc(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 j=await O.json();if(!Array.isArray(j?.documents))return!1;const xt=Array.isArray(j?.documents)?j.documents.map(De=>({path:String(De?.path||"").trim(),updatedAt:String(De?.updatedAt||"").trim(),content:typeof De?.content=="string"?De.content:"",assetId:typeof De?.assetId=="string"&&De.assetId.trim().length>0?De.assetId.trim():void 0,documentId:typeof De?.documentId=="string"&&De.documentId.trim().length>0?De.documentId.trim():null,referenceNumber:Number.isFinite(Number(De?.referenceNumber))?Math.max(1,Math.floor(Number(De.referenceNumber))):null,version:Number.isFinite(Number(De?.version))?Math.max(1,Math.floor(Number(De.version))):null,taskId:typeof De?.taskId=="string"&&De.taskId.trim().length>0?De.taskId.trim():null,logicalName:typeof De?.logicalName=="string"&&De.logicalName.trim().length>0?De.logicalName.trim():null,caption:typeof De?.caption=="string"&&De.caption.trim().length>0?De.caption.trim():null,originalFilename:typeof De?.originalFilename=="string"&&De.originalFilename.trim().length>0?De.originalFilename.trim():null,linkRole:De?.linkRole==="reference"?"reference":"attachment"})).filter(De=>De.path.length>0):[],Et=new Set(Array.isArray(j?.knownPaths)?j.knownPaths.map(De=>String(De||"").trim()).filter(De=>De.length>0):xt.map(De=>De.path)),At=typeof j?.fingerprint=="string"?j.fingerprint:JSON.stringify(xt.map(De=>`${De.path}:${De.updatedAt}:${De.content.length}`).sort());return At===Ye.current||(Ye.current=At,Ce.current=xt,ut.current=Et,Xe(xt),G(At)),!0}catch(O){return Ns("documents_snapshot_refresh_failed",{workspaceId:t,error:String(O?.message||O||"")}),!1}finally{jn("documents")}},[a,t,r,s,i,jn]),Fa=o.useCallback(async()=>{if(a!=="local")return Lt("runtime-not-local"),!1;if(!mc(t))return Lt("workspace-id-invalid"),!1;if(r&&(!s||!i))return Lt(s?"auth-required":"auth-unresolved"),!1;Lt(null);try{const O=await fetch(`/api/taskforce/sync/workspace/ai-profiles?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!O.ok)return rr(`HTTP ${O.status}`),Ht(new Date().toISOString()),!1;const j=await O.json();if(!Array.isArray(j?.aiProfiles))return!1;const xt=Array.isArray(j?.aiProfiles)?j.aiProfiles:[];st(xt.length);const Et=Array.isArray(j?.aiProfiles)?j.aiProfiles.map(De=>mP(De)).filter(De=>De.id.length>0&&De.workspaceId.length>0):[];rr(null),Ht(new Date().toISOString());const At=typeof j?.fingerprint=="string"?j.fingerprint:PR(Et);return At===en.current||(en.current=At,Mt.current=Et,Ue(Et),kt(At)),!0}catch(O){return rr(String(O?.message||O||"unknown-error")),Ht(new Date().toISOString()),Ns("ai_profiles_snapshot_refresh_failed",{workspaceId:t,error:String(O?.message||O||"")}),!1}finally{jn("aiProfiles")}},[a,t,r,s,i,jn]),Gr=o.useCallback(async()=>{if(a!=="local"||!mc(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 j=await O.json();if(!Array.isArray(j?.assets))return!1;const xt=Array.isArray(j?.assets)?j.assets.map(De=>({path:String(De?.path||"").trim(),updatedAt:String(De?.updatedAt||"").trim(),contentBase64:typeof De?.contentBase64=="string"?De.contentBase64:"",assetId:typeof De?.assetId=="string"&&De.assetId.trim().length>0?De.assetId.trim():void 0,kind:De?.kind==="image"?"image":"file",mimeType:typeof De?.mimeType=="string"&&De.mimeType.trim().length>0?De.mimeType.trim():"application/octet-stream",referenceNumber:Number.isFinite(Number(De?.referenceNumber))?Math.max(1,Math.floor(Number(De.referenceNumber))):null,taskId:typeof De?.taskId=="string"&&De.taskId.trim().length>0?De.taskId.trim():null,logicalName:typeof De?.logicalName=="string"&&De.logicalName.trim().length>0?De.logicalName.trim():null,caption:typeof De?.caption=="string"&&De.caption.trim().length>0?De.caption.trim():null,originalFilename:typeof De?.originalFilename=="string"&&De.originalFilename.trim().length>0?De.originalFilename.trim():null,linkRole:De?.linkRole==="reference"?"reference":De?.linkRole==="image"?"image":"attachment"})).filter(De=>De.path.length>0&&De.contentBase64.length>0):[],Et=new Set(Array.isArray(j?.knownPaths)?j.knownPaths.map(De=>String(De||"").trim()).filter(De=>De.length>0):xt.map(De=>De.path)),At=typeof j?.fingerprint=="string"?j.fingerprint:JSON.stringify(xt.map(De=>`${De.path}:${De.updatedAt}:${De.contentBase64.length}`).sort());return At===bn.current||(bn.current=At,nt.current=xt,Ct.current=Et,ct(xt),Je(At)),!0}catch(O){return Ns("assets_snapshot_refresh_failed",{workspaceId:t,error:String(O?.message||O||"")}),!1}finally{jn("assets")}},[a,t,r,s,i,jn]),rl=o.useCallback(async()=>{if(a!=="local"||!mc(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 j=await O.json();if(!Array.isArray(j?.initiatives)||!Array.isArray(j?.workstreams))return!1;const xt=Array.isArray(j?.initiatives)?j.initiatives.filter(At=>!!(At&&typeof At=="object"&&typeof At.id=="string")):[],Et=Array.isArray(j?.workstreams)?j.workstreams.filter(At=>!!(At&&typeof At=="object"&&typeof At.id=="string")):[];return Be.current=xt,Ge.current=Et,!0}catch(O){return Ns("planning_snapshot_refresh_failed",{workspaceId:t,error:String(O?.message||O||"")}),!1}},[a,t,r,s,i]),oa=o.useCallback(async()=>{if(a!=="local"||!mc(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 j=await O.json();if(!Array.isArray(j?.sessions))return!1;const xt=Array.isArray(j?.sessions)?j.sessions.map(De=>({id:String(De?.id||"").trim(),assetId:String(De?.assetId||"").trim(),documentId:typeof De?.documentId=="string"&&De.documentId.trim().length>0?De.documentId.trim():null,documentVersion:Number.isFinite(Number(De?.documentVersion))?Math.max(1,Math.floor(Number(De.documentVersion))):null,title:typeof De?.title=="string"&&De.title.trim().length>0?De.title.trim():null,status:De?.status==="resolved"?"resolved":"open",comments:Array.isArray(De?.comments)?De.comments:[],createdByActorId:typeof De?.createdByActorId=="string"&&De.createdByActorId.trim().length>0?De.createdByActorId.trim():null,updatedByActorId:typeof De?.updatedByActorId=="string"&&De.updatedByActorId.trim().length>0?De.updatedByActorId.trim():null,createdAt:String(De?.createdAt||"").trim(),updatedAt:String(De?.updatedAt||De?.createdAt||"").trim(),deletedAt:typeof De?.deletedAt=="string"&&De.deletedAt.trim().length>0?De.deletedAt.trim():null})).filter(De=>De.id.length>0&&De.assetId.length>0):[],Et=Array.isArray(j?.comments)?j.comments.map(De=>({id:String(De?.id||"").trim(),sessionId:String(De?.sessionId||"").trim(),body:typeof De?.body=="string"?De.body:"",anchor:De?.anchor??null,order:Number.isFinite(Number(De?.order))?Math.max(0,Math.floor(Number(De.order))):0,authorActorId:typeof De?.authorActorId=="string"&&De.authorActorId.trim().length>0?De.authorActorId.trim():null,updatedByActorId:typeof De?.updatedByActorId=="string"&&De.updatedByActorId.trim().length>0?De.updatedByActorId.trim():null,deletedByActorId:typeof De?.deletedByActorId=="string"&&De.deletedByActorId.trim().length>0?De.deletedByActorId.trim():null,createdAt:String(De?.createdAt||"").trim(),updatedAt:String(De?.updatedAt||De?.createdAt||"").trim(),deletedAt:typeof De?.deletedAt=="string"&&De.deletedAt.trim().length>0?De.deletedAt.trim():null})).filter(De=>De.id.length>0&&De.sessionId.length>0):vP(xt),At=typeof j?.fingerprint=="string"?j.fingerprint:JSON.stringify([...xt.map(De=>`${De.id}:${De.updatedAt}:${De.status}:${De.deletedAt||""}:${De.comments.length}`).sort(),...Et.map(De=>`${De.id}:${De.sessionId}:${De.updatedAt}:${De.deletedAt||""}`).sort()]);return At===tn.current||(tn.current=At,ir.current=xt,dr.current=Et,Dt(xt),Qt(At)),!0}catch(O){return Ns("document_review_sessions_snapshot_refresh_failed",{workspaceId:t,error:String(O?.message||O||"")}),!1}finally{jn("documentReviewSessions")}},[a,t,r,s,i,jn]),Fn=o.useCallback(async()=>{if(a!=="local"||!mc(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 j=await O.json();if(!Array.isArray(j?.sessions))return!1;const xt=Array.isArray(j?.sessions)?j.sessions.map(At=>({id:String(At?.id||"").trim(),workspaceId:String(At?.workspaceId||"").trim(),taskId:String(At?.taskId||"").trim(),baseImageAssetId:String(At?.baseImageAssetId||"").trim(),title:typeof At?.title=="string"&&At.title.trim().length>0?At.title.trim():null,globalInstruction:typeof At?.globalInstruction=="string"&&At.globalInstruction.trim().length>0?At.globalInstruction.trim():null,annotations:Array.isArray(At?.annotations)?At.annotations:[],createdByActorId:typeof At?.createdByActorId=="string"&&At.createdByActorId.trim().length>0?At.createdByActorId.trim():null,updatedByActorId:typeof At?.updatedByActorId=="string"&&At.updatedByActorId.trim().length>0?At.updatedByActorId.trim():null,createdAt:String(At?.createdAt||"").trim(),updatedAt:String(At?.updatedAt||At?.createdAt||"").trim(),deletedAt:typeof At?.deletedAt=="string"&&At.deletedAt.trim().length>0?At.deletedAt.trim():null})).filter(At=>At.id.length>0&&At.workspaceId.length>0&&At.taskId.length>0&&At.baseImageAssetId.length>0):[],Et=typeof j?.fingerprint=="string"?j.fingerprint:JSON.stringify(xt.map(At=>`${At.id}:${At.updatedAt}:${At.taskId}:${At.baseImageAssetId}:${At.annotations.length}:${At.deletedAt||""}`).sort());return Et===ft.current||(ft.current=Et,br.current=xt,pr(xt),Tr(Et)),!0}catch(O){return Ns("annotated_attachment_sessions_snapshot_refresh_failed",{workspaceId:t,error:String(O?.message||O||"")}),!1}finally{jn("annotatedAttachmentSessions")}},[a,t,r,s,i,jn]),vo=o.useCallback(async()=>{if(a!=="local"||!mc(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 j=await O.json();if(!Array.isArray(j?.agents)||!Array.isArray(j?.roles)||!Array.isArray(j?.skills)||!Array.isArray(j?.conversations))return!1;const xt=Array.isArray(j?.agents)?j.agents.map(er=>hP(er)).filter(er=>er.id.length>0&&er.workspaceId.length>0):[],Et=Array.isArray(j?.conversations)?j.conversations.map(er=>gP(er)).filter(er=>er.id.length>0&&er.workspaceId.length>0&&er.agentId.length>0):[],At=Array.isArray(j?.roles)?j.roles.map(er=>OR(er,t)).filter(er=>!!er):[],De=j.skills.map(er=>BR(er,t)).filter(er=>!!(er&&er.id.length>0&&er.workspaceId.length>0)),Fs=typeof j?.fingerprint=="string"?j.fingerprint:JSON.stringify([...xt.map(er=>`${er.id}:${er.updatedAt}:${er.deletedAt||""}:${er.name}:${er.modelTier}`).sort(),...At.map(er=>`${er.id}:${er.updatedAt}:${er.deletedAt||""}:${er.currentRevision}:${er.currentContentHash}`).sort(),...De.map(er=>`${er.id}:${er.updatedAt}:${er.revision}:${er.contentHash}:${er.lifecycleStatus}`).sort(),...Et.map(er=>`${er.id}:${er.agentId}:${er.updatedAt}:${er.deletedAt||""}:${er.messages.length}`).sort()]);return Fs===rn.current||(rn.current=Fs,bt.current=xt,gr.current=At,u.current=De,ht.current=Et,Qr(xt),Gt(Fs)),!0}catch(O){return Ns("taskforce_agents_snapshot_refresh_failed",{workspaceId:t,error:String(O?.message||O||"")}),!1}finally{jn("taskforceAgents")}},[a,t,r,s,i,jn]),nl=o.useCallback(()=>{Xn.current=new Set([...Ie.current,...Fe.current].map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),ws.current=new Map([...Ie.current,...Fe.current].map(j=>[String(j?.id||"").trim(),Ho.getWatermark(j)]).filter(([j])=>j.length>0)),ln.current=new Map([...Ie.current.map(j=>[String(j?.id||"").trim(),Ho.getChangeKey({...j,isArchived:!1})]),...Fe.current.map(j=>[String(j?.id||"").trim(),Ho.getChangeKey({...j,isArchived:!0})])].filter(([j])=>j.length>0)),Oa.current=new Map(Me.current.map(j=>[String(j?.id||"").trim(),_v(j)]).filter(([j])=>j.length>0)),yn.current=eC({taxonomyState:F.current,taxonomies:Ne.current}),Vs.current=new Set(Be.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),Mn.current=new Map(Be.current.map(j=>[String(j?.id||"").trim(),String(j?.updatedAt||j?.createdAt||"").trim()]).filter(([j])=>j.length>0)),Ls.current=new Set(Ge.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),vt.current=new Map(Ge.current.map(j=>[String(j?.id||"").trim(),String(j?.updatedAt||j?.createdAt||"").trim()]).filter(([j])=>j.length>0)),nr.current=new Set(Mt.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),nn.current=new Map(Mt.current.map(j=>[String(j?.id||"").trim(),mf.getWatermark(j)]).filter(([j])=>j.length>0)),vn.current=new Map(Mt.current.map(j=>[String(j?.id||"").trim(),mf.getChangeKey(j)]).filter(([j])=>j.length>0)),ta.current=new Set(Ce.current.map(j=>String(j?.path||"").trim()).filter(j=>j.length>0)),ho.current=new Map(Ce.current.map(j=>[String(j?.path||"").trim(),String(j?.updatedAt||"").trim()]).filter(([j])=>j.length>0)),Os.current=new Set(nt.current.map(j=>String(j?.path||"").trim()).filter(j=>j.length>0)),wa.current=new Map(nt.current.map(j=>[String(j?.path||"").trim(),String(j?.updatedAt||"").trim()]).filter(([j])=>j.length>0)),Bs.current=new Set(ir.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),Xa.current=new Map(ir.current.map(j=>[String(j?.id||"").trim(),String(j?.updatedAt||j?.createdAt||"").trim()]).filter(([j])=>j.length>0)),Xr.current=new Set(dr.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),Ar.current=new Map(dr.current.map(j=>[String(j?.id||"").trim(),String(j?.updatedAt||j?.createdAt||"").trim()]).filter(([j])=>j.length>0)),An.current=new Set(br.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),es.current=new Map(br.current.map(j=>[String(j?.id||"").trim(),String(j?.updatedAt||j?.createdAt||"").trim()]).filter(([j])=>j.length>0)),Wn.current=new Set([...bt.current.map(j=>String(j?.id||"").trim()),...gr.current.map(j=>`agent-role:${String(j?.id||"").trim()}`)].filter(j=>j.length>0)),ra.current=new Map([...bt.current.map(j=>[String(j?.id||"").trim(),String(j?.deletedAt||j?.updatedAt||j?.createdAt||"").trim()]),...gr.current.map(j=>[`agent-role:${String(j?.id||"").trim()}`,String(j?.deletedAt||j?.updatedAt||j?.createdAt||"").trim()])].filter(([j])=>j.length>0)),ts.current=new Set(u.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),rs.current=new Map(u.current.map(j=>[String(j?.id||"").trim(),String(j?.updatedAt||j?.createdAt||"").trim()]).filter(([j])=>j.length>0)),na.current=new Set(ht.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),aa.current=new Map(ht.current.map(j=>[String(j?.id||"").trim(),String(j?.deletedAt||j?.updatedAt||j?.createdAt||"").trim()]).filter(([j])=>j.length>0)),un.current=new Map(Sk(Ie.current,Fe.current,Be.current,Ge.current).map(j=>[String(j?.id||"").trim(),String(j?.createdAt||"").trim()]).filter(([j])=>j.length>0));const O=ns();$t.current=O?null:"storage-write-failed"},[ns]),ud=o.useCallback(async()=>{const[O,j,xt]=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||!j.ok||!xt.ok)throw new Error("Required task collection refresh failed.");const[Et,At,De]=await Promise.all([O.json(),j.json(),xt.json()]);if(!Array.isArray(Et?.tasks)||!Array.isArray(At?.archived)||!Array.isArray(De?.relationships))throw new Error("Required task collection refresh returned an invalid response.");const Fs=Et.tasks.map(Yn=>xo(Yn)),er=At.archived.map(Yn=>({...xo(Yn),isArchived:!0}));Ie.current=Fs,Fe.current=er,_e(De.relationships),L(Fs),D(er),await ye().catch(()=>{Ns("refresh_planning_entities_failed",{workspaceId:t})})},[t,ye,D,L,_e]),{handleSyncAuthFailure:Ea,ensureWorkspaceSyncReady:Sc}=o.useMemo(()=>wP({currentWorkspaceId:t,workspaceSyncPhase:re,clearWorkspaceRetry:kn,setWorkspaceSyncBusy:xe,setUserGlobalSyncStatus:Pe,setUserGlobalSyncError:O=>se(O),setWorkspaceLastErrorMessage:O=>q(O),setWorkspaceLastErrorAt:O=>Y(O),reportSyncEvent:Aa,setAuthBlocked:ie,setIsAuthenticated:H,checkAuthSession:be,ensureCloudWorkspaceReadyForSync:Kn,scheduleWorkspaceSyncRetry:As,persistWorkspaceSyncPatchSafely:Sa}),[t,re,kn,Aa,ie,H,be,Kn,As,Sa]),Na=o.useMemo(()=>{const O=Yr;return $a?pE({cloudAuthConfigured:r,runtimeMode:a,initiativeFeedActivationEnabled:k,combinedFeedActivationEnabled:v,combinedFeedCoverage:C,workspaceCloudSyncEnabled:le,currentWorkspaceId:t,workspaceSyncPhase:re,isAuthenticated:i,checkAuthSession:be,resolveCloudAuthUrl:d,ensureCloudWorkspaceReadyForSync:Kn,ensureWorkspaceSyncReady:Sc,handleSyncAuthFailure:Ea,clearWorkspaceRetry:kn,clearWorkspaceIssue:Gn,isWorkspaceRetryPending:Lr,isDurableRecoveryBlockingOrdinaryPush:Do,isExecutionAuthorized:()=>Nb({current:Wa.current??{mode:"blocked",remoteServices:null},captured:O,browserSchedulingAllowed:at(),onDenied:()=>{const j=Xt.current;!j.serverCommandMode||kr.current===j.authorityEpoch||(kr.current=j.authorityEpoch,Aa(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:j.authorityEpoch,capturedTransportMode:O.mode}}))}}),scheduleWorkspaceSyncRetry:As,persistWorkspaceSyncPatchSafely:Sa,persistWorkspaceSyncPatchBestEffort:sn,persistWorkspaceSyncWatermarksSnapshotBestEffort:ns,refreshWorkspaceAiProfilePushBaselineFromPersistence:go,reportSyncEvent:Aa,acquireWorkspaceSyncLease:Eo,releaseWorkspaceSyncLease:xa,recordWorkspaceSyncCompletion:Ra,reportWorkspaceWindowContention:$n,refreshWorkspaceSyncMarkdownDocumentsSnapshot:qn,refreshWorkspaceSyncAiProfilesSnapshot:Fa,refreshWorkspaceSyncAssetsSnapshot:Gr,refreshWorkspaceSyncTaxonomySnapshot:Js,refreshWorkspaceSyncPlanningEntitiesSnapshot:rl,refreshWorkspaceSyncDocumentReviewSessionsSnapshot:oa,refreshWorkspaceSyncAnnotatedAttachmentSessionsSnapshot:Fn,refreshWorkspaceSyncTaskforceAgentsSnapshot:vo,refreshLocalWorkspaceTaskCollections:ud,buildWorkspaceSyncPayload:Ys,buildWorkspaceSyncSignature:as,seedWorkspaceSnapshotPushBaseline:nl,shouldSuppressAttachBootstrapPush:_s,recordSuppressedEventIds:(...j)=>Lo.current.recordSuppressedEventIds(...j),runtime:jo,localServices:pa,remoteServices:$a,setWorkspaceSyncBusy:xe,setUserGlobalSyncStatus:Pe,setUserGlobalSyncError:se,setWorkspaceLastErrorMessage:q,setWorkspaceLastErrorAt:Y,setWorkspaceLastPullAt:W,setWorkspaceLastPushAt:fe,setWorkspaceSyncPendingChanges:X,setTasks:L,setArchivedTasks:D,scheduleTask:(j,xt)=>{const Et=window.setTimeout(j,xt);return{cancel:()=>window.clearTimeout(Et)}},logDebug:Ns,notifyAiProfilesMutated:sC,notifyAgentsMutated:oC,notifyAgentSkillsMutated:iC}):null},[r,a,k,v,C,le,t,re,ue,i,be,d,Kn,Sc,Ea,kn,Gn,Do,As,Sa,sn,ns,go,Aa,Eo,xa,Ra,$n,qn,Fa,Gr,Js,rl,oa,Fn,vo,ud,Ys,as,nl,_s,Yr,$a,L,D]);o.useEffect(()=>{Na?.resumeDeferredWork()},[Qe.authorityEpoch,Na]),o.useEffect(()=>()=>Na?.dispose(),[Na]);const Ca=o.useCallback((O,j)=>Na?Na.pushWorkspaceChangesToCloud(O,j):Promise.resolve(!1),[Na]),ss=o.useCallback(O=>Na?Na.pullWorkspaceChangesFromCloud(O):Promise.resolve(!1),[Na]),os=o.useRef(ss);os.current=ss;const Lo=o.useRef({handleRealtimeSignal:()=>{},recordSuppressedEventIds:()=>{},clearRealtimePullDebounce:()=>{}}),$s=o.useMemo(()=>jP({cloudAuthConfigured:r,runtimeMode:a,workspaceCloudSyncEnabled:le,workspaceSyncPhase:re,workspacePullInFlightRef:Rr,realtimePullDebounceRef:or,realtimeSuppressedEventIdsRef:xr,clearWorkspaceRetry:kn,isWorkspaceRetryPending:Lr,isExecutionAuthorized:at,isServerOwned:()=>$E(Xt.current),signalServerWake:O=>J.signalWake("realtime",O),pullWorkspaceChangesFromCloud:ss}),[r,a,le,re,kn,Lr,at,J.signalWake,ss]);Lo.current=$s;const Ac=f("/taskforce-ws"),Hi=String(l||"").trim(),Cc=!!(p&&(at()||Qe.serverCommandMode)&&r&&a==="local"&&le&&s&&i&&Hi&&Hi!=="anonymous"&&Ac),_c=aC({enabled:Cc,workspaceId:t,websocketUrl:Ac,onSignal:$s.handleRealtimeSignal,onTelemetry:Tt,userId:Hi||void 0});o.useEffect(()=>{qt(_c.connectionState)},[_c.connectionState]),o.useEffect(()=>()=>$s.clearRealtimePullDebounce(),[$s]),o.useEffect(()=>{Qe.browserSchedulingAllowed||(kn(),Lo.current.clearRealtimePullDebounce())},[Qe.authorityEpoch,Qe.browserSchedulingAllowed,kn]);const Ic=o.useCallback(async O=>Qe.serverCommandMode?(await J.issueCommand(O.enabled?"EnableSync":"DisableSync"),{success:!0}):at()?ks(O,{cloudAuthConfigured:r,isAuthenticated:i,ensureCloudWorkspaceReadyForSync:Kn}):{success:!1,error:"Workspace sync ownership is changing. Wait for the coordinator to become ready."},[ks,r,i,Kn,Qe.serverCommandMode,at,J]),al=o.useCallback(async()=>{await Bt({preferCloudOnFirstSync:!1})},[Bt]),_a=o.useMemo(()=>LP({currentWorkspaceId:t,workspaceCloudSyncEnabled:le,workspaceSyncPhase:re,workspaceLastPullAt:V,runtime:jo,localServices:pa,acquireWorkspaceSyncLease:Eo,releaseWorkspaceSyncLease:xa,forceClearWorkspaceSyncLease:Ja,clearWorkspaceRetry:kn,clearWorkspaceIssue:Gn,reportWorkspaceWindowContention:$n,reportSyncEvent:Aa,persistWorkspaceSyncPatch:ea,persistWorkspaceSyncWatermarksSnapshotBestEffort:ns,buildWorkspaceSyncSignature:as,pullWorkspaceChangesFromCloud:ss,pushWorkspaceChangesToCloud:Ca,cloudAuthConfigured:r,runtimeMode:a,isAuthenticated:i,checkAuthSession:be,isExecutionAuthorized:at,coordinatorGeneration:J.snapshot?.state?.coordinatorGeneration??null}),[t,ue,le,re,V,jo,pa,Eo,xa,Ja,kn,Gn,$n,Aa,ea,ns,as,ss,Ca,r,a,i,be,at,J.snapshot?.state?.coordinatorGeneration]),Zr=o.useCallback(async()=>{if(Qe.serverCommandMode){const O=J.snapshot||await J.refresh();return!O||O.credential.status!=="ready"?!1:(await J.issueCommand("Retry"),!0)}return at()?_a.retryWorkspaceCloudSync():!1},[Qe.serverCommandMode,at,J,_a]),sl=o.useCallback(async()=>{if(Qe.serverCommandMode){J.issueCommand("Repair").catch(()=>{});return}at()&&await _a.resetWorkspaceSyncCursorAndPull()},[Qe.serverCommandMode,at,J,_a]),ja=o.useCallback(()=>{const O=Tk({cloudAuthConfigured:r,runtimeMode:a,workspaceCloudSyncEnabled:le,currentWorkspaceId:t,workspaceSyncPhase:re,isAuthenticated:i,repairModeActive:Pa.current===!0,repairModeBypass:!1,pushInFlight:Nr.current,pullInFlight:Rr.current}),j=Lr(),xt=xk({cloudAuthConfigured:r,runtimeMode:a,workspaceCloudSyncEnabled:le,currentWorkspaceId:t,workspaceSyncPhase:re,isAuthenticated:i,repairModeActive:Pa.current===!0,repairModeBypass:!1,retryPending:j,pushInFlight:Nr.current,pullInFlight:Rr.current}),Et=Rk({cloudAuthConfigured:r,runtimeMode:a,workspaceCloudSyncEnabled:le,currentWorkspaceId:t,isAuthenticated:i});return{workspaceId:t,enabled:le,phase:re,status:Cn,summary:gi,lastSuccessfulSyncAt:sa,lastPullAt:V,lastPushAt:z,lastErrorAt:ke,pendingChanges:N+(Ae?.activeDepth||0),lastErrorMessage:we,recommendedAction:ba,pushBlockedReason:O.allowed?null:O.reason,pullBlockedReason:xt.allowed?null:xt.reason,retryBlockedReason:Et.allowed?null:Et.reason,repairActive:Pa.current===!0,pushInFlight:Nr.current===!0,pullInFlight:Rr.current===!0,retryPending:j,documentSnapshotCount:We.length,aiProfileSnapshotCount:mt.length,aiProfileSnapshotRawCount:wr,aiProfileSnapshotLastFetchAt:rt,aiProfileSnapshotLastFetchError:lr,aiProfileSnapshotLastSkipReason:zt,assetSnapshotCount:Ee.length,documentReviewSessionSnapshotCount:Rt.length,documentReviewSessionSnapshotFingerprint:It,annotatedAttachmentSessionSnapshotCount:sr.length,annotatedAttachmentSessionSnapshotFingerprint:Jr,taskforceAgentSnapshotCount:ur.length,taskforceAgentSnapshotFingerprint:Hr,lastPushedAiProfileCount:nr.current.size,lastPushedAiProfileWatermarkCount:nn.current.size,lastPushedTaskforceAgentCount:Wn.current.size,lastPushedTaskforceAgentWatermarkCount:ra.current.size,lastPushedAgentConversationCount:na.current.size,lastPushedAgentConversationWatermarkCount:aa.current.size,forceFullAiProfilePushQueued:Ks.current===!0,durableOutbox:Ae}},[r,t,a,le,re,i,Cn,gi,sa,V,z,ke,N,Ae,we,ba,We.length,mt.length,wr,rt,lr,zt,Ee.length,Rt.length,It,sr.length,Jr,ur.length,Hr,Lr]);o.useEffect(()=>{Sn.current=Zr},[Zr]);const Kr=o.useCallback(()=>{qn(),Gr()},[qn,Gr]);o.useEffect(()=>{if(!r||a!=="local"||!le||!s||!i)return;qn(),Fa(),Gr(),oa(),Fn(),vo();const O=ma=>{const Is=ma.detail;(String(Is?.workspaceId||"").trim()||"default")===t&&Kr()},j=ma=>{const Is=ma.detail;(String(Is?.workspaceId||"").trim()||"default")===t&&(Fa(),Gr())},xt=ma=>{const Is=ma.detail;(String(Is?.workspaceId||"").trim()||"default")===t&&String(Is?.reason||"").trim()!=="sync-apply"&&vo()},Et=ma=>{const Is=ma.detail;(String(Is?.workspaceId||"").trim()||"default")===t&&String(Is?.reason||"").trim()!=="sync-apply"&&vo()};window.addEventListener(Ak,O),window.addEventListener(Ck,j),window.addEventListener(_k,xt),window.addEventListener(Ik,Et);const At=window.setInterval(()=>{qn()},oe),De=window.setInterval(()=>{Fa()},oe),Fs=window.setInterval(()=>{Gr()},oe),er=window.setInterval(()=>{oa()},oe),Yn=window.setInterval(()=>{Fn()},oe),Oo=window.setInterval(()=>{vo()},oe);return()=>{window.removeEventListener(Ak,O),window.removeEventListener(Ck,j),window.removeEventListener(_k,xt),window.removeEventListener(Ik,Et),window.clearInterval(At),window.clearInterval(De),window.clearInterval(Fs),window.clearInterval(er),window.clearInterval(Yn),window.clearInterval(Oo)}},[r,a,le,s,i,t,Kr,qn,Fa,Gr,oa,Fn,vo,oe]),o.useEffect(()=>{!r||a!=="local"||!le||!s||!i||Zs&&Kr()},[r,a,le,s,i,Zs,Kr]),o.useEffect(()=>{if(!at()||!SP({cloudAuthConfigured:r,runtimeMode:a,workspaceCloudSyncEnabled:le,authSessionResolved:s,workspaceSyncPhase:re,workspaceSyncReferenceSnapshotsReady:an}))return;const O=as();if(_s(O)||!O||O===Kt.current||Nn.current===O)return;Nn.current="";const j=Ys();if(X(j.changes.length),Nr.current||Rr.current){Bn.current=O;return}const xt=window.setTimeout(()=>{if(at()){if(Nr.current||Rr.current){Bn.current=as();return}Ca(O)}},1500);return()=>window.clearTimeout(xt)},[r,a,le,s,re,an,as,_s,Ys,Cs,wt,ae,lt,It,Jr,Hr,Ca,Nr,Rr,Qe.authorityEpoch,at]),o.useEffect(()=>{if(!at()||!AP({cloudAuthConfigured:r,runtimeMode:a,workspaceCloudSyncEnabled:le,authSessionResolved:s,workspaceSyncPhase:re,workspaceSyncReferenceSnapshotsReady:an}))return;const O=window.setInterval(()=>{if(!at()||Nr.current||Rr.current||Lr())return;const j=as();if(!j||j===Kt.current||Nn.current===j)return;Nn.current="";const xt=Ys();X(xt.changes.length),xt.changes.length!==0&&Ca(j)},Yt);return()=>window.clearInterval(O)},[r,a,le,s,re,an,as,Ys,Ca,Lr,Yt,Qe.authorityEpoch,at]),o.useEffect(()=>{r&&a==="local"&&le||(kn(),xe(!1))},[r,a,le,kn]),o.useEffect(()=>{if(!at())return;const O=CP({cloudAuthConfigured:r,runtimeMode:a,workspaceCloudSyncEnabled:le,authSessionResolved:s,workspaceSyncPhase:re,lastPullAt:V,retryPending:Lr()});if(!O.shouldStart)return;O.shouldKickOffImmediately&&os.current();const j=window.setInterval(()=>{at()&&(vs(t,"pull",yt)||os.current())},yt);return()=>{window.clearInterval(j)}},[r,a,le,s,re,V,t,Lr,vs,yt,Qe.authorityEpoch,at]),o.useEffect(()=>{if(!at()||!_P({cloudAuthConfigured:r,runtimeMode:a,workspaceCloudSyncEnabled:le,authSessionResolved:s,isAuthenticated:i,workspaceSyncPhase:re}))return;const O=window.setInterval(()=>{at()&&(No.current||(No.current=!0,os.current({forceCursorNull:!0}).finally(()=>{No.current=!1})))},pP);return()=>window.clearInterval(O)},[r,a,le,s,i,re,Qe.authorityEpoch,at]),o.useEffect(()=>{a!=="local"||!i||!l||l==="anonymous"||Bt({preferCloudOnFirstSync:!0})},[a,i,l,Bt]),o.useEffect(()=>{if(a!=="local"||!i||!l||l==="anonymous"||!Vt.current.has(l)||Fr.current)return;const O=Ss(),j=JSON.stringify(O);if(!Dr.current){Dr.current=j;return}if(j===Dr.current)return;Dr.current=j,yo(l,new Date().toISOString());const xt=window.setTimeout(()=>{Bt({preferCloudOnFirstSync:!1})},350);return()=>window.clearTimeout(xt)},[a,i,l,Ss,yo,Bt]),o.useEffect(()=>{at()&&IP({cloudAuthConfigured:r,runtimeMode:a,workspaceCloudSyncEnabled:le,authSessionResolved:s,isAuthenticated:i,workspaceSyncPhase:re,alreadyRan:pn.current})&&(pn.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 j=await O.json().catch(()=>({}));j?.applied>0&&(Ns("startup_repair_applied",{workspaceId:t,applied:j.applied,skipped:j.skipped,failed:j.failed}),qn(),Fa(),Gr(),oa())}).catch(()=>{}))},[r,a,le,s,i,re,t,qn,Fa,Gr,oa,Qe.authorityEpoch,at]);const Ua=da&&J.phase==="ready"&&J.snapshot?.state.activeWorkspaceId===t?{coordinatorGeneration:J.snapshot.state.coordinatorGeneration,localDataVersion:J.snapshot.state.localDataVersion}:null,fa=da?{phase:J.phase,snapshot:J.snapshot,errorMessage:J.error?.message||null}:null,Jo=o.useCallback(async O=>{if(a!=="local"||!da)return!1;if(J.phase!=="ready"||!J.snapshot)throw new Ya("The local sync coordinator is not ready to switch workspaces.","SYNC_COORDINATOR_UNAVAILABLE",409);return await J.switchWorkspace(O),!0},[J,da,a]),ol=o.useCallback(async O=>{if(a!=="local"||!da)return!1;if(J.phase!=="ready"||!J.snapshot)throw new Ya("The local sync coordinator is not ready to transfer ownership.","SYNC_COORDINATOR_UNAVAILABLE",409);return await J.transferOwnership(O),O==="server"&&(await J.issueCommand(le?"EnableSync":"DisableSync"),le&&J.issueCommand("Sync").catch(()=>{})),!0},[J,da,a,le]);return{userGlobalSyncStatus:ve,setUserGlobalSyncStatus:Pe,userGlobalSyncError:Le,setUserGlobalSyncError:se,workspaceLastPullAt:V,workspaceLastPushAt:z,workspaceLastErrorAt:ke,workspaceLastErrorMessage:we,workspaceLastSuccessfulSyncAt:sa,workspaceCloudSyncEnabled:le,workspaceSyncPhase:re,workspaceSyncSetupIntent:He,workspaceSyncStatus:Cn,workspaceSyncSummary:gi,workspaceSyncRecommendedAction:ba,workspaceSyncBusy:pe,workspaceSyncPendingChanges:N+(Ae?.activeDepth||0),workspaceTaskRelationships:qe,localCoordinatorDataVersion:Ua,localCoordinatorStatus:fa,switchLocalCoordinatorWorkspace:Jo,transferLocalCoordinatorOwnership:ol,syncInFlightRef:Nt,workspaceRetryAt:Ft,isWorkspaceRetryPending:Lr,workspacePushInFlightRef:Nr,workspacePullInFlightRef:Rr,workspaceLastPushedSignatureRef:Kt,workspacePendingSignatureRef:Bn,workspaceLastPushedTaskIdsRef:Xn,workspaceDeletedTaskIdsRef:va,workspaceDeletedTaskWatermarksRef:Cr,workspacePullCursorRef:cn,clearWorkspaceRetry:kn,persistWorkspaceSyncPatch:ea,loadWorkspaceSyncState:Zo,applyWorkspaceSyncStateSnapshot:Qa,syncUserGlobalSettings:Bt,buildWorkspaceSyncSignature:as,pushWorkspaceChangesToCloud:Ca,pullWorkspaceChangesFromCloud:ss,saveWorkspaceCloudSyncSettings:Ic,retryUserGlobalSettingsSync:al,retryWorkspaceCloudSync:Zr,resetWorkspaceSyncCursorAndPull:sl,getWorkspaceSyncDiagnostics:ja}}function QE(e,t){return typeof t=="number"&&Number.isFinite(t)&&t>0?t:e==="error"?12e3:2600}function XE(){const[e,t]=o.useState(null),r=o.useRef(null),a=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,ownerKey:d?.ownerKey}),d))return;const f=QE(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:a}}function eN(e){const{resolveCloudAuthUrl:t,currentWorkspaceId:r,normalizedCloudAuthBaseUrl:a,normalizedCloudMcpBaseUrl:s,mergedConfig:i,availableWorkspaces:l,currentTheme:c,configLoaded:d,globalTheme:f,themeUseGlobalDefault:p,keyShortcut:g,jsonBackupEnabled:h,globalJsonBackupEnabled:y,globalWeekStartsOn:k,locale:v,supportedLocales:C,jsonBackupUseGlobalDefault:S,manualComplexityEnabled:w,checklistDropdownEnabled:_,showTaskCardStatusLabel:M,pathSaved:R,settingsSection:P,setupState:b,buildInfo:$,saveSetupMode:I,saveWorkspaceProfile:E,setCurrentTheme:K,handleSaveTheme:U,handleSaveGlobalTheme:L,setKeyShortcut:D,handleJsonBackupEnabledChange:ie,handleSaveGlobalJsonBackupEnabled:H,handleSaveGlobalWeekStartsOn:be,handleSaveLocale:Z,handleManualComplexityEnabledChange:me,handleChecklistDropdownEnabledChange:Ve,handleShowTaskCardStatusLabelChange:Re,handleResetProjectToGlobal:je,handleSaveSettings:ye,initiativeTemplates:ue,fetchInitiativeTemplates:ve,createInitiativeFromTemplate:Pe,setShowFolderBrowser:Le,setBrowserTarget:se,fetchFolders:V,activeCategories:W,pathValidation:z,taxonomyDisplayLabels:fe,handleUpdateCategory:ke,handleRemoveCategory:Y,handleSaveCategory:we,handleAddPath:q,handleRemovePath:le,handleUpdateCategoryIcon:$e,handleUpdateCategoryColor:re,activeTypes:de,handleSaveType:He,handleRemoveType:ce,handleUpdateType:pe,taxonomies:xe,handleUpdateTaxonomies:N,priorities:X,handleUpdatePriorities:Ae,analyzeSystemTaxonomyPack:Te,handleApplySystemTaxonomyPack:he,handleUpdateTaxonomyDisplayLabels:ot,projectRoot:We,projectName:Xe,mcpHostRoot:ae,serverHostRoot:G,mcpScriptPath:Ie,tenantId:Fe,runtimeMode:it,workspaceSwitchingEnabled:Me,deleteWorkspace:qe,setMcpHostRoot:ge,isAuthenticated:_e}=e,Be=o.useCallback(async(Ce,ut)=>{const mt=t(Ce),Ue=new Headers(ut?.headers||void 0);if(Ce.startsWith("/api/taskforce/settings/mcp/")){const kt=String(r||"").trim();kt&&kt!=="default"&&!Ue.has("x-taskforce-workspace-id")&&Ue.set("x-taskforce-workspace-id",kt)}const wt={...ut,headers:Ue,credentials:ut?.credentials??"include"};if(typeof window<"u"&&/^https?:\/\//i.test(mt))try{new URL(mt,window.location.origin).origin!==window.location.origin&&wt.mode===void 0&&(wt.mode="cors")}catch{}return fetch(mt,wt)},[r,t]),Ge=o.useCallback(async()=>{const Ce=new Headers,ut=String(r||"").trim();ut&&ut!=="default"&&Ce.set("x-taskforce-workspace-id",ut);const mt=await fetch("/api/taskforce/mcp/global-cli-health",{method:"POST",headers:Ce,credentials:"include"}),Ue=await mt.json().catch(()=>({}));if(!mt.ok||!Ue?.result)throw new Error(String(Ue?.error||"Unable to validate the global Taskforce CLI."));return Ue.result},[r]),F=o.useCallback(async()=>{const Ce=await fetch("/api/taskforce/update/status",{method:"GET",credentials:"include"}),ut=await Ce.json().catch(()=>({}));if(!Ce.ok||!ut?.result)throw new Error(String(ut?.error||"Unable to determine Taskforce update availability."));return ut.result},[]),Ne=l.find(Ce=>Ce.id===r);return{fetchCloudAuthApi:Be,checkLocalMcpCliHealth:Ge,getLocalUpdateStatus:F,currentTheme:c,configLoaded:d,globalTheme:f,themeUseGlobalDefault:p,keyShortcut:g,jsonBackupEnabled:h,globalJsonBackupEnabled:y,globalWeekStartsOn:k,locale:v,supportedLocales:C,jsonBackupUseGlobalDefault:S,manualComplexityEnabled:w,checklistDropdownEnabled:_,showTaskCardStatusLabel:M,pathSaved:R,initialSection:P,setupState:b,buildInfo:$,onSaveSetupMode:I,onSaveWorkspaceProfile:E,onThemeChange:K,onSaveTheme:U,onSaveGlobalTheme:L,onKeyShortcutChange:D,onJsonBackupEnabledChange:ie,onSaveGlobalJsonBackupEnabled:H,onSaveGlobalWeekStartsOn:be,onSaveLocale:Z,onManualComplexityEnabledChange:me,onChecklistDropdownEnabledChange:Ve,onShowTaskCardStatusLabelChange:Re,onResetProjectToGlobal:je,onSaveSettings:ye,initiativeTemplates:ue,onRefreshInitiativeTemplates:ve,onCreateInitiativeFromTemplate:Pe,onShowFolderBrowserChange:Le,onBrowserTargetChange:se,onFetchFolders:V,categories:W,pathValidation:z,taxonomyDisplayLabels:fe,onUpdateCategory:ke,onRemoveCategory:Y,onSaveCategory:we,onAddPath:q,onRemovePath:le,onUpdateCategoryIcon:$e,onUpdateCategoryColor:re,types:de,onSaveType:He,onRemoveType:ce,onUpdateType:pe,taxonomies:xe,onUpdateTaxonomies:N,priorities:X,onUpdatePriorities:Ae,onAnalyzeSystemTaxonomyPack:Te,onApplySystemTaxonomyPack:he,onUpdateTaxonomyDisplayLabels:ot,projectRoot:We,projectName:Xe,mcpHostRoot:ae,serverHostRoot:G,mcpScriptPath:Ie,tenantId:Fe,workspaceId:r,runtimeMode:it,cloudAuthBaseUrl:a||i.cloudAuthBaseUrl,cloudMcpBaseUrl:s||void 0,workspaceSwitchingEnabled:Me,currentWorkspaceRole:Ne?.role||"member",currentWorkspaceName:String(Ne?.name||""),onDeleteWorkspace:qe,onMcpHostRootChange:ge,isAuthenticated:_e}}function tN(e){const{keyShortcut:t,themeUseGlobalDefault:r,runtimeMode:a,jsonBackupUseGlobalDefault:s,globalTheme:i,globalJsonBackupEnabled:l,setCurrentTheme:c,setThemeUseGlobalDefault:d,setGlobalTheme:f,setJsonBackupEnabled:p,setJsonBackupUseGlobalDefault:g,setGlobalJsonBackupEnabled:h,setGlobalWeekStartsOn:y,setLocale:k,setManualComplexityEnabled:v,setChecklistDropdownEnabled:C,setShowTaskCardStatusLabel:S}=e,w=o.useCallback(async()=>{try{const L=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({shortcut:t})});if(!L.ok)throw new Error(`Failed to save global settings (${L.status})`);return!0}catch{return console.error("[Taskforce] Failed to save shortcut"),!1}},[t]),_=o.useCallback(async L=>{c(L),d(!1);try{const D=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:L})});if(!D.ok)throw new Error(`Failed to save config (${D.status})`);return!0}catch{return console.error("[Taskforce] Failed to save project theme"),!1}},[c,d]),M=o.useCallback(async L=>{f(L),r&&c(L);try{const D=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:L})});if(!D.ok)throw new Error(`Failed to save global settings (${D.status})`);return!0}catch{return console.error("[Taskforce] Failed to save global theme"),!1}},[f,r,c]),R=o.useCallback(async L=>{if(a==="cloud")return p(!1),g(!1),!1;p(L),g(!1);try{const D=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:L})});if(!D.ok)throw new Error(`Failed to save config (${D.status})`);return!0}catch{return console.error("[Taskforce] Failed to save project backup setting"),!1}},[a,p,g]),P=o.useCallback(async L=>{if(a==="cloud")return h(!1),s&&p(!1),!1;h(L),s&&p(L);try{const D=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:L})});if(!D.ok)throw new Error(`Failed to save global settings (${D.status})`);return!0}catch{return console.error("[Taskforce] Failed to save global backup setting"),!1}},[a,h,s,p]),b=o.useCallback(async L=>{y(L);try{const D=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({schedulePreferences:{weekStartsOn:L}})});if(!D.ok)throw new Error(`Failed to save global settings (${D.status})`);return!0}catch{return console.error("[Taskforce] Failed to save regional week start setting"),!1}},[y]),$=o.useCallback(async L=>{const D=mA(L);return k(D),!0},[k]),I=o.useCallback(async L=>{v(L);try{const D=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({manualComplexityEnabled:L})});if(!D.ok)throw new Error(`Failed to save config (${D.status})`);return!0}catch{return console.error("[Taskforce] Failed to save manual complexity setting"),!1}},[v]),E=o.useCallback(async L=>{C(L);try{const D=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({checklistDropdownEnabled:L})});if(!D.ok)throw new Error(`Failed to save config (${D.status})`);return!0}catch{return console.error("[Taskforce] Failed to save checklist dropdown setting"),!1}},[C]),K=o.useCallback(async L=>{S(L);try{const D=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({showTaskCardStatusLabel:L})});if(!D.ok)throw new Error(`Failed to save config (${D.status})`);return!0}catch{return console.error("[Taskforce] Failed to save task card status label setting"),!1}},[S]),U=o.useCallback(async()=>{d(!0),g(!0),c(i),p(l),v(!1),C(!0),S(!1);try{const L=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:null,jsonBackupEnabled:null,manualComplexityEnabled:null,checklistDropdownEnabled:null,showTaskCardStatusLabel:null})});if(!L.ok)throw new Error(`Failed to save config (${L.status})`);return!0}catch{return console.error("[Taskforce] Failed to reset project settings"),!1}},[d,g,c,i,p,l,v,C,S]);return{handleSaveSettings:w,handleSaveTheme:_,handleSaveGlobalTheme:M,handleJsonBackupEnabledChange:R,handleSaveGlobalJsonBackupEnabled:P,handleSaveGlobalWeekStartsOn:b,handleSaveLocale:$,handleManualComplexityEnabledChange:I,handleChecklistDropdownEnabledChange:E,handleShowTaskCardStatusLabelChange:K,handleResetProjectToGlobal:U}}function rN(e){const{activeCategories:t,activeTab:r,activeTypes:a,archivedTasks:s,browserTarget:i,category:l,configLoaded:c,customCategories:d,refreshTaskCollections:f,fetchTasks:p,filterCategories:g,getCategoryPaths:h,normalizePath:y,pathValidation:k,setBrowserTarget:v,setCategory:C,setCustomCategories:S,setCustomTypes:w,setFilterCategories:_,setPathValidation:M,setPriorities:R,setShowFolderBrowser:P,setTaxonomies:b,tasks:$}=e,I=o.useCallback(async(se,V)=>{const W=await se.json().catch(()=>({}));return String(W?.error||V)},[]),E=o.useCallback(()=>[...$,...s],[s,$]),K=o.useCallback(se=>se.priorities.find(V=>V.value===2)?.value||se.priorities[0]?.value||2,[]),U=o.useCallback(async se=>{if(se.length!==0)try{const V=await fetch("/api/taskforce/validate-paths",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({paths:se})});if(V.ok){const W=await V.json();M(z=>({...z,...W.results}))}}catch(V){console.error("[Taskforce] Failed to validate paths:",V)}},[M]);o.useEffect(()=>{if(r!=="settings"||!c)return;const se=[];t.forEach(W=>{h(W).forEach(fe=>{se.includes(fe)||se.push(fe)})});const V=se.filter(W=>!k[W]);V.length>0&&U(V)},[t,r,c,h,k,U]);const L=o.useCallback(async(se,V)=>{if(c){S(W=>(W.length>0?W:t).map(fe=>fe.value===se.value?se:fe)),V&&V!==se.label&&(l===V&&C(se.label),g.includes(V)&&_(W=>W.map(z=>z===V?se.label:z)));try{const fe={categories:(d.length>0?d:t).map(ke=>ke.value===se.value?se:ke)};V&&V!==se.label&&(fe.reassignFrom=V,fe.reassignTo=se.label),await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(fe)}),V&&await p()}catch(W){console.error("[Taskforce] Failed to update category",W)}}},[t,l,c,d,p,g,C,S,_]),D=o.useCallback(async se=>{if(!c)return;const V=se.trim().toLowerCase().replace(/\s+/g,"-");if(t.some(z=>z.value===V))return;const W={value:V,label:se.trim(),color:"blue-200",icon:"Folder"};S(z=>[...z.length>0?z:t,W]);try{const fe=[...d.length>0?d:t,W];await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({categories:fe})})}catch(z){console.error("[Taskforce] Failed to create category",z)}},[t,c,d,S]),ie=o.useCallback((se,V)=>{if(!V.trim())return;const W=t.find(Y=>Y.value===se);if(!W)return;const z=h(W),fe=V.trim();if(z.includes(fe))return;const ke=[...z,fe];L({...W,path:void 0,paths:ke}),U(ke)},[t,h,L,U]),H=o.useCallback((se,V)=>{const W=t.find(z=>z.value===se);W&&L({...W,icon:V})},[t,L]),be=o.useCallback((se,V)=>{const W=t.find(z=>z.value===se);W&&L({...W,color:V})},[t,L]),Z=o.useCallback((se,V)=>{const W=t.find(ke=>ke.value===se);if(!W)return;const fe=h(W).filter(ke=>ke!==V);L({...W,path:void 0,paths:fe})},[t,h,L]),me=o.useCallback(se=>{const V=y(se);if(i&&typeof i=="object"&&i.type==="category"){const W=t.find(z=>z.value===i.value);if(W){const z=h(W);if(!z.includes(V)){const fe=[...z,V];L({...W,path:void 0,paths:fe})}}}P(!1),v(null)},[t,i,h,L,y,v,P]),Ve=o.useCallback(async se=>{if(!c)return;const V=bu,W=t.find(Y=>Y.value===V),z=W?{...W}:{value:V,label:ug,icon:"Inbox"},fe=z.label,ke=t.find(Y=>Y.value===se);S(Y=>{let q=(Y.length>0?Y:t).filter(le=>le.value!==se);return q.some(le=>le.value===V)||(q=[z,...q]),q}),ke&&((l===ke.label||l===ke.value)&&C(V),(g.includes(ke.label)||g.includes(ke.value))&&_(Y=>{const we=Y.filter(q=>q!==ke.label&&q!==ke.value);return we.includes(V)?we:[...we,V]}));try{let Y=(d.length>0?d:t).filter(we=>we.value!==se);Y.some(we=>we.value===V)||(Y=[z,...Y]),await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({categories:Y,reassignFrom:ke?.label||se,reassignTo:fe})}),await p()}catch(Y){console.error("[Taskforce] Failed to remove category",Y)}},[t,l,c,d,p,g,C,S,_]),Re=o.useCallback(async se=>{if(!se.trim())return;const V=se.trim().toLowerCase().replace(/\s+/g,"-");if(a.some(z=>z.value===V))return;const W=[...a,{value:V,label:se.trim(),status:"active"}];w(W);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:W})})}catch(z){console.error("Failed to save type",z)}},[a,w]),je=o.useCallback(async se=>{const V=a.map(W=>W.value===se?{...W,status:"retired"}:W);w(V);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:V})}),await p()}catch(W){console.error("Failed to save type",W)}},[a,p,w]),ye=o.useCallback(async(se,V)=>{const W=a.find(Y=>Y.value===se);if(!W)return;const z=typeof V.label=="string"?V.label.trim():W.label;if(!z)return;const fe=a.map(Y=>Y.value===se?{...Y,...V,label:z}:Y);if(JSON.stringify(fe)!==JSON.stringify(a)){w(fe);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:fe})})}catch(Y){console.error("Failed to update type",Y)}}},[a,w]),ue=o.useCallback(async se=>{if(c){b(se);try{await fetch("/api/taskforce/taxonomies",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taxonomies:se})})}catch(V){console.error("[Taskforce] Failed to save taxonomies",V)}}},[c,b]),ve=o.useCallback(async se=>{if(c){R(se);try{await fetch("/api/taskforce/priorities",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({priorities:se})})}catch(V){console.error("[Taskforce] Failed to save priorities",V)}}},[c,R]),Pe=o.useCallback(se=>{const V=E(),W=new Set(se.categories.map(q=>q.value)),z=new Set(se.types.map(q=>q.value)),fe=new Set(se.priorities.map(q=>Number(q.value))),ke=Array.from(new Set(V.map(q=>String(q.category||"").trim()).filter(q=>q.length>0&&!W.has(q)))).sort(),Y=Array.from(new Set(V.map(q=>String(q.type||"").trim()).filter(q=>q.length>0&&!z.has(q)))).sort(),we=Array.from(new Set(V.map(q=>Number(q.priority)).filter(q=>Number.isFinite(q)&&q>0&&!fe.has(q)))).sort((q,le)=>q-le);return{unmatchedCategoryValues:ke,unmatchedTypeValues:Y,incompatiblePriorityValues:we}},[E]),Le=o.useCallback(async se=>{if(!c)return{success:!1,error:"Settings are still loading."};const{pack:V,sections:W,remapExistingValuesToDefault:z,workspaceIdOverride:fe}=se,ke=String(fe||"").trim(),Y=ke.length>0,we=Y?[]:E(),q=$e=>{if(!ke)return $e;const re=$e.includes("?")?"&":"?";return`${$e}${re}workspaceId=${encodeURIComponent(ke)}`},le=()=>{const $e={"Content-Type":"application/json"};return ke&&($e["x-taskforce-workspace-id"]=ke),$e};try{const $e=await fetch(q("/api/taskforce/taxonomy-library/apply"),{method:"POST",headers:le(),body:JSON.stringify({packId:V.id,sections:W,remapExistingValuesToDefault:z})}),re=await $e.json().catch(()=>({}));if($e.ok&&re.taxonomyState)return Y||(W.categories&&re.taxonomyState.categories&&S(re.taxonomyState.categories),W.types&&re.taxonomyState.types&&w(re.taxonomyState.types),W.priorities&&re.taxonomyState.priorities&&R(re.taxonomyState.priorities),await f({isSilent:!0})),{success:!0};if(re.code!=="WORKSPACE_SYNC_V3_TAXONOMY_ACTIVATION_DISABLED")return{success:!1,error:re.error||"Failed to apply taxonomy library pack atomically."};if(W.categories){const de=new Set(V.categories.map(pe=>pe.value)),He=z?[...V.categories]:[...V.categories,...t.filter(pe=>!de.has(pe.value)).map(pe=>({...pe,disabled:!0}))];Y||S(He);const ce=await fetch(q("/api/taskforce/categories"),{method:"POST",headers:le(),body:JSON.stringify({categories:He})});if(!ce.ok)return{success:!1,error:await I(ce,"Failed to apply category library pack.")}}if(W.types){const de=new Set(V.types.map(xe=>xe.value)),He=V.types.find(xe=>xe.value===po)?.value||V.types[0]?.value||po;if(z){const xe=we.filter(N=>N.type&&!de.has(String(N.type))).map(N=>({id:N.id,type:He}));if(xe.length>0){const N=await fetch(q("/api/taskforce/bulk-update-fields"),{method:"POST",headers:le(),body:JSON.stringify({updates:xe})});if(!N.ok)return{success:!1,error:await I(N,"Failed to remap task types to the pack default.")}}}const ce=z?[...V.types]:[...V.types,...a.filter(xe=>!de.has(xe.value)).map(xe=>({...xe,status:"retired"}))];Y||w(ce);const pe=await fetch(q("/api/taskforce/types"),{method:"POST",headers:le(),body:JSON.stringify({types:ce})});if(!pe.ok)return{success:!1,error:await I(pe,"Failed to apply task type library pack.")}}if(W.priorities){const de=new Set(V.priorities.map(xe=>xe.value)),He=Array.from(new Set(we.map(xe=>Number(xe.priority)).filter(xe=>Number.isFinite(xe)&&xe>0&&!de.has(xe)))).sort((xe,N)=>xe-N);if(He.length>0&&!z)return{success:!1,error:`This workspace still uses priority levels ${He.join(", ")}. Enable "Remap unmatched existing values to default" to replace them before applying this pack.`};if(He.length>0){const xe=K(V),N=we.filter(X=>He.includes(Number(X.priority))).map(X=>({id:X.id,priority:xe}));if(N.length>0){const X=await fetch(q("/api/taskforce/bulk-update-fields"),{method:"POST",headers:le(),body:JSON.stringify({updates:N})});if(!X.ok)return{success:!1,error:await I(X,"Failed to remap task priorities to the pack default.")}}}const ce=V.priorities.map(xe=>({...xe,value:Number(xe.value)}));Y||R(ce);const pe=await fetch(q("/api/taskforce/priorities"),{method:"POST",headers:le(),body:JSON.stringify({priorities:ce})});if(!pe.ok)return{success:!1,error:await I(pe,"Failed to apply priority library pack.")}}return Y||await f({isSilent:!0}),{success:!0}}catch($e){return console.error("[Taskforce] Failed to apply system taxonomy pack",$e),{success:!1,error:$e instanceof Error?$e.message:"Failed to apply system taxonomy pack."}}},[t,a,c,E,K,I,f,S,w,R]);return{getCategoryPaths:h,validatePaths:U,handleUpdateCategory:L,handleSaveCategory:D,handleAddPath:ie,handleUpdateCategoryIcon:H,handleUpdateCategoryColor:be,handleRemovePath:Z,handleSelectPath:me,handleRemoveCategory:Ve,handleSaveType:Re,handleRemoveType:je,handleUpdateType:ye,handleUpdateTaxonomies:ue,handleUpdatePriorities:ve,analyzeSystemTaxonomyPack:Pe,handleApplySystemTaxonomyPack:Le}}function nN({shouldDeferProtectedApiCalls:e,shouldBlockProtectedApiCalls:t}){const[r,a]=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 a(d),d}catch{return[]}},[s]);return{initiativeTemplates:r,fetchInitiativeTemplates:i}}function aN(){const[e,t]=o.useState(!1),r=o.useCallback(async()=>{if(!document.fullscreenElement){try{await document.documentElement.requestFullscreen(),t(!0)}catch(a){console.error(`Error attempting to enable full-screen mode: ${a}`)}return}document.exitFullscreen&&(await document.exitFullscreen(),t(!1))},[]);return o.useEffect(()=>{const a=()=>{t(!!document.fullscreenElement)};return document.addEventListener("fullscreenchange",a),()=>document.removeEventListener("fullscreenchange",a)},[]),{zenMode:e,setZenModeState:t,toggleZenMode:r}}function sN({tasks:e,archivedTasks:t,setTasks:r,setArchivedTasks:a,setLoadingTasks:s,getCurrentWorkspaceId:i,workspaceResetKey:l,shouldDeferProtectedApiCalls:c,shouldBlockProtectedApiCalls:d,handleUnauthorized:f,authRequiredForApi:p}){const g=o.useRef(new Map),h=o.useRef(!1),y=o.useRef(e),k=o.useRef(t),v=o.useRef(null),C=o.useRef(null);o.useEffect(()=>{y.current=e},[e]),o.useEffect(()=>{k.current=t},[t]);const S=o.useCallback(U=>_f(U),[]),w=o.useCallback((U,L)=>L.aborted?U===L.reason?!0:U instanceof DOMException?U.name==="AbortError":String(U?.name||"").toLowerCase()==="aborterror":!1,[]),[_,M]=o.useState([]),R=o.useRef(new Map),P=o.useCallback(U=>{!U.length||typeof window>"u"||(M(L=>Array.from(new Set([...L,...U]))),U.forEach(L=>{const D=R.current.get(L);D&&window.clearTimeout(D);const ie=window.setTimeout(()=>{R.current.delete(L),M(H=>H.filter(be=>be!==L))},2e3);R.current.set(L,ie)}))},[]);o.useEffect(()=>()=>{typeof window>"u"||(R.current.forEach(U=>window.clearTimeout(U)),R.current.clear())},[]),o.useEffect(()=>{g.current=new Map,h.current=!1,v.current?.abort("workspace-reset"),v.current=null,C.current?.abort("workspace-reset"),C.current=null,typeof window<"u"&&(R.current.forEach(U=>window.clearTimeout(U)),R.current.clear()),M([])},[l]);const b=o.useCallback(async(U=!1,L)=>{if(!(L?.ignoreAuthGuard===!0)&&(c||d))return;s(!U);const ie=String(i()||"").trim();v.current?.abort("superseded");const H=new AbortController;v.current=H;try{const be=await fetch("/api/taskforce/tasks",{signal:H.signal});if(be.status===401){f(),r([]),U||s(!1);return}if(be.ok){const me=((await be.json()).tasks||[]).map(Pe=>xo(Pe));if(String(i()||"").trim()!==ie)return;const Re=new Map,je=[],ye=L?.highlightChangedTaskIds===void 0?null:new Set(L.highlightChangedTaskIds.map(Pe=>g0(me,Pe)||Pe));for(const Pe of me){const Le=S(Pe);if(Re.set(Pe.id,Le),!h.current)continue;const se=g.current.get(Pe.id);(!se||se!==Le)&&(ye===null||ye.has(Pe.id))&&je.push(Pe.id)}g.current=Re,h.current?P(je):h.current=!0;const ue=y.current,ve=Vw(ue,me);y.current=ve,ve!==ue&&r(ve)}}catch(be){if(w(be,H.signal))return;console.error("[Taskforce] Failed to fetch tasks:",be)}finally{v.current===H&&(v.current=null,s(!1))}},[S,i,P,f,r,s,p,c,d]),$=o.useCallback(async(U=!1,L)=>{if(!(L?.ignoreAuthGuard===!0)&&(c||d))return!1;U||s(!0);const ie=String(i()||"").trim();C.current?.abort("superseded");const H=new AbortController;C.current=H;try{const be=await fetch("/api/taskforce/archive",{signal:H.signal});if(be.ok){const Z=await be.json();if(String(i()||"").trim()!==ie)return!1;const Ve=(Z.archived||[]).map(ye=>({...xo(ye),isArchived:!0})),Re=k.current,je=Vw(Re,Ve);return k.current=je,je!==Re&&a(je),!0}return!1}catch(be){return w(be,H.signal)||console.error("[Taskforce] Failed to fetch archive:",be),!1}finally{C.current===H&&(C.current=null,U||s(!1))}},[i,w,a,s,c,d]),I=o.useCallback(async U=>{const L=U?.isSilent!==!1,D=U?.ignoreAuthGuard===!0,ie=U?.includeActive!==!1,H=U?.includeArchive!==!1;await Promise.all([ie?b(L,{ignoreAuthGuard:D,highlightChangedTaskIds:U?.highlightChangedTaskIds}):Promise.resolve(!1),H?$(L,{ignoreAuthGuard:D}):Promise.resolve(!1)])},[$,b]),E=o.useCallback(async U=>{await I({isSilent:!0,includeActive:U?.includeActive!==!1,includeArchive:U?.includeArchive!==!1,highlightChangedTaskIds:U?.highlightChangedTaskIds})},[I]),K=o.useCallback(U=>{const L=b0(U,y.current,k.current),D=L.tasks!==y.current,ie=L.archivedTasks!==k.current;y.current=L.tasks,k.current=L.archivedTasks,D&&r(L.tasks),ie&&a(L.archivedTasks)},[r,a]);return{tasksRef:y,archivedTasksRef:k,recentlyChangedTaskIds:_,markRecentlyChangedTasks:P,fetchTasks:b,fetchArchive:$,refreshTaskCollections:I,refreshTaskCollectionsFromInvalidation:E,mergeTaskFromServer:K,getTaskRevisionKey:S}}function oN(e){const{editingTaskId:t,relationshipTasks:r,initiatives:a=[],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 S=new Map;return r.forEach(w=>S.set(w.id,w)),c.forEach(w=>S.set(w.id,w)),Array.from(S.values())},[r,c]),k=o.useMemo(()=>{if(t)return y.find(S=>S.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 S=k.assignee||"unassigned",w=h.current;if(!w||w.taskId!==t){h.current={taskId:t,assignee:S},d!==S&&f(S);return}w.assignee!==S&&(d===w.assignee&&f(S),h.current={taskId:t,assignee:S})},[d,k?.assignee,k?.id,t,f]);const v=o.useMemo(()=>{if(k?.workstreamId)return s.find(S=>S.id===k.workstreamId);if(!(t||!i.trim()))return l?.(i)||void 0},[k,t,l,i,s]),C=o.useMemo(()=>{if(v?.initiativeId)return a.find(S=>S.id===v.initiativeId)},[v,a]);return{currentTask:k,currentTaskWorkstream:v,currentTaskInitiative:C}}const Nv="WS-",jv="IN-";function Io(e){return Cu(Nv,e)}function _C(e){return pg(Nv,e)}function xu(e){return Of(Nv,e)}function fs(e){return Cu(jv,e)}function iN(e){return pg(jv,e)}function IC(e){return Of(jv,e)}function Mk(e,t){const r=String(t||"").trim();if(!r)return null;const a=iN(r);return e.find(s=>s.id===r||fs(s)===r||a!==null&&s.referenceNumber===a)||null}function cN(e){const t={};return e.forEach(r=>{const a=r.defaultValue;if(a!=null){if(Array.isArray(a)){a.length>0&&(t[r.id]=a.map(s=>typeof s=="number"?s:String(s)));return}t[r.id]=typeof a=="number"?a:String(a)}}),t}function lN(e,t){return e.filter(r=>{const a=t[r.id],s=Array.isArray(a)?a.length>0:a!=null&&a!=="";return r.status==="retired"&&!s?!1:r.formEnabled!==!1||r.isRequired===!0||s})}function dN(e){const{activeCategories:t,activeTypes:r,activeTab:a,attachments:s,checklistItems:i,comments:l,description:c,editingTaskId:d,flushPendingAutoSave:f,getDescriptionDraft:p,getPreferredCategoryValue:g,getTitleDraft:h,lastUsedCategory:y,newCommentText:k,relationshipTasks:v,workstreams:C,showArchive:S,taxonomies:w,setActiveTab:_,setAssignee:M,setAttachments:R,setAttachmentsDirty:P,setCategory:b,setChecklistItems:$,setComments:I,setComplexity:E,setDescription:K,setDueDate:U,setEditingTaskId:L,setError:D,setFormTaxonomies:ie,setIsOpen:H,setNewCommentText:be,setPendingNavigation:Z,setWorkstreamInput:me,setPriority:Ve,setScheduledDate:Re,setShowArchive:je,setStatus:ye,setTaskReturnTrail:ue,setTitle:ve,setType:Pe,setUnsavedModalOpen:Le,taskReturnTrail:se,title:V}=e,W=o.useCallback(()=>r.find(de=>String(de.value||"").trim().length>0)?.value||po,[r]),z=o.useCallback(async de=>{if(d){await f()&&de();return}if(!((h?.()??V).trim()!==""||(p?.()??c).trim()!==""||i.length>0||k.trim()!==""||l.length>0||s.length>0)){de();return}Z(()=>de),Le(!0)},[s,l.length,c,d,f,p,h,i,k,Z,Le,V]),fe=o.useCallback(()=>{H(!1)},[H]),ke=o.useCallback(()=>{L(null),ve(""),K("");const de=y,He=t.some(ce=>ce.label===de||ce.value===de);if(de&&He){const ce=t.find(pe=>pe.label===de||pe.value===de);b(ce?.value||de)}else b(g(t));Pe(W()),Ve(2),E(3),ye("task"),M("unassigned"),Re(""),U(""),me(""),$([]),ie(cN(w)),I([]),be(""),R([]),P(!1),D("")},[t,g,W,y,M,R,P,b,$,I,E,K,U,L,D,ie,be,Ve,Re,ye,ve,Pe,w]),Y=o.useCallback(de=>{const He=de.trim();if(!He)return null;const ce=fg(He);if(ce){const N=v.find(X=>X.referenceNumber===ce);if(N)return N}const pe=v.find(N=>N.id===He);if(pe)return pe;const xe=v.find(N=>hs(N)===He);return xe||null},[v]),we=o.useCallback(de=>{const He=de.trim();if(!He)return null;const ce=He.toLowerCase(),pe=_C(He);if(pe){const X=C.find(Ae=>Ae.referenceNumber===pe);if(X)return X}const xe=C.find(X=>X.id===He);if(xe)return xe;const N=C.find(X=>X.title.trim().toLowerCase()===ce);return N||null},[C]),q=o.useCallback((de,He)=>{He?.preserveReturnTrail||ue([]),L(de.id),ve(de.title),K(de.description||""),b(de.category||g(t)),Pe(de.type||W()),Ve(typeof de.priority=="number"?de.priority:2),E(typeof de.complexity=="number"?de.complexity:3),ye(de.status||"task"),M(de.assignee||"unassigned"),Re(de.scheduledDate||""),U(de.dueDate||"");const ce=de.workstreamId&&C.find(pe=>pe.id===de.workstreamId)||null;me(ce?Io(ce)||ce.id:""),$(de.checklistItems||[]),I(de.comments||[]),ie(de.taxonomies||{}),R(de.attachments||[]),P(!1),_("add")},[t,g,W,_,M,R,P,b,$,I,E,K,U,L,ie,Ve,Re,ye,ue,ve,Pe,C]),le=o.useCallback(de=>{const He=v.find(ce=>ce.id===de);He&&(a==="add"&&d&&d!==He.id&&ue(ce=>ce[ce.length-1]===d?ce:[...ce,d]),He.isArchived&&!S&&je(!0),q(He,{preserveReturnTrail:!0}))},[a,d,q,v,je,ue,S]),$e=o.useCallback(()=>{if(a!=="add"||!d||se.length===0)return!1;const de=[...se];for(;de.length>0;){const He=de.pop();if(!He)continue;const ce=v.find(pe=>pe.id===He);if(ce)return ce.isArchived&&!S&&je(!0),ue(de),q(ce,{preserveReturnTrail:!0}),!0}return ue([]),!1},[a,d,q,v,je,ue,S,se]),re=o.useCallback(()=>{ue([])},[ue]);return{handleNavigation:z,handleClose:fe,resetForm:ke,resolveTaskIdInput:Y,resolveWorkstreamIdInput:we,handleEdit:q,handleOpenTaskById:le,returnToPreviousTask:$e,clearReturnToParentTask:re}}function uN(e){return e.map(t=>({...t}))}function pN(e){return e.map(t=>({...t}))}function fN(e){return e.map(t=>({...t}))}const mN={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"}]},hN=[{id:"general",label:"General",description:"A neutral starter pack for broad project and AI collaboration workflows.",categories:[{value:bu,label:ug,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"}]},mN];function TC(){return hN.map(e=>({...e,categories:uN(e.categories),types:pN(e.types),priorities:fN(e.priorities)}))}const gN={"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"},xX=["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 gN[e]||e}const Ql=[{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)"}],Ui=Ql.map(({value:e,label:t,icon:r,color:a})=>({value:e,label:t,icon:r,color:a}));function _o(e){const t=String(e||"task").trim().toLowerCase();return t==="completed"?Ql.find(r=>r.value==="done")||Ql[0]:Ql.find(r=>r.value===t)||Ql[0]}const xC=["Folder","Code","FileText","Terminal","Database","Cpu","Globe","Layout","Server","Search","Settings","Zap","Shield","Star","Layers","Bug","Box","Book","MessageSquare","Image","Music","Video","Map","Mail","Camera","Heart","Anchor","Rocket","Target","Flag","Bookmark","Briefcase","Puzzle","SquareUserRound","Users","User","Unplug","Clock","Lock","Pencil","TrafficCone","CircleDollarSign","Activity","Wrench","Microscope","Palette","Webhook","FlaskConical","Bot","Cloud","Kanban","Infinity","Monitor","Smartphone","History","Brain","Calendar","Play","Pause","Sparkles","Check","Ban","Circle","CheckCircle","Wind","Github","Square","SquareCheck","CheckSquare","Package","AlertCircle","Lightbulb","ClipboardCheck","ScanSearch","Inbox","HelpCircle","Gauge","FileCode","ArrowDown","Minus","ArrowUp","AlertTriangle","CircleQuestionMark","TriangleAlert"],Ru=xC.reduce((e,t)=>(e[t]=To[t]||ad,e),{}),RX=xC,Hh=Object.fromEntries(TC().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),[])),yN={PDF:"red-500",DOC:"blue-500",DOCX:"blue-500",CSV:"teal-500",JSON:"amber-500",TXT:"violet-200",MD:"violet-200"};function kN(e){const t=String(e||"").trim().toLowerCase();return Jn(Hh[t]?.color)||Jn("violet-200")||"#9c7aeb"}function PX(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 vN(e){const t=String(e||"").trim().toUpperCase();return Jn(yN[t])||"var(--text-muted)"}const wN=/[\u2010-\u2015\u2212]/g;function Mv(e){return String(e??"").trim().replace(wN,"-").replace(/\s+/g," ").toLowerCase()}function wg(e){const t=Mv(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 bg(e){const t=Mv(e);return{raw:t,tokens:t?t.split(" ").filter(Boolean):[],referenceToken:wg(e)}}function Co(e,t){const r=String(t??"").trim();r&&e.push(r)}function ou(e,t,r){const a=String(r??"").trim();if(!a)return;const s=t?.find(i=>String(i.value)===a);Co(e,s?.label)}function bN(e,t={}){const r=[];return Co(r,e.title),Co(r,e.description),Co(r,e.id),Co(r,hs(e)),Co(r,e.category),Co(r,e.type),Co(r,e.priority),Co(r,e.status),Co(r,e.assignee||"unassigned"),Co(r,e.canceledReason),ou(r,t.categories,e.category),ou(r,t.types,e.type),ou(r,t.priorities,e.priority),ou(r,Ui,e.status),ou(r,t.assigneeOptions,e.assignee||"unassigned"),Object.entries(e.taxonomies||{}).forEach(([a,s])=>{const i=t.taxonomies?.find(c=>c.id===a);Co(r,i?.label),(Array.isArray(s)?s:[s]).forEach(c=>{Co(r,c),ou(r,i?.options,c)})}),r}function Vh(e,t,r={}){const a=typeof t=="string"?bg(t):t;if(!a.raw)return!0;const s=bN(e,r),l=s.map(Mv).filter(Boolean).join(" ");return l.includes(a.raw)||a.referenceToken&&s.map(wg).some(d=>d?.includes(a.referenceToken))?!0:a.tokens.length>0&&a.tokens.every(c=>l.includes(c))}function SN(e,t){const r=e.taxonomies?.[t];return r==null||r===""?!1:Array.isArray(r)?r.some(a=>String(a).trim().length>0):String(r).trim().length>0}function $f(e,t){const r=e.filter(s=>s.status!=="retired"),a=e.filter(s=>s.status==="retired"&&t.some(i=>SN(i,s.id)));return[...r,...a.filter(s=>!r.some(i=>i.id===s.id))]}function RC(e,t=[]){return $f(e,t).filter(r=>r.sortEnabled===!0).map(r=>({value:`taxonomy:${r.id}`,label:r.status==="retired"?`${r.label} (Retired)`:r.label}))}function Mb(e,t){const r=e.taxonomies?.[t.id];if(r==null||r==="")return null;const a=Array.isArray(r)?r.map(s=>String(s)):[String(r)];for(let s=0;s<t.options.length;s+=1)if(a.includes(String(t.options[s]?.value)))return s;return null}function Fl(e,t){return new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime()}function Gh(e,t,r,a,s=[]){let i=0;if(r==="created")return i=Fl(e,t),a==="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(),a==="desc"?i:-i}if(r==="priority"){const l=Oh(e.priority),c=Oh(t.priority);return i=l!==c?c-l:Fl(e,t),a==="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:Fl(e,t),a==="desc"?i:-i}if(r.startsWith("taxonomy:")){const l=r.slice(9),c=s.find(p=>p.id===l);if(!c)return i=Fl(e,t),a==="desc"?i:-i;const d=Mb(e,c),f=Mb(t,c);return d===null&&f===null?Fl(e,t):d===null?1:f===null?-1:d!==f?a==="desc"?f-d:d-f:Fl(e,t)}return i=Fl(e,t),a==="desc"?i:-i}function AN(e,t,r){const a=e.taxonomies?.[t];return a==null||a===""?!1:Array.isArray(a)?a.some(s=>String(s)===String(r)):String(a)===String(r)}function Dv(e,t){const r=e.options.filter(s=>s.status!=="retired"),a=e.options.filter(s=>s.status==="retired"&&t.some(i=>AN(i,e.id,s.value)));return[...r,...a.filter(s=>!r.some(i=>String(i.value)===String(s.value)))]}function CN({tasks:e,archivedTasks:t,activeCategories:r,activeTypes:a,priorities:s,taxonomies:i,configLoaded:l,referenceDataLoaded:c,assigneeOptionsLoaded:d,assigneeOptions:f}){const p=o.useMemo(()=>[...e,...t],[t,e]),g=o.useMemo(()=>vA(f),[f]),h=o.useMemo(()=>$f(i,p).filter(re=>re.filterEnabled!==!1).map(re=>({...re,options:Dv(re,p)})),[p,i]),y=o.useMemo(()=>new Map(h.map(re=>[re.id,re])),[h]),k=o.useMemo(()=>g.map(re=>re.value),[g]),[v,C]=o.useState(""),[S,w]=o.useState([]),[_,M]=o.useState([]),[R,P]=o.useState([]),[b,$]=o.useState(!1),[I,E]=o.useState(Ui.map(re=>re.value)),[K,U]=o.useState(k),[L,D]=o.useState(!0),[ie,H]=o.useState({}),be=o.useRef(d),[Z,me]=o.useState("created"),[Ve,Re]=o.useState("desc"),je=o.useCallback(()=>{Re(re=>re==="asc"?"desc":"asc")},[]),[ye,ue]=o.useState("status"),[ve,Pe]=o.useState("show"),[Le,se]=o.useState({}),V=o.useCallback((re,de)=>de.length===0?!0:de.every(He=>re.includes(He)),[]),W=o.useCallback((re,de)=>re.length===de.length&&re.every((He,ce)=>He===de[ce]),[]);o.useEffect(()=>{if(!(!l||!c)&&d&&!b&&r.length>0&&a.length>0&&s.length>0){w(r.map(de=>de.value)),M(s.map(de=>de.value)),P(a.map(de=>de.value)),U(k),D(!0);const re={};h.forEach(de=>{re[de.id]=de.options.map(He=>He.value)}),H(re),$(!0)}},[l,c,d,r,a,s,h,b,k]),o.useEffect(()=>{if(!b||!d)return;const re=new Set(k),de=K.filter(pe=>re.has(pe)),He=L?k:de.length>0||K.length===0?de:k;(He.length!==K.length||He.some((pe,xe)=>pe!==K[xe]))&&U(He)},[k,K,L,b,d]),o.useEffect(()=>{if(!b||!d)return;const re=K.filter(He=>k.includes(He)),de=k.length>0&&k.every(He=>re.includes(He));L&&!de&&d&&!be.current||de!==L&&D(de)},[k,K,L,b,d]),o.useEffect(()=>{be.current=d},[d]),o.useEffect(()=>{if(!l||!c||!b||r.length===0)return;const re=A0(S,r);(re.length!==S.length||re.some((He,ce)=>He!==S[ce]))&&w(re)},[l,c,r,b,S]),o.useEffect(()=>{if(!l||!c||!b||s.length===0||_.length===0)return;const re=S0(_,s),de=Array.from(new Set(_.map(ce=>Number(ce)).filter(ce=>Number.isFinite(ce))));(re.length!==de.length||re.some((ce,pe)=>ce!==de[pe]))&&M(re)},[l,c,b,s,_]),o.useEffect(()=>{if(!l||!c||!b||a.length===0)return;const re=new Set(a.map(ce=>ce.value)),de=R.filter(ce=>re.has(ce)),He=de.length>0||R.length===0?de:a.map(ce=>ce.value);W(He,R)||P(He)},[a,l,R,b,W,c]),o.useEffect(()=>{if(!l||!c||!b)return;const re={};h.forEach(xe=>{const N=xe.options.map(Te=>Te.value);if(N.length===0)return;const X=Array.isArray(ie[xe.id])?ie[xe.id]:[],Ae=X.filter(Te=>N.includes(Te));re[xe.id]=Ae.length>0||X.length===0?Ae:N});const de=Object.keys(ie).sort(),He=Object.keys(re).sort(),ce=de.length!==He.length||de.some((xe,N)=>xe!==He[N]),pe=He.some(xe=>!W(ie[xe]||[],re[xe]||[]));(ce||pe)&&H(re)},[l,ie,h,b,W,c]);const z=o.useCallback(()=>{C(""),w(r.map(de=>de.value)),M(s.map(de=>de.value)),P(a.map(de=>de.value)),E(Ui.map(de=>de.value)),U(k),D(!0);const re={};h.forEach(de=>{re[de.id]=de.options.map(He=>He.value)}),H(re),me("created"),Re("desc")},[r,s,a,h,k]),fe=o.useCallback(re=>{U(de=>{const He=typeof re=="function"?re(de):re,ce=Array.from(new Set(He.filter(xe=>typeof xe=="string"&&xe.trim().length>0))),pe=k.length>0&&k.every(xe=>ce.includes(xe));return D(pe),ce})},[k]),ke=o.useMemo(()=>bg(v),[v]),Y=o.useMemo(()=>({categories:r,types:a,priorities:s,assigneeOptions:g,taxonomies:i}),[r,a,s,g,i]),we=o.useMemo(()=>{const re=V(S,r.map(pe=>pe.value)),de=V(R,a.map(pe=>pe.value)),He=V(Array.from(new Set(_.map(pe=>Number(pe)).filter(pe=>Number.isFinite(pe)))),s.map(pe=>Number(pe.value)).filter(pe=>Number.isFinite(pe))),ce=V(I,Ui.map(pe=>pe.value));return e.filter(pe=>{const xe=Vh(pe,ke,Y),N=!b||re||S.includes(pe.category),X=!b||He||Ey(pe.priority,_),Ae=!b||de||R.includes(pe.type||po),Te=!b||ce||I.includes(pe.status),he=!b||L||K.includes(pe.assignee||"unassigned"),ot=Object.entries(ie).every(([We,Xe])=>{const ae=y.get(We);if(!ae)return!0;const G=ae?.options.every(Fe=>Xe.includes(Fe.value))??!0;if(G)return!0;const Ie=pe.taxonomies?.[We];return Ie?Array.isArray(Ie)?Ie.some(Fe=>Xe.includes(Fe)):Xe.includes(Ie):G||Xe.includes("")});return xe&&N&&X&&Ae&&Te&&he&&ot}).sort((pe,xe)=>Gh(pe,xe,Z,Ve,i))},[e,ke,Y,S,_,R,I,K,L,ie,Z,Ve,b,h,y,r,a,s,V,i]),q=o.useMemo(()=>{const re=V(S,r.map(pe=>pe.value)),de=V(R,a.map(pe=>pe.value)),He=V(Array.from(new Set(_.map(pe=>Number(pe)).filter(pe=>Number.isFinite(pe)))),s.map(pe=>Number(pe.value)).filter(pe=>Number.isFinite(pe))),ce=V(I,Ui.map(pe=>pe.value));return e.filter(pe=>{const xe=!b||re||S.includes(pe.category),N=!b||He||Ey(pe.priority,_),X=!b||de||R.includes(pe.type||po),Ae=!b||ce||I.includes(pe.status),Te=!b||L||K.includes(pe.assignee||"unassigned"),he=Object.entries(ie).every(([ot,We])=>{const Xe=y.get(ot);if(!Xe)return!0;const ae=Xe?.options.every(Ie=>We.includes(Ie.value))??!0;if(ae)return!0;const G=pe.taxonomies?.[ot];return G?Array.isArray(G)?G.some(Ie=>We.includes(Ie)):We.includes(G):ae||We.includes("")});return xe&&N&&X&&Ae&&Te&&he})},[e,S,_,R,I,K,L,ie,b,h,y,r,a,s,V]),le=o.useMemo(()=>{const re=r.every(ce=>S.includes(ce.value)),de=V(R,a.map(ce=>ce.value)),He=V(Array.from(new Set(_.map(ce=>Number(ce)).filter(ce=>Number.isFinite(ce)))),s.map(ce=>Number(ce.value)).filter(ce=>Number.isFinite(ce)));return t.filter(ce=>{const pe=Vh(ce,ke,Y),xe=!b||re||S.includes(ce.category),N=!b||He||Ey(ce.priority,_),X=!b||de||R.includes(ce.type||po),Ae=!b||L||K.includes(ce.assignee||"unassigned"),Te=Object.entries(ie).every(([he,ot])=>{const We=y.get(he);if(!We)return!0;const Xe=We?.options.every(G=>ot.includes(G.value))??!0;if(Xe)return!0;const ae=ce.taxonomies?.[he];return ae?Array.isArray(ae)?ae.some(G=>ot.includes(G)):ot.includes(ae):Xe||ot.includes("")});return pe&&xe&&N&&X&&Ae&&Te}).sort((ce,pe)=>Gh(ce,pe,Z,Ve,i))},[t,ke,Y,S,_,R,K,L,ie,Z,Ve,b,r,a,s,h,y,V,i]),$e=o.useMemo(()=>{const re={};return we.forEach(de=>{const He=r.find(pe=>pe.value===de.category),ce=He?He.label:de.category||"General";re[ce]||(re[ce]=[]),re[ce].push(de)}),re},[we,r]);return{searchQuery:v,setSearchQuery:C,filterCategories:S,setFilterCategories:w,filterPriorities:_,setFilterPriorities:M,filterTypes:R,setFilterTypes:P,filterStatus:I,setFilterStatus:E,filterAssignees:K,setFilterAssignees:fe,filterAssigneesAllSelected:L,setFilterAssigneesAllSelected:D,filterTaxonomies:ie,setFilterTaxonomies:H,hasInitedFilters:b,setHasInitedFilters:$,sortBy:Z,setSortBy:me,sortOrder:Ve,setSortOrder:Re,toggleSortOrder:je,groupBy:ye,setGroupBy:ue,emptyColumnMode:ve,setEmptyColumnMode:Pe,collapsedCategories:Le,setCollapsedCategories:se,clearFilters:z,filteredTasks:we,searchAgnosticTasks:q,filteredArchive:le,groupedTasks:$e}}const _N=CN,Lv="taskforce-workspace-sync-v3",IN=3,yu="operation-identities",Bi="task-create-attempts",ku="workstream-create-attempts";function eh(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 Db(e,t){delete e.active,e.attempts=t}function qa(e,t){const r=String(e||"").trim();if(!r)throw new Error(`${t} is required.`);return r}function kc(e,t){return e.error||new Error(t)}function TN(e){e.objectStoreNames.contains(yu)||e.createObjectStore(yu,{keyPath:"fingerprint"}),e.objectStoreNames.contains(Bi)||e.createObjectStore(Bi,{keyPath:"workspaceId"}),e.objectStoreNames.contains(ku)||e.createObjectStore(ku,{keyPath:"fingerprint"})}function Ov(e,t){return e?new Promise((r,a)=>{const s=e.open(t,IN);let i=!1;s.onupgradeneeded=()=>TN(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,a(kc(s,"Failed to open the local operation identity database.")))},s.onblocked=()=>{}}):Promise.reject(new Error("IndexedDB is unavailable."))}class Bv{constructor(t=globalThis.indexedDB,r=Lv){this.indexedDb=t,this.databaseName=r}async getOrCreate(t,r){const a=qa(t,"fingerprint"),s=await this.open();try{return await new Promise((i,l)=>{const c=s.transaction(yu,"readwrite"),d=c.objectStore(yu),f=d.get(a);let p="",g=!1;f.onsuccess=()=>{try{const h=f.result;if(h){p=qa(h.operationId,"stored operationId");return}p=qa(r(),"operationId"),g=!0,d.add({fingerprint:a,operationId:p})}catch(h){c.abort(),l(h)}},f.onerror=()=>l(kc(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 a=qa(t,"fingerprint"),s=qa(r,"operationId"),i=await this.open();try{await new Promise((l,c)=>{const d=i.transaction(yu,"readwrite"),f=d.objectStore(yu),p=f.get(a);p.onsuccess=()=>{p.result?.operationId===s&&f.delete(a)},p.onerror=()=>c(kc(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 Ov(this.indexedDb,this.databaseName)}}class PC{constructor(t=globalThis.indexedDB,r=Lv){this.indexedDb=t,this.databaseName=r}async getForParticipant(t,r){const a=qa(t,"workspaceId"),s=qa(r,"participantId"),i=await this.open();try{return await new Promise((l,c)=>{const d=i.transaction(Bi,"readonly"),p=d.objectStore(Bi).get(a);let g=null;p.onsuccess=()=>{const h=p.result,y=eh(h).find(k=>k.participantId===s);y&&(g={...y,created:!1,resolved:!1})},p.onerror=()=>c(kc(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=qa(t,"workspaceId"),a=await this.open();try{return await new Promise((s,i)=>{const l=a.transaction(Bi,"readonly"),d=l.objectStore(Bi).get(r);let f=[];d.onsuccess=()=>{f=eh(d.result).map(p=>({...p,created:!1,resolved:!1}))},d.onerror=()=>i(kc(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{a.close()}}async claim(t,r,a,s){const i=qa(t,"workspaceId"),l=qa(r,"participantId"),c=await this.open();try{return await new Promise((d,f)=>{const p=c.transaction(Bi,"readwrite"),g=p.objectStore(Bi),h=g.get(i);let y=null,k=!1;h.onsuccess=()=>{try{const v=h.result||{workspaceId:i},C=eh(v),S=C.find(_=>_.participantId===l);if(S){y={...S,created:!1,resolved:!1};return}const w={workspaceId:i,operationId:qa(s(),"operationId"),task:a,participantId:l};k=!0,C.push(w),Db(v,C),g.put(v),y={...w,created:!0,resolved:!1}}catch(v){p.abort(),f(v)}},h.onerror=()=>f(kc(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 a=qa(r,"operationId");await this.mutateState(t,s=>s.filter(i=>i.operationId!==a))}async abandonIfMatches(t,r){await this.mutateState(t,a=>{const s=qa(r,"operationId");return a.filter(i=>i.operationId!==s)})}async mutateState(t,r){const a=qa(t,"workspaceId"),s=await this.open();try{await new Promise((i,l)=>{const c=s.transaction(Bi,"readwrite"),d=c.objectStore(Bi),f=d.get(a);f.onsuccess=()=>{const p=f.result||{workspaceId:a},g=r(eh(p));g.length===0?d.delete(a):(Db(p,g),d.put(p))},f.onerror=()=>l(kc(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 Ov(this.indexedDb,this.databaseName)}}class xN{constructor(t=globalThis.indexedDB,r=Lv){this.indexedDb=t,this.databaseName=r}async claim(t,r,a){const s=qa(t,"fingerprint"),i=await this.open();try{return await new Promise((l,c)=>{const d=i.transaction(ku,"readwrite"),f=d.objectStore(ku),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:qa(a(),"operationId"),workstream:r},h=!0,f.add(g)}catch(y){d.abort(),c(y)}},p.onerror=()=>c(kc(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 a=qa(t,"fingerprint"),s=qa(r,"operationId"),i=await this.open();try{await new Promise((l,c)=>{const d=i.transaction(ku,"readwrite"),f=d.objectStore(ku),p=f.get(a);p.onsuccess=()=>{p.result?.operationId===s&&f.delete(a)},p.onerror=()=>c(kc(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 Ov(this.indexedDb,this.databaseName)}}function vc(e){return En(e)}async function Wv(e,t=globalThis.crypto){if(!t?.subtle)throw new Error("Web Crypto is unavailable.");const r=new TextEncoder().encode(vc(e)),a=await t.subtle.digest("SHA-256",r);return Array.from(new Uint8Array(a),s=>s.toString(16).padStart(2,"0")).join("")}function cf(){if(!globalThis.crypto?.randomUUID)throw new Error("Secure task operation identity generation is unavailable.");return`operation-${globalThis.crypto.randomUUID()}`}function RN(){return{operationId:cf(),taskId:`task-${globalThis.crypto.randomUUID()}`}}async function Dk(e,t,r){const a={...t,headers:{...t.headers||{},"x-taskforce-operation-id":r}};try{return await fetch(e,a)}catch{return fetch(e,a)}}async function Kh(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"]).has(r)}function Vy(e){const{id:t,createdAt:r,updatedAt:a,...s}=e;return s}function Lb(e){return`taskforce.sync.v3.cloud-task-create-participant-v1:${e}`}function Lk(e){const t=new PC,r=new Bv,a=new Map,s=c=>{const d=globalThis.sessionStorage?.getItem(Lb(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=a.get(c);return f||{participantId:cf(),draftFingerprint:null}},i=(c,d)=>{a.set(c,d),globalThis.sessionStorage?.setItem(Lb(c),JSON.stringify(d))},l=c=>{i(c,{participantId:cf(),draftFingerprint:null})};return{async prepareCreate(c,d){const f=RN(),p={...d,id:f.taskId},g=await Wv({workspaceId:c,task:Vy(d)});let h=s(c);h.draftFingerprint&&h.draftFingerprint!==g?h={participantId:cf(),draftFingerprint:g}:h={...h,draftFingerprint:g},i(c,h);const y=await t.claim(c,h.participantId,p,()=>f.operationId),k=Vy(y.task);return{operationId:y.operationId,body:y.task,recoveredChangedInput:En(k)!==En(Vy(d))}},async confirmCreate(c,d){await t.markResolved(c,d),l(c)},resetCreateDraft(c){l(c)},async prepareUpdate(c,d,f,p){const g=En({workspaceId:c,url:d,body:f,observedPrecondition:p}),h=await r.getOrCreate(g,cf);return{fingerprint:g,operationId:h.operationId}},confirmUpdate(c,d){return r.deleteIfMatches(c,d)}}}function PN(e){const{activeCategories:t,activeTab:r,apiEndpoint:a,assignee:s,attachments:i,attachmentsDirty:l,category:c,checklistItems:d,comments:f,complexity:p,description:g,dueDate:h,createTaskDurably:y,durableTaskHttpRootActivationEnabled:k=!1,workspaceId:v,taskHttpMutationClient:C,updateTask:S,editingTaskId:w,fetchTasks:_,formTaxonomies:M,getDescriptionDraft:R,getPreferredCategoryValue:P,getTitleDraft:b,mergeTaskFromServer:$,onTaskCreated:I,workstreamInput:E,priority:K,pushNotice:U,queueWorkspaceSyncFromAuthoritativeTaskState:L,relationshipTasks:D,supplementalTasks:ie=[],resetForm:H,resolveWorkstreamIdInput:be,scheduledDate:Z,setActiveTab:me,setAttachmentsDirty:Ve,setComments:Re,setError:je,setLastUsedCategory:ye,setLoading:ue,setNewCommentText:ve,status:Pe,title:Le,taxonomies:se,textDraftOccupied:V,type:W}=e,z=b||(()=>Le),fe=R||(()=>g),ke=o.useRef(z),Y=o.useRef(fe);ke.current=z,Y.current=fe;const we=o.useCallback(()=>({title:ke.current(),description:Y.current()}),[]),[q,le]=o.useState(null),[$e,re]=o.useState("idle"),[de,He]=o.useState(null),ce=o.useRef(null),pe=o.useRef(null),xe=o.useRef(null),N=o.useRef(null),X=o.useRef(!1),Ae=o.useRef(null),Te=o.useRef(null),he=o.useRef(!1),ot=o.useRef(null),We=w&&(D.find(F=>F.id===w)||ie.find(F=>F.id===w))||null,Xe=We?.isDeleted?"deleted":We?.isArchived?"archived":null,ae=r==="add"&&!w&&((V??(Le.trim()!==""||g.trim()!==""))||d.length>0||(f?.length||0)>0||i.length>0);o.useEffect(()=>{he.current&&!ae&&(Te.current?.resetCreateDraft(v),y?.resetDraft?.()),he.current=ae},[ae,y,v]);const G=o.useCallback((F=we())=>JSON.stringify({title:F.title.trim(),description:F.description,category:typeof c=="string"?c:c.label||P(t),type:typeof W=="string"?W:W.label||po,priority:Number(K),complexity:Number(p)||3,assignee:s||"agent",scheduledDate:Z||"",dueDate:h||"",workstreamInput:E.trim(),checklistItems:d,comments:f,taxonomies:M,attachments:i}),[t,s,i,c,d,f,p,g,h,M,P,K,we,Z,Le,W,E]),Ie=o.useCallback(()=>{ce.current!==null&&(window.clearTimeout(ce.current),ce.current=null)},[]),Fe=o.useCallback(F=>{if(xe.current===F.signature&&pe.current===null&&N.current||(pe.current=F,N.current))return N.current;const Ce=(async()=>{let ut=!0;for(;pe.current;){const mt=pe.current;pe.current=null,xe.current=mt.signature,ut=await mt.save(),ut&&He(mt.signature)}return xe.current=null,ut})().finally(()=>{xe.current=null,N.current=null});return N.current=Ce,Ce},[]),it=o.useCallback(async F=>{const Ne=F?.quiet??!1,Ce=F?.source??"manual",ut=F?.textDraft??we(),mt=ut.title,Ue=ut.description;if(w||(Ae.current=null),Xe)return je(Xe==="deleted"?"Deleted tasks are read-only. Restore first to make changes.":"Archived tasks are read-only. Unarchive first to make changes."),re(Ce==="autosave"?"error":"idle"),!1;if(!mt.trim())return je("Title is required"),w&&re(Ce==="autosave"?"error":"idle"),!1;const wt=se.filter(kt=>kt.isRequired).filter(kt=>{const rt=M[kt.id];return Array.isArray(rt)?rt.filter(Ht=>String(Ht).trim().length>0).length===0:typeof rt!="string"&&typeof rt!="number"||String(rt).trim().length===0}).map(kt=>kt.label);if(wt.length>0)return je(`Required taxonomy values are missing: ${wt.join(", ")}`),w&&re(Ce==="autosave"?"error":"idle"),!1;ue(!0),je(""),w&&re("saving");try{const kt=w?`/api/taskforce/task/${w}`:a.replace("/api/dev/task","/api/taskforce/task").replace("/api/taskforce/task","/api/taskforce/task"),rt=w?"PATCH":"POST",Ht=typeof c=="string"?c:c.label||P(t),lr=typeof W=="string"?W:W.label||po,rr=E.trim()?be(E):null,wr=w?D.find(nt=>nt.id===w):null,st=!w||!wr||En(wr.checklistItems||[])!==En(d),zt={title:mt,description:Ue||null,category:Ht||P(t),type:lr,priority:K,complexity:Number(p)||3,status:w?void 0:Pe,completedAt:w?void 0:Pe==="done"?new Date().toISOString():null,assignee:s||"agent",scheduledDate:Z||null,dueDate:h||null,workstreamId:E.trim()?rr?.id||E.trim():null,taxonomies:M,...w?{}:{createdAt:new Date().toISOString(),createdBy:"user"}};if(w&&wr)for(const[nt,Ct]of Object.entries(zt))(Ct===void 0||En(Ct??null)===En(wr[nt]??null))&&delete zt[nt];if(st&&(zt.checklistItems=d),w||(zt.comments=f),(!w||l)&&(zt.attachments=i),w&&Object.keys(zt).length>0&&(zt.saveSource=Ce),w&&S){const nt=await S(w,zt);return ue(!1),re(nt===!1?"error":"saved"),nt===!1?!1:(ye(Ht),Ve(!1),!0)}if(!w&&y){let nt;try{nt=await y(zt)}catch(Ct){console.error("Durable task create failed before a conclusive result.",Ct);const Rt="Task creation confirmation was interrupted. Retry the same task to confirm it safely.";return je(Rt),Ne||U(Rt,"error"),ue(!1),!1}if(nt){if(nt.state==="failed"||nt.state==="rejected"||nt.state==="ambiguous"||nt.state==="disabled"){const Ct=nt.state==="disabled"?"Task was not created because durable capture became unavailable. Reload before retrying.":nt.state==="failed"?"Task was not created because durable local preparation failed. Retry the task.":nt.state==="rejected"?`Task was not created because durable capture rejected it${nt.errorCode?` (${nt.errorCode})`:""}.`:"Task creation confirmation was interrupted. Retry the same task to confirm it safely.";return je(Ct),Ne||U(Ct,"error"),ue(!1),!1}if(nt.task){const Ct=xo(nt.task);Ae.current=Ct,$(Ct)}if(nt.recoveredChangedInput&&(X.current=!0,U("Recovered the previously interrupted task. Changes made after the interrupted submission were not applied.","info")),nt.state==="pending")nt.pendingReason!=="queued"&&(X.current=!0,U(nt.pendingReason==="auth"?"Task created locally. Sign in to finish cloud sync.":nt.pendingReason==="sync-disabled"?"Task created locally. Turn on sync to send it to cloud.":"Task created locally. Cloud sync will retry automatically.","info")),je("");else if(nt.state==="blocked"){X.current=!0;const Ct=`Task created locally, but cloud sync is blocked${nt.errorCode?` (${nt.errorCode})`:""}.`;je(Ct),U(Ct,"error")}else je("");return ye(Ht),Ve(!1),ue(!1),!0}}let Lt=!1,Mt=null,Ee=zt;if(k&&!w){Te.current||(Te.current=C||Lk());const nt=await Te.current.prepareCreate(v,zt);Mt=nt.operationId,Ee=nt.body,Lt=nt.recoveredChangedInput}const ct={method:rt,headers:{"Content-Type":"application/json"},body:JSON.stringify(Ee)},lt=Mt?await Dk(kt,ct,Mt):await fetch(kt,ct);if(!lt.ok){!w&&Mt&&await Kh(lt)&&await Te.current?.confirmCreate(v,Mt);const nt=await lt.json(),Ct=nt.error||nt.message||`Failed to ${w?"update":"save"} task`;return je(Ct),Ne||U(Ct,"error"),ue(!1),w&&re("error"),!1}const Je=await lt.json().catch(()=>null);if(!w&&Mt&&(!Je||typeof Je!="object"||String(Je.id||"")!==String(Ee.id||"")))throw new Error("Durable cloud task create returned an invalid authoritative task identity.");if(!w&&Mt&&await Te.current?.confirmCreate(v,Mt),Lt&&(X.current=!0,U("Recovered the previously interrupted task. Changes made after the interrupted submission were not applied.","info")),Je&&typeof Je=="object"){const nt=xo(Je);$(nt),w?L():Ae.current=nt}return ye(Ht),Ve(!1),ue(!1),w&&re("saved"),!0}catch(kt){return console.error("Failed to save task.",kt),je("Failed to connect to server"),Ne||U("Failed to connect to server","error"),ue(!1),w&&re("error"),!1}},[t,a,s,i,l,c,d,f,p,h,y,k,v,C,S,w,Xe,M,P,$,E,K,U,L,we,be,Ve,je,ye,ue,Z,Pe,se,W]),Me=o.useCallback(async()=>{if(await it({source:"manual"})&&(!w&&!X.current&&U("Task added successfully","success"),X.current=!1,r==="add"&&!w)){const Ne=Ae.current;if(Ne&&I){I(Ne);return}H(),me("tasks"),await _()}},[r,w,_,I,U,H,it,me]);o.useEffect(()=>{if(Ie(),pe.current=null,!w){He(null),re("idle");return}He(G()),re("idle")},[Ie,w]);const qe=o.useCallback(async()=>{if(Ie(),Xe||!w||de===null)return!0;const F=we(),Ne=G(F);return Ne===de?!0:!F.title.trim()||h&&Z&&h<Z?!1:await Fe({signature:Ne,save:()=>it({quiet:!0,source:"autosave",textDraft:F})})&&G()===Ne},[G,Ie,h,w,Xe,Fe,de,we,it,Z]);o.useEffect(()=>{if(!w||Xe||de===null)return;const F=we(),Ne=G(F);if(Ne===de)return;if(!F.title.trim()){re("idle");return}if(h&&Z&&h<Z){re("error");return}re(mt=>mt==="error"?"error":"idle"),Ie();const ut=(()=>{try{return String(JSON.parse(de).assignee||"")}catch{return""}})()!==String(s||"agent")?0:1400;return ce.current=window.setTimeout(async()=>{await Fe({signature:Ne,save:()=>it({quiet:!0,source:"autosave",textDraft:F})})},ut),()=>{Ie()}},[G,s,Ie,h,w,Xe,Fe,de,we,it,Z]);const ge=o.useCallback(async F=>{if(F.preventDefault(),h&&Z&&h<Z){le({dueDate:h,scheduledDate:Z});return}await Me()},[h,Me,Z]),_e=o.useCallback(async()=>{le(null),await Me()},[Me]),Be=o.useCallback(()=>{le(null)},[]),Ge=o.useCallback(async F=>{if(!w||!F.trim())return;const Ne=F.trim(),Ce=ot.current,ut=Ce?.taskId===w&&Ce.text===Ne?Ce:{taskId:w,text:Ne,operationId:globalThis.crypto?.randomUUID?.()||`comment-operation-${Date.now()}`,commentId:`comment-${globalThis.crypto?.randomUUID?.()||Date.now()}`,timestamp:new Date().toISOString()};ot.current=ut;try{const mt=await fetch(`/api/taskforce/task/${w}/comment`,{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-operation-id":ut.operationId},body:JSON.stringify({text:Ne,commentId:ut.commentId,timestamp:ut.timestamp})});if(!mt.ok){const wt=await Kh(mt),rt=(await mt.json().catch(()=>({}))).error||"Failed to add comment.";wt&&(ot.current=null),je(rt),U(rt,"error");return}const Ue=await mt.json().catch(()=>null);if(ot.current=null,ve(""),Ue&&typeof Ue=="object"){const wt=xo(Ue);Re(wt.comments||[]),$(Ue),He(G()),re("saved")}else await _(!0);L()}catch(mt){console.error("Failed to add comment",mt),je("Failed to add comment."),U("Failed to add comment.","error")}},[w,_,G,$,U,L,Re,je,ve]);return{autoSaveState:$e,flushAutoSave:qe,scheduleWarningPrompt:q,saveTask:it,handleSubmit:ge,confirmScheduleWarning:_e,cancelScheduleWarning:Be,handleAddComment:Ge}}function EN(e){const{editingTaskId:t,workstreamInput:r,pushNotice:a,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){a(y?"Task already belongs to that workstream.":"Task is already standalone.","info");return}try{if(await c(t,{workstreamId:y})===!1)return;l(""),a(y?"Workstream set":"Workstream removed","info")}catch{l("Failed to set workstream."),a("Failed to set workstream.","error")}},[t,r,a,s,i,l,c])}}const $v=new Set(["title","description","priority","complexity","type","category","createdBy","assignee","scheduledDate","dueDate","scheduledWeekKey","orderInDay","workstreamId","taxonomies"]);function NN(e){const t={};for(const r of $v)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}class xh extends Error{constructor(t,r,a){super(t),this.code=r,this.statusCode=a,this.name="DurableTaskMetadataMutationError"}}function EC(e){const t=e&&typeof e=="object"&&!Array.isArray(e)?e:null;if(!t)throw new xh("Task metadata patch must be an object.","DURABLE_TASK_PATCH_INVALID",400);const r=Object.keys(t);if(r.length===0)throw new xh("Task metadata patch cannot be empty.","DURABLE_TASK_PATCH_INVALID",400);const a=r.filter(s=>!$v.has(s));if(a.length>0)throw new xh(`Task metadata patch contains unsupported fields: ${a.sort().join(", ")}.`,"DURABLE_TASK_PATCH_INVALID",400);return{...t}}const cd="taskforce:tasks-mutated";function jN(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(cd,{detail:e}))}const th=$v,MN=new Set(["status","assignee","canceledReason","completedAt","completed","inProgress","readyForReview","cancelled"]);function DN(e,t){return e===void 0||t===void 0?e===t:En(e)===En(t)}function la(e,t,r,a){return t?e.map(s=>{if(s.id!==r)return s;const i={...s};for(const l of Object.keys(a))Object.prototype.hasOwnProperty.call(t,l)?i[l]=t[l]:delete i[l];return i}):e}function qp(e,t){return{taskId:t,updatedAt:e?.updatedAt??null,status:e?.status??null,isArchived:e?.isArchived===!0}}function LN({tasks:e,archivedTasks:t,editingTaskId:r,setTasks:a,setArchivedTasks:s,setDeletedTasks:i,setError:l,resetForm:c,setActiveTab:d,fetchTasks:f,fetchArchive:p,fetchDeletedTasks:g,mergeTaskFromServer:h,pushNotice:y,cloudAuthConfigured:k,runtimeMode:v,isAuthenticated:C,workspaceCloudSyncEnabled:S,buildWorkspaceSyncSignature:w,pushWorkspaceChangesToCloud:_,workspacePendingSignatureRef:M,workspaceDeletedTaskIdsRef:R,workspaceDeletedTaskWatermarksRef:P,mutateTaskMetadata:b,mutateTaskStatus:$,mutateTaskLifecycle:I,mutateTaskDelete:E,mutateTaskRestore:K,durableTaskMetadataActivationEnabled:U=!1,durableTaskStatusActivationEnabled:L=!1,durableTaskDeleteActivationEnabled:D=!1,durableTaskHttpRootActivationEnabled:ie=!1,workspaceId:H="default",taskHttpMutationClient:be}){const Z=o.useRef(new Map);o.useEffect(()=>{if(typeof window>"u")return;const N=X=>{const Ae=X.detail,Te=Ae?.authoritativeTask,he=String(Ae?.workspaceId||"").trim()||"default";!Te||he!==H||(Z.current.set(Te.id,Te),h(Te))};return window.addEventListener(cd,N),()=>window.removeEventListener(cd,N)},[h,H]);const[me,Ve]=o.useState(null),Re=o.useRef(null),je=o.useRef(null),ye=o.useRef(null),ue=o.useRef(null),ve=o.useCallback(async(N,X,Ae,Te,he)=>{const ot=["checklistItems","attachments","comments"].some(ae=>Object.prototype.hasOwnProperty.call(Ae,ae));if(!ie&&!ot)return fetch(N,X);ue.current||(ue.current=be||Lk());const We=await ue.current.prepareUpdate(H,N,Ae,Te),Xe=await Dk(N,X,We.operationId);if(Xe.ok){const ae=await Xe.clone().json().catch(()=>null);if(!he(ae))throw new Error("Durable cloud task mutation returned an invalid authoritative response.");await ue.current.confirmUpdate(We.fingerprint,We.operationId)}else await Kh(Xe)&&await ue.current.confirmUpdate(We.fingerprint,We.operationId);return Xe},[ie,be,H]),Pe=o.useCallback((N,X,Ae,Te,he)=>ve(N,X,Ae,he,ot=>!!ot&&typeof ot=="object"&&String(ot.id||"")===Te),[ve]);o.useEffect(()=>()=>{typeof window>"u"||(je.current!==null&&(window.clearTimeout(je.current),je.current=null),ye.current=null)},[]);const Le=o.useCallback((N=0)=>{if(!(k&&v==="local"&&C&&S)||typeof window>"u")return;const X=Math.max(0,N),Ae=Date.now()+X,Te=ye.current;if(je.current!==null){if(X<=0||Te!==null&&Te>=Ae)return;window.clearTimeout(je.current),je.current=null}ye.current=Ae,je.current=window.setTimeout(()=>{je.current=null,ye.current=null;const he=w();he&&(M.current=he,_(he))},X)},[k,v,C,S,w,M,_]),se=o.useCallback(async(N,X)=>{let Ae=await fetch(`/api/taskforce/deleted${N}`,X);return Ae.status===404&&(Ae=await fetch(`/api/taskforce/trash${N}`,X)),Ae},[]),V=async(N,X=!1,Ae={})=>{if(!Ae.skipConfirm&&!confirm("Move this task to Trash? You can restore it later."))return!1;const Te=X||t.some(he=>he.id===N);try{let he=null;if(D){const Xe=await E?.(N);if(!Xe){const ae="Task was not deleted because durable capture was unavailable.";return l(ae),y(ae,"error"),!1}if(Xe.state!=="disabled"){if(Xe.state==="rejected"||Xe.state==="failed"||Xe.state==="ambiguous"){const ae=Xe.state==="ambiguous"?"Task delete confirmation was interrupted. Retry the same delete to confirm it safely.":`Task was not deleted because durable capture rejected it${Xe.errorCode?` (${Xe.errorCode})`:""}.`;return l(ae),y(ae,"error"),!1}if(he=Xe.deleted||null,!he){const ae="Task delete was captured, but its Trash record was unavailable.";return l(ae),y(ae,"error"),!1}}}let ot=he?{deleted:he}:{};if(!he){const Xe=`/api/taskforce/task/${N}`,ae=e.find(Ie=>Ie.id===N)||t.find(Ie=>Ie.id===N),G=await ve(Xe,{method:"DELETE"},{},qp(ae,N),Ie=>!!Ie&&typeof Ie=="object"&&Ie.success===!0&&!!Ie.deleted&&typeof Ie.deleted=="object"&&String(Ie.deleted.taskId||"")===N);if(!G.ok){const Fe=(await G.json().catch(()=>({}))).error||"Failed to delete task.";return l(Fe),y(Fe,"error"),!1}ot=await G.json().catch(()=>({}))}const We=ot?.deleted&&typeof ot.deleted=="object"&&ot.deleted.taskSnapshot?{...ot.deleted,taskSnapshot:xo(ot.deleted.taskSnapshot)}:null;if(window.location.search.includes(N)){const Xe=new URL(window.location.href);Xe.searchParams.delete("task"),window.history.pushState({},"",Xe.toString())}if(Te?s(Xe=>Xe.filter(ae=>ae.id!==N)):a(Xe=>Xe.filter(ae=>ae.id!==N)),We){i(ae=>[We,...ae.filter(G=>G.taskId!==N)]);const Xe=String(We.deletedAt||"").trim();Number.isFinite(Date.parse(Xe))&&P.current.set(N,Xe)}else await g(!0),P.current.set(N,new Date().toISOString());if(R.current.add(N),!he&&k&&v==="local"&&C&&S){const Xe=w();M.current=Xe,_(Xe)}return r===N&&(c(),d("tasks")),l(""),y("Task moved to Trash.","info"),!0}catch(he){return console.error("Failed to delete task:",he),l("Failed to delete task."),y("Failed to delete task.","error"),!1}},W=o.useCallback(async(N,X,Ae={})=>{try{const Te=`/api/taskforce/deleted/${N}/restore`,he=String(X||"").trim();if(D){if(!he||!K)throw new Error("Durable local task restore requires the expected task identity and capture client.");const G=await K(N,he,Ae.restoreDestination||"previous");if(!G||G.state==="failed"||G.state==="ambiguous"||G.state==="rejected"||G.state==="disabled"){const Fe="Failed to capture task restore durably.";return l(Fe),Ae.silent||y(Fe,"error"),null}const Ie=G.task;if(!Ie||Ie.id!==he)throw new Error("Durable local task restore did not return the restored task.");return h(Ie),i(Fe=>Fe.filter(it=>it.id!==N&&it.taskId!==he)),R.current.delete(N),R.current.delete(he),P.current.delete(N),P.current.delete(he),l(""),Ae.silent||y(G.state==="accepted"?"Task restored from Trash.":"Task restored locally; cloud sync is pending.","info"),xo(Ie)}if(ie&&!he)throw new Error("Durable cloud task restore requires the expected task identity.");const ot=P.current.get(he)||P.current.get(N)||null,We=ie?await ve(Te,{method:"POST"},{},{taskId:he,updatedAt:ot,status:"deleted",isArchived:!1},G=>!G||typeof G!="object"?!1:String(G.id||"").trim()===he):await se(`/${N}/restore`,{method:"POST"});if(!We.ok){const Ie=(await We.json().catch(()=>({}))).error||"Failed to restore deleted task.";return l(Ie),Ae.silent||y(Ie,"error"),null}const Xe=await We.json().catch(()=>null);Xe?h(Xe):await f(!0);const ae=String(Xe?.id||"").trim();return i(G=>G.filter(Ie=>Ie.id!==N&&Ie.taskId!==he&&Ie.taskId!==ae)),R.current.delete(N),P.current.delete(N),ae&&(R.current.delete(ae),P.current.delete(ae)),Le(),l(""),Ae.silent||y(Xe?.isArchived===!0?"Task restored to Archived.":"Task restored to Active.","info"),Xe?xo(Xe):null}catch(Te){return console.error("Failed to restore deleted task:",Te),l("Failed to restore deleted task."),Ae.silent||y("Failed to restore deleted task.","error"),null}},[ie,D,ve,f,h,K,y,Le,se,i,l]),z=o.useCallback(async N=>{try{const X=await se(`/${N}`,{method:"DELETE"});if(!X.ok){const Te=(await X.json().catch(()=>({}))).error||"Failed to permanently delete deleted task.";return l(Te),y(Te,"error"),!1}return i(Ae=>Ae.filter(Te=>Te.id!==N&&Te.taskId!==N)),Le(),l(""),y("Deleted task permanently removed.","info"),!0}catch(X){return console.error("Failed to permanently delete deleted task:",X),l("Failed to permanently delete deleted task."),y("Failed to permanently delete deleted task.","error"),!1}},[y,Le,se,i,l]),fe=o.useCallback(async()=>{try{const N=await se("/empty",{method:"POST"});if(!N.ok){const he=(await N.json().catch(()=>({}))).error||"Failed to permanently delete deleted tasks.";return l(he),y(he,"error"),null}const X=await N.json().catch(()=>({})),Ae=Number(X?.deleted||0);return i([]),Le(),l(""),y(Ae===1?"Deleted task permanently removed.":`${Ae} deleted tasks permanently removed.`,"info"),Ae}catch(N){return console.error("Failed to empty deleted tasks:",N),l("Failed to permanently delete deleted tasks."),y("Failed to permanently delete deleted tasks.","error"),null}},[y,Le,se,i,l]),ke=o.useCallback((N,X,Ae,Te,he)=>{if(N.state==="disabled")return!1;if(N.state==="rejected"||N.state==="failed"){const ot=Te.find(Xe=>Xe.id===X)||he.find(Xe=>Xe.id===X);a(Xe=>la(Xe,ot,X,Ae)),s(Xe=>la(Xe,ot,X,Ae));const We=N.state==="failed"?"Task was not saved because durable local preparation failed. Retry the edit.":N.retryable?"Task was not saved because durable capture is busy. Retry the edit shortly.":`Task was not saved because durable capture rejected it${N.errorCode?` (${N.errorCode})`:""}.`;return l(We),y(We,"error"),!0}if("task"in N&&N.task&&h(N.task),N.state==="accepted")l("");else if(N.state==="pending")l(""),N.pendingReason!=="queued"&&y(N.pendingReason==="auth"?"Task saved locally. Sign in to finish cloud sync.":N.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 ot=N.state==="blocked"?`Task saved locally, but cloud sync is blocked${N.errorCode?` (${N.errorCode})`:""}.`:"Task save confirmation was interrupted. Retry the same edit to confirm it safely.";l(ot),y(ot,"error")}return!0},[h,y,s,l,a]),Y=o.useCallback(async(N,X,Ae={})=>{const Te=Object.keys(Ae).some(G=>th.has(G)),he=Object.keys(Ae).filter(G=>!MN.has(G)&&!th.has(G));if(L&&he.length>0){const G=`Task status was not saved because the combined update contains unsupported fields: ${he.sort().join(", ")}.`;l(G),y(G,"error");return}const ot=new Date().toISOString(),We={...Ae,status:X,completedAt:X==="done"||X==="cancelled"?Ae.completedAt||ot:null,completed:X==="done",inProgress:X==="in-progress",readyForReview:X==="review",cancelled:X==="cancelled"},Xe=e,ae=t;if(a(G=>G.map(Ie=>Ie.id===N.id?{...Ie,...We}:Ie)),s(G=>G.map(Ie=>Ie.id===N.id?{...Ie,...We}:Ie)),$)try{const G=Object.prototype.hasOwnProperty.call(Ae,"assignee")?{kind:"set",value:Ae.assignee??null}:{kind:"preserve"},Ie=NN(Ae);delete Ie.assignee;const Fe=await $(N.id,{status:X,assigneeIntent:G,canceledReason:X==="cancelled"?Ae.canceledReason??null:null,metadataPatch:Ie});if(Fe&&ke(Fe,N.id,We,Xe,ae))return;if(!Fe&&L){const it=Xe.find(qe=>qe.id===N.id)||ae.find(qe=>qe.id===N.id);a(qe=>la(qe,it,N.id,We)),s(qe=>la(qe,it,N.id,We));const Me="Task status was not saved because durable capture was unavailable.";l(Me),y(Me,"error");return}}catch(G){console.error("Durable task status update failed before a conclusive result.",G);const Ie=Xe.find(it=>it.id===N.id)||ae.find(it=>it.id===N.id);a(it=>la(it,Ie,N.id,We)),s(it=>la(it,Ie,N.id,We));const Fe="Task save confirmation was interrupted. Retry the same edit to confirm it safely.";l(Fe),y(Fe,"error");return}if(U&&Te){const G=Xe.find(Fe=>Fe.id===N.id)||ae.find(Fe=>Fe.id===N.id);a(Fe=>la(Fe,G,N.id,We)),s(Fe=>la(Fe,G,N.id,We));const Ie="Task was not saved because durable status capture is required for this combined metadata update.";l(Ie),y(Ie,"error");return}try{const G={...Ae,status:X,completedAt:We.completedAt},Ie={method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(G)},Fe=await Pe(`/api/taskforce/task/${N.id}`,Ie,G,N.id,qp(N,N.id));if(!Fe.ok){const qe=(await Fe.json().catch(()=>({}))).error||"Failed to update task status.";l(qe),y(qe,"error"),a(Xe),s(ae);return}const it=await Fe.json().catch(()=>null);it?h(it):await f(!0),Le(),l("")}catch(G){console.error("Failed to update task status.",G),l("Failed to update task status."),y("Failed to update task status.","error"),a(Xe),s(ae)}},[t,U,ie,L,f,Pe,ke,h,$,y,Le,s,l,a,e]),we=o.useCallback(async(N,X)=>{const Ae=X.saveSource;if(X=Object.fromEntries(Object.entries(X).filter(([ge])=>ge!=="saveSource")),Object.keys(X).length===0)return!0;const Te=Z.current.get(N),he=e.find(ge=>ge.id===N)||t.find(ge=>ge.id===N),ot=Date.parse(String(Te?.updatedAt||"")),We=Date.parse(String(he?.updatedAt||"")),Xe=Te&&(!he||Number.isFinite(ot)&&(!Number.isFinite(We)||ot>=We))?Te:he;if(he&&Xe===he&&Te&&Z.current.delete(N),Xe&&(X=Object.fromEntries(Object.entries(X).filter(([ge,_e])=>!DN(Xe[ge],_e))),Object.keys(X).length===0))return!0;if(X.status){const ge=e.find(_e=>_e.id===N)||t.find(_e=>_e.id===N);if(ge){await Y(ge,X.status,X);return}if(L){const _e="Task status was not saved because the current task could not be resolved safely.";l(_e),y(_e,"error");return}}const ae=e,G=t;a(ge=>ge.map(_e=>_e.id===N?{..._e,...X}:_e)),s(ge=>ge.map(_e=>_e.id===N?{..._e,...X}:_e));const Ie=Object.fromEntries(Object.entries(X).filter(([ge])=>th.has(ge)));let Fe=Object.fromEntries(Object.entries(X).filter(([ge])=>!th.has(ge)));const it=Object.keys(Ie).length>0;let Me=Object.keys(Fe).length>0,qe=!1;if(it&&b)try{const ge=Ae?await b(N,Ie,{saveSource:Ae}):await b(N,Ie);if(ge&&ge.state!=="disabled"){if(ge.state==="rejected"||ge.state==="failed"){const _e=ae.find(Ge=>Ge.id===N)||G.find(Ge=>Ge.id===N);a(Ge=>la(Ge,_e,N,X)),s(Ge=>la(Ge,_e,N,X));const Be=ge.state==="failed"?"Task was not saved because durable local preparation failed. Retry the edit.":ge.retryable?"Task was not saved because durable capture is busy. Retry the edit shortly.":`Task was not saved because durable capture rejected it${ge.errorCode?` (${ge.errorCode})`:""}.`;return l(Be),y(Be,"error"),!1}if(qe=!0,"task"in ge&&ge.task&&h(ge.task),ge.state==="accepted")l("");else if(ge.state==="pending")l(""),ge.pendingReason!=="queued"&&y(ge.pendingReason==="auth"?"Task saved locally. Sign in to finish cloud sync.":ge.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 _e=ge.state==="blocked"?`Task saved locally, but cloud sync is blocked${ge.errorCode?` (${ge.errorCode})`:""}.`:"Task save confirmation was interrupted. Retry the same edit to confirm it safely.";l(_e),y(_e,"error")}if(ge.state==="ambiguous"){if(Me){const _e=ae.find(Be=>Be.id===N)||G.find(Be=>Be.id===N);a(Be=>la(Be,_e,N,Fe)),s(Be=>la(Be,_e,N,Fe))}return!1}if(!Me)return!0}else if(U){const _e=ae.find(Ge=>Ge.id===N)||G.find(Ge=>Ge.id===N);a(Ge=>la(Ge,_e,N,X)),s(Ge=>la(Ge,_e,N,X));const Be="Task was not saved because durable metadata capture was unavailable.";return l(Be),y(Be,"error"),!1}}catch(ge){if(console.error("Durable task metadata update failed before a conclusive result.",ge),Me){const Be=ae.find(Ge=>Ge.id===N)||G.find(Ge=>Ge.id===N);a(Ge=>la(Ge,Be,N,Fe)),s(Ge=>la(Ge,Be,N,Fe))}const _e="Task save confirmation was interrupted. Retry the same edit to confirm it safely.";return l(_e),y(_e,"error"),!1}else if(it&&U){const ge=ae.find(Be=>Be.id===N)||G.find(Be=>Be.id===N);a(Be=>la(Be,ge,N,X)),s(Be=>la(Be,ge,N,X));const _e="Task was not saved because durable metadata capture was unavailable.";return l(_e),y(_e,"error"),!1}if(it&&!qe&&(Fe={...Ie,...Fe},Me=!0),!Me)return!0;try{const ge={...Fe,...Ae?{saveSource:Ae}:{}},_e={method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(ge)},Be=await Pe(`/api/taskforce/task/${N}`,_e,ge,N,qp(ae.find(F=>F.id===N)||G.find(F=>F.id===N),N));if(!Be.ok){const Ne=(await Be.json().catch(()=>({}))).error||`Failed to update task ${N}.`;l(Ne),y(Ne,"error");const Ce=ae.find(ut=>ut.id===N)||G.find(ut=>ut.id===N);return a(ut=>la(ut,Ce,N,Fe)),s(ut=>la(ut,Ce,N,Fe)),!1}const Ge=await Be.json().catch(()=>null);return h(Ge),Le(X.attachments!==void 0?150:0),l(""),!0}catch(ge){console.error("Failed to update task",ge);const _e=`Failed to update task ${N}.`;l(_e),y(_e,"error");const Be=ae.find(Ge=>Ge.id===N)||G.find(Ge=>Ge.id===N);return a(Ge=>la(Ge,Be,N,Fe)),s(Ge=>la(Ge,Be,N,Fe)),!1}},[e,t,y,h,b,Le,Y,U,L,Pe]),q=async N=>{const X=N.status==="done"?"task":"done";await Y(N,X)},le=async N=>{const X=N.status==="cancelled"?"task":"cancelled";await Y(N,X)},$e=async N=>{const X=N.status==="in-progress"?"task":"in-progress";await Y(N,X)},re=async N=>{const X=N.status==="review"?"task":"review";await Y(N,X)},de=async N=>{if(I)try{const X=await I(N.id,{mutationKind:"archive",cancellation:N.status==="cancelled",reason:N.status==="cancelled"?N.canceledReason??null:null});if(X&&ke(X,N.id,{},e,t)){const Ae=X.state!=="rejected"&&X.state!=="failed"&&X.state!=="ambiguous";return r===N.id&&Ae&&(c(),d("tasks")),Ae}if(!X&&L)throw new Error("Durable task archive activation returned no result.")}catch(X){console.error("Durable task archive failed before a conclusive result.",X);const Ae="Task archive confirmation was interrupted. Retry the same action to confirm it safely.";return l(Ae),y(Ae,"error"),!1}try{const Ae=N.status==="cancelled"?"cancel":"complete",Te=`/api/taskforce/task/${N.id}/${Ae}`,he=await ve(Te,{method:"POST"},{},qp(N,N.id),ot=>!!ot&&typeof ot=="object"&&String(ot.id||"")===N.id);if(he.ok){const ot=await he.json().catch(()=>null),We=[];if(ot&&typeof ot=="object"&&We.push(ot),We.length>0){for(const ae of We)h(ae);Le()}else p();const Xe=new Set(We.map(ae=>String(ae?.id||"").trim()).filter(ae=>ae.length>0));return r&&Xe.has(r)&&(c(),d("tasks")),!0}else{const We=(await he.json().catch(()=>({}))).error||"Failed to archive task.";return l(We),y(We,"error"),!1}}catch(X){return console.error("Failed to archive",X),l("Failed to archive task."),y("Failed to archive task.","error"),!1}},He=async()=>{const N=e.filter(X=>X.status==="done"||X.status==="cancelled");if(N.length!==0&&confirm(`Archive ${N.length} completed/cancelled tasks?`)){if(I){let X=!1,Ae=0;for(const Te of N)try{const he=await I(Te.id,{mutationKind:"archive",cancellation:Te.status==="cancelled",reason:Te.status==="cancelled"?Te.canceledReason??null:null});if(!he||he.state==="disabled"){if(!X&&(!L||he?.state==="disabled"))break;const ot="Bulk archive stopped safely because durable capture became unavailable.";l(ot),y(ot,"error");return}if(X=!0,ke(he,Te.id,{},e,t)){if(he.state==="rejected"||he.state==="failed")return;Ae+=1}}catch(he){console.error("Durable bulk archive confirmation was interrupted.",he);const ot="Bulk archive stopped safely. Retry to confirm the remaining tasks.";l(ot),y(ot,"error");return}if(X){y(`${Ae} tasks archived`,"info"),l("");return}}try{const X=await fetch("/api/taskforce/bulk-archive",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:N.map(Ae=>Ae.id)})});if(X.ok){const Ae=await X.json(),Te=Array.isArray(Ae?.results?.archived)?Ae.results.archived:[];if(Te.length>0){for(const he of Te)h(he);Le()}else a(he=>he.filter(ot=>!["done","cancelled"].includes(ot.status))),p();y(`${Ae.archived||N.length} tasks archived`,"info"),l("")}else{const Te=(await X.json().catch(()=>({}))).error||"Failed to bulk archive tasks.";l(Te),y(Te,"error")}}catch(X){console.error("Failed to bulk archive",X),l("Failed to bulk archive tasks."),y("Failed to bulk archive tasks.","error")}}},ce=async N=>{if(I)try{const X=await I(N,{mutationKind:"unarchive"});if(X&&ke(X,N,{},e,t)){X.state!=="rejected"&&X.state!=="failed"&&y("Task restored from archive.","info");return}if(!X&&L)throw new Error("Durable task unarchive activation returned no result.")}catch(X){console.error("Durable task unarchive failed before a conclusive result.",X);const Ae="Task restore confirmation was interrupted. Retry the same action to confirm it safely.";l(Ae),y(Ae,"error");return}try{const X=`/api/taskforce/task/${N}/unarchive`,Ae=t.find(he=>he.id===N)||e.find(he=>he.id===N),Te=await ve(X,{method:"POST"},{},qp(Ae,N),he=>!!he&&typeof he=="object"&&String(he.id||"")===N);if(Te.ok){const he=await Te.json().catch(()=>null);he?(h(he),Le()):(s(ot=>ot.filter(We=>We.id!==N)),await f(!0),Le()),l(""),y("Task restored from archive.","info")}}catch(X){console.error("Failed to unarchive",X),l("Failed to unarchive task."),y("Failed to unarchive task.","error")}},pe=o.useCallback(async(N,X="previous",Ae)=>{const Te=Array.from(new Map(N.map(ae=>[ae.id,ae])).values()),he={requested:Te.length,completed:0,succeeded:[],failed:[]},ot=()=>Ae?.({...he,succeeded:[...he.succeeded],failed:[...he.failed]}),We=(ae,G,Ie)=>{he.failed.push({deletedRecordId:ae.id,taskId:ae.taskId,title:ae.taskSnapshot.title,message:G,...Ie?{code:Ie}:{}}),he.completed+=1,ot()},Xe=(ae,G)=>{h(G),i(Ie=>Ie.filter(Fe=>Fe.id!==ae.id&&Fe.taskId!==G.id)),R.current.delete(ae.id),R.current.delete(ae.taskId),P.current.delete(ae.id),P.current.delete(ae.taskId),he.succeeded.push(ae),he.completed+=1,ot()};if(D)for(const ae of Te){const G=await W(ae.id,ae.taskId,{silent:!0,restoreDestination:X});G?Xe(ae,G):We(ae,"Failed to capture or confirm the durable restore.")}else{for(let ae=0;ae<Te.length;ae+=50){const G=Te.slice(ae,ae+50),Ie=G.map(it=>it.id),Fe=X==="archive"?{ids:Ie,restoreDestination:X}:{ids:Ie};try{let it,Me=null;ie?(ue.current||(ue.current=be||Lk()),Me=await ue.current.prepareUpdate(H,"/api/taskforce/deleted/restore-batch",Fe,X==="archive"?{deletedRecordIds:Ie,restoreDestination:X}:{deletedRecordIds:Ie}),it=await Dk("/api/taskforce/deleted/restore-batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Fe)},Me.operationId)):it=await se("/restore-batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Fe)});const qe=await it.json().catch(()=>({}));if(Me&&(it.ok||await Kh(it))&&await ue.current?.confirmUpdate(Me.fingerprint,Me.operationId),!it.ok){const Be=String(qe.error||"Failed to restore the selected Trash records.");G.forEach(Ge=>We(Ge,Be));continue}const ge=new Map(G.map(Be=>[Be.id,Be])),_e=new Set;for(const Be of qe.results||[]){const Ge=String(Be.deletedRecordId||"").trim(),F=ge.get(Ge);if(!F||!Be.task)continue;const Ne=xo(Be.task);Ne.id===F.taskId&&(_e.add(Ge),Xe(F,Ne))}for(const Be of qe.errors||[]){const Ge=String(Be.id||"").trim(),F=ge.get(Ge);!F||_e.has(Ge)||(_e.add(Ge),We(F,String(Be.message||"Failed to restore the deleted task."),Be.code?String(Be.code):void 0))}for(const Be of G)_e.has(Be.id)||We(Be,"The restore response did not include this deleted record.")}catch(it){const Me=it instanceof Error?it.message:"The restore request was interrupted.";G.forEach(qe=>We(qe,Me))}}Le()}if(he.failed.length>0){const ae=`${he.succeeded.length} restored; ${he.failed.length} failed and remain selected.`;l(ae),y(ae,"error")}else he.succeeded.length>0&&(l(""),y(X==="archive"?`${he.succeeded.length} task${he.succeeded.length===1?"":"s"} restored to Archive.`:`${he.succeeded.length} task${he.succeeded.length===1?"":"s"} restored from Trash.`,"info"));return he},[D,ie,W,h,y,Le,se,i,l,be,R,P,H]);return{copiedId:me,handleDelete:V,handleUpdateTask:we,handleSetStatus:Y,handleToggleComplete:q,handleToggleCancel:le,handleToggleInProgress:$e,handleToggleReview:re,handleArchiveTask:de,handleBulkArchive:He,handleUnarchive:ce,handleRestoreDeletedTask:W,handleRestoreSelectedDeletedTasks:pe,handlePermanentlyDeleteDeletedTask:z,handleEmptyDeletedTasks:fe,handleCopyId:(N,X)=>{N.stopPropagation(),navigator.clipboard.writeText(X),Ve(X),Re.current!==null&&window.clearTimeout(Re.current),Re.current=window.setTimeout(()=>{Re.current=null,Ve(null)},2e3)},queueWorkspaceSyncFromAuthoritativeTaskState:Le}}const ON=LN;function rh(e){return e==="/api/taskforce/auth/runtime-config"||e==="/api/taskforce/sync/workspace/apply-local"||e==="/api/taskforce/sync/workspace/repair-startup"}function BN(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 WN({currentWorkspaceIdRef:e,resolveApiUrl:t,runtimeMode:r}){o.useEffect(()=>{if(typeof window>"u"||typeof window.fetch!="function")return;const a=window.fetch.bind(window),s=i=>{if(typeof i=="string")return r!=="cloud"?i:i.startsWith("/api/taskforce")&&!rh(i)?t(i):i;if(i instanceof URL)return r!=="cloud"?i:i.origin===window.location.origin&&i.pathname.startsWith("/api/taskforce")?rh(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 rh(l.pathname)?i:t(`${l.pathname}${l.search}${l.hash}`)}return i};return window.fetch=((i,l)=>{const c=s(i),d=BN(c);if(!!!(d&&d.pathname.startsWith("/api/taskforce")&&!rh(d.pathname)))return a(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((v,C)=>h.set(C,v)),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 a(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")),a(c,{...l,headers:g})}),()=>{window.fetch=a}},[e,t,r])}const lf=12e3,$N=3e4,FN=2e4;function nh(e){return e==="cloud"?$N:lf}function Ob(){return typeof performance<"u"?performance.now():Date.now()}function UN({runtimeConfigReady:e,shouldProbeCloudAuth:t,authSessionResolved:r,resolveCloudAuthUrl:a,authOnlyCloudMode:s,authRequiredError:i,runtimeMode:l,workspaceSelectionScope:c,markBootstrapPhase:d,markBootstrapStalled:f,setRuntimeMode:p,setAuthRequiredForApi:g,setIsAuthenticated:h,setAuthUserId:y,setAuthWorkspaceId:k,setAuthUserEmail:v,setAuthUserDisplayName:C,setAuthUserAvatarUrl:S,setUserGlobalSyncStatus:w,setUserGlobalSyncError:_,setHasBetaAccess:M,setAvailableWorkspaces:R,setHydratedWorkspaceRole:P,setAssigneeOptions:b,setAuthBlocked:$,setAuthSessionResolved:I,setError:E,applyResolvedWorkspaceId:K,readPersistedWorkspaceId:U,authSessionRequestRef:L,authSessionEpochRef:D,authSessionLastCheckedAtRef:ie,authSessionLastResultRef:H,isLoopbackHost:be,setAuthStateReadyRefs:Z}){const me=o.useCallback(async Re=>{const je=Re?.force===!0;if(d("auth"),!e)return H.current;if(!t)return p("local"),g(!1),h(!1),y("anonymous"),k(""),rf(null),v(""),C(""),S(""),w("disconnected"),_(null),M(!0),R([]),P(null),b(el()),$(!1),I(!0),Z(!1,!0,!1),H.current=!1,ie.current=Date.now(),!1;const ye=a("/api/taskforce/auth/session"),ue=Date.now();if(!je&&L.current)return L.current;if(!je&&r&&ue-ie.current<1500)return H.current;const ve=++D.current;let Pe=null;return Pe=(async()=>{const Le=Ob(),se=new AbortController,V=typeof window<"u"?window.setTimeout(()=>se.abort(),FN):null,W=()=>D.current!==ve,z=(fe,ke)=>{hr(fe,{durationMs:Math.max(0,Math.round(Ob()-Le)),force:je,sessionUrl:ye,...ke})};try{const fe=await fetch(ye,{method:"GET",credentials:"include",mode:"cors",signal:se.signal});if(W())return H.current;if(fe.status===429)return I(!0),Z(H.current,!0,!1),z("auth_session_rate_limited",{status:fe.status}),H.current;if(!fe.ok)return W()?H.current:(be&&rf(null),I(!0),Z(!1,!0,!1),H.current=!1,z("auth_session_request_failed",{status:fe.status}),!1);const ke=await fe.json();if(W())return H.current;const Y=!!ke.authRequiredForApi,we=!!ke.authenticated,q=we?ke.betaAccess!==!1:!0,le=typeof ke.workspaceId=="string"&&ke.workspaceId.trim().length>0?ke.workspaceId.trim():"",$e=typeof ke.userId=="string"&&ke.userId.trim().length>0?ke.userId.trim():"anonymous",re=typeof ke.email=="string"&&ke.email.trim().length>0?ke.email.trim().toLowerCase():"",de=typeof ke.displayName=="string"?ke.displayName.trim():"",He=typeof ke.avatarUrl=="string"?ke.avatarUrl.trim():"",ce=l==="local",pe=l==="local"||s,xe=s||ce?!1:Y;return g(xe),h(we),y(we?$e:"anonymous"),k(we?le:""),be&&rf(we?$e:null),v(we?re:""),C(we?de:""),S(we?He:""),we&&E(N=>N===i?"":N),w(we?"idle":"disconnected"),_(null),M(q),pe||K(le||U(c)||"default",{preserveNonDefaultDefault:!0}),$(s||ce?!1:Y&&!we),I(!0),Z(we,!0,xe),H.current=we,we&&d("ready"),z("auth_session_resolved",{status:fe.status,authenticated:we,workspaceId:we?le:"",userId:we?$e:"anonymous",authRequiredForApi:xe}),we}catch(fe){return W()||(be&&rf(null),I(!0),Z(!1,!0,!1),H.current=!1,f("Unable to verify your session."),z("auth_session_exception",{error:fe instanceof Error?fe.message:String(fe)})),H.current}finally{V!==null&&typeof window<"u"&&window.clearTimeout(V),W()||(ie.current=Date.now()),Pe&&L.current===Pe&&(L.current=null)}})(),L.current=Pe,Pe},[e,t,r,a,s,i,l,c,d,f,p,g,h,y,k,v,C,S,w,_,M,R,P,b,$,I,E,K,U,L,D,ie,H,be,Z]),Ve=l==="local"&&be&&t?kv():"";return o.useEffect(()=>{Ve&&(h(!0),I(!0),y(Ve),Z(!0,!0,!1),H.current=!0)},[Ve,I,Z,y,h,H]),o.useEffect(()=>{if(l!=="local"||!t||typeof window>"u")return;const Re=()=>{me()},je=()=>{document.visibilityState==="visible"&&Re()};window.addEventListener("focus",Re),window.addEventListener("online",Re),document.addEventListener("visibilitychange",je);const ye=window.setInterval(Re,3e4);return()=>{window.removeEventListener("focus",Re),window.removeEventListener("online",Re),document.removeEventListener("visibilitychange",je),window.clearInterval(ye)}},[l,t,me]),{checkAuthSession:me}}function zN(e){const t=e.runtimeMode==="cloud",r=!!(e.shouldGateProtectedApiCalls&&t&&!e.authSessionResolved),a=!!(e.shouldGateProtectedApiCalls&&t&&e.authSessionResolved&&e.authRequiredForApi&&!e.isAuthenticated);return{shouldDeferProtectedApiCalls:r,shouldBlockProtectedApiCalls:a,canCallProtectedApi:!(r||a)}}function HN(e){return!!(!e.isOpen||!e.canCallProtectedApi||e.authBlocked||e.authRequiredForApi&&!e.isAuthenticated)}function VN(e){return!!(e.shouldGateProtectedApiCalls&&!e.authSessionResolved||e.authRequiredForApi&&!e.isAuthenticated)}function _n(){return typeof performance<"u"?performance.now():Date.now()}function GN(e){const{shouldDeferProtectedApiCalls:t,shouldBlockProtectedApiCalls:r,getWorkspaceRequestState:a,isWorkspaceRequestStale:s,isWorkspaceEpochStale:i,isAbortError:l,isBootstrapTimeoutError:c,fetchWithTimeout:d,handleUnauthorized:f,applyBootstrapConfig:p,loadPersistedUiState:g,fetchBuildInfo:h,markBootstrapPhase:y,markBootstrapStalled:k,fetchInitiativeTemplates:v,setReferenceDataLoaded:C,setCustomCategories:S,setCustomTypes:w,setPriorities:_,setTaxonomies:M,setTaxonomyDisplayLabels:R,setConfigLoaded:P,hasLoadedUiStateRef:b,currentWorkspaceIdRef:$,referenceDataRequestRef:I,referenceDataAbortRef:E,bootstrapConfigAbortRef:K,workspaceListAbortRef:U,assigneeOptionsAbortRef:L,workspaceListHydratedRef:D,setAvailableWorkspaces:ie,runtimeMode:H,applyResolvedWorkspaceId:be,workspaceSwitchingEnabled:Z,authSessionResolved:me,isAuthenticated:Ve,authUserId:Re,authUserAvatarUrl:je,setHydratedWorkspaceRole:ye,setAssigneeOptions:ue,setAssigneeOptionsLoaded:ve,commitCurrentWorkspaceId:Pe,currentWorkspaceId:Le,workspaceSelectionScope:se,abortWorkspaceScopedRequests:V,setWorkspaceBootstrapPending:W,checkAuthSession:z,lastConfigRefreshKeyRef:fe,lastAssigneeOptionsLoadKeyRef:ke,lastWorkspaceSyncStateLoadKeyRef:Y,lastTaskSurfaceLoadKeyRef:we,lastSettingsSurfaceLoadKeyRef:q,isOpen:le,activeTab:$e,showArchive:re,taskScope:de,settingsSection:He,workspaceBootstrapPending:ce,fetchTasks:pe,fetchPlanningEntities:xe,refreshTaskCollections:N,loadWorkspaceSyncState:X,switchLocalCoordinatorWorkspace:Ae,hasBootstrappedDataRef:Te}=e,he=o.useCallback(async Me=>{const qe=Me?.ignoreAuthGuard===!0,ge=Me?.force===!0;if(!qe&&(t||r)){hr("bootstrap_reference_data_skipped",{reason:r?"auth_blocked":"auth_deferred",runtimeMode:H,workspaceId:String(a().workspaceId||"").trim()||"default",force:ge});return}const _e=a(),Be=String(_e.workspaceId||"").trim()||"default";if(!(H!=="cloud"||!me||!Ve||Be!==""&&Be!=="default")){hr("bootstrap_reference_data_skipped",{reason:"workspace_unresolved",runtimeMode:H,workspaceId:Be,force:ge});return}if(!ge&&I.current?.workspaceId===_e.workspaceId){hr("bootstrap_reference_data_reused",{workspaceId:Be,force:ge}),await I.current.promise;return}C(!1);const F=_n(),Ne=new AbortController;E.current=Ne;const Ce=(async()=>{await Promise.allSettled([(async()=>{let ut="empty-taxonomy-state";const mt=await fetch("/api/taskforce/taxonomy-state",{signal:Ne.signal});if(!mt.ok)return;const Ue=await mt.json().catch(()=>({}));if(nC(Ue))ut="taxonomy-state";else{ut="fallback-endpoints";const[kt,rt,Ht,lr]=await Promise.all([fetch("/api/taskforce/categories",{signal:Ne.signal}),fetch("/api/taskforce/types",{signal:Ne.signal}),fetch("/api/taskforce/priorities",{signal:Ne.signal}),fetch("/api/taskforce/taxonomies",{signal:Ne.signal})]),[rr,wr,st,zt]=await Promise.all([kt.ok?kt.json().catch(()=>({})):Promise.resolve({}),rt.ok?rt.json().catch(()=>({})):Promise.resolve({}),Ht.ok?Ht.json().catch(()=>({})):Promise.resolve({}),lr.ok?lr.json().catch(()=>({})):Promise.resolve({})]);Ue.categories=rr.categories,Ue.types=wr.types,Ue.priorities=st.priorities,Ue.taxonomies=zt.taxonomies}const wt=WR(Ue);if(s(_e)){hr("bootstrap_reference_data_stale_drop",{workspaceId:Be,source:ut});return}wt.categories.length>0&&S(wt.categories),wt.types.length>0&&w(wt.types),wt.priorities.length>0&&_(wt.priorities),M(wt.taxonomies),R(wt.displayLabels||{}),hr("bootstrap_reference_data_source",{workspaceId:Be,source:ut,categories:wt.categories.length,types:wt.types.length,priorities:wt.priorities.length,taxonomies:wt.taxonomies.length})})(),v()]),!s(_e)&&(C(!0),hr("bootstrap_reference_data_loaded",{durationMs:Math.max(0,Math.round(_n()-F)),workspaceId:Be,force:ge}))})();I.current={workspaceId:_e.workspaceId,promise:Ce};try{await Ce}finally{I.current?.promise===Ce&&(I.current=null),E.current===Ne&&(E.current=null)}},[me,v,a,Ve,s,E,I,H,S,w,_,C,M,R,r,t]),ot=o.useCallback(async Me=>{if(!(Me?.ignoreAuthGuard===!0)&&(t||r))return;y("config");const ge=a(),_e=_n(),Be=new AbortController;K.current=Be;try{const Ge=await d("/api/taskforce/config",void 0,nh(H),{signal:Be.signal});if(i(ge))return;if(Ge.status===401){f(),P(!0);return}let F="";if(Ge.ok){const Ne=await Ge.json();if(i(ge))return;F=typeof Ne?.workspaceId=="string"&&Ne.workspaceId.trim().length>0?Ne.workspaceId.trim():"",p(Ne)}if(i(ge)){const Ne=String($.current||"default").trim()||"default";if(!F||Ne!==F)return}if(b.current||(b.current=!0,await g(F||ge.workspaceId)),i(ge)){const Ne=String($.current||"default").trim()||"default";if(!F||Ne!==F)return}P(!0),y("ready"),hr("bootstrap_config_loaded",{durationMs:Math.max(0,Math.round(_n()-_e)),status:Ge.status,workspaceId:F||ge.workspaceId}),h()}catch(Ge){if(l(Ge)||i(ge))return;b.current||(b.current=!0,await g(ge.workspaceId)),k(c(Ge)?"Startup checks timed out.":"Unable to finish startup checks."),P(!0),hr("bootstrap_config_failed",{durationMs:Math.max(0,Math.round(_n()-_e)),workspaceId:ge.workspaceId,error:Ge instanceof Error?Ge.message:String(Ge)})}finally{K.current===Be&&(K.current=null)}},[p,K,$,h,d,a,f,b,l,c,i,g,y,k,H,P,r,t]),We=o.useCallback(async Me=>{await ot(Me),await he(Me)},[ot,he]),Xe=o.useCallback(async()=>{if(!Z)return ie([]),D.current=!1,{success:!0,workspaces:[]};const Me=a(),qe=_n(),ge=new AbortController;U.current=ge;try{const _e=await d("/api/taskforce/workspaces",{method:"GET",credentials:"include"},nh(H),{signal:ge.signal});if(i(Me))return{success:!1,error:"Workspace changed while loading workspaces."};if(_e.status===401)return ie([]),D.current=!1,{success:!1,error:"Authentication required."};const Be=await _e.json().catch(()=>({}));if(i(Me))return{success:!1,error:"Workspace changed while loading workspaces."};if(!_e.ok||Be?.success===!1)return ie([]),D.current=!1,{success:!1,error:Be?.error||`Failed to load workspaces (${_e.status})`};const Ge=Array.isArray(Be?.workspaces)?Be.workspaces.map(F=>({id:String(F?.id||"").trim(),name:String(F?.name||"").trim(),role:String(F?.role||"member").trim().toLowerCase(),slug:typeof F?.slug=="string"?F.slug:null,description:typeof F?.description=="string"?F.description:null,status:typeof F?.status=="string"?F.status:"",betaAccess:F?.betaAccess===!0})).filter(F=>F.id&&F.name):[];return ie(Ge),D.current=!0,H!=="local"&&typeof Be?.currentWorkspaceId=="string"&&Be.currentWorkspaceId.trim().length>0&&be(Be.currentWorkspaceId.trim(),{preserveNonDefaultDefault:!0}),hr("bootstrap_workspaces_loaded",{durationMs:Math.max(0,Math.round(_n()-qe)),workspaceId:Me.workspaceId,count:Ge.length,status:_e.status}),{success:!0,workspaces:Ge}}catch(_e){return c(_e)&&k("Startup checks timed out."),ie([]),D.current=!1,hr("bootstrap_workspaces_failed",{durationMs:Math.max(0,Math.round(_n()-qe)),workspaceId:Me.workspaceId,error:_e instanceof Error?_e.message:String(_e)}),{success:!1,error:l(_e)?"Workspace list request aborted.":"Failed to load workspaces."}}finally{U.current===ge&&(U.current=null)}},[be,d,a,l,c,i,k,H,ie,U,D,Z]),ae=o.useCallback(async()=>{const Me=a(),qe=_n(),ge=new AbortController;L.current=ge,ve(!1);try{const[_e,Be]=await Promise.all([d("/api/taskforce/workspace/assignee-options",{method:"GET",credentials:"include"},nh(H),{signal:ge.signal}),me&&Ve?d("/api/taskforce/auth/workspace-members",{method:"GET",credentials:"include"},nh(H),{signal:ge.signal}).catch(()=>null):Promise.resolve(null)]);if(s(Me))return{success:!1,error:"Workspace changed while loading assignee options."};if(_e.status===401)return ue(el()),ve(!0),{success:!1,error:"Authentication required."};const Ge=await _e.json().catch(()=>({}));if(s(Me))return{success:!1,error:"Workspace changed while loading assignee options."};if(!_e.ok)return ue(el()),ve(!0),{success:!1,error:Ge?.error||`Failed to load assignee options (${_e.status})`};const F=String(Re||"").trim(),Ne=String(je||"").trim(),Ce=(rt,Ht)=>{const lr=typeof rt?.avatarUrl=="string"&&rt.avatarUrl.trim().length>0?rt.avatarUrl.trim():"";if(lr)return lr;const rr=String(rt?.userId||Ht||"").trim();return F&&rr===F&&Ne?Ne:null},ut=Array.isArray(Ge?.assignees)?Ge.assignees:[],mt=ut.map(rt=>{const Ht=String(rt?.value||"").trim(),lr=String(rt?.kind||"").trim().toLowerCase();return Ht?lr==="agent"||lr==="ai"?{value:Ht,label:String(rt?.label||Ht).trim()||Ht,icon:String(rt?.icon||"Bot"),color:String(rt?.color||"#8b5cf6"),kind:"agent",avatarUrl:typeof rt?.avatarUrl=="string"&&rt.avatarUrl.trim().length>0?rt.avatarUrl.trim():null,avatarRevision:Number.isFinite(Number(rt?.avatarRevision))?Math.max(0,Math.floor(Number(rt.avatarRevision))):null,avatarUpdatedAt:typeof rt?.avatarUpdatedAt=="string"&&rt.avatarUpdatedAt.trim().length>0?rt.avatarUpdatedAt.trim():null,username:typeof rt?.username=="string"&&rt.username.trim().length>0?rt.username.trim():null,surfaceType:typeof rt?.surfaceType=="string"&&rt.surfaceType.trim().length>0?rt.surfaceType.trim():null,providerMetadata:rt?.providerMetadata&&typeof rt.providerMetadata=="object"&&!Array.isArray(rt.providerMetadata)?rt.providerMetadata:null,archivedAt:typeof rt?.archivedAt=="string"&&rt.archivedAt.trim().length>0?rt.archivedAt.trim():null,createdAt:typeof rt?.createdAt=="string"&&rt.createdAt.trim().length>0?rt.createdAt.trim():null,updatedAt:typeof rt?.updatedAt=="string"&&rt.updatedAt.trim().length>0?rt.updatedAt.trim():null}:lr==="member"||lr==="human"?{value:Ht,label:String(rt?.label||Ht).trim()||Ht,icon:String(rt?.icon||"User"),color:String(rt?.color||"#22c55e"),kind:"member",avatarUrl:Ce(rt,Ht)}:null:null}).filter(Boolean),Ue=ut.map(rt=>({userId:String(rt?.userId||"").trim(),email:String(rt?.email||"").trim().toLowerCase(),displayName:typeof rt?.displayName=="string"?rt.displayName:null,avatarUrl:Ce(rt)})).filter(rt=>rt.userId);let wt=Ue;if(Be?.ok){const rt=await Be.json().catch(()=>({})),Ht=Array.isArray(rt?.users)?rt.users:[],lr=Ht.find(st=>String(st?.userId||"").trim()===F),rr=String(lr?.role||"").trim().toLowerCase();rr==="owner"||rr==="admin"||rr==="member"||rr==="read-only"?ye(rr):!Z&&Ht.length===0&&ye(null);const wr=Ht.map(st=>({userId:String(st?.userId||"").trim(),email:String(st?.email||"").trim().toLowerCase(),displayName:typeof st?.displayName=="string"?st.displayName:null,avatarUrl:Ce(st)})).filter(st=>st.userId);wt=Array.from(new Map([...Ue,...wr].map(st=>[st.userId,st])).values())}else!Z&&!Ue.length&&ye(null);const kt=_u([...mt,...q0(wt).filter(rt=>rt.kind==="member")]);return s(Me)?{success:!1,error:"Workspace changed while loading assignee options."}:(ue(kt),ve(!0),hr("bootstrap_assignee_options_loaded",{durationMs:Math.max(0,Math.round(_n()-qe)),workspaceId:Me.workspaceId,count:kt.length}),{success:!0})}catch(_e){return s(Me)||(ue(el()),ve(!0)),hr("bootstrap_assignee_options_failed",{durationMs:Math.max(0,Math.round(_n()-qe)),workspaceId:Me.workspaceId,error:_e instanceof Error?_e.message:String(_e)}),{success:!1,error:l(_e)?"Assignee options request aborted.":"Failed to load assignee options."}}finally{L.current===ge&&(L.current=null)}},[L,me,je,Re,d,a,l,Ve,s,H,ue,ve,ye,Z]),G=o.useCallback(async(Me,qe)=>{if(!Z)return{success:!1,error:"Workspace switching is unavailable in local mode.",code:"WORKSPACE_SWITCHING_DISABLED"};const ge=String(Me||"").trim();if(!ge)return{success:!1,error:"workspaceId is required."};const _e=String($.current||"").trim()||"default",Be=_n();try{hr("bootstrap_workspace_switch_started",{fromWorkspaceId:_e,toWorkspaceId:ge,hydrate:qe?.hydrate!==!1});const Ge=H==="local"?"/api/taskforce/session/workspace?taskforceCloud=1":"/api/taskforce/session/workspace",F=await fetch(Ge,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:ge})}),Ne=await F.json().catch(()=>({}));if(!F.ok||Ne?.success===!1)return{success:!1,error:Ne?.error||`Failed to switch workspace (${F.status})`,code:Ne?.code};try{_e!=="default"&&await Ae(ge)}catch(ut){return _e&&_e!=="default"&&(await fetch(Ge,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:_e})}).catch(()=>null),await z({force:!0}).catch(()=>!1)),{success:!1,error:ut instanceof Error?ut.message:"The local sync coordinator rejected the workspace switch.",code:String(ut?.code||"SYNC_COORDINATOR_WORKSPACE_SWITCH_FAILED")}}Pe(ge,{clearExplicitSelection:!1}),V(),W(!0),y("workspace");const Ce=await z({force:!0});return qe?.hydrate===!1?await Xe():(fe.current=`${H}:${ge}:${se}`,ke.current=`${H}:${Ce?"auth":"guest"}:${ge}`,Y.current=ge,le&&$e==="tasks"&&!(re||de==="archived"||de==="deleted")&&(we.current=`${ge}:${$e}:active:${de}`),le&&$e==="settings"&&(q.current=`${ge}:${$e}:${He}`),await Promise.all([We(),Xe(),N({isSilent:!1}),X()]),xe({ignoreAuthGuard:!0})),hr("bootstrap_workspace_switch_completed",{fromWorkspaceId:_e,toWorkspaceId:ge,hydrate:qe?.hydrate!==!1,durationMs:Math.max(0,Math.round(_n()-Be))}),{success:!0}}catch(Ge){return hr("bootstrap_workspace_switch_failed",{fromWorkspaceId:_e,toWorkspaceId:ge,hydrate:qe?.hydrate!==!1,durationMs:Math.max(0,Math.round(_n()-Be)),error:Ge instanceof Error?Ge.message:String(Ge)}),{success:!1,error:"Failed to switch workspace."}}finally{W(!1)}},[V,$e,z,Pe,$,We,xe,Xe,le,ke,fe,q,we,Y,X,y,N,H,He,W,re,Ae,de,se,Z]),Ie=o.useCallback(async Me=>{y("workspace"),W(!0);try{if(!Z){const Ce=String(Le||"").trim()||"default";return Pe(Ce),{success:!0,workspaceSetupRequired:!1,workspaceId:Ce}}const qe=String(Me?.preferredWorkspaceId||"").trim(),ge=yk(se),_e=await Xe();if(!_e.success)return{success:!1,workspaceSetupRequired:!1,error:_e.error||"Failed to load workspaces after authentication."};const Be=Array.isArray(_e.workspaces)?_e.workspaces:[];if(Be.length===0)return Pe("default"),{success:!0,workspaceSetupRequired:!0};const Ge=new Set(Be.map(Ce=>String(Ce.id||"").trim()).filter(Boolean)),F=String($.current||"").trim(),Ne=(qe&&Ge.has(qe)?qe:"")||(F&&Ge.has(F)?F:"")||(ge&&Ge.has(ge)?ge:"")||String(Be[0]?.id||"").trim();if(!Ne)return Pe("default"),{success:!0,workspaceSetupRequired:!0};if(F!==Ne){const Ce=await G(Ne,{hydrate:!1});if(!Ce.success)return{success:!1,workspaceSetupRequired:!1,error:Ce.error||"Failed to set workspace after authentication.",code:Ce.code}}else Pe(Ne);return{success:!0,workspaceSetupRequired:!1,workspaceId:Ne}}catch{return k("Unable to resolve workspace access."),{success:!1,workspaceSetupRequired:!1,error:"Failed to resolve workspace access."}}finally{W(!1)}},[Pe,Le,$,Xe,y,k,W,G,se,Z]),Fe=o.useCallback(async()=>{y("auth");const Me=_n();hr("bootstrap_retry_started",{workspaceId:String($.current||"default").trim()||"default"});const qe=await z({force:!0});let ge=!1;if(Z&&qe){const _e=await Ie();if(!_e.success||_e.workspaceSetupRequired){await We({ignoreAuthGuard:!0}),hr("bootstrap_retry_completed",{workspaceId:String($.current||"default").trim()||"default",authenticated:qe,workspaceSetupRequired:_e.workspaceSetupRequired===!0,success:_e.success,durationMs:Math.max(0,Math.round(_n()-Me))});return}}W(!0);try{await We({ignoreAuthGuard:!0}),qe&&!ge&&(await Promise.all([pe(!0,{ignoreAuthGuard:!0}),he({ignoreAuthGuard:!0,force:!0})]),xe({ignoreAuthGuard:!0})),hr("bootstrap_retry_completed",{workspaceId:String($.current||"default").trim()||"default",authenticated:qe,workspaceSetupRequired:ge,success:!0,durationMs:Math.max(0,Math.round(_n()-Me))})}finally{W(!1)}},[z,$,We,xe,he,pe,y,Ie,W,Z]),it=o.useCallback(async Me=>{const qe=Me?.reason||"initial-load",ge=Me?.ignoreAuthGuard===!0,_e=Me?.tasksSilent!==!1,Be=_n();if(y("auth"),!await z({force:!0}))return await We({ignoreAuthGuard:!0}),hr("cloud_bootstrap_completed",{reason:qe,durationMs:Math.max(0,Math.round(_n()-Be)),authenticated:!1,workspaceSetupRequired:!1,success:!1}),{success:!1,authenticated:!1,workspaceSetupRequired:!1,error:"Sign in required.",code:"AUTH_REQUIRED"};if(Z){const F=await Ie();if(!F.success)return await We({ignoreAuthGuard:!0}),hr("cloud_bootstrap_completed",{reason:qe,durationMs:Math.max(0,Math.round(_n()-Be)),authenticated:!0,workspaceSetupRequired:!1,success:!1,error:F.error||"Workspace resolution failed."}),{success:!1,authenticated:!0,workspaceSetupRequired:!1,error:F.error||"Unable to resolve workspace access.",code:F.code};if(F.workspaceSetupRequired)return await We({ignoreAuthGuard:!0}),hr("cloud_bootstrap_completed",{reason:qe,durationMs:Math.max(0,Math.round(_n()-Be)),authenticated:!0,workspaceSetupRequired:!0,success:!0}),{success:!0,authenticated:!0,workspaceSetupRequired:!0}}W(!0);try{await ot({ignoreAuthGuard:ge});const F=String($.current||"default").trim()||"default",Ne=_n();return pe(_e,{ignoreAuthGuard:ge}).then(()=>{hr("cloud_bootstrap_tasks_loaded_deferred",{reason:qe,workspaceId:F,durationMs:Math.max(0,Math.round(_n()-Ne))})}).catch(Ce=>{hr("cloud_bootstrap_tasks_deferred_failed",{reason:qe,workspaceId:F,error:Ce instanceof Error?Ce.message:String(Ce)})}),he({ignoreAuthGuard:ge}).then(()=>{hr("cloud_bootstrap_reference_data_loaded_deferred",{reason:qe,workspaceId:F,durationMs:Math.max(0,Math.round(_n()-Ne))})}).catch(Ce=>{hr("cloud_bootstrap_reference_data_deferred_failed",{reason:qe,workspaceId:F,error:Ce instanceof Error?Ce.message:String(Ce)})}),xe({ignoreAuthGuard:ge}),hr("cloud_bootstrap_completed",{reason:qe,durationMs:Math.max(0,Math.round(_n()-Be)),authenticated:!0,workspaceSetupRequired:!1,success:!0,workspaceId:F}),{success:!0,authenticated:!0,workspaceSetupRequired:!1}}finally{W(!1)}},[z,$,ot,xe,he,pe,y,Ie,W,Z]);return o.useEffect(()=>{!t&&!r&&!Te.current&&(Te.current=!0,(async()=>{const Me=_n();if(H==="cloud"&&me&&Ve){const qe=await it({reason:"initial-load",tasksSilent:!1});if(!qe.success||qe.workspaceSetupRequired)return}else await ot(),await Promise.all([pe(!1),he()]),xe();hr("bootstrap_initial_load_completed",{durationMs:Math.max(0,Math.round(_n()-Me)),runtimeMode:H,workspaceId:String($.current||"default").trim()||"default"})})())},[me,$,ot,xe,he,pe,Te,Ve,it,H,r,t]),o.useEffect(()=>{if(t||r||ce||se==="bootstrap"||!Te.current)return;const Me=`${H}:${Le}:${se}`;fe.current!==Me&&(fe.current=Me,We())},[Le,We,Te,fe,H,r,t,ce,se]),o.useEffect(()=>{if(t||r||ce)return;const Me=Le;Y.current!==Me&&(Y.current=Me,X())},[Le,Y,X,r,t,ce]),o.useEffect(()=>{if(H!=="cloud"||!me||!Ve){H!=="cloud"&&ie([]),D.current=!1;return}ce||!Te.current||D.current||Xe()},[me,Xe,Te,Ve,H,ie,ce,D]),{fetchReferenceData:he,fetchBootstrapConfig:ot,fetchConfig:We,fetchWorkspaces:Xe,fetchAssigneeOptions:ae,switchWorkspace:G,resolveWorkspaceAfterAuth:Ie,retryBootstrapChecks:Fe,runCloudBootstrap:it}}function KN(e){const{runtimeMode:t,workspaceUiStateScope:r,currentWorkspaceId:a,currentWorkspaceIdRef:s,referenceDataLoaded:i,activeCategories:l,activeTypes:c,priorities:d,taxonomies:f,activeWorkspaceModule:p,setActiveWorkspaceModuleState:g,groupBy:h,setGroupBy:y,emptyColumnMode:k,setEmptyColumnMode:v,taskScope:C,setTaskScope:S,openTaskId:w,setPendingOpenTaskId:_,compressedCards:M,setCompressedCards:R,zenMode:P,setZenModeState:b,searchQuery:$,setSearchQuery:I,collapsedCategories:E,setCollapsedCategories:K,filterCategories:U,setFilterCategories:L,filterPriorities:D,setFilterPriorities:ie,filterTypes:H,setFilterTypes:be,filterStatus:Z,setFilterStatus:me,filterAssignees:Ve,setFilterAssignees:Re,filterAssigneesAllSelected:je,setFilterAssigneesAllSelected:ye,filterTaxonomies:ue,setFilterTaxonomies:ve,sortBy:Pe,setSortBy:Le,sortOrder:se,setSortOrder:V,hasInitedFilters:W,setHasInitedFilters:z,lastUsedCategory:fe,setLastUsedCategory:ke,taskforceAgentId:Y,setTaskforceAgentId:we,taskforceAgentConversationId:q,setTaskforceAgentConversationId:le,taskforceAgentConversationByAgentId:$e,setTaskforceAgentConversationByAgentId:re}=e,de=o.useRef(!1),He=o.useRef(""),ce=o.useRef(!1),pe=o.useRef(!1),xe=o.useRef(null),[N,X]=o.useState(!1),Ae=o.useMemo(()=>i?tx({categories:l,types:c,priorities:d,taxonomies:f}):null,[l,c,d,i,f]),Te=o.useCallback(ae=>{N||(pe.current=!0),g(ae)},[g,N]),he=o.useCallback((ae,G)=>{if(!ae){xe.current=null,we(""),le(""),re({}),_(null);return}const Ie=Array.isArray(ae.filterCategories)||Array.isArray(ae.filterPriorities)||Array.isArray(ae.filterTypes)||ae.filterTaxonomies&&typeof ae.filterTaxonomies=="object";Ie||(xe.current=null);const Fe=Array.isArray(ae.filterCategories)||Array.isArray(ae.filterPriorities)||Array.isArray(ae.filterTypes)||Array.isArray(ae.filterStatus)||Array.isArray(ae.filterAssignees)||typeof ae.filterAssigneesAllSelected=="boolean"||ae.filterTaxonomies&&typeof ae.filterTaxonomies=="object",it=i,Me=!!(ae.filterTaxonomySignature&&Ae);Ie&&!it&&(xe.current={state:ae,skipActiveWorkspaceModule:G?.skipActiveWorkspaceModule});const qe=Ie&&it&&(!Me||rx(ae.filterTaxonomySignature,Ae)),ge=Ie&&Me&&!qe,_e=!Ie||qe||ge;if(G?.skipActiveWorkspaceModule||(ae.activeWorkspaceModule?g(ae.activeWorkspaceModule):ae.groupBy==="docs"&&g("docs")),ae.groupBy&&ae.groupBy!=="docs"&&y(ae.groupBy),ae.emptyColumnMode&&v(ae.emptyColumnMode),ae.taskScope&&S(ae.taskScope),(typeof ae.openTaskId=="string"||ae.openTaskId===null)&&_(ae.openTaskId),typeof ae.compressedCards=="boolean"&&R(ae.compressedCards),typeof ae.zenMode=="boolean"&&b(ae.zenMode),typeof ae.searchQuery=="string"&&I(ae.searchQuery),ae.collapsedCategories&&typeof ae.collapsedCategories=="object"&&K(ae.collapsedCategories),qe?(L(Array.isArray(ae.filterCategories)?ae.filterCategories:l.map(Be=>Be.value)),ie(Array.isArray(ae.filterPriorities)?ae.filterPriorities:d.map(Be=>Be.value)),be(Array.isArray(ae.filterTypes)?ae.filterTypes:c.map(Be=>Be.value)),ae.filterTaxonomies&&typeof ae.filterTaxonomies=="object"&&ve(ae.filterTaxonomies)):ge&&(L(l.map(Be=>Be.value)),ie(d.map(Be=>Be.value)),be(c.map(Be=>Be.value)),ve({})),Array.isArray(ae.filterStatus)&&me(ae.filterStatus),Array.isArray(ae.filterAssignees)){const Be=ae.filterAssigneesAllSelected===!0&&!ae.filterAssignees.includes("unassigned")?["unassigned",...ae.filterAssignees]:ae.filterAssignees;Re(Be)}typeof ae.filterAssigneesAllSelected=="boolean"&&ye(ae.filterAssigneesAllSelected),(ae.sortBy==="created"||ae.sortBy==="priority"||ae.sortBy==="updated"||ae.sortBy==="complexity")&&Le(ae.sortBy),(ae.sortOrder==="asc"||ae.sortOrder==="desc")&&V(ae.sortOrder),ge?z(!0):typeof ae.hasInitedFilters=="boolean"&&_e?z(ae.hasInitedFilters):Fe&&_e&&z(!0),typeof ae.lastCategory=="string"&&ke(ae.lastCategory),we(typeof ae.taskforceAgentId=="string"?ae.taskforceAgentId.trim():""),le(typeof ae.taskforceAgentConversationId=="string"?ae.taskforceAgentConversationId.trim():""),re(ae.taskforceAgentConversationByAgentId||{})},[l,c,Ae,d,i,g,K,R,v,Re,ye,L,ie,me,ve,be,y,z,ke,I,Le,V,S,_,re,le,we,b]);o.useEffect(()=>{if(!i||!xe.current)return;const ae=xe.current;xe.current=null,he(ae.state,{skipActiveWorkspaceModule:ae.skipActiveWorkspaceModule})},[he,i]);const ot=o.useRef(he);o.useEffect(()=>{ot.current=he},[he]);const We=o.useCallback(async ae=>{const G=String(ae||s.current||a||"default").trim()||"default",Ie=`${t}:${r}:${G}`;try{const Fe=await fetch(`/api/taskforce/ui-state?key=app&workspaceId=${encodeURIComponent(G)}`,{method:"GET",credentials:"include"}),it=Fe.ok?await Fe.json().catch(()=>({})):{},Me=bA(it?.state),qe=Jw(r),ge=Me||qe?{...qe||{},...Me||{},version:hk}:null;if(s.current!==G)return;ot.current(ge,{skipActiveWorkspaceModule:pe.current}),He.current=Ie}catch{const Fe=Jw(r);s.current===G&&(ot.current(Fe,{skipActiveWorkspaceModule:pe.current}),He.current=Ie)}finally{if(s.current!==G)return;pe.current=!1,ce.current=!0,X(!0)}},[a,s,t,r]);o.useEffect(()=>{const ae=`${t}:${r}:${a}`;de.current&&He.current!==ae&&(X(!1),We(a))},[a,We,t,r]),o.useEffect(()=>{if(!N)return;if(ce.current){ce.current=!1;return}const ae={version:hk,groupBy:h,activeWorkspaceModule:p,emptyColumnMode:k,taskScope:C,openTaskId:w||null,compressedCards:M,zenMode:P,searchQuery:$,collapsedCategories:E,filterCategories:U,filterPriorities:D,filterTypes:H,filterStatus:Z,filterAssignees:Ve,filterAssigneesAllSelected:je,filterTaxonomies:ue,...Ae?{filterTaxonomySignature:Ae}:{},sortBy:Pe,sortOrder:se,hasInitedFilters:W,lastCategory:fe||"",taskforceAgentId:Y,taskforceAgentConversationId:q,taskforceAgentConversationByAgentId:$e};ox(ae,r);const G=window.setTimeout(async()=>{try{await ff({stateKey:"app",workspaceId:s.current,patch:ae})}catch{}},250);return()=>window.clearTimeout(G)},[p,E,M,Ae,s,k,Ve,je,U,D,Z,ue,H,h,W,fe,w,$,Pe,se,C,$e,q,Y,N,r,P]);const Xe=o.useCallback(ae=>{He.current="",xe.current=null,pe.current=!1,ce.current=!1,ae?.clearLoaded&&(de.current=!1),X(!1)},[]);return{hasLoadedUiStateRef:de,loadPersistedUiState:We,resetPersistedUiStateLoad:Xe,setActiveWorkspaceModule:Te,uiStateReady:N}}const qN="taskforce:workspace-resources-invalidated";function NC(e){typeof window>"u"||window.dispatchEvent(new CustomEvent(qN,{detail:e}))}function YN({workspaceId:e,isOpen:t,authBlocked:r,authRequiredForApi:a,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}),v=o.useRef(!0);o.useEffect(()=>(v.current=!0,()=>{v.current=!1}),[]);const C=!!(h&&Number.isSafeInteger(h.coordinatorGeneration)&&h.coordinatorGeneration>0&&Number.isSafeInteger(h.localDataVersion)&&h.localDataVersion>=0),S=()=>{const _=k.current;if(!v.current||_.inFlight||_.pendingVersion===null||typeof document>"u"||document.visibilityState!=="visible")return;const M=_.pendingVersion;if(_.renderedVersion!==null&&M<=_.renderedVersion)return;const R=_.scopeKey,P=_.scopeEpoch;let b=!1,$=!1;const I=y.current().then(()=>{if(!v.current||k.current.scopeKey!==R||k.current.scopeEpoch!==P){$=!0;return}b=!0,k.current.renderedVersion=M,p.current=M,NC({workspaceId:k.current.workspaceId,source:"data-version",dataVersion:M})}).catch(()=>{}).finally(()=>{k.current.inFlight===I&&(k.current.inFlight=null),(b||$)&&S()});_.inFlight=I},w=(_,M,R)=>{if(!Number.isSafeInteger(M)||M<0)return;const P=k.current,b=e;P.scopeKey!==b&&(P.scopeKey=b,P.workspaceId=e,P.scopeEpoch+=1,P.renderedVersion=null,P.pendingVersion=null,P.sourceVersions=new Map,p.current=null);const $=P.sourceVersions.get(_);if($!==void 0&&(R.monotonic?M<=$:M===$)){S();return}if(P.sourceVersions.set(_,M),R.establishBaseline&&$===void 0){P.renderedVersion===null&&P.pendingVersion===null&&!P.inFlight&&(P.renderedVersion=M,P.pendingVersion=M,p.current=M);return}const I=Math.max(P.renderedVersion??0,P.pendingVersion??0);P.pendingVersion=I===0?M:Math.max(I+1,M),S()};o.useEffect(()=>{!C||!h||w(`${e}:coordinator:${h.coordinatorGeneration}`,h.localDataVersion,{monotonic:!0,establishBaseline:!1})},[h,C,e]),o.useEffect(()=>{if(typeof window>"u"||typeof document>"u"||HN({isOpen:t,authBlocked:r,authRequiredForApi:a,isAuthenticated:s,canCallProtectedApi:i}))return;let _=!1;const M=async()=>{if(!(_||document.visibilityState!=="visible")&&!VN({shouldGateProtectedApiCalls:l,authSessionResolved:c.current,authRequiredForApi:d.current,isAuthenticated:f.current}))try{const I=await fetch("/api/taskforce/data-version");if(!I.ok)return;const E=await I.json(),K=Number(E?.dataVersion);if(_)return;w(`${e}:legacy`,K,{monotonic:!1,establishBaseline:!0})}catch{}},R=()=>{document.visibilityState==="visible"&&M()},P=()=>{M()},b=()=>{M()},$=window.setInterval(()=>{M()},3e3);return document.addEventListener("visibilitychange",R),window.addEventListener("focus",P),window.addEventListener("online",b),M(),()=>{_=!0,window.clearInterval($),document.removeEventListener("visibilitychange",R),window.removeEventListener("focus",P),window.removeEventListener("online",b)}},[t,e,r,a,s,i,l,c,d,f,p])}const ZN="/api/taskforce/sync/v3/local/operations",JN="/api/taskforce/sync/v3/local/dispatch";function Rh(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}async function Bb(e,t,r){const a=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 a.text())}catch{s=null}return{response:a,body:Rh(s)}}function Da(e,t){const r=String(e||"").trim();if(!r||r.length>200)throw new Error(`${t} is invalid.`);return r}function QN(){if(!globalThis.crypto?.randomUUID)throw new Error("Secure operation ID generation is unavailable.");return globalThis.crypto.randomUUID()}function XN(e){return e===400||e===401||e===403||e===404||e===405||e===409||e===413||e===422||e===429}function Nu(e={}){const t=e.identityStore||new Bv,r=e.fetchImpl||fetch,a=e.createOperationId||QN,s=e.fingerprint||Wv;return{async execute(i){const l=Da(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,a),f=(b,$)=>t.deleteIfMatches(b,$),p=f)}catch{return{state:"failed",phase:"prepare",fallbackEligible:!1,errorCode:"LOCAL_OPERATION_PREPARATION_FAILED"}}const g=Da(d.operationId,"operationId"),h=i.buildOperation(g),y=Da(h.entityId,"entityId");let k;try{k=await Bb(r,ZN,{contractVersion:3,workspaceId:l,operationId:g,operation:h})}catch{return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:g}}if(k.response.status===404&&k.body?.success===!1&&typeof k.body.code=="string"&&i.disabledCodes.has(k.body.code))return d.created?(await f(c,g),{state:"disabled",fallbackEligible:!0,operationId:g}):{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:g,errorCode:k.body.code};const v=Rh(k.body?.task),C=Rh(k.body?.deleted),S=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||!S||(h.mutationKind==="delete"?!C||C.taskId!==y:!v||v.id!==y)){if(!k.response.ok&&XN(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 w=h.mutationKind==="delete"?{deleted:C}:{task:v};if(!i.isAuthenticated)return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:"auth"};if(i.dispatchEnabled===!1)return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:"sync-disabled"};let _;try{_=await Bb(r,JN,{workspaceId:l,limit:1})}catch{return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:"retry"}}if(!_.response.ok)return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:_.response.status===401?"auth":"retry",errorCode:typeof _.body?.code=="string"?_.body.code:void 0};if(_.body?.success!==!0||!Array.isArray(_.body.outcomes))return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:"retry"};const M=_.body.outcomes.map(Rh).find(b=>b?.clientId===S&&b?.operationId===g);if(!M)return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:"queued"};const R=M.disposition;if(R!=="accepted"&&R!=="retry"&&R!=="blocked"&&R!=="lease-lost")return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:"retry"};const P=typeof M.errorCode=="string"?M.errorCode:void 0;return R==="accepted"?{state:"accepted",fallbackEligible:!1,operationId:g,...w,dispatchDisposition:R}:{state:R==="blocked"?"blocked":"pending",fallbackEligible:!1,operationId:g,...w,dispatchDisposition:R,pendingReason:R==="retry"||R==="lease-lost"?P==="WORKSPACE_SYNC_TRANSPORT_401"?"auth":"retry":void 0,errorCode:P}}}}const e1=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED"]);function t1(e={}){const t=Nu(e);return{async update(r){const a=Da(r.workspaceId,"workspaceId"),s=Da(r.entityId,"entityId"),i=EC(r.patch),l={domain:"task",entityId:s,mutationKind:"metadata-update",payload:{patch:i,...r.saveSource?{saveSource:r.saveSource}:{}}};return t.execute({workspaceId:a,fingerprintValue:{contractVersion:3,workspaceId:a,operation:l},buildOperation:()=>l,disabledCodes:e1,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}const r1=new Set(["title","description","priority","complexity","type","category","assignee","scheduledDate","dueDate","scheduledWeekKey","orderInDay","workstreamId","taxonomies"]);function n1(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=Object.keys(e);return t.length>0&&t.every(r=>r1.has(r))}function a1(e){const t=o.useRef(null);return o.useCallback(async(r,a,s)=>{if(!e.enabled||!n1(a))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||t1()),t.current.update({workspaceId:i,entityId:l,patch:a,...s?.saveSource?{saveSource:s.saveSource}:{},isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}const s1=new Set(["title","description","priority","complexity","type","category","assignee","status","scheduledDate","dueDate","orderInDay","workstreamId","taxonomies"]),o1=new Set(["task","on-hold","in-progress","review","done","cancelled"]);class ah extends Error{constructor(t,r,a){super(t),this.code=r,this.statusCode=a,this.name="DurableTaskCreateMutationError"}}function i1(e){if(!e||typeof e!="object"||Array.isArray(e))throw new ah("Task create input must be an object.","TASK_CREATE_INVALID",400);const t=e;for(const a of Object.keys(t))if(!s1.has(a))throw new ah(`Task create field is not supported by this contract: ${a}`,"TASK_CREATE_INVALID",400);const r=typeof t.title=="string"?t.title.trim():"";if(!r)throw new ah("Task title is required.","TASK_CREATE_INVALID",400);if(t.status!==void 0&&!o1.has(t.status))throw new ah(`Task create status is not supported by this contract: ${String(t.status)}`,"TASK_CREATE_INVALID",400);return{...t,title:r}}const c1=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_CREATE_CAPTURE_DISABLED"]),l1="/api/taskforce/sync/v3/local/operations";function fu(e){return JSON.parse(vc(i1(e)))}function sh(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:a=[],checklistItems:s=[],comments:i=[],...l}=r;if(!Array.isArray(a)||!Array.isArray(s)||!Array.isArray(i))throw new Error("Local task create carriers must be arrays.");const c=fu(l);if(vc(c)!==vc(t))throw new Error("Local task create root does not match its durable task.");return JSON.parse(vc({...c,attachments:a,checklistItems:s,comments:i}))}function Wb(e={}){const t=Nu(e),r=e.attemptStore||new PC,a=e.fetchImpl||globalThis.fetch,s=async(l,c)=>{let d,f;try{d=await a(`${l1}?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=fu(g);return{workspaceId:l,operationId:c,task:sh({...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:fu(k),localCarriers:{attachments:g,checklistItems:h,comments:y}}}},disabledCodes:c1,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=Da(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=Da(l.workspaceId,"workspaceId"),d=fu(l.task),f=sh(l.localTask||{...d,attachments:[],checklistItems:[],comments:[]},d),p=Da(l.participantId,"participantId"),g=await s(c,p);if(g&&"state"in g)return g;if(g){const k=vc(g.task)!==vc(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:v,comments:C,...S}=h.task;h={...h,task:sh({...S,attachments:k,checklistItems:v,comments:C},fu(S))}}catch{return{state:"failed",phase:"prepare",fallbackEligible:!1,errorCode:"LOCAL_OPERATION_PREPARATION_FAILED"}}const y=!h.created&&vc(h.task)!==vc(f);return i(h,l.isAuthenticated,l.dispatchEnabled,y)},async resumePending(l){const c=Da(l.workspaceId,"workspaceId"),d=Da(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:sh({...k,attachments:g,checklistItems:h,comments:y},fu(k))}}catch{return{state:"failed",phase:"prepare",fallbackEligible:!1,errorCode:"LOCAL_OPERATION_PREPARATION_FAILED"}}return i(p,l.isAuthenticated,l.dispatchEnabled,!0)}}}const jC=["title","description","priority","complexity","type","category","assignee","scheduledDate","dueDate","orderInDay","workstreamId","taxonomies"],d1=new Set([...jC,"status","completedAt","workstreamId","checklistItems","comments","attachments","createdAt","createdBy"]);function u1(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e;if(Object.keys(t).some(s=>!d1.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 a={};for(const s of jC)Object.prototype.hasOwnProperty.call(t,s)&&(a[s]=t[s]);return{task:a,localTask:{...a,checklistItems:t.checklistItems,comments:t.comments,attachments:t.attachments}}}function Ok(){if(!globalThis.crypto?.randomUUID)throw new Error("Secure task-create participant ID generation is unavailable.");return globalThis.crypto.randomUUID()}function MC(e){return`taskforce.sync.v3.task-create-participant-v2:${e}`}function Bk(e,t){globalThis.sessionStorage?.setItem(MC(e),JSON.stringify(t))}function p1(e){const t=MC(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 a={participantId:Ok(),draftFingerprint:null};return Bk(e,a),a}async function f1(e){let t=p1(e);return{get participantId(){return t.participantId},prepareForDraft(r){return t.draftFingerprint&&t.draftFingerprint!==r?t={participantId:Ok(),draftFingerprint:r}:t={...t,draftFingerprint:r},Bk(e,t),t.participantId},rotate(){return t={participantId:Ok(),draftFingerprint:null},Bk(e,t),t.participantId},close(){}}}async function m1(e){const{createdAt:t,updatedAt:r,...a}=e;return Wv(a)}function h1(e){const t=o.useRef(null),r=o.useRef(null),a=o.useCallback(i=>(r.current?.workspaceId!==i&&(r.current?.promise.then(l=>l.close()),r.current={workspaceId:i,promise:f1(i)}),r.current.promise),[]);o.useEffect(()=>{if(!e.localRuntime)return;const i=String(e.workspaceId||"").trim();return i&&i.toLowerCase()!=="default"&&(a(i),e.enabled&&(t.current||(t.current=e.client||Wb()),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())}},[a,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||Wb());const c=await a(l),d=u1(i),f=d?c.prepareForDraft(await m1(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},[a,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"||a(i).then(l=>l.rotate())},s}const $b=["task","on-hold","in-progress","review","done","cancelled"];class g1 extends Error{constructor(t,r,a){super(t),this.code=r,this.statusCode=a,this.name="DurableTaskStatusMutationError"}}const Fb=2e3;function js(e){throw new g1(e,"TASK_STATUS_INVALID_PAYLOAD",400)}function y1(e){return typeof e!="string"||!$b.includes(e)?js(`Task status must be one of: ${$b.join(", ")}.`):e}function k1(e,t){if(e!==null&&typeof e!="string")return js("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>Fb)?js(`Task cancellation reason must contain 1-${Fb} characters.`):t!=="cancelled"&&r!==null?js("Task cancellation reason must be null unless status is cancelled."):r}function v1(e){if(e&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length===0)return{};let t;try{t=EC(e)}catch(r){if(r instanceof xh)return js(r.message);throw r}return Object.prototype.hasOwnProperty.call(t,"assignee")?js("Task status metadataPatch cannot contain assignee; use assigneeIntent."):t}function w1(e,t){if(!e||typeof e!="object"||Array.isArray(e))return js("Task status assigneeIntent must be an object.");const r=e;return r.kind==="preserve"?Object.keys(r).length!==1?js("Preserve assignee intent must contain exactly kind."):{kind:"preserve"}:r.kind==="set"?Object.keys(r).sort().join(",")!=="kind,value"?js("Set assignee intent must contain exactly kind and value."):r.value!==null&&typeof r.value!="string"?js("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"?js("Claim-if-unassigned intent must contain exactly kind and value."):t!=="in-progress"?js("Claim-if-unassigned is valid only when status is in-progress."):typeof r.value!="string"||!r.value.trim()?js("Claim-if-unassigned value must be a nonblank string."):{kind:"claim-if-unassigned",value:r.value.trim()}:js("Task status assigneeIntent kind is invalid.")}function b1(e){if(!e||typeof e!="object"||Array.isArray(e))return js("Task status payload must be an object.");const t=e;if(Object.keys(t).sort().join(",")!=="assigneeIntent,canceledReason,metadataPatch,status")return js("Task status payload must contain exactly status, assigneeIntent, canceledReason, and metadataPatch.");const r=y1(t.status);return{status:r,assigneeIntent:w1(t.assigneeIntent,r),canceledReason:k1(t.canceledReason,r),metadataPatch:v1(t.metadataPatch)}}const S1=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_STATUS_CAPTURE_DISABLED"]);function A1(e={}){const t=Nu(e);return{async setStatus(r){const a=Da(r.workspaceId,"workspaceId"),s=Da(r.entityId,"entityId"),i=b1({status:r.status,assigneeIntent:r.assigneeIntent,canceledReason:r.canceledReason,metadataPatch:r.metadataPatch??{}}),l={domain:"task",entityId:s,mutationKind:"set-status",payload:i};return t.execute({workspaceId:a,fingerprintValue:{contractVersion:3,workspaceId:a,operation:l},buildOperation:()=>l,disabledCodes:S1,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}function C1(e){const t=o.useRef(null);return o.useCallback(async(r,a)=>{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||A1()),t.current.setStatus({workspaceId:s,entityId:i,...a,metadataPatch:a.metadataPatch,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}class iu extends Error{constructor(t,r,a){super(t),this.code=r,this.statusCode=a,this.name="DurableTaskLifecycleMutationError"}}const Ub=2e3;function zb(e,t){if(!t||typeof t!="object"||Array.isArray(t))throw new iu("Task lifecycle payload must be an object.","TASK_LIFECYCLE_INVALID_PAYLOAD",400);const r=t,a=Object.keys(r).sort();if(e==="unarchive"){if(a.length!==0)throw new iu("Unarchive payload must be empty.","TASK_LIFECYCLE_INVALID_PAYLOAD",400);return{cancellation:!1,reason:null}}if(a.length!==2||a[0]!=="cancellation"||a[1]!=="reason"||typeof r.cancellation!="boolean")throw new iu("Archive payload must contain exactly cancellation and reason.","TASK_LIFECYCLE_INVALID_PAYLOAD",400);if(r.reason!==null&&typeof r.reason!="string")throw new iu("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>Ub))throw new iu(`Archive reason must contain 1-${Ub} characters.`,"TASK_LIFECYCLE_INVALID_PAYLOAD",400);if(!r.cancellation&&s!==null)throw new iu("Archive reason must be null when cancellation is false.","TASK_LIFECYCLE_INVALID_PAYLOAD",400);return{cancellation:r.cancellation,reason:s}}class oh extends Error{constructor(t,r,a){super(t),this.code=r,this.statusCode=a,this.name="DurableTaskWorkflowMutationError"}}function Hb(e,t){if(!t||typeof t!="object"||Array.isArray(t))throw new oh("Task workflow payload must be an object.","TASK_WORKFLOW_INVALID_PAYLOAD",400);const r=t,a=Object.keys(r).sort();if(e==="complete"){if(a.length!==0)throw new oh("Complete payload must be empty.","TASK_WORKFLOW_INVALID_PAYLOAD",400);return{assignee:null}}if(a.length!==1||a[0]!=="assignee"||r.assignee!==null&&typeof r.assignee!="string")throw new oh("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 oh("Reopen assignee cannot be blank.","TASK_WORKFLOW_INVALID_PAYLOAD",400);return{assignee:s}}const _1=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_LIFECYCLE_CAPTURE_DISABLED"]);function I1(e){return e.mutationKind==="archive"?zb("archive",{cancellation:e.cancellation,reason:e.reason}):e.mutationKind==="unarchive"?(zb("unarchive",{}),{}):e.mutationKind==="complete"?(Hb("complete",{}),{}):Hb("reopen",{assignee:e.assignee})}function T1(e={}){const t=Nu(e),r=async a=>{const s=Da(a.workspaceId,"workspaceId"),i=Da(a.entityId,"entityId"),l=I1(a),c=a.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:_1,isAuthenticated:a.isAuthenticated,dispatchEnabled:a.dispatchEnabled})};return{mutate:r,archive(a){return r({...a,mutationKind:"archive"})},unarchive(a){return r({...a,mutationKind:"unarchive"})},complete(a){return r({...a,mutationKind:"complete"})},reopen(a){return r({...a,mutationKind:"reopen"})}}}function x1(e){const t=o.useRef(null);return o.useCallback(async(r,a)=>{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||T1()),t.current.mutate({workspaceId:s,entityId:i,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled,...a}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}const R1=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_DELETE_CAPTURE_DISABLED"]);function P1(e={}){const t=Nu(e);return{delete(r){const a=Da(r.workspaceId,"workspaceId"),i={domain:"task",entityId:Da(r.entityId,"entityId"),mutationKind:"delete",payload:{}};return t.execute({workspaceId:a,fingerprintValue:{contractVersion:3,workspaceId:a,operation:i},buildOperation:()=>i,disabledCodes:R1,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}function E1(e){const t=o.useRef(null);return o.useCallback(async r=>{if(!e.enabled)return null;const a=String(e.workspaceId||"").trim(),s=String(r||"").trim();return!a||a.toLowerCase()==="default"||!s?null:(t.current||(t.current=e.client||P1()),t.current.delete({workspaceId:a,entityId:s,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}const N1=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_DELETE_CAPTURE_DISABLED"]);function j1(e={}){const t=Nu(e);return{restore(r){const a=Da(r.workspaceId,"workspaceId"),s=Da(r.entityId,"entityId"),i=Da(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:a,fingerprintValue:{contractVersion:3,workspaceId:a,operation:c},buildOperation:()=>c,disabledCodes:N1,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}function M1(e){const t=o.useRef(null);return o.useCallback(async(r,a,s="previous")=>{if(!e.enabled)return null;const i=String(e.workspaceId||"").trim(),l=String(a||"").trim(),c=String(r||"").trim();return!i||i.toLowerCase()==="default"||!l||!c?null:(t.current||(t.current=e.client||j1()),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 DC=["active","archive","deleted","planning"];function LC(e){const t=new Set(e||[]);return DC.filter(r=>t.has(r))}function D1(e){return Array.from(new Set((e||[]).map(t=>String(t||"").trim()).filter(Boolean)))}function rd(e,t){return{collections:LC(e),taskIds:D1(t?.taskIds),ambiguous:t?.ambiguous===!0}}function OC(e,t){return e?rd([...e.collections,...t.collections],{taskIds:[...e.taskIds||[],...t.taskIds||[]],ambiguous:e.ambiguous||t.ambiguous}):rd(t.collections,{taskIds:t.taskIds,ambiguous:t.ambiguous})}function L1(e){return e.ambiguous?[]:[...e.taskIds||[]]}function O1(e,t){if(e==="taskforce:update"||e==="taskforce:replay-gap"||e==="taskforce:replay-reset"||!t?.length)return rd(DC,{ambiguous:!0});let r=null;for(const a of t){const s=String(a.entityType||"").trim(),i=LC(a.affectedCollections);let l;i.length>0?l=i:s==="task"?l=String(a.changeType||"").trim()==="delete"?["active","archive","deleted"]:["active","archive","deleted","planning"]:s==="taxonomy"?l=["active","archive","planning"]:s==="initiative"||s==="workstream"?l=["planning"]:l=[],r=OC(r,rd(l,{taskIds:a.entityIds}))}return r||rd([])}class B1{values=new Map;async getOrCreate(t,r){const a=this.values.get(t);if(a)return{operationId:a,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 W1{values=new Map;async claim(t,r,a){const s=this.values.get(t);if(s)return{...s,created:!1};const i={fingerprint:t,operationId:a(),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 $1=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 F1(e,t){return e.find(a=>a.id===t.id)?null:t}function Vb(){if(!globalThis.crypto?.randomUUID)throw new Error("Secure workstream operation identity generation is unavailable.");return`operation-${globalThis.crypto.randomUUID()}`}async function Yp(e){if(e.ok||e.status<400||e.status>=500)return!1;const t=await e.clone().json().catch(()=>null);return $1.has(String(t?.code||"").trim())}function U1(e){const t=globalThis.indexedDB?new Bv:new B1,r=globalThis.indexedDB?new xN:new W1;return{async prepareCreate(a,s){if(!globalThis.crypto?.randomUUID)throw new Error("Secure workstream identity generation is unavailable.");const i=En({workspaceId:a,candidate:s}),l=await r.claim(i,{...s,id:s.id||`workstream-${globalThis.crypto.randomUUID()}`,createdAt:s.createdAt||new Date().toISOString()},Vb);return{fingerprint:i,operationId:l.operationId,body:l.workstream}},confirmCreate(a,s){return r.deleteIfMatches(a,s)},abandonCreate(a,s){return r.deleteIfMatches(a,s)},async prepareMutation(a,s,i,l=null){const c=En({workspaceId:a,url:s,body:i,observedState:l}),d=await t.getOrCreate(c,Vb);return{fingerprint:c,operationId:d.operationId}},confirmMutation(a,s){return t.deleteIfMatches(a,s)},abandonMutation(a,s){return t.deleteIfMatches(a,s)}}}async function Zp(e,t,r){const a={...t,headers:{...t.headers||{},"x-taskforce-operation-id":r}},s=()=>fetch(e,a);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 z1={};function Li(e,t){const r=e.findIndex(a=>a.id===t.id);return r===-1?[...e,t]:e.map((a,s)=>s===r?t:a)}function Gy(){return{status:"loading",error:null,isRefreshing:!1,collections:{initiatives:"loading",workstreams:"loading"}}}const hc=hv(z1),Ky=(()=>{const e=hc.baseUrl,t=hc.cloudAuthBaseUrl;if(t)return t;const r=hc.apiBaseUrl;return r||e||"https://app.taskforcehq.ai"})(),ih=2e4,H1=new Set(["external-abort","superseded","workspace-reset","workspace-transition"]);function Ph(e){return typeof DOMException<"u"&&e instanceof DOMException?e.name==="AbortError":String(e?.name||"").toLowerCase()==="aborterror"}function Wk(e){return typeof e=="string"&&H1.has(e)}function qy(e,t){return t.aborted?e===t.reason||Wk(e)||Wk(t.reason)?!0:Ph(e):!1}function Gb(e){const t=new Error(`Startup checks timed out after ${e}ms.`);return t.name="BootstrapTimeoutError",t}function Kb(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")):[],a=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:a,workstreamTaskSummaries:s}}function V1({config:e={},initialTaskId:t,initialActivityEntryId:r,requestedWorkspaceId:a,onTaskCountChange:s,onClose:i}){const l={...s0,...e},{categories:c,types:d,apiEndpoint:f,apiBaseUrl:p,cloudAuthBaseUrl:g,cloudMcpBaseUrl:h,wsBaseUrl:y,shortcut:k}=l,v=typeof window<"u"?String(window.location.hostname||"").trim().toLowerCase():"",C=v==="localhost"||v==="127.0.0.1"||v==="::1",S=typeof window<"u"&&!C,[w,_]=o.useState({cloudEnvironment:"",cloudBaseUrl:"",cloudMcpBaseUrl:"",baseUrl:"",apiBaseUrl:"",cloudAuthBaseUrl:"",wsBaseUrl:"",cloudAuthViaLocalProxy:!1,authSource:"",workspaceMode:"",workspaceSwitchingEnabled:null,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}),[M,R]=o.useState(!1),P=o.useCallback(T=>typeof T=="string"?T.trim().replace(/\/+$/,""):"",[]);o.useEffect(()=>{if(typeof window>"u"){R(!0);return}let T=!1;return(async()=>{try{const te=await fetch("/api/taskforce/auth/runtime-config",{method:"GET",credentials:"include",cache:"no-store"});if(!te.ok)return;const ne=await te.json().catch(()=>({})),ee=ne?.config&&typeof ne.config=="object"?ne.config:{};if(T)return;const et=String(ee.runtimeMode||"").trim().toLowerCase()==="cloud"?"cloud":"local",tt=String(ee.workspaceMode||"").trim(),Wt=tt==="single-local"||tt==="multi-cloud"?tt:et==="cloud"?"multi-cloud":"single-local";fe(et);const tr=tl(ee.syncV3?.combinedFeed?.coverage||{});_({cloudEnvironment:typeof ee.cloudEnvironment=="string"?String(ee.cloudEnvironment).trim().toLowerCase():"",cloudBaseUrl:P(ee.cloudBaseUrl),cloudMcpBaseUrl:P(ee.cloudMcpBaseUrl),baseUrl:P(ee.baseUrl),apiBaseUrl:P(ee.apiBaseUrl),cloudAuthBaseUrl:P(ee.cloudAuthBaseUrl),wsBaseUrl:P(ee.wsBaseUrl),cloudAuthViaLocalProxy:!!ee.cloudAuthViaLocalProxy,authSource:"cloud",workspaceMode:Wt,workspaceSwitchingEnabled:typeof ee.workspaceSwitchingEnabled=="boolean"?!!ee.workspaceSwitchingEnabled:Wt==="multi-cloud",syncV3TaskMetadataActivation:ee.syncV3?.taskMetadataActivation===!0,syncV3TaskCreateActivation:ee.syncV3?.taskCreateActivation===!0,syncV3TaskStatusActivation:ee.syncV3?.taskStatusActivation===!0,syncV3TaskDeleteActivation:ee.syncV3?.taskDeleteActivation===!0,syncV3TaskCloudHttpRootActivation:ee.syncV3?.taskCloudHttpRootActivation===!0,syncV3LocalOutboxDispatch:ee.syncV3?.localOutboxDispatch===!0,localCoordinatorBrowserAuthorityGate:ee.syncV3?.localCoordinatorBrowserAuthorityGate===!0,syncV3InitiativeFeedActivation:typeof ee.syncV3?.initiativeFeedActivation=="boolean"?ee.syncV3.initiativeFeedActivation:void 0,syncV3CombinedFeedRouteAvailable:typeof ee.syncV3?.combinedFeed?.routeAvailable=="boolean"?ee.syncV3.combinedFeed.routeAvailable:void 0,syncV3CombinedFeedActivation:typeof ee.syncV3?.combinedFeed?.activationReady=="boolean"?ee.syncV3.combinedFeed.activationReady:void 0,syncV3CombinedFeedCoverage:tr?.coverage})}catch{}finally{T||R(!0)}})(),()=>{T=!0}},[P]);const b=typeof window>"u"?"":C?Ky:"",$=P(hc.baseUrl),I=P(hc.apiBaseUrl),E=P(hc.cloudBaseUrl),K=P(hc.cloudMcpBaseUrl),U=P(hc.cloudAuthBaseUrl),L=P(hc.wsBaseUrl),D=P(p),ie=P(g),H=P(h),be=w.apiBaseUrl||w.baseUrl,me=D||be||(C?"":I||$)||"",Ve=ie||U||$,Re=w.cloudAuthBaseUrl||w.baseUrl,ye=((C?Re||Ve:Ve||Re)||me||b).trim().replace(/\/+$/,""),ue=P(W0(w.cloudMcpBaseUrl||w.cloudAuthBaseUrl||w.cloudBaseUrl||H||ie||K||U||E||ye)),ve=(w.cloudMcpBaseUrl||H||ue||w.cloudBaseUrl||K||E||ye||b).trim().replace(/\/+$/,""),Pe=!S&&!!ye&&!me,Le=S||M&&!!(ye||me),se=Le&&!Pe,V=!!(ye||me||S),W=S?"cloud":"local",[z,fe]=o.useState(()=>W),ke=W==="local"&&C&&V?kv():"",Y=ke.length>0,we=o.useCallback(T=>!T||/^https?:\/\//i.test(T)||!me||!T.startsWith("/")?T:`${me}${T}`,[me]),q=o.useCallback(T=>{if(!T||/^https?:\/\//i.test(T)||!T.startsWith("/"))return T;const te=T.startsWith("/api/taskforce/auth/")||T.startsWith("/api/taskforce/account/")||T.startsWith("/api/taskforce/billing/")||T.startsWith("/api/taskforce/sync/")||T.startsWith("/api/taskforce/settings/mcp/");if(!S&&te&&(z==="cloud"||!M||w.cloudAuthViaLocalProxy||w.workspaceMode==="multi-cloud"))return T;const ne=ye||me;if(ne){const ee=`${ne}${T}`;if(typeof window<"u"&&!S&&te)try{if(new URL(ee,window.location.origin).origin===window.location.origin)return`${Ky}${T}`}catch{return`${Ky}${T}`}return ee}return T},[M,w.cloudAuthViaLocalProxy,w.workspaceMode,ye,me,S,z]),le=o.useCallback(T=>{const te=String(T||"").trim()||"/taskforce-ws",ne=te.startsWith("/")?te:`/${te}`,ee=String(y||w.wsBaseUrl||L||me||"").trim().replace(/\/+$/,""),Ke=typeof window<"u"?window.location.origin:"",et=ee||Ke;if(!et)return"";try{const tt=new URL(ne,et);return tt.protocol==="https:"&&(tt.protocol="wss:"),tt.protocol==="http:"&&(tt.protocol="ws:"),tt.toString()}catch{return""}},[y,w.wsBaseUrl,L,me]),[$e,re]=o.useState("tasks"),[de,He]=o.useState(!1),[ce,pe]=o.useState(!1),[xe,N]=o.useState("open"),[X,Ae]=o.useState(!1),[Te,he]=o.useState(hu(l.theme)||Dh),[ot,We]=o.useState(hu(l.theme)||Dh),[Xe,ae]=o.useState(!0),[G]=o.useState(".taskforce"),Ie=!1,[Fe,it]=o.useState(!1),[Me,qe]=o.useState([]),[ge,_e]=o.useState([]),[Be,Ge]=o.useState(""),[F,Ne]=o.useState(null),[Ce,ut]=o.useState(null),[mt,Ue]=o.useState(""),[wt,kt]=o.useState(""),rt=o.useMemo(()=>N0({projectRoot:mt,runtimeMode:W}),[mt,W]),[Ht,lr]=o.useState(""),[rr,wr]=o.useState(""),st=L0(z),zt=w.workspaceMode==="single-local"||w.workspaceMode==="multi-cloud"?w.workspaceMode:st.workspaceMode,Lt=typeof w.workspaceSwitchingEnabled=="boolean"?w.workspaceSwitchingEnabled:st.workspaceSwitchingEnabled,[Mt,Ee]=o.useState(!1),[ct,lt]=o.useState(!1),[Je,nt]=o.useState(Y),[Ct,Rt]=o.useState(Y?ke:"anonymous"),[Dt,It]=o.useState(""),[Qt,ir]=o.useState(""),[dr,sr]=o.useState(""),[pr,Jr]=o.useState([]),[Tr,br]=o.useState(""),[ur,Qr]=o.useState(!0),[Hr,Gt]=o.useState(null),[bt,gr]=o.useState(()=>{if(W==="local")return"default";const T=yk(rt);return T&&T.toLowerCase()!=="default"?T:"default"}),u=o.useMemo(()=>j0({projectRoot:mt,runtimeMode:z,workspaceId:bt}),[mt,z,bt]),[ht,yr]=o.useState([]),[Er,mn]=o.useState(()=>el()),[qt,Vr]=o.useState(!1),[Tt,Ut]=o.useState(Y),[fr,$t]=o.useState("idle"),[Mr,Fr]=o.useState(null),[Vt,Dr]=o.useState(null),Ye=o.useRef(null),en=o.useRef(0),bn=o.useRef(0),tn=o.useRef(Y),ft=o.useRef(bt),rn=o.useRef(null),Nt=o.useRef(0),or=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"),[xr,hn]=o.useState(0),ys=o.useRef(null),Nn=o.useRef(null),Sn=o.useRef(null),kr=o.useRef(null),cr=o.useRef(null),Wr=o.useRef(null),on=o.useRef(null),dt=o.useCallback((T,te)=>{const ne=String(T||"").trim();if(!ne)return;const ee=String(ft.current||"").trim();!te?.skipTransitionReset&&ee&&ee!==ne&&(Nt.current+=1,hn(Nt.current)),ft.current=ne,te?.clearExplicitSelection!==!1&&(rn.current=null),gr(ne)},[]);o.useEffect(()=>{ft.current=bt},[bt]);const Un=o.useCallback(T=>{const te=String(T||"").trim();te&&gr(()=>{const ne=String(rn.current||"").trim();let ee=te;return ne&&ne!==te&&(ee=ne),ft.current=ee,ee})},[]),Tn=o.useCallback(()=>({workspaceId:String(ft.current||"default").trim()||"default",epoch:Nt.current}),[]),jn=o.useCallback(()=>ft.current,[]),an=o.useCallback(T=>(String(ft.current||"default").trim()||"default")!==T.workspaceId||Nt.current!==T.epoch,[]),Ds=o.useCallback(T=>Nt.current!==T.epoch,[]),da=o.useCallback(T=>Ph(T)||Wk(T),[]),J=o.useCallback(()=>{[ys,Nn,Sn,kr,cr,Wr].forEach(T=>{T.current?.abort("workspace-transition"),T.current=null}),on.current!==null&&typeof window<"u"&&(window.clearTimeout(on.current),on.current=null),Mc.current=null},[]),Qe=o.useMemo(()=>zN({shouldGateProtectedApiCalls:se,runtimeMode:z,authSessionResolved:Tt,authRequiredForApi:Mt,isAuthenticated:Je}),[se,z,Tt,Mt,Je]),St=Qe.shouldDeferProtectedApiCalls,Xt=Qe.shouldBlockProtectedApiCalls,[at,Ft]=o.useState(null),[Lr,Nr]=o.useState(null),[Rr,Kt]=o.useState(!1),[Bn,Xn]=o.useState("unknown"),[va,Cr]=o.useState(null),[cn,kn]=o.useState(l.shortcut||"Alt+T"),[zn,ea]=o.useState(l.priorities||[]),[La,mr]=o.useState(""),[Zo,Za]=o.useState(!1),[ks,Eo]=o.useState(!1),[xa,Ja]=o.useState(!0),[Ra,vs]=o.useState(()=>R0()),Qa=o.useMemo(()=>x0(),[]),[ws,ln]=o.useState(()=>{try{return(Intl.DateTimeFormat().resolvedOptions().locale||"").toLowerCase().startsWith("en-us")?"sunday":"monday"}catch{return"monday"}}),[Oa,yn]=o.useState(!1),[Vs,Mn]=o.useState(!0),[Ls,vt]=o.useState(!1),[nr,nn]=o.useState(""),[vn,ta]=o.useState(null);WN({currentWorkspaceIdRef:ft,resolveApiUrl:we,runtimeMode:z});const{initiativeTemplates:ho,fetchInitiativeTemplates:Os}=nN({shouldDeferProtectedApiCalls:St,shouldBlockProtectedApiCalls:Xt}),{zenMode:wa,setZenModeState:Bs,toggleZenMode:Xa}=aN(),[Xr,Ar]=o.useState(!1),[An,es]=o.useState(null),{uiNotice:Wn,pushNotice:ra,clearNotice:ts}=XE(),rs=o.useRef(Wn);rs.current=Wn;const[na,aa]=o.useState([]),un=o.useRef(null),[bs,Ws]=o.useState(0),go=o.useCallback(T=>!T||!mt?T:T.startsWith(mt)?T.slice(mt.length).replace(/^[/\\]+/,""):T,[mt]),[pn,Hn]=o.useState([]),[ua,Pa]=o.useState([]),[Gs,Vn]=o.useState([]),[wn,oe]=o.useState([]),[yt,Yt]=o.useState([]),[vr,Ur]=o.useState(Gy),[sa,Dn]=o.useState([]),[Cn,gi]=o.useState(null),[ba,Ba]=o.useState(null),[yo,Ss]=o.useState(()=>new Set),ko=o.useRef(null),Bt=o.useRef(null),[Gn,$n]=o.useState(!1),[sn,Sa]=o.useState(null),[ns,As]=o.useState(null),Ks=o.useCallback(T=>{String(t||"").trim()||As(T)},[t]),[No,jo]=o.useState(!1),[pa,Wa]=o.useState([]),[Yr,$a]=o.useState(!1),[Kn,Mo]=o.useState({}),yi=o.useRef({authSessionResolved:!1,configLoaded:!1,workspaceBootstrapPending:!1});o.useEffect(()=>{yi.current={authSessionResolved:Tt,configLoaded:Yr,workspaceBootstrapPending:qt}},[Tt,Yr,qt]);const qs=o.useCallback(T=>{$t(T),T!=="ready"&&(Fr(null),Dr(Date.now()))},[]),Ys=o.useCallback(T=>{const te=yi.current;te.authSessionResolved&&te.configLoaded&&!te.workspaceBootstrapPending||($t("stalled"),Fr(T),Dr(ne=>ne??Date.now()))},[]),Aa=o.useCallback(async(T,te,ne=lf,ee)=>{const Ke=new AbortController,et=ee?.signal,tt=Number(ne)>0?Number(ne):lf,Wt=Tn(),tr=T.startsWith("/api/taskforce/")?Dy(te,qw({workspaceId:Wt.workspaceId,epoch:Wt.epoch,seed:or.current})):te,Pr=typeof window<"u"?window.setTimeout(()=>Ke.abort("bootstrap-timeout"),tt):null,$r=()=>{Ke.abort(et?.reason||"external-abort")};et&&(et.aborted?$r():et.addEventListener("abort",$r,{once:!0}));try{return await fetch(T,{...tr||{},signal:Ke.signal})}catch(_r){throw et?.aborted&&qy(_r,et)?et.reason||_r:Ph(_r)||_r==="bootstrap-timeout"?Gb(tt):_r}finally{et&&et.removeEventListener("abort",$r),Pr!==null&&typeof window<"u"&&window.clearTimeout(Pr)}},[Tn]),as=o.useMemo(()=>{const T=!Tt,te=fr==="stalled",ne=Tt&&(!Yr||qt||te);let ee="Checking account, workspace access, and setup status...";return fr==="auth"?ee="Verifying session...":fr==="workspace"?ee="Resolving workspace access...":fr==="config"&&(ee="Loading configuration..."),{phase:fr,auth:{resolved:Tt,pending:T},config:{loaded:Yr},workspace:{pending:qt},pending:T||ne,authPending:T,appPending:ne,ready:Tt&&Yr&&!qt&&fr==="ready",stalled:te,subtitle:ee,error:Mr,startedAt:Vt}},[Tt,Mr,fr,Vt,Yr,qt]),Cs=o.useCallback(T=>String(T?.name||"")==="BootstrapTimeoutError",[]),[Do,Zs]=o.useState([]),[_s,Js]=o.useState({}),[qn,Fa]=o.useState(l.taxonomies||[]),Gr=o.useMemo(()=>(pa.length>0?pa:c||[]).map(te=>typeof te=="string"?{value:te.toLowerCase().replace(/\s+/g,"-"),label:te}:te).sort((te,ne)=>te.label.localeCompare(ne.label)),[pa,c]),rl=o.useMemo(()=>({categories:Gr,types:Do,priorities:zn,taxonomies:qn,displayLabels:_s}),[Gr,Do,zn,qn,_s]);o.useMemo(()=>Gr.filter(T=>!T.disabled),[Gr]);const oa=o.useCallback(T=>T.find(ne=>ne.value==="default"||ne.value==="general"||ne.label==="General"||ne.value==="Taskforce"||ne.label==="Taskforce")?.value||T[0]?.value||"default",[]),Fn=Do.length>0?Do:d,[vo,nl]=o.useState(!1),[ud,Ea]=o.useState(""),Sc=o.useCallback(()=>Ea(""),[]),Na="Authentication required. Sign in to continue.",[Ca,ss]=o.useState(!1),[os,Lo]=o.useState(!1),$s=o.useCallback(()=>{lt(z==="cloud"),nt(!1),ir(""),sr(""),br(""),Ea(Na)},[Na,z]),{recentlyChangedTaskIds:Ac,fetchTasks:Hi,fetchArchive:Cc,refreshTaskCollections:_c,refreshTaskCollectionsFromInvalidation:Ic,mergeTaskFromServer:al}=sN({tasks:pn,archivedTasks:ua,setTasks:Hn,setArchivedTasks:Pa,setLoadingTasks:$n,getCurrentWorkspaceId:jn,workspaceResetKey:`${bt}:${xr}`,shouldDeferProtectedApiCalls:St,shouldBlockProtectedApiCalls:Xt,handleUnauthorized:$s,authRequiredForApi:Mt});o.useEffect(()=>{xr!==0&&(Mc.current=null,gl.current="",cp.current="",Qi.current="",jc.current="",yl.current="",ss(!1),mn(el()),Lo(!1),Dn([]),gi(null),Ba(null),Ss(new Set),ko.current=null,Bt.current=null,Hn([]),Pa([]),Vn([]),oe([]),Yt([]),Ur(Gy()),As(null),$n(!1))},[Pa,$n,Hn,xr]);const _a=o.useCallback(async(T=!1,te)=>{if(!(te?.ignoreAuthGuard===!0)&&(St||Xt))return!1;T||$n(!0);const ee=Tn();cr.current?.abort("superseded");const Ke=new AbortController;cr.current=Ke;try{let et=await fetch("/api/taskforce/deleted",{signal:Ke.signal});if(et.status===404&&(et=await fetch("/api/taskforce/trash",{signal:Ke.signal})),et.status===401)return $s(),Dn([]),!1;if(et.status===404)return an(ee)?!1:(Dn([]),Ba(ee.workspaceId),!0);if(et.ok){const tt=await et.json();if(an(ee))return!1;const Wt=Array.isArray(tt?.deleted)?tt.deleted.map(tr=>{const Pr=tr?.taskSnapshot&&typeof tr.taskSnapshot=="object"?xo(tr.taskSnapshot):null;return Pr?{...tr,taskSnapshot:Pr}:null}).filter(tr=>!!tr):[];return Dn(Wt),Ba(ee.workspaceId),!0}return!1}catch(et){return qy(et,Ke.signal)||da(et)||console.error("[Taskforce] Failed to fetch deleted tasks:",et),!1}finally{cr.current===Ke&&(cr.current=null),T||$n(!1)}},[Tn,$s,da,an,St,Xt]),Zr=o.useCallback(async T=>{if(!(T?.ignoreAuthGuard===!0)&&(St||Xt))return;const ne=Tn();Wr.current?.abort("superseded"),on.current!==null&&typeof window<"u"&&(window.clearTimeout(on.current),on.current=null);const ee=new AbortController;Wr.current=ee,Ur(Ke=>({...Ke,isRefreshing:!0}));try{const Ke=qw({workspaceId:ne.workspaceId,epoch:ne.epoch,seed:or.current}),et=async _r=>{if(typeof window>"u")return fetch(_r,Dy({signal:ee.signal},Ke));const Rn=new AbortController,ca=window.setTimeout(()=>Rn.abort("planning-timeout"),ih),so=()=>Rn.abort(ee.signal.reason||"external-abort");ee.signal.aborted?so():ee.signal.addEventListener("abort",so,{once:!0});try{return await fetch(_r,Dy({signal:Rn.signal},Ke))}catch(Es){if(ee.signal.aborted)throw ee.signal.reason||Es;if(Ph(Es)||Es==="planning-timeout")return null;throw Es}finally{window.clearTimeout(ca),ee.signal.removeEventListener("abort",so)}};let tt=null,Wt={initiatives:"ready",workstreams:"ready"};const tr=await et("/api/taskforce/planning/bootstrap");if(tr?.status===401){$s(),Vn([]),oe([]),Yt([]),Ur({status:"error",error:"Sign in again to load Planning.",isRefreshing:!1,collections:{initiatives:"error",workstreams:"error"}});return}if(tr===null)throw Gb(ih);if(tr.ok){const _r=await tr.json().catch(()=>null);if(!_r||!Array.isArray(_r.initiatives)||!Array.isArray(_r.workstreams))throw new Error("Planning returned an incomplete response.");tt=Kb(_r)}else{const[_r,Rn]=await Promise.all([et("/api/taskforce/initiatives"),et("/api/taskforce/workstreams")]);if(!_r||!Rn)throw new Error("Planning endpoints timed out during startup.");if(_r.status===401||Rn.status===401){$s(),Vn([]),oe([]),Yt([]),Ur({status:"error",error:"Sign in again to load Planning.",isRefreshing:!1,collections:{initiatives:"error",workstreams:"error"}});return}const ca=async(Mp,Dm)=>{if(!Mp.ok)return{items:[],status:"error"};const Hc=await Mp.json().catch(()=>null),Lm=Array.isArray(Hc)?Hc:Hc&&typeof Hc=="object"&&Array.isArray(Hc[Dm])?Hc[Dm]:null;return Lm?{items:Lm,status:"ready"}:{items:[],status:"error"}},[so,Es]=await Promise.all([ca(_r,"initiatives"),ca(Rn,"workstreams")]);if(Wt={initiatives:so.status,workstreams:Es.status},Wt.initiatives==="error"&&Wt.workstreams==="error")throw new Error("Planning could not be loaded.");tt=Kb({initiatives:so.items,workstreams:Es.items,workstreamTaskSummaries:[]})}if(an(ne))return;Vn(tt.initiatives),oe(tt.workstreams),Yt(tt.workstreamTaskSummaries);const Pr=Wt.initiatives==="error"||Wt.workstreams==="error",$r=tt.initiatives.length===0&&tt.workstreams.length===0;Ur({status:Pr?"partial":$r?"empty":"ready",error:Pr?"Some planning data could not be loaded.":null,isRefreshing:!1,collections:Wt})}catch(Ke){if(qy(Ke,ee.signal)||da(Ke))return;if(Cs(Ke)?(hr("planning_bootstrap_timeout",{workspaceId:ne.workspaceId,epoch:ne.epoch,timeoutMs:ih}),console.warn("[Taskforce] Planning bootstrap timed out during startup; retrying in background.")):console.error("[Taskforce] Failed to fetch planning entities:",Ke),!an(ne)){const tt=Gs.length>0||wn.length>0;Ur(Wt=>({status:tt?"partial":"error",error:Ke instanceof Error&&Ke.message?Ke.message:"Planning could not be loaded.",isRefreshing:!1,collections:tt?Wt.collections:{initiatives:"error",workstreams:"error"}}))}typeof window<"u"&&!an(ne)&&Gs.length===0&&wn.length===0&&(on.current=window.setTimeout(()=>{on.current=null,Zr(T)},3e3))}finally{Wr.current===ee&&(Wr.current=null)}},[lf,ih,Gs.length,Tn,$s,da,an,St,Xt,wn.length]),sl=o.useCallback(async(T,te)=>{const ne=String(te||"").trim();if(!ne)throw new Error(`Cannot load ${T} details without an id.`);const ee=Tn(),Ke=await fetch(`/api/taskforce/${T}/${encodeURIComponent(ne)}`),et=await Ke.json().catch(()=>({}));if(!Ke.ok)throw new Error(et?.error||`Failed to load ${T} details (${Ke.status})`);const tt=et;return an(ee)||(T==="initiative"?Vn(Wt=>Li(Wt,tt)):oe(Wt=>Li(Wt,tt))),tt},[Tn,an]),ja=o.useCallback(async(T=!1,te)=>{await Hi(T,te)},[Hi]),Kr=o.useCallback(async(T=!1,te)=>{const ne=String(ft.current||"default").trim()||"default",ee=await Cc(T,te),Ke=String(ft.current||"default").trim()||"default";return ee&&Ke===ne&&gi(ne),ee},[Cc]),Ua=o.useCallback((T=!0,te)=>{const ne=String(ft.current||"default").trim()||"default";if(Cn===ne)return Promise.resolve(!0);const ee=ko.current;if(ee?.workspaceId===ne)return ee.promise;const Ke=Kr(T,te).finally(()=>{ko.current?.promise===Ke&&(ko.current=null)});return ko.current={workspaceId:ne,promise:Ke},Ke},[Cn,Kr]),fa=o.useCallback((T=!0,te)=>{const ne=String(ft.current||"default").trim()||"default";if(ba===ne)return Promise.resolve(!0);const ee=Bt.current;if(ee?.workspaceId===ne)return ee.promise;const Ke=_a(T,te).finally(()=>{Bt.current?.promise===Ke&&(Bt.current=null)});return Bt.current={workspaceId:ne,promise:Ke},Ke},[ba,_a]),Jo=o.useCallback(()=>{const T=String(ft.current||"default").trim()||"default";return Cn!==T?Promise.resolve(!1):Kr(!0)},[Cn,Kr]),ol=o.useCallback((T=!0)=>{const te=String(ft.current||"default").trim()||"default";return ba!==te?Promise.resolve(!1):_a(T)},[ba,_a]),O=o.useCallback(async T=>{const te=T?.isSilent!==!1,ne=T?.ignoreAuthGuard===!0,ee=String(ft.current||"default").trim()||"default",Ke=Cn===ee,et=ba===ee;await Promise.all([_c({isSilent:te,ignoreAuthGuard:ne,includeArchive:Ke,highlightChangedTaskIds:T?.highlightChangedTaskIds}),et?_a(te,{ignoreAuthGuard:ne}):Promise.resolve(!1),Zr({ignoreAuthGuard:ne})])},[Cn,ba,_a,Zr,_c]),j=o.useRef(!1),xt=o.useRef(null),Et=o.useRef(Cn),At=o.useRef(ba),De=o.useRef(Ic),Fs=o.useRef(_a),er=o.useRef(Zr);Et.current=Cn,At.current=ba,De.current=Ic,Fs.current=_a,er.current=Zr;const Yn=o.useCallback(async T=>{const te=String(ft.current||"default").trim()||"default",ne=xt.current;if(xt.current={workspaceId:te,scope:ne?.workspaceId===te?OC(ne.scope,T):T},!j.current){j.current=!0;try{for(;xt.current;){const ee=xt.current;xt.current=null;const Ke=String(ft.current||"default").trim()||"default";if(ee.workspaceId!==Ke)continue;const et=new Set(ee.scope.collections),tt=et.has("active"),Wt=et.has("archive")&&Et.current===Ke,tr=et.has("deleted")&&At.current===Ke,Pr=L1(ee.scope);await Promise.all([tt||Wt?De.current({includeActive:tt,includeArchive:Wt,highlightChangedTaskIds:Pr}):Promise.resolve(),tr?Fs.current(!0):Promise.resolve(!1),et.has("planning")?er.current():Promise.resolve()])}}finally{j.current=!1}}},[]),Oo=o.useRef(()=>{}),ma=o.useRef(()=>{}),Is=o.useRef(async()=>!1),gn=o.useCallback(T=>Is.current(T),[]),{userGlobalSyncStatus:il,setUserGlobalSyncStatus:ki,userGlobalSyncError:Mu,setUserGlobalSyncError:vi,workspaceLastPullAt:Qo,workspaceLastPushAt:Xo,workspaceLastErrorAt:Ig,workspaceLastErrorMessage:wi,workspaceLastSuccessfulSyncAt:pd,workspaceCloudSyncEnabled:dn,workspaceSyncPhase:xn,workspaceSyncSetupIntent:is,workspaceSyncStatus:Ff,workspaceSyncSummary:Uf,workspaceSyncRecommendedAction:zf,workspaceSyncBusy:fd,workspaceSyncPendingChanges:Du,workspaceTaskRelationships:Hf,localCoordinatorDataVersion:Lu,localCoordinatorStatus:Vf,switchLocalCoordinatorWorkspace:Ou,transferLocalCoordinatorOwnership:Gf,workspacePendingSignatureRef:Bu,workspaceDeletedTaskIdsRef:Kf,workspaceDeletedTaskWatermarksRef:Wu,loadWorkspaceSyncState:qf,applyWorkspaceSyncStateSnapshot:$u,syncUserGlobalSettings:Fu,buildWorkspaceSyncSignature:Uu,pushWorkspaceChangesToCloud:Yf,saveWorkspaceCloudSyncSettings:zu,retryUserGlobalSettingsSync:Zf,retryWorkspaceCloudSync:cl,resetWorkspaceSyncCursorAndPull:md,getWorkspaceSyncDiagnostics:Hu}=JE({currentWorkspaceId:bt,cloudAuthConfigured:V,runtimeMode:z,authSessionResolved:Tt,isAuthenticated:Je,authUserId:Ct,projectName:wt,resolveCloudAuthUrl:q,resolveWebSocketUrl:le,realtimeSyncEnabled:Rr,localOutboxDispatchEnabled:w.syncV3LocalOutboxDispatch,localCoordinatorBrowserAuthorityGateEnabled:w.localCoordinatorBrowserAuthorityGate,initiativeFeedActivationEnabled:w.syncV3InitiativeFeedActivation,combinedFeedActivationEnabled:w.syncV3CombinedFeedActivation,combinedFeedCoverage:w.syncV3CombinedFeedCoverage,tasks:pn,archivedTasks:ua,deletedTasks:sa,initiatives:Gs,workstreams:wn,taxonomies:qn,taxonomyState:Ca?rl:void 0,setupState:at,globalTheme:ot,locale:Ra,globalWeekStartsOn:ws,themeUseGlobalDefault:Xe,setTasks:Hn,setArchivedTasks:Pa,setAuthBlocked:lt,setIsAuthenticated:nt,checkAuthSession:gn,setGlobalTheme:We,setCurrentTheme:he,setSetupState:Ft,setLocale:vs,setGlobalWeekStartsOn:ln,fetchPlanningEntities:Zr}),Tc=o.useCallback((T=Fn)=>T.find(te=>String(te.value||"").trim().length>0)?.value||po,[Fn]),[ll,ei]=o.useState(()=>oa(Gr)),[xc,Bo]=o.useState(()=>Tc(Fn)),[hd,Vi]=o.useState(2),[gd,Vu]=o.useState(3),[Jf,yd]=o.useState("task"),[Rc,bi]=o.useState("unassigned"),[Qf,Wo]=o.useState(""),[$o,ti]=o.useState(""),[Pc,kd]=o.useState(""),[Si,Ai]=o.useState(""),[Ts,vd]=o.useState(""),dl=o.useRef(Si),xs=o.useRef(Ts),wd=o.useRef(!1),[Ci,Gu]=o.useState(!1),wo=o.useCallback(()=>{const T=dl.current.trim()!==""||xs.current.trim()!=="";T!==wd.current&&(wd.current=T,Gu(T))},[]),Ku=o.useCallback(T=>{dl.current=T,wo()},[wo]),bd=o.useCallback(T=>{xs.current=T,wo()},[wo]),ri=o.useCallback(()=>dl.current,[]),Fo=o.useCallback(()=>xs.current,[]);o.useEffect(()=>{dl.current=Si,wo()},[wo,Si]),o.useEffect(()=>{xs.current=Ts,wo()},[Ts,wo]);const[ni,Sr]=o.useState([]),[Sd,Us]=o.useState([]),[Gi,ai]=o.useState(""),[Ki,Xf]=o.useState({}),Ad=o.useRef(null),[Cd,qu]=o.useState(""),[em,ul]=o.useState(""),[_i,Ec]=o.useState(""),[pl,Yu]=o.useState({});o.useEffect(()=>{if(sn)return;const T=String(xc||"").trim();Fn.some(ne=>String(ne.value||"").trim()===T)||Bo(Tc(Fn))},[Fn,sn,Tc,xc]);const{searchQuery:Zu,setSearchQuery:bo,filterCategories:Ju,setFilterCategories:Qu,filterPriorities:_d,setFilterPriorities:qi,filterTypes:fl,setFilterTypes:Tg,filterStatus:Xu,setFilterStatus:ml,filterAssignees:cs,setFilterAssignees:si,filterAssigneesAllSelected:xg,setFilterAssigneesAllSelected:Rg,filterTaxonomies:Uo,setFilterTaxonomies:Ii,hasInitedFilters:Id,setHasInitedFilters:Td,sortBy:ep,setSortBy:tp,sortOrder:rp,setSortOrder:Yi,toggleSortOrder:Nc,groupBy:xd,setGroupBy:np,emptyColumnMode:ap,setEmptyColumnMode:Zi,collapsedCategories:Ji,setCollapsedCategories:Rd,clearFilters:Ot,filteredTasks:tm,searchAgnosticTasks:sp,filteredArchive:rm,groupedTasks:Pd}=_N({tasks:pn,archivedTasks:ua,activeCategories:Gr,activeTypes:Fn,priorities:zn,taxonomies:qn,configLoaded:Yr,referenceDataLoaded:Ca,assigneeOptionsLoaded:os,assigneeOptions:Er});Oo.current=ki,ma.current=vi;const{checkAuthSession:nm}=UN({runtimeConfigReady:M,shouldProbeCloudAuth:Le,authSessionResolved:Tt,resolveCloudAuthUrl:q,authOnlyCloudMode:Pe,authRequiredError:Na,runtimeMode:z,workspaceSelectionScope:rt,markBootstrapPhase:qs,markBootstrapStalled:Ys,setRuntimeMode:fe,setAuthRequiredForApi:Ee,setIsAuthenticated:nt,setAuthUserId:Rt,setAuthWorkspaceId:It,setAuthUserEmail:ir,setAuthUserDisplayName:sr,setAuthUserAvatarUrl:br,setUserGlobalSyncStatus:T=>Oo.current(T),setUserGlobalSyncError:T=>ma.current(T),setHasBetaAccess:Qr,setAvailableWorkspaces:yr,setHydratedWorkspaceRole:Gt,setAssigneeOptions:mn,setAuthBlocked:lt,setAuthSessionResolved:Ut,setError:Ea,applyResolvedWorkspaceId:Un,readPersistedWorkspaceId:yk,authSessionRequestRef:Ye,authSessionEpochRef:en,authSessionLastCheckedAtRef:bn,authSessionLastResultRef:tn,isLoopbackHost:C,setAuthStateReadyRefs:(T,te,ne)=>{Nd.current=te,ip.current=ne,jd.current=T}});Is.current=nm;const[Ed,am]=o.useState("tasks"),[Pg,Eg]=o.useState(!1),[Ng,jg]=o.useState(!1),[op,sm]=o.useState([]),[Qs,hl]=o.useState(!1),om=o.useRef(null),Rs=o.useRef(null),im=o.useRef(!1),Nd=o.useRef(Tt),ip=o.useRef(Mt),jd=o.useRef(Je),gl=o.useRef(""),cp=o.useRef(""),Qi=o.useRef(""),jc=o.useRef(""),yl=o.useRef(""),Mc=o.useRef(null),kl=o.useRef(!1),lp=o.useRef(!1),{handleSaveSettings:vl,handleSaveTheme:wl,handleSaveGlobalTheme:Md,handleJsonBackupEnabledChange:cm,handleSaveGlobalJsonBackupEnabled:bl,handleSaveGlobalWeekStartsOn:dp,handleSaveLocale:Dd,handleManualComplexityEnabledChange:Dc,handleChecklistDropdownEnabledChange:Mg,handleShowTaskCardStatusLabelChange:up,handleResetProjectToGlobal:pp}=tN({keyShortcut:cn,themeUseGlobalDefault:Xe,runtimeMode:z,jsonBackupUseGlobalDefault:xa,globalTheme:ot,globalJsonBackupEnabled:ks,setCurrentTheme:he,setThemeUseGlobalDefault:ae,setGlobalTheme:We,setJsonBackupEnabled:Za,setJsonBackupUseGlobalDefault:Ja,setGlobalJsonBackupEnabled:Eo,setGlobalWeekStartsOn:ln,setLocale:vs,setManualComplexityEnabled:yn,setChecklistDropdownEnabled:Mn,setShowTaskCardStatusLabel:vt});o.useEffect(()=>{z==="cloud"&&rt!==id&&sx(bt,rt)},[z,bt,rt]),o.useEffect(()=>{Nd.current=Tt,ip.current=Mt,jd.current=Je},[Tt,Mt,Je]);const{hasLoadedUiStateRef:lm,loadPersistedUiState:dm,resetPersistedUiStateLoad:fp,setActiveWorkspaceModule:Dg,uiStateReady:Xi}=KN({runtimeMode:z,workspaceUiStateScope:u,currentWorkspaceId:bt,currentWorkspaceIdRef:ft,referenceDataLoaded:Ca,activeCategories:Gr,activeTypes:Fn,priorities:zn,taxonomies:qn,activeWorkspaceModule:Ed,setActiveWorkspaceModuleState:am,groupBy:xd,setGroupBy:np,emptyColumnMode:ap,setEmptyColumnMode:Zi,taskScope:xe,setTaskScope:N,openTaskId:sn,setPendingOpenTaskId:Ks,compressedCards:X,setCompressedCards:Ae,zenMode:wa,setZenModeState:Bs,searchQuery:Zu,setSearchQuery:bo,collapsedCategories:Ji,setCollapsedCategories:Rd,filterCategories:Ju,setFilterCategories:Qu,filterPriorities:_d,setFilterPriorities:qi,filterTypes:fl,setFilterTypes:Tg,filterStatus:Xu,setFilterStatus:ml,filterAssignees:cs,setFilterAssignees:si,filterAssigneesAllSelected:xg,setFilterAssigneesAllSelected:Rg,filterTaxonomies:Uo,setFilterTaxonomies:Ii,sortBy:ep,setSortBy:tp,sortOrder:rp,setSortOrder:Yi,hasInitedFilters:Id,setHasInitedFilters:Td,lastUsedCategory:Cd,setLastUsedCategory:qu,taskforceAgentId:em,setTaskforceAgentId:ul,taskforceAgentConversationId:_i,setTaskforceAgentConversationId:Ec,taskforceAgentConversationByAgentId:pl,setTaskforceAgentConversationByAgentId:Yu}),Ti=o.useCallback(T=>{const te=T.runtimeMode==="cloud"?"cloud":"local",ne=!!T.authRequiredForApi,ee=typeof T.userId=="string"&&T.userId.trim().length>0?T.userId.trim():"anonymous",Ke=te==="cloud"&&ee!=="anonymous",et=Ke||jd.current,tt=Nd.current;if(fe(te),Ee(ne),Ke&&(nt(!0),Rt(ee),lt(!1),tt||Ut(!0)),typeof T.workspaceId=="string"&&T.workspaceId.trim().length>0){const ca=T.workspaceId.trim();if(te==="local"){const so=String(ft.current||"").trim()||"default";dt(ca,{skipTransitionReset:!Yr&&so==="default"})}else Un(ca)}lt(te==="cloud"&&ne?!et:!1),T.setupState&&typeof T.setupState=="object"?Ft(T.setupState):Ft(null),T.runtimeCapabilities&&typeof T.runtimeCapabilities=="object"?Nr(T.runtimeCapabilities):Nr(null),Kt(!!T.realtimeSyncEnabled);const Wt=String(T.realtimeSyncFlagSource||"").trim().toLowerCase();Xn(Wt==="env"||Wt==="settings"||Wt==="default"?Wt:"unknown"),typeof T.shortcut=="string"&&T.shortcut.trim().length>0&&kn(T.shortcut);const tr=hu(T.theme);tr&&he(tr);const Pr=hu(T.globalTheme);Pr&&We(Pr),typeof T.themeUseGlobalDefault=="boolean"&&ae(T.themeUseGlobalDefault);const $r=T.runtimeMode==="cloud"?"cloud":"local";typeof T.projectRoot=="string"?Ue(T.projectRoot):$r==="cloud"&&Ue(""),typeof T.tenantId=="string"?wr(T.tenantId.trim()):$r==="cloud"&&wr("");const _r=$r==="cloud"?String(T.projectName||"").trim():T.projectName||T.paths?.projectName||"";(String(_r||"").trim().length>0||$r==="cloud")&&kt(_r),typeof T.mcpScript=="string"?lr(T.mcpScript):$r==="cloud"&&lr(""),typeof T.hostRoot=="string"?nn(T.hostRoot):$r==="cloud"&&nn(""),typeof T.jsonBackupEnabled=="boolean"&&Za(T.jsonBackupEnabled),typeof T.globalJsonBackupEnabled=="boolean"&&Eo(T.globalJsonBackupEnabled),typeof T.jsonBackupUseGlobalDefault=="boolean"&&Ja(T.jsonBackupUseGlobalDefault);const Rn=T?.schedulePreferences?.weekStartsOn;(Rn==="sunday"||Rn==="monday")&&ln(Rn),typeof T.manualComplexityEnabled=="boolean"&&yn(T.manualComplexityEnabled),typeof T.checklistDropdownEnabled=="boolean"?Mn(T.checklistDropdownEnabled):Mn(!0),typeof T.showTaskCardStatusLabel=="boolean"?vt(T.showTaskCardStatusLabel):vt(!1)},[Un,dt,Yr,ft]),So=o.useCallback(async()=>{const T=typeof performance<"u"?performance.now():Date.now();try{const te=await Aa("/api/taskforce/version",void 0,lf);if(!te.ok)return;const ne=await te.json().catch(()=>({}));ne?.build&&typeof ne.build=="object"&&Cr({version:String(ne.build.version||""),gitSha:ne.build.gitSha?String(ne.build.gitSha):null,buildTime:ne.build.buildTime?String(ne.build.buildTime):null,deployId:ne.build.deployId?String(ne.build.deployId):null}),hr("build_info_loaded",{durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-T)})}catch(te){Cs(te)&&hr("build_info_timeout",{durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-T)})}},[Aa,Cs]),{fetchReferenceData:oi,fetchConfig:ls,fetchWorkspaces:Lc,fetchAssigneeOptions:mp,switchWorkspace:Ps,resolveWorkspaceAfterAuth:Sl,retryBootstrapChecks:um,runCloudBootstrap:Al}=GN({shouldDeferProtectedApiCalls:St,shouldBlockProtectedApiCalls:Xt,getWorkspaceRequestState:Tn,isWorkspaceRequestStale:an,isWorkspaceEpochStale:Ds,isAbortError:da,isBootstrapTimeoutError:Cs,fetchWithTimeout:Aa,handleUnauthorized:$s,applyBootstrapConfig:Ti,loadPersistedUiState:dm,fetchBuildInfo:So,markBootstrapPhase:qs,markBootstrapStalled:Ys,fetchInitiativeTemplates:Os,setReferenceDataLoaded:ss,setCustomCategories:Wa,setCustomTypes:Zs,setPriorities:ea,setTaxonomies:Fa,setTaxonomyDisplayLabels:Js,setConfigLoaded:$a,hasLoadedUiStateRef:lm,currentWorkspaceIdRef:ft,referenceDataRequestRef:Mc,referenceDataAbortRef:Nn,bootstrapConfigAbortRef:ys,workspaceListAbortRef:Sn,assigneeOptionsAbortRef:kr,workspaceListHydratedRef:kl,setAvailableWorkspaces:yr,runtimeMode:z,applyResolvedWorkspaceId:Un,workspaceSwitchingEnabled:Lt,authSessionResolved:Tt,isAuthenticated:Je,authUserId:Ct,authUserAvatarUrl:Tr,setHydratedWorkspaceRole:Gt,setAssigneeOptions:mn,setAssigneeOptionsLoaded:Lo,commitCurrentWorkspaceId:(T,te)=>{rn.current=T,dt(T,te),te?.clearExplicitSelection!==!1&&(rn.current=null)},currentWorkspaceId:bt,workspaceSelectionScope:rt,abortWorkspaceScopedRequests:J,setWorkspaceBootstrapPending:Vr,checkAuthSession:gn,lastConfigRefreshKeyRef:cp,lastAssigneeOptionsLoadKeyRef:gl,lastWorkspaceSyncStateLoadKeyRef:Qi,lastTaskSurfaceLoadKeyRef:jc,lastSettingsSurfaceLoadKeyRef:yl,isOpen:de,activeTab:$e,showArchive:ce,taskScope:xe,settingsSection:Ce,workspaceBootstrapPending:qt,fetchTasks:ja,fetchPlanningEntities:Zr,refreshTaskCollections:O,loadWorkspaceSyncState:qf,switchLocalCoordinatorWorkspace:Ou,hasBootstrappedDataRef:lp}),ec=o.useCallback(async()=>{await gn(),await ls()},[gn,ls]);o.useEffect(()=>{if(!Yr||qt)return;const T=`${z}:${Je?"auth":"guest"}:${bt}:${Tr||"no-avatar"}`;os&&gl.current===T||(gl.current=T,mp())},[os,Tr,Yr,bt,mp,Je,z,qt]),o.useEffect(()=>{if(!Tt||!Je)return;const T=String(Ct||"").trim();if(!T||T==="anonymous")return;const te=String(Tr||"").trim()||null;mn(ne=>{let ee=!1;const Ke=ne.map(et=>et.kind!=="member"||String(et.value||"").trim()!==T||(typeof et.avatarUrl=="string"&&et.avatarUrl.trim().length>0?et.avatarUrl.trim():null)===te?et:(ee=!0,{...et,avatarUrl:te}));return ee?Ke:ne})},[Tt,Tr,Ct,Je]);const Lg=o.useMemo(()=>Lt?ht.find(te=>te.id===bt)?.role??null:Hr,[ht,bt,Hr,Lt]);o.useEffect(()=>{Je||Gt(null)},[Je]);const hp=o.useCallback(async()=>{Fr(null);const T=await Al({reason:"post-plans",ignoreAuthGuard:!0,tasksSilent:!0});return T.authenticated?T.success?T.workspaceSetupRequired?{success:!0,destination:"setup"}:{success:!0,destination:"app"}:{success:!1,destination:"app",error:T.error||"Unable to resolve workspace after plan selection.",code:T.code}:{success:!1,destination:"login",error:T.error||"Sign in required.",code:T.code||"AUTH_REQUIRED"}},[Al]),xi=o.useCallback(async T=>{const te=T?.reason||"retry",ne=typeof T?.preferredWorkspaceId=="string"?T.preferredWorkspaceId.trim():"",ee=T?.allowCommercialGate===!0;if(ne&&Lt){if(!await gn({force:!0}))return await ls({ignoreAuthGuard:!0}),{success:!1,error:"Sign in required.",code:"AUTH_REQUIRED"};const tt=await Sl({preferredWorkspaceId:ne});if(!tt.success)return await ls({ignoreAuthGuard:!0}),{success:!1,error:tt.error||"Unable to resolve workspace access.",code:tt.code};if(tt.workspaceSetupRequired)return await ls({ignoreAuthGuard:!0}),{success:!0,workspaceSetupRequired:!0}}const Ke=await Al({reason:te,ignoreAuthGuard:!0,tasksSilent:!0});return Ke.authenticated?Ke.success?Ke.workspaceSetupRequired?ee?{success:!0,workspaceSetupRequired:!1}:{success:!0,workspaceSetupRequired:!0}:(ee||Fu({preferCloudOnFirstSync:!0}),{success:!0,workspaceSetupRequired:!1}):{success:!1,error:Ke.error||"Unable to resolve workspace access.",code:Ke.code}:{success:!1,error:Ke.error||"Sign in required.",code:Ke.code||"AUTH_REQUIRED"}},[gn,ls,Sl,Al,Fu,Lt]),pm=o.useCallback(async(T,te)=>{if(!Lt)return{success:!1,error:"Workspace management is unavailable in local mode.",code:"WORKSPACE_MANAGEMENT_DISABLED"};const ne=String(T||"").trim();if(!ne)return{success:!1,error:"Workspace name is required."};try{const ee=await fetch("/api/taskforce/workspaces",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({name:ne,description:typeof te=="string"?te:void 0})}),Ke=await ee.json().catch(()=>({}));if(!ee.ok||Ke?.success===!1)return{success:!1,error:Ke?.error||`Failed to create workspace (${ee.status})`,code:Ke?.code};const et=Ke?.workspace;if(await Lc(),et?.id){const tt=await Ps(et.id);if(!tt.success)return{success:!1,error:tt.error||"Workspace created but failed to activate.",code:tt.code}}return{success:!0,workspace:et}}catch{return{success:!1,error:"Failed to create workspace."}}},[Lc,Ps,Lt]),fm=o.useCallback(async T=>{if(!Lt)return{success:!1,error:"Workspace management is unavailable in local mode.",code:"WORKSPACE_MANAGEMENT_DISABLED"};const te=String(T||"").trim();if(!te)return{success:!1,error:"workspaceId is required.",code:"WORKSPACE_ID_REQUIRED"};try{const ne=await fetch(`/api/taskforce/workspaces/${encodeURIComponent(te)}`,{method:"DELETE",credentials:"include"}),ee=await ne.json().catch(()=>({}));if(!ne.ok||ee?.success===!1)return{success:!1,error:ee?.error||`Failed to delete workspace (${ne.status})`,code:ee?.code};await gn({force:!0}),await Promise.all([ls(),Lc()]);const Ke=typeof ee?.nextWorkspaceId=="string"?ee.nextWorkspaceId.trim():"";return Ke&&dt(Ke),{success:!0,nextWorkspaceId:Ke||void 0,workspaceSetupRequired:ee?.workspaceSetupRequired===!0,cleanupWarnings:Array.isArray(ee?.cleanupWarnings)?ee.cleanupWarnings.map(et=>String(et||"")):[]}}catch{return{success:!1,error:"Failed to delete workspace."}}},[gn,dt,ls,Lc,Lt]),Ld=o.useCallback(async T=>{const te=T==="operations"?"operations":"core";try{const ne=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({setup:{mode:te}})}),ee=await ne.json().catch(()=>({}));return!ne.ok||ee?.success===!1?!1:(await ec(),!0)}catch{return!1}},[ec]),Cl=o.useCallback(async T=>{const te=String(T?.name||"").trim(),ne=typeof T?.workspaceId=="string"?T.workspaceId.trim():"";if(!te)return{success:!1,error:"Workspace name is required.",code:"WORKSPACE_NAME_REQUIRED"};try{const ee=await fetch("/api/taskforce/workspace-profile",{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-runtime-mode":z},credentials:"include",body:JSON.stringify({workspaceId:ne&&ne!=="default"?ne:void 0,name:te,description:typeof T.description=="string"?T.description:void 0,allowCreate:!0})}),Ke=await ee.json().catch(()=>({}));if(!ee.ok||Ke?.success===!1)return{success:!1,error:Ke?.error||`Failed to save workspace (${ee.status})`,code:Ke?.code};const et=String(Ke?.workspace?.id||"").trim();if(et&&(dt(et),await new Promise(tt=>window.setTimeout(tt,0)),z==="cloud"&&Je&&et!==bt)){const tt=await Ps(et);if(!tt.success)return{success:!1,error:tt.error||"Workspace saved but failed to activate session workspace.",code:"WORKSPACE_SWITCH_FAILED"}}return await ec(),{success:!0,workspaceId:et||void 0}}catch{return{success:!1,error:"Failed to save workspace profile."}}},[dt,ec,z,Je,bt,Ps]),Od=o.useCallback(async(T,te)=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const ne=T.trim().toLowerCase(),ee=te;if(!ne||!ee)return{success:!1,error:"Email and password are required."};try{const Ke=await fetch(q("/api/taskforce/auth/login"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(H0({email:ne,password:ee,activeWorkspaceId:ft.current}))}),et=await Ke.json().catch(()=>({}));if(!Ke.ok||!et?.success)return{success:!1,error:et?.error||"Sign in failed.",code:et?.code};Ea("");const tt=await xi();return tt.success?(Rb(),{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."}}},[q,V,ft,xi]),mm=o.useCallback((T,te,ne)=>{let ee="/";try{const et=new URL(String(te||"/"),"https://taskforce.local");et.origin==="https://taskforce.local"&&String(te||"/").startsWith("/")&&!String(te||"/").startsWith("//")&&(ee=`${et.pathname}${et.search}${et.hash}`)}catch{ee="/"}let Ke=`/api/taskforce/auth/oauth/${encodeURIComponent(T)}/start?return_to=${encodeURIComponent(ee)}`;ne&&(Ke+=`&invite_token=${encodeURIComponent(ne)}`),window.location.href=q(Ke)},[q]),Bd=o.useCallback(async(T,te,ne)=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const ee=T.trim().toLowerCase(),Ke=te;if(!ee||!Ke)return{success:!1,error:"Email and password are required."};try{const et=await fetch(q("/api/taskforce/auth/register"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:ee,password:Ke,...typeof ne?.displayName=="string"&&ne.displayName.trim()?{displayName:ne.displayName.trim()}:{},...typeof ne?.planId=="string"&&ne.planId.trim()?{planId:ne.planId.trim()}:{},...typeof ne?.planVersionId=="string"&&ne.planVersionId.trim()?{planVersionId:ne.planVersionId.trim()}:{},...typeof ne?.interval=="string"&&ne.interval.trim()?{interval:ne.interval.trim()}:{}})}),tt=await et.json().catch(()=>({}));if(!et.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 Wt=tt?.planSelectionRequired===!0,tr=tt?.checkoutPending===!0,Pr=typeof tt?.commercialState=="string"?tt.commercialState:null,$r=!!tt?.verificationRequired;if(!$r){if(Ea(""),!!(Wt||tr||Pr==="pending_plan_selection"||Pr==="checkout_pending"))return await gn({force:!0})?{success:!0,workspaceSetupRequired:!1,planSelectionRequired:Wt,checkoutPending:tr,commercialState:Pr,verificationRequired:$r,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 Rn=await xi({allowCommercialGate:!1});return Rn.success?{success:!0,workspaceSetupRequired:Rn.workspaceSetupRequired===!0,planSelectionRequired:Wt,checkoutPending:tr,commercialState:Pr,verificationRequired:$r,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:Rn.error||"Unable to resolve workspace after registration.",code:Rn.code}}return{success:!0,workspaceSetupRequired:!!tt?.workspaceSetupRequired,planSelectionRequired:Wt,checkoutPending:tr,commercialState:Pr,verificationRequired:$r,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."}}},[gn,q,V,xi]),Og=o.useCallback(async T=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const te=String(T.displayName||"").trim(),ne=typeof T.avatarDraftId=="string"?T.avatarDraftId.trim():"",ee=T.clearAvatar===!0;if(!te)return{success:!1,error:"Display name is required."};try{const Ke=await fetch(q("/api/taskforce/auth/profile"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({displayName:te,...ne?{avatarDraftId:ne}:{},...ee?{clearAvatar:!0}:{}})}),et=await Ke.json().catch(()=>({}));if(!Ke.ok||!et?.success)return{success:!1,error:et?.error||"Failed to update profile.",code:et?.code};const tt={userId:typeof et?.profile?.userId=="string"?et.profile.userId:Ct,email:typeof et?.profile?.email=="string"?et.profile.email:Qt,displayName:typeof et?.profile?.displayName=="string"?et.profile.displayName:null,avatarUrl:typeof et?.profile?.avatarUrl=="string"?et.profile.avatarUrl:null};return sr(tt.displayName||""),br(tt.avatarUrl||""),{success:!0,profile:tt}}catch{return{success:!1,error:"Failed to update profile."}}},[q,V,Qt,Ct]),gp=o.useCallback(async T=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const te=T.trim().toLowerCase();if(!te)return{success:!1,error:"Email is required."};try{const ne=await fetch(q("/api/taskforce/auth/verify-email/request"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:te})}),ee=await ne.json().catch(()=>({}));return!ne.ok||!ee?.success?{success:!1,error:ee?.error||"Failed to request verification email.",code:ee?.code}:{success:!0,verificationToken:ee?.verificationToken??null,emailSent:ee?.emailSent!==!1,deliveryAttempted:ee?.deliveryAttempted===!0||typeof ee?.verificationToken=="string"&&ee.verificationToken.trim().length>0,emailError:typeof ee?.emailError=="string"?ee.emailError:void 0}}catch{return{success:!1,error:"Failed to request verification email."}}},[q,V]),Bg=o.useCallback(async T=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const te=T.trim();if(!te)return{success:!1,error:"Token is required."};try{const ne=await fetch(q("/api/taskforce/auth/verify-email/confirm"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:te})}),ee=await ne.json().catch(()=>({}));return!ne.ok||!ee?.success?{success:!1,error:ee?.error||"Verification failed.",code:ee?.code}:{success:!0}}catch{return{success:!1,error:"Verification failed."}}},[q,V]),_l=o.useCallback(async T=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const te=T.trim().toLowerCase();if(!te)return{success:!1,error:"Email is required."};try{const ne=await fetch(q("/api/taskforce/auth/password-reset/request"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:te})}),ee=await ne.json().catch(()=>({}));return!ne.ok||!ee?.success?{success:!1,error:ee?.error||"Failed to request password reset.",code:ee?.code}:{success:!0,resetToken:ee?.resetToken??null,emailSent:ee?.emailSent!==!1,deliveryAttempted:ee?.deliveryAttempted===!0||typeof ee?.resetToken=="string"&&ee.resetToken.trim().length>0,emailError:typeof ee?.emailError=="string"?ee.emailError:void 0}}catch{return{success:!1,error:"Failed to request password reset."}}},[q,V]),Wg=o.useCallback(async(T,te)=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const ne=T.trim(),ee=te;if(!ne||!ee)return{success:!1,error:"Token and password are required."};try{const Ke=await fetch(q("/api/taskforce/auth/password-reset/confirm"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:ne,password:ee})}),et=await Ke.json().catch(()=>({}));return!Ke.ok||!et?.success?{success:!1,error:et?.error||"Failed to reset password.",code:et?.code}:{success:!0}}catch{return{success:!1,error:"Failed to reset password."}}},[q,V]),Xs=o.useCallback(async T=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const te=T.trim();if(!te)return{success:!1,error:"Token is required."};try{const ne=await fetch(q("/api/taskforce/auth/invite/inspect"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:te})}),ee=await ne.json().catch(()=>({}));return!ne.ok||!ee?.success?{success:!1,error:ee?.error||"Invite inspection failed.",code:ee?.code,state:ee?.state}:{success:!0,state:ee?.state,email:typeof ee?.email=="string"?ee.email:void 0,workspaceId:typeof ee?.workspaceId=="string"?ee.workspaceId:void 0,inviteeKind:ee?.inviteeKind==="existing_user"?"existing_user":"new_user",passwordRequired:ee?.passwordRequired===!0,inviteeState:ee?.inviteeState==="existing_account"?"existing_account":"pending_setup",availableMethods:Array.isArray(ee?.availableMethods)?ee.availableMethods:[]}}catch{return{success:!1,error:"Invite inspection failed."}}},[q,V]),$g=o.useCallback(async(T,te)=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const ne=T.trim(),ee=te;if(!ne||!ee)return{success:!1,error:"Token and password are required."};try{const Ke=await fetch(q("/api/taskforce/auth/invite/accept"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:ne,password:ee})}),et=await Ke.json().catch(()=>({}));if(!Ke.ok||!et?.success)return{success:!1,error:et?.error||"Invite acceptance failed.",code:et?.code};Ea("");const tt=typeof et?.workspaceId=="string"?et.workspaceId:null;if(tt&&Lt){const tr=await Ps(tt,{hydrate:!1});if(!tr.success)return{success:!1,error:tr.error||"Unable to resolve workspace after invite acceptance.",code:tr.code}}const Wt=await xi({preferredWorkspaceId:tt});return Wt.success?(tt&&ft.current!==tt&&dt(tt,{clearExplicitSelection:!1}),{success:!0,workspaceSetupRequired:Wt.workspaceSetupRequired===!0}):{success:!1,error:Wt.error||"Unable to resolve workspace after invite acceptance.",code:Wt.code}}catch{return{success:!1,error:"Invite acceptance failed."}}},[dt,q,V,ft,xi,Ps,Lt]),hm=o.useCallback(async T=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const te=T.trim();if(!te)return{success:!1,error:"Token is required."};try{const ne=await fetch(q("/api/taskforce/auth/invite/join"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:te})}),ee=await ne.json().catch(()=>({}));if(!ne.ok||!ee?.success)return{success:!1,error:ee?.error||"Invite join failed.",code:ee?.code};Ea("");const Ke=typeof ee?.workspaceId=="string"?ee.workspaceId:null;if(Ke&&Lt){const tt=await Ps(Ke,{hydrate:!1});if(!tt.success)return{success:!1,error:tt.error||"Unable to resolve workspace after invite join.",code:tt.code}}const et=await xi({preferredWorkspaceId:Ke});return et.success?(Ke&&ft.current!==Ke&&dt(Ke,{clearExplicitSelection:!1}),{success:!0,workspaceSetupRequired:et.workspaceSetupRequired===!0}):{success:!1,error:et.error||"Unable to resolve workspace after invite join.",code:et.code}}catch{return{success:!1,error:"Invite join failed."}}},[dt,q,V,ft,xi,Ps,Lt]),yp=o.useCallback(async()=>{if(!V)return{success:!1,error:"Cloud auth not configured."};try{const T=await fetch(q("/api/taskforce/auth/login-methods"),{credentials:"include"}),te=await T.json().catch(()=>({}));return!T.ok||!te?.success?{success:!1,error:te?.error||"Failed to fetch login methods."}:{success:!0,methods:Array.isArray(te?.methods)?te.methods:[]}}catch{return{success:!1,error:"Failed to fetch login methods."}}},[q,V]),Fg=o.useCallback(async T=>{if(!V)return{success:!1,error:"Cloud auth not configured."};try{const te=await fetch(q(`/api/taskforce/auth/login-methods/${encodeURIComponent(T)}`),{method:"DELETE",credentials:"include"}),ne=await te.json().catch(()=>({}));return!te.ok||!ne?.success?{success:!1,error:ne?.error||"Unlink failed.",code:ne?.code}:{success:!0}}catch{return{success:!1,error:"Unlink failed."}}},[q,V]),Ug=o.useCallback(async T=>{if(!V)return{success:!1,error:"Cloud auth not configured."};try{const te=await fetch(q("/api/taskforce/auth/login-methods/password"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({password:T})}),ne=await te.json().catch(()=>({}));return!te.ok||!ne?.success?{success:!1,error:ne?.error||"Failed to add password.",code:ne?.code}:{success:!0}}catch{return{success:!1,error:"Failed to add password."}}},[q,V]),gm=o.useCallback(async(T,te)=>{if(!V)return{success:!1,error:"Cloud auth not configured."};try{const ne=await fetch(q("/api/taskforce/auth/password/change"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({currentPassword:T,newPassword:te})}),ee=await ne.json().catch(()=>({}));return!ne.ok||!ee?.success?{success:!1,error:ee?.error||"Failed to change password.",code:ee?.code}:(await gn({force:!0}),Rb(),{success:!0})}catch{return{success:!1,error:"Failed to change password."}}},[q,V,gn]),kp=o.useCallback((T,te)=>{const ne=te&&/^\/[A-Za-z0-9_\-./?=&%]*$/.test(te)?te:"/",ee=`/api/taskforce/auth/oauth/${encodeURIComponent(T)}/start?flow=link&return_to=${encodeURIComponent(ne)}`;window.location.href=q(ee)},[q]),vp=o.useCallback(()=>{J(),Mc.current=null,gl.current="",cp.current="",Qi.current="",jc.current="",yl.current="",fp({clearLoaded:!0}),ss(!1),mn(el()),Lo(!1),Dn([]),Hn([]),Pa([]),Vn([]),oe([]),Yt([]),Ur(Gy()),$n(!1)},[J,fp,Pa,Hn]),Wd=o.useCallback(async()=>{try{V&&await fetch(q("/api/taskforce/auth/logout"),{method:"POST",credentials:"include"})}catch{}finally{if(J(),en.current+=1,Ye.current=null,tn.current=!1,bn.current=Date.now(),nt(!1),Ut(!0),Rt("anonymous"),It(""),rf(null),ir(""),sr(""),br(""),ki("disconnected"),vi(null),Qr(!0),kt(""),$a(!1),ss(!1),Ft(null),$t("idle"),Fr(null),fp({clearLoaded:!0}),z!=="local"&&Zw(rt),lt(z==="cloud"&&Mt),dt("default"),yr([]),kl.current=!1,Gt(null),z==="local"){await Promise.allSettled([ls({ignoreAuthGuard:!0}),ja(!0,{ignoreAuthGuard:!0}),Zr({ignoreAuthGuard:!0}),oi({ignoreAuthGuard:!0,force:!0})]);return}lp.current=!1,vp()}},[J,Mt,Zw,dt,q,V,rt,z,ls,Zr,oi,ja,vp]),$d=o.useRef(null),eo=o.useCallback(async(T,te,ne)=>{if(!globalThis.crypto?.randomUUID)throw new Error("Secure initiative operation identity generation is unavailable.");const ee=ne||`operation-${globalThis.crypto.randomUUID()}`,Ke={...te,headers:{...te.headers||{},"x-taskforce-operation-id":ee}};try{return await fetch(T,Ke)}catch{return fetch(T,Ke)}},[]),ia=o.useMemo(()=>U1(),[]),ym=o.useCallback(async T=>{try{const te=JSON.stringify(T);if($d.current?.requestBody!==te){if(!globalThis.crypto?.randomUUID)throw new Error("Secure initiative operation identity generation is unavailable.");$d.current={requestBody:te,operationId:`operation-${globalThis.crypto.randomUUID()}`}}const ne=await eo("/api/taskforce/initiative-templates/create",{method:"POST",headers:{"Content-Type":"application/json"},body:te},$d.current.operationId),ee=await ne.json().catch(()=>({}));return!ne.ok||!ee?.success?{success:!1,error:ee?.error||`Create failed (${ne.status})`}:($d.current=null,await ja(!0),{success:!0,result:ee?.results})}catch(te){return{success:!1,error:te.message}}},[ja,eo]),km=o.useCallback(async T=>{if(!globalThis.crypto?.randomUUID)throw new Error("Secure initiative identity generation is unavailable.");const te={...T||{},id:T?.id||`initiative-${globalThis.crypto.randomUUID()}`,createdAt:T?.createdAt||new Date().toISOString()},ne=await eo("/api/taskforce/initiative",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(te)}),ee=await ne.json().catch(()=>({}));if(!ne.ok)throw new Error(ee?.error||`Failed to create initiative (${ne.status})`);return await Zr(),Vn(Ke=>Li(Ke,ee)),ee},[Zr,eo]),zg=o.useCallback(async(T,te)=>{const ne=await eo(`/api/taskforce/initiative/${encodeURIComponent(T)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(te||{})}),ee=await ne.json().catch(()=>({}));if(!ne.ok)throw new Error(ee?.error||`Failed to update initiative (${ne.status})`);return await Zr(),Vn(Ke=>Li(Ke,ee)),ee},[Zr,eo]),Oc=o.useCallback(()=>{Zr()},[Zr]),Bc=o.useCallback(async T=>{const te=await eo(`/api/taskforce/initiative/${encodeURIComponent(T)}/archive`,{method:"POST"}),ne=await te.json().catch(()=>({}));if(!te.ok)throw new Error(ne?.error||`Failed to archive initiative (${te.status})`);return Vn(ee=>Li(ee,ne)),Oc(),ne},[Oc,eo]),Hg=o.useCallback(async T=>{const te=await eo(`/api/taskforce/initiative/${encodeURIComponent(T)}/unarchive`,{method:"POST"}),ne=await te.json().catch(()=>({}));if(!te.ok)throw new Error(ne?.error||`Failed to unarchive initiative (${te.status})`);return Vn(ee=>Li(ee,ne)),Oc(),ne},[Oc,eo]),Vg=o.useCallback(async T=>{const te=await ia.prepareCreate(ft.current||"default",T||{}),ne=await Zp("/api/taskforce/workstream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(te.body)},te.operationId),ee=!ne.ok&&await Yp(ne),Ke=await ne.json().catch(()=>({}));if(!ne.ok){ee&&await ia.abandonCreate(te.fingerprint,te.operationId);const et=Ke?.retryAt?` Retry after ${Ke.retryAt}.`:"";throw new Error(`${Ke?.error||`Failed to create workstream (${ne.status})`}${et}`)}if(Ke?.id!==te.body.id)throw new Error("Created workstream identity did not match the retained request identity.");return await ia.confirmCreate(te.fingerprint,te.operationId),await Zr(),oe(et=>{const tt=F1(et,Ke);return tt?Li(et,tt):et}),Ke},[ft,Zr,ia]),vm=o.useCallback(async(T,te)=>{const ne=`/api/taskforce/workstream/${encodeURIComponent(T)}`,ee=te||{},Ke=wn.find($r=>$r.id===T),et=Ke?{updatedAt:Ke.updatedAt||null,initiativeId:Ke.initiativeId||null,ownerId:Ke.ownerId||null,isArchived:!!Ke.isArchived}:null,tt=await ia.prepareMutation(ft.current||"default",ne,ee,et),Wt=await Zp(ne,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(ee)},tt.operationId),tr=!Wt.ok&&await Yp(Wt),Pr=await Wt.json().catch(()=>({}));if(!Wt.ok){tr&&await ia.abandonMutation(tt.fingerprint,tt.operationId);const $r=Pr?.retryAt?` Retry after ${Pr.retryAt}.`:"";throw new Error(`${Pr?.error||`Failed to update workstream (${Wt.status})`}${$r}`)}if(Pr?.id!==T)throw new Error("Updated workstream identity did not match the requested workstream.");return await ia.confirmMutation(tt.fingerprint,tt.operationId),await Zr(),oe($r=>Li($r,Pr)),Pr},[ft,Zr,ia,wn]),Gg=o.useCallback(async(T,te)=>{const ne=`/api/taskforce/workstream/${encodeURIComponent(T)}/task-order`,ee={taskIds:te},Ke=wn.find($r=>$r.id===T),et=await ia.prepareMutation(ft.current||"default",ne,ee,{updatedAt:Ke?.updatedAt||null,workstreamId:T}),tt=await Zp(ne,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(ee)},et.operationId),Wt=!tt.ok&&await Yp(tt),tr=await tt.json().catch(()=>({}));if(!tt.ok){Wt&&await ia.abandonMutation(et.fingerprint,et.operationId);const $r=tr?.retryAt?` Retry after ${tr.retryAt}.`:"";throw new Error(`${tr?.error||`Failed to reorder workstream tasks (${tt.status})`}${$r}`)}if(tr?.workstreamId!==T||!Array.isArray(tr?.taskIds))throw new Error("Reordered workstream task response did not match the request.");await ia.confirmMutation(et.fingerprint,et.operationId);const Pr=new Map(tr.taskIds.map(($r,_r)=>[$r,(_r+1)*1024]));Hn($r=>$r.map(_r=>Pr.has(_r.id)?{..._r,workstreamOrder:Pr.get(_r.id)}:_r)),await Zr()},[ft,Zr,ia,wn]),Kg=o.useCallback(async T=>{const te=`/api/taskforce/workstream/${encodeURIComponent(T)}/archive`,ne=wn.find(Wt=>Wt.id===T),ee=await ia.prepareMutation(ft.current||"default",te,{},ne?{updatedAt:ne.updatedAt||null,isArchived:!!ne.isArchived}:null),Ke=await Zp(te,{method:"POST"},ee.operationId),et=!Ke.ok&&await Yp(Ke),tt=await Ke.json().catch(()=>({}));if(!Ke.ok){et&&await ia.abandonMutation(ee.fingerprint,ee.operationId);const Wt=tt?.retryAt?` Retry after ${tt.retryAt}.`:"";throw new Error(`${tt?.error||`Failed to archive workstream (${Ke.status})`}${Wt}`)}if(tt?.id!==T)throw new Error("Archived workstream identity did not match the requested workstream.");return await ia.confirmMutation(ee.fingerprint,ee.operationId),await Zr(),oe(Wt=>Li(Wt,tt)),tt},[ft,Zr,ia,wn]),qg=o.useCallback(async T=>{const te=`/api/taskforce/workstream/${encodeURIComponent(T)}/unarchive`,ne=wn.find(Wt=>Wt.id===T),ee=await ia.prepareMutation(ft.current||"default",te,{},ne?{updatedAt:ne.updatedAt||null,isArchived:!!ne.isArchived}:null),Ke=await Zp(te,{method:"POST"},ee.operationId),et=!Ke.ok&&await Yp(Ke),tt=await Ke.json().catch(()=>({}));if(!Ke.ok){et&&await ia.abandonMutation(ee.fingerprint,ee.operationId);const Wt=tt?.retryAt?` Retry after ${tt.retryAt}.`:"";throw new Error(`${tt?.error||`Failed to unarchive workstream (${Ke.status})`}${Wt}`)}if(tt?.id!==T)throw new Error("Unarchived workstream identity did not match the requested workstream.");return await ia.confirmMutation(ee.fingerprint,ee.operationId),await Zr(),oe(Wt=>Li(Wt,tt)),tt},[ft,Zr,ia,wn]),wm=o.useRef(!1);o.useEffect(()=>{He(!0),!wm.current&&(wm.current=!0,gn())},[gn]),o.useEffect(()=>{M&&gn()},[M,gn]),o.useEffect(()=>{if(!V)return;let T=!1;const te=new AbortController,ne=typeof window<"u"?window.setTimeout(()=>te.abort(),5e3):null;return fetch(q("/api/taskforce/auth/providers"),{credentials:"include",signal:te.signal}).then(ee=>ee.ok?ee.json():null).then(ee=>{!T&&Array.isArray(ee?.providers)&&Jr(ee.providers)}).catch(()=>{}).finally(()=>{ne!==null&&typeof window<"u"&&window.clearTimeout(ne)}),()=>{T=!0,te.abort()}},[V,q]),o.useEffect(()=>{if(z!=="local"||!Le||typeof window>"u")return;const T=()=>{gn()},te=()=>{document.visibilityState==="visible"&&T()};window.addEventListener("focus",T),window.addEventListener("online",T),document.addEventListener("visibilitychange",te);const ne=window.setInterval(T,3e4);return()=>{window.removeEventListener("focus",T),window.removeEventListener("online",T),document.removeEventListener("visibilitychange",te),window.clearInterval(ne)}},[z,Le,gn]),o.useEffect(()=>{s&&s(pn.length)},[pn.length,s]);const ha=o.useMemo(()=>{const T=String(t||"").trim();return T?[String(a||"").trim(),T,String(r||"").trim()].join(":"):""},[r,t,a]),Wc=o.useRef(ha);Wc.current=ha;const Zn=o.useRef(null),to=o.useRef(null),$c=o.useRef(null),tc=o.useRef(null),Fc=o.useRef(null),Il=o.useRef(new Set),Fd=o.useRef(new Set),ii=o.useRef(new Map),ci=o.useRef(null),za=o.useRef(null),[Ud,li]=o.useState(0);o.useEffect(()=>{const T=tc.current;T&&rs.current?.ownerKey===T&&ts(),tc.current=null,Zn.current=null,to.current=null,$c.current=null,Fc.current=null,Il.current.clear(),Fd.current.clear(),ii.current.clear(),ci.current!==null&&typeof window<"u"&&(window.clearTimeout(ci.current),ci.current=null),za.current!==null&&typeof window<"u"&&(window.clearTimeout(za.current),za.current=null),li(te=>te+1)},[ts,ha]),o.useEffect(()=>()=>{ci.current!==null&&typeof window<"u"&&(window.clearTimeout(ci.current),ci.current=null),za.current!==null&&typeof window<"u"&&(window.clearTimeout(za.current),za.current=null)},[]);const bm=o.useRef(!1);o.useEffect(()=>{if(!Yr)return;if(!bm.current&&Gr.length>0){bm.current=!0;const te=Cd,ne=Gr.some(ee=>ee.label===te||ee.value===te);if(te&&ne){const ee=Gr.find(Ke=>Ke.label===te||Ke.value===te);ei(ee?.value||te)}else ei(oa(Gr));return}const T=Gr.some(te=>te.value===ll);Gr.length>0&&!T&&ei(oa(Gr))},[Yr,Gr,ll,oa,Cd]),o.useEffect(()=>{if(!Yr||!Ca||Gr.length===0)return;const T=ee=>!Gr.some(Ke=>Ke.value===ee.category),te=pn.some(T),ne=ua.some(T);if(te||ne){const ee=oa(Gr);te&&Hn(Ke=>Ke.map(et=>T(et)?{...et,category:ee}:et)),ne&&Pa(Ke=>Ke.map(et=>T(et)?{...et,category:ee}:et))}},[Yr,Ca,Gr,pn,ua,oa]),o.useEffect(()=>{},[O]);const wp=o.useCallback(async()=>{await Yn(rd(["active","archive","deleted","planning"],{ambiguous:!0}))},[Yn]);o.useEffect(()=>{if(typeof window>"u")return;const T=te=>{const ne=te.detail;(String(ne?.workspaceId||"").trim()||"default")===bt&&(ne?.authoritativeTask||Yn(rd(ne?.affectedCollections?.length?ne.affectedCollections:["active","archive"],{taskIds:ne?.taskId?[ne.taskId]:[]})))};return window.addEventListener(cd,T),()=>{window.removeEventListener(cd,T)}},[bt,Yn]);const di=String(bt||"").trim(),bp=String(Ct||"").trim(),zd=le("/taskforce-ws"),Sm=!!(V&&z==="cloud"&&Tt&&Je&&bp&&bp!=="anonymous"&&di&&!fv(di)&&zd);o.useEffect(()=>()=>{Rs.current!==null&&typeof window<"u"&&(window.clearTimeout(Rs.current),Rs.current=null)},[bt]);const Sp=o.useCallback(T=>{if(z!=="cloud")return;NC({workspaceId:di,source:"realtime"});const te=O1(T.type,T.invalidations);te.collections.length!==0&&(Yn(te),!(!te.ambiguous||typeof window>"u")&&(Rs.current!==null&&window.clearTimeout(Rs.current),Rs.current=window.setTimeout(()=>{Rs.current=null,Yn(te)},250)))},[di,z,Yn]);aC({enabled:Sm,workspaceId:di,websocketUrl:zd,onSignal:Sp,userId:bp||void 0}),YN({workspaceId:bt,isOpen:de,authBlocked:ct,authRequiredForApi:Mt,isAuthenticated:Je,canCallProtectedApi:Qe.canCallProtectedApi,shouldGateProtectedApiCalls:se,authSessionResolvedRef:Nd,authRequiredForApiRef:ip,isAuthenticatedRef:jd,dataVersionRef:om,refreshTaskCollectionsForDataVersion:wp,coordinatorDataVersion:Lu});const zs=o.useMemo(()=>{const T=new Map;for(const te of ua)T.set(te.id,te);for(const te of pn)T.set(te.id,te);return Array.from(T.values())},[pn,ua]),Ia=o.useMemo(()=>sa.map(T=>({...T.taskSnapshot,isDeleted:!0,deletedRecordId:T.id})),[sa]);o.useEffect(()=>{if(!(St||Xt)&&de&&!qt){if($e==="tasks"){const T=`${bt}:${$e}:${ce?"archive":"active"}:${xe}`,te=ce||xe==="archived",ne=xe==="deleted";if(!im.current){im.current=!0,jc.current=T,te&&Ua(!1),ne&&fa(!1);return}if(jc.current===T)return;jc.current=T,!te&&!ne&&ja(),Zr(),te&&Ua(!1),ne&&fa(!1);return}if($e==="settings"){const T=`${bt}:${$e}:${Ce}`;if(yl.current===T)return;yl.current=T,ls()}}},[bt,de,$e,Ce,ce,xe,ja,Zr,Ua,fa,ls,St,Xt,qt]);const rc=o.useCallback(async(T="")=>{try{const te=await fetch(`/api/taskforce/folders?path=${encodeURIComponent(T)}`);if(te.ok){const ne=await te.json();qe(ne.folders||[]),_e(ne.files||[]),Ge(T)}}catch(te){console.error("[Taskforce] Failed to fetch folders:",te)}},[]),Ap=o.useCallback(T=>{const te=[];if(T.path&&te.push(T.path),T.paths&&T.paths.length>0)for(const ne of T.paths)te.includes(ne)||te.push(ne);return te},[]),{validatePaths:Am,handleUpdateCategory:Cm,handleSaveCategory:Hd,handleAddPath:Cp,handleUpdateCategoryIcon:ro,handleUpdateCategoryColor:_p,handleRemovePath:no,handleSelectPath:_m,handleRemoveCategory:Ip,handleSaveType:Uc,handleRemoveType:Vd,handleUpdateType:zc,handleUpdateTaxonomies:Im,handleUpdatePriorities:nc,analyzeSystemTaxonomyPack:Tm,handleApplySystemTaxonomyPack:xm}=rN({activeCategories:Gr,activeTab:$e,activeTypes:Fn,archivedTasks:ua,browserTarget:F,category:ll,configLoaded:Yr,customCategories:pa,refreshTaskCollections:O,fetchTasks:ja,filterCategories:Ju,getCategoryPaths:Ap,normalizePath:go,pathValidation:Kn,setBrowserTarget:Ne,setCategory:ei,setCustomCategories:Wa,setCustomTypes:Zs,setFilterCategories:Qu,setPathValidation:Mo,setPriorities:ea,setShowFolderBrowser:it,setTaxonomies:Fa,tasks:pn}),Tl=o.useCallback(async T=>{const te=_s,ne={...te,...T};Js(ne);try{const ee=await fetch("/api/taskforce/taxonomy-display-labels",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({displayLabels:T})});if(!ee.ok)throw new Error(`Failed to save taxonomy display labels (${ee.status})`);const Ke=await ee.json().catch(()=>({}));Ke?.displayLabels&&typeof Ke.displayLabels=="object"&&Js({...ne,...Ke.displayLabels})}catch(ee){console.error("[Taskforce] Failed to update taxonomy display labels",ee),Js(te)}},[_s]),xl=o.useCallback(T=>{$e==="tasks"&&un.current&&Ws(un.current.scrollTop),re(T)},[$e]),Rm=o.useRef(async()=>!0),{handleNavigation:Yg,handleClose:Zg,resetForm:Tp,resolveWorkstreamIdInput:Rl,handleEdit:ac,handleOpenTaskById:xp,returnToPreviousTask:Jg,clearReturnToParentTask:Rp}=dN({activeCategories:Gr,activeTypes:Fn,activeTab:$e,attachments:op,checklistItems:ni,comments:Sd,description:Ts,editingTaskId:sn,flushPendingAutoSave:()=>Rm.current(),getDescriptionDraft:Fo,getPreferredCategoryValue:oa,getTitleDraft:ri,lastUsedCategory:Cd,newCommentText:Gi,relationshipTasks:zs,workstreams:wn,showArchive:ce,taxonomies:qn,setActiveTab:xl,setAssignee:bi,setAttachments:sm,setAttachmentsDirty:hl,setCategory:ei,setChecklistItems:Sr,setComments:Us,setComplexity:Vu,setDescription:vd,setDueDate:ti,setEditingTaskId:Sa,setError:Ea,setFormTaxonomies:Xf,setIsOpen:He,setNewCommentText:ai,setPendingNavigation:es,setWorkstreamInput:kd,setPriority:Vi,setScheduledDate:Wo,setShowArchive:pe,setStatus:yd,setTaskReturnTrail:aa,setTitle:Ai,setType:Bo,setUnsavedModalOpen:Ar,taskReturnTrail:na,title:Si});o.useEffect(()=>{const T=String(ns||"").trim();if(!Xi||!T)return;if(sn===T){As(null);return}if(Gn||qt)return;const te=tt=>tt.id===T||tt.id.endsWith(T);if(zs.find(te)){xp(T),As(null);return}const ee=String(ft.current||"default").trim()||"default",Ke=`${ee}:${T}`;if(Cn!==ee&&!yo.has(Ke)){Ua(!0).finally(()=>{(String(ft.current||"default").trim()||"default")===ee&&Ss(Wt=>Wt.has(Ke)?Wt:new Set(Wt).add(Ke))});return}const et=Ia.find(te);if(et){ac(et),As(null);return}if(ba!==ee){fa(!0);return}As(null)},[Cn,yo,ba,Ia,sn,Ua,fa,ac,xp,Gn,ns,zs,Xi,qt]),o.useEffect(()=>{const T=String(t||"").trim();if(!T||!ha||Zn.current===ha||!M||!Yr||!Xi||Gn||qt)return;const te=String(a||"").trim(),ne=String(ft.current||"default").trim()||"default",ee=()=>{const tr=tc.current;tr&&rs.current?.ownerKey===tr&&ts(),tc.current=null};if(te&&te!==ne){if(to.current===ha)return;if(z!=="cloud"||!Lt){to.current!==ha&&(to.current=ha,ra("This task is unavailable or you do not have access to it.","info",12e3));return}if(!Tt||!Je||ct||$c.current===ha||za.current!==null)return;const tr=ha,Pr=`${tr}:workspace`;$c.current=tr,Ps(te).then($r=>{if(Wc.current===tr&&!$r.success){const _r=(ii.current.get(Pr)||0)+1;if(ii.current.set(Pr,_r),_r<2&&typeof window<"u"){za.current=window.setTimeout(()=>{za.current=null,Wc.current===tr&&li(ca=>ca+1)},500);return}to.current=tr;const Rn=`deep-link-workspace:${tr}`;tc.current=Rn,ra("This task is unavailable or you do not have access to it.","info",12e3,{label:"Retry",onAction:()=>{Wc.current===tr&&(tc.current=null,to.current=null,ii.current.delete(Pr),ts(),li(ca=>ca+1))},ownerKey:Rn})}}).finally(()=>{$c.current===tr&&($c.current=null)});return}const Ke=tr=>{const Pr=tr.find(_r=>_r.id===T);if(Pr||te)return Pr;const $r=tr.filter(_r=>_r.id.endsWith(T));return $r.length===1?$r[0]:void 0},et=Ke(zs);if(et){ee(),Zn.current=ha,to.current=null,sn!==et.id&&(et.isArchived&&pe(!0),ac(et));return}const tt=(tr,Pr,$r)=>{const _r=`${ha}:${tr}`;if(Fc.current===_r||ci.current!==null)return;Fc.current=_r;const Rn=ha;Pr().then(ca=>{if(Wc.current!==Rn)return;if(ca){li(Es=>Es+1);return}const so=(ii.current.get(_r)||0)+1;if(ii.current.set(_r,so),so>=2){$r.add(Rn),li(Es=>Es+1);return}typeof window<"u"&&(ci.current=window.setTimeout(()=>{ci.current=null,Wc.current===Rn&&li(Es=>Es+1)},500))}).finally(()=>{Fc.current===_r&&(Fc.current=null)})};if(Cn!==ne&&!Il.current.has(ha)){tt("archive",()=>Ua(!0),Il.current);return}const Wt=Ke(Ia);if(Wt){ee(),Zn.current=ha,to.current=null,ac(Wt);return}if(ba!==ne&&!Fd.current.has(ha)){tt("deleted",()=>fa(!0),Fd.current);return}to.current!==ha&&(to.current=ha,ra("This task is unavailable or you do not have access to it.","info",12e3))},[Cn,ct,Tt,ts,Yr,ft,Ud,ha,ba,Ia,sn,Ua,fa,ac,t,Je,Gn,ra,zs,a,M,z,pe,Ps,Xi,qt,Lt]);const Gd=a1({enabled:w.syncV3TaskMetadataActivation&&z==="local",workspaceId:bt,isAuthenticated:Je,dispatchEnabled:dn}),Pl=h1({localRuntime:z==="local",enabled:w.syncV3TaskCreateActivation&&z==="local",workspaceId:bt,isAuthenticated:Je,dispatchEnabled:dn}),El=w.syncV3TaskStatusActivation&&z==="local",ao=C1({enabled:El,workspaceId:bt,isAuthenticated:Je,dispatchEnabled:dn}),sc=x1({enabled:z==="local",workspaceId:bt,isAuthenticated:Je,dispatchEnabled:dn}),oc=w.syncV3TaskDeleteActivation&&z==="local",Qg=E1({enabled:oc,workspaceId:bt,isAuthenticated:Je,dispatchEnabled:dn}),Xg=M1({enabled:oc,workspaceId:bt,isAuthenticated:Je,dispatchEnabled:dn}),{copiedId:ey,handleDelete:Kd,handleUpdateTask:qd,handleSetStatus:Yd,handleToggleComplete:Zd,handleToggleCancel:Pp,handleToggleInProgress:Nl,handleToggleReview:jl,handleArchiveTask:Ep,handleBulkArchive:Ri,handleUnarchive:ty,handleRestoreDeletedTask:Pm,handleRestoreSelectedDeletedTasks:ry,handlePermanentlyDeleteDeletedTask:Em,handleEmptyDeletedTasks:Pi,handleCopyId:ny,queueWorkspaceSyncFromAuthoritativeTaskState:ay}=ON({tasks:pn,archivedTasks:ua,editingTaskId:sn,setTasks:Hn,setArchivedTasks:Pa,setDeletedTasks:Dn,setError:Ea,resetForm:Tp,setActiveTab:xl,fetchTasks:ja,fetchArchive:Jo,fetchDeletedTasks:ol,mergeTaskFromServer:al,pushNotice:ra,cloudAuthConfigured:V,runtimeMode:z,isAuthenticated:Je,workspaceCloudSyncEnabled:dn,buildWorkspaceSyncSignature:Uu,pushWorkspaceChangesToCloud:Yf,workspacePendingSignatureRef:Bu,workspaceDeletedTaskIdsRef:Kf,workspaceDeletedTaskWatermarksRef:Wu,mutateTaskMetadata:Gd,mutateTaskStatus:ao,mutateTaskLifecycle:sc,mutateTaskDelete:Qg,mutateTaskRestore:Xg,durableTaskMetadataActivationEnabled:w.syncV3TaskMetadataActivation&&z==="local",durableTaskStatusActivationEnabled:El,durableTaskDeleteActivationEnabled:oc,durableTaskHttpRootActivationEnabled:w.syncV3TaskCloudHttpRootActivation,workspaceId:bt}),{autoSaveState:sy,flushAutoSave:Nm,scheduleWarningPrompt:oy,handleSubmit:Hs,confirmScheduleWarning:jm,cancelScheduleWarning:Ml,handleAddComment:ui}=PN({activeCategories:Gr,activeTab:$e,apiEndpoint:f,assignee:Rc,attachments:op,attachmentsDirty:Qs,category:ll,checklistItems:ni,comments:Sd,complexity:gd,description:Ts,dueDate:$o,createTaskDurably:Pl,durableTaskHttpRootActivationEnabled:w.syncV3TaskCloudHttpRootActivation,workspaceId:bt,updateTask:qd,editingTaskId:sn,fetchTasks:ja,formTaxonomies:Ki,getDescriptionDraft:Fo,getPreferredCategoryValue:oa,getTitleDraft:ri,mergeTaskFromServer:al,onTaskCreated:ac,workstreamInput:Pc,priority:hd,pushNotice:ra,queueWorkspaceSyncFromAuthoritativeTaskState:ay,relationshipTasks:zs,supplementalTasks:Ia,resetForm:Tp,resolveWorkstreamIdInput:Rl,scheduledDate:Qf,setActiveTab:xl,setAttachmentsDirty:hl,setComments:Us,setError:Ea,setLastUsedCategory:qu,setLoading:nl,setNewCommentText:ai,status:Jf,title:Si,taxonomies:qn,textDraftOccupied:Ci,type:xc});o.useEffect(()=>{Rm.current=Nm},[Nm]);const{handleSetWorkstreamForCurrentTask:iy}=EN({editingTaskId:sn,workstreamInput:Pc,pushNotice:ra,relationshipTasks:zs,resolveWorkstreamIdInput:Rl,setError:Ea,updateTask:qd}),{currentTask:Np,currentTaskWorkstream:cy,currentTaskInitiative:Mm}=oN({editingTaskId:sn,relationshipTasks:zs,initiatives:Gs,workstreams:wn,workstreamInput:Pc,resolveWorkstreamIdInput:Rl,supplementalTasks:Ia,assignee:Rc,setAssignee:bi,setChecklistItems:Sr,setComments:Us}),ly=eN({resolveCloudAuthUrl:q,currentWorkspaceId:bt,normalizedCloudAuthBaseUrl:ye,normalizedCloudMcpBaseUrl:ve,mergedConfig:l,availableWorkspaces:ht,currentTheme:Te,configLoaded:Yr,globalTheme:ot,themeUseGlobalDefault:Xe,keyShortcut:cn,jsonBackupEnabled:Zo,globalJsonBackupEnabled:ks,globalWeekStartsOn:ws,locale:Ra,supportedLocales:Qa,jsonBackupUseGlobalDefault:xa,manualComplexityEnabled:Oa,checklistDropdownEnabled:Vs,showTaskCardStatusLabel:Ls,pathSaved:Ie,settingsSection:Ce,setupState:at,buildInfo:va,saveSetupMode:Ld,saveWorkspaceProfile:Cl,setCurrentTheme:he,handleSaveTheme:wl,handleSaveGlobalTheme:Md,setKeyShortcut:kn,handleJsonBackupEnabledChange:cm,handleSaveGlobalJsonBackupEnabled:bl,handleSaveGlobalWeekStartsOn:dp,handleSaveLocale:Dd,handleManualComplexityEnabledChange:Dc,handleChecklistDropdownEnabledChange:Mg,handleShowTaskCardStatusLabelChange:up,handleResetProjectToGlobal:pp,handleSaveSettings:vl,initiativeTemplates:ho,fetchInitiativeTemplates:Os,createInitiativeFromTemplate:ym,setShowFolderBrowser:it,setBrowserTarget:Ne,fetchFolders:rc,activeCategories:Gr,pathValidation:Kn,taxonomyDisplayLabels:_s,handleUpdateCategory:Cm,handleRemoveCategory:Ip,handleSaveCategory:Hd,handleAddPath:Cp,handleRemovePath:no,handleUpdateCategoryIcon:ro,handleUpdateCategoryColor:_p,activeTypes:Fn,handleSaveType:Uc,handleRemoveType:Vd,handleUpdateType:zc,taxonomies:qn,handleUpdateTaxonomies:Im,priorities:zn,handleUpdatePriorities:nc,analyzeSystemTaxonomyPack:Tm,handleApplySystemTaxonomyPack:xm,handleUpdateTaxonomyDisplayLabels:Tl,projectRoot:mt,projectName:wt,mcpHostRoot:La,serverHostRoot:nr,mcpScriptPath:Ht,tenantId:rr,runtimeMode:z,workspaceSwitchingEnabled:Lt,deleteWorkspace:fm,setMcpHostRoot:mr,isAuthenticated:Je});o.useEffect(()=>{typeof window<"u"&&(window.__TASKFORCE_DEBUG__={tasks:pn,archivedTasks:ua,runtimeMode:z,currentWorkspaceId:bt,isAuthenticated:Je,workspaceCloudSyncEnabled:dn,realtimeSyncEnabled:Rr,fetchTasks:ja,fetchArchive:Kr,retryWorkspaceCloudSync:cl,resetWorkspaceSyncCursorAndPull:md,getSyncDiagnostics:Hu,__dispatch:{handleUpdateTask:qd,handleToggleComplete:Zd,handleArchiveTask:Ep,handleToggleCancel:Pp,handleToggleInProgress:Nl,handleToggleReview:jl,handleSubmit:Hs,handleDelete:Kd}})},[pn,ua,z,bt,Je,dn,Rr,ja,Kr,cl,md,Hu,qd,Zd,Ep,Pp,Nl,jl,Hs,Kd]);const Dl=Wn&&Wn.tone!=="error"?{message:Wn.message,type:"info"}:null,ic=String(y||w.wsBaseUrl||me||"").trim().replace(/\/+$/,"");return{config:{...l,cloudEnvironment:w.cloudEnvironment||l.cloudEnvironment||"",apiBaseUrl:me||l.apiBaseUrl,cloudAuthBaseUrl:ye||l.cloudAuthBaseUrl,wsBaseUrl:ic||l.wsBaseUrl},isOpen:de,setIsOpen:He,activeTab:$e,setActiveTab:xl,currentTheme:Te,setCurrentTheme:he,configLoaded:Yr,storagePath:G,saveSettings:vl,pathSaved:Ie,keyShortcut:cn,setKeyShortcut:kn,globalWeekStartsOn:ws,locale:Ra,supportedLocales:Qa,saveLocale:Dd,jsonBackupEnabled:Zo,setJsonBackupEnabled:Za,manualComplexityEnabled:Oa,checklistDropdownEnabled:Vs,showTaskCardStatusLabel:Ls,setManualComplexityEnabled:yn,mcpHostRoot:La,setMcpHostRoot:mr,settingsSection:Ce,setSettingsSection:ut,runtimeMode:z,workspaceMode:zt,workspaceSwitchingEnabled:Lt,cloudAuthConfigured:V,authRequiredForApi:Mt,authBlocked:ct,isAuthenticated:Je,authUserId:Ct,authUserEmail:Qt,authUserDisplayName:dr,authUserAvatarUrl:Tr,authWorkspaceId:Dt,userGlobalSyncStatus:il,workspaceLastPullAt:Qo,workspaceLastPushAt:Xo,workspaceLastErrorAt:Ig,userGlobalSyncError:Mu,workspaceLastErrorMessage:wi,workspaceLastSuccessfulSyncAt:pd,workspaceSyncPhase:xn,workspaceSyncSetupIntent:is,workspaceSyncStatus:Ff,workspaceSyncSummary:Uf,workspaceSyncRecommendedAction:zf,workspaceSyncBusy:fd,workspaceSyncPendingChanges:Du,localCoordinatorStatus:Vf,transferLocalCoordinatorOwnership:Gf,retryUserGlobalSettingsSync:Zf,retryWorkspaceCloudSync:cl,resetWorkspaceSyncCursorAndPull:md,getWorkspaceSyncDiagnostics:Hu,hasBetaAccess:ur,realtimeSyncEnabled:Rr,realtimeSyncFlagSource:Bn,currentWorkspaceId:bt,currentWorkspaceRole:Lg,availableWorkspaces:ht,assigneeOptions:Er,workspaceCloudSyncEnabled:dn,saveWorkspaceCloudSyncSettings:zu,applyWorkspaceSyncStateSnapshot:$u,bootstrapState:as,authSessionResolved:Tt,workspaceBootstrapPending:qt,bootstrapPhase:fr,bootstrapError:Mr,bootstrapStartedAt:Vt,setupState:at,runtimeCapabilities:Lr,refreshSetupContext:ec,retryBootstrapChecks:um,continueAfterCommercialOnboarding:hp,saveWorkspaceProfile:Cl,fetchWorkspaces:Lc,createWorkspace:pm,deleteWorkspace:fm,switchWorkspace:Ps,loginWithCredentials:Od,beginOAuthLogin:mm,availableAuthProviders:pr,fetchLoginMethods:yp,unlinkLoginMethod:Fg,addPasswordToAccount:Ug,changePassword:gm,beginOAuthLink:kp,registerWithCredentials:Bd,updateCurrentUserProfile:Og,requestEmailVerification:gp,confirmEmailVerification:Bg,requestPasswordReset:_l,confirmPasswordReset:Wg,inspectInviteAcceptance:Xs,acceptInviteWithToken:$g,joinInviteWithToken:hm,logout:Wd,showFolderBrowser:Fe,setShowFolderBrowser:it,folders:Me,files:ge,currentBrowsePath:Be,fetchFolders:rc,browserTarget:F,setBrowserTarget:Ne,groupBy:xd,setGroupBy:np,activeWorkspaceModule:Ed,setActiveWorkspaceModule:Dg,emptyColumnMode:ap,setEmptyColumnMode:Zi,zenMode:wa,setZenMode:Xa,handleSelectPath:_m,handleAddPath:Cp,handleRemovePath:no,tasks:pn,loadingTasks:Gn,archivedTasks:ua,archiveHydratedWorkspaceId:Cn,initiatives:Gs,workstreams:wn,planningBootstrapTaskSummaries:yt,planningLoadState:vr,workspaceTaskRelationships:Hf,deletedTasks:sa,activeCategories:Gr,activeTypes:Fn,priorities:zn,taxonomyDisplayLabels:_s,taxonomies:qn,searchQuery:Zu,setSearchQuery:bo,filterCategories:Ju,setFilterCategories:Qu,filterTypes:fl,setFilterTypes:Tg,filterPriorities:_d,setFilterPriorities:qi,filterStatus:Xu,setFilterStatus:ml,filterAssignees:cs,setFilterAssignees:si,filterTaxonomies:Uo,setFilterTaxonomies:Ii,hasInitedFilters:Id,sortBy:ep,setSortBy:tp,sortOrder:rp,setSortOrder:Yi,toggleSortOrder:Nc,showArchive:ce,setShowArchive:pe,taskScope:xe,setTaskScope:N,compressedCards:X,setCompressedCards:Ae,clearFilters:Ot,filteredTasks:tm,searchAgnosticTasks:sp,filteredArchive:rm,groupedTasks:Pd,collapsedCategories:Ji,setCollapsedCategories:Rd,fetchTasks:ja,fetchArchive:Kr,ensureArchiveHydrated:Ua,fetchDeletedTasks:_a,fetchPlanningEntities:Zr,fetchPlanningEntityDetail:sl,fetchAssigneeOptions:mp,createInitiative:km,updateInitiative:zg,archiveInitiative:Bc,unarchiveInitiative:Hg,createWorkstream:Vg,updateWorkstream:vm,archiveWorkstream:Kg,unarchiveWorkstream:qg,reorderWorkstreamTasks:Gg,handleEdit:ac,handleDelete:Kd,handleCopyId:ny,handleToggleComplete:Zd,handleToggleCancel:Pp,handleToggleInProgress:Nl,handleToggleReview:jl,handleArchiveTask:Ep,handleBulkArchive:Ri,handleUnarchive:ty,handleRestoreDeletedTask:Pm,handleRestoreSelectedDeletedTasks:ry,handlePermanentlyDeleteDeletedTask:Em,handleEmptyDeletedTasks:Pi,handleUpdateTask:qd,handleSetStatus:Yd,editingTaskId:sn,loading:vo,error:ud,clearTaskError:Sc,title:Si,setTitle:Ai,setTitleDraft:Ku,description:Ts,setDescription:vd,setDescriptionDraft:bd,checklistItems:ni,setChecklistItems:Sr,category:ll,setCategory:ei,type:xc,setType:Bo,priority:hd,setPriority:Vi,complexity:gd,setComplexity:Vu,status:Jf,setStatus:yd,assignee:Rc,setAssignee:bi,scheduledDate:Qf,setScheduledDate:Wo,dueDate:$o,setDueDate:ti,workstreamInput:Pc,setWorkstreamInput:kd,formTaxonomies:Ki,setFormTaxonomies:Xf,comments:Sd,newCommentText:Gi,setNewCommentText:ai,attachments:op,setAttachments:sm,attachmentsDirty:Qs,setAttachmentsDirty:hl,descriptionFocused:Pg,setDescriptionFocused:Eg,showMarkdownHelp:No,setShowMarkdownHelp:jo,isCapturingScreenshot:Ng,setIsCapturingScreenshot:jg,handleSubmit:Hs,resetForm:Tp,handleAddComment:ui,handleSetWorkstreamForCurrentTask:iy,handleOpenTaskById:xp,returnToPreviousTask:Jg,autoSaveState:sy,unsavedModalOpen:Xr,setUnsavedModalOpen:Ar,pendingNavigation:An,handleNavigation:Yg,handleClose:Zg,uiNotice:Wn,pushNotice:ra,clearNotice:ts,successBanner:Dl,taskReturnTrail:na,clearReturnToParentTask:Rp,copiedId:ey,recentlyChangedTaskIds:Ac,scheduleWarningPrompt:oy,confirmScheduleWarning:jm,cancelScheduleWarning:Ml,tasksScrollRef:un,setTasksScrollPos:Ws,taskforceAgentId:em,setTaskforceAgentId:ul,taskforceAgentConversationId:_i,setTaskforceAgentConversationId:Ec,taskforceAgentConversationByAgentId:pl,setTaskforceAgentConversationByAgentId:Yu,uiStateReady:Xi,handleUpdateCategory:Cm,handleRemoveCategory:Ip,handleSaveCategory:Hd,handleUpdateCategoryIcon:ro,handleUpdateCategoryColor:_p,handleSaveType:Uc,handleRemoveType:Vd,handleUpdateType:zc,handleUpdateTaxonomies:Im,handleUpdatePriorities:nc,handleUpdateTaxonomyDisplayLabels:Tl,pathValidation:Kn,validatePaths:Am,getCategoryPaths:Ap,customCategories:pa,setCustomCategories:Wa,projectRoot:mt,projectName:wt,mcpScriptPath:Ht,serverHostRoot:nr,commentsEndRef:Ad,currentTask:Np,currentTaskWorkstream:cy,currentTaskInitiative:Mm,initiativeTemplates:ho,fetchInitiativeTemplates:Os,createInitiativeFromTemplate:ym,settingsModel:ly}}const G1="modulepreload",K1=function(e){return"/taskforce/"+e},qb={},Po=function(t,r,a){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=K1(f),f in qb)return;qb[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":G1,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)})},q1="_filterGlow_eor56_8",Y1="_floatingButton_eor56_18",Z1="_badge_eor56_49",J1="_configBadge_eor56_66",Q1="_configBadgeActive_eor56_76",X1="_configBadgeRevoked_eor56_82",ej="_configBadgeExpired_eor56_88",tj="_coreModal_eor56_97",rj="_header_eor56_103",nj="_headerTitle_eor56_118",aj="_brandIcon_eor56_136",sj="_brandHomeButton_eor56_142",oj="_brandHomeStatic_eor56_143",ij="_brandCloudSuffix_eor56_169",cj="_projectSlash_eor56_174",lj="_projectNameGroup_eor56_181",dj="_projectNameGroupHidden_eor56_188",uj="_projectName_eor56_181",pj="_taskCountBadge_eor56_215",fj="_taskCountBadgeIcon_eor56_232",mj="_taskCountBadgeButton_eor56_236",hj="_taskCountBadgeActive_eor56_254",gj="_taskCountBadgeAlert_eor56_260",yj="_headerActions_eor56_266",kj="_sortDirectionBtn_eor56_273",vj="_sortDirectionBtnWidget_eor56_280",wj="_form_eor56_288",bj="_topRow_eor56_300",Sj="_field_eor56_306",Aj="_labelRow_eor56_312",Cj="_label_eor56_312",_j="_manageLink_eor56_326",Ij="_input_eor56_345",Tj="_select_eor56_346",xj="_textarea_eor56_347",Rj="_taskIdInlineLink_eor56_381",Pj="_readOnly_eor56_400",Ej="_selectWithConfig_eor56_408",Nj="_configBtn_eor56_418",jj="_configBtnActive_eor56_448",Mj="_hasPath_eor56_456",Dj="_pathIndicator_eor56_461",Lj="_formActions_eor56_467",Oj="_hasCancel_eor56_474",Bj="_submitBtn_eor56_478",Wj="_cancelBtn_eor56_494",$j="_successMessage_eor56_526",Fj="_errorMessage_eor56_532",Uj="_successIcon_eor56_544",zj="_spinner_eor56_564",Hj="_spin_eor56_564",Vj="_boardRefreshIndicator_eor56_568",Gj="_destructiveBtn_eor56_598",Kj="_warningBtn_eor56_621",qj="_viewTab_eor56_644",Yj="_loading_eor56_655",Zj="_emptyState_eor56_661",Jj="_taskList_eor56_671",Qj="_referenceBadge_eor56_677",Xj="_referenceBadgeLabel_eor56_698",e2="_referenceBadgeStatic_eor56_707",t2="_provisionalReferenceBadge_eor56_721",r2="_copiedReference_eor56_743",n2="_highlight_eor56_755",a2="_modal_eor56_767",s2="_priorityEmoji_eor56_775",o2="_metaItem_eor56_779",i2="_taskFormDateInput_eor56_793",c2="_metaBadge_eor56_803",l2="_complexityPill_eor56_818",d2="_complexityDots_eor56_822",u2="_dot_eor56_828",p2="_dotFilled_eor56_836",f2="_typePill_eor56_842",m2="_type_bug_eor56_846",h2="_type_feature_eor56_850",g2="_type_chore_eor56_854",y2="_type_refactor_eor56_858",k2="_type_documentation_eor56_862",v2="_type_research_eor56_866",w2="_type_security_eor56_874",b2="_statusActionsGroup_eor56_878",S2="_statusActionsGroupCompact_eor56_884",A2="_statusSelectWrap_eor56_888",C2="_statusTaxonomyDropdownWrap_eor56_894",_2="_statusTaxonomyDropdown_eor56_894",I2="_statusTaxonomyDropdownCompact_eor56_902",T2="_statusTaxonomyDropdownIconOnly_eor56_906",x2="_taxonomyDropdownButton_eor56_911",R2="_taxonomyDropdownButtonContent_eor56_928",P2="_statusTaxonomyDropdownIconOnlyPanel_eor56_932",E2="_actionBtn_eor56_938",N2="_startWorkBtn_eor56_962",j2="_workingBtn_eor56_971",M2="_pulse_eor56_1",D2="_reviewBtn_eor56_977",L2="_reviewActiveBtn_eor56_987",O2="_reviewPill_eor56_993",B2="_archiveTaskBtn_eor56_1000",W2="_bulkArchiveBtn_eor56_1009",$2="_bulkDeleteBtn_eor56_1031",F2="_deleteBtn_eor56_1060",U2="_completeBtn_eor56_1072",z2="_completeActiveBtn_eor56_1082",H2="_deleteActiveBtn_eor56_1088",V2="_disabledBtn_eor56_1094",G2="_archiveList_eor56_1101",K2="_archiveHeader_eor56_1109",q2="_settingsTab_eor56_1120",Y2="_settingsTabMcpOnly_eor56_1129",Z2="_settingsTabs_eor56_1138",J2="_settingsLayout_eor56_1152",Q2="_settingsLayoutMcpOnly_eor56_1159",X2="_settingsSidebar_eor56_1165",eM="_settingsSidebarHeader_eor56_1175",tM="_settingsSidebarNav_eor56_1184",rM="_settingsSidebarBtn_eor56_1193",nM="_settingsSidebarBtnActive_eor56_1217",aM="_settingsSidebarGroup_eor56_1224",sM="_settingsSidebarGroupBtn_eor56_1230",oM="_settingsSidebarGroupLabel_eor56_1234",iM="_settingsSidebarGroupChevron_eor56_1238",cM="_settingsSidebarSubnav_eor56_1244",lM="_settingsSidebarSubBtn_eor56_1251",dM="_appScrollbar_eor56_1274",uM="_settingsTabBtn_eor56_1278",pM="_settingsTabBtnActive_eor56_1304",fM="_settingsContent_eor56_1310",mM="_mcpRegistrationHint_eor56_1336",hM="_mcpRegistrationPrompt_eor56_1347",gM="_mcpCodexTrustNote_eor56_1366",yM="_mcpCodexTrustHeader_eor56_1377",kM="_mcpCodexTrustTitle_eor56_1384",vM="_mcpCodexTrustCode_eor56_1390",wM="_mcpAuthRequiredCard_eor56_1405",bM="_mcpAuthRequiredIcon_eor56_1417",SM="_mcpAuthRequiredBody_eor56_1430",AM="_mcpAuthRequiredActions_eor56_1437",CM="_settingsToast_eor56_1481",_M="_settingsToastSuccess_eor56_1498",IM="_settingsToastError_eor56_1504",TM="_inputWithPrefix_eor56_1510",xM="_pathHint_eor56_1517",RM="_settingGroup_eor56_1530",PM="_settingTitle_eor56_1536",EM="_settingTitleRow_eor56_1545",NM="_settingTitleActionBtn_eor56_1552",jM="_themeOptions_eor56_1572",MM="_buttonGrid_eor56_1577",DM="_themeBtn_eor56_1589",LM="_activeTheme_eor56_1613",OM="_pathInputGroup_eor56_1621",BM="_saveSettingsBtn_eor56_1630",WM="_shortcutInputWrapper_eor56_1651",$M="_inputIcon_eor56_1656",FM="_settingHelper_eor56_1665",UM="_browseBtn_eor56_1672",zM="_inlineCategoryManager_eor56_1691",HM="_categoryManager_eor56_1702",VM="_categoryList_eor56_1708",GM="_categoryChip_eor56_1720",KM="_categoryChipLabel_eor56_1733",qM="_chipActionBtn_eor56_1741",YM="_removeCategoryBtn_eor56_1761",ZM="_addCategoryForm_eor56_1781",JM="_addCategoryBtn_eor56_1786",QM="_filesList_eor56_1811",XM="_helpLink_eor56_1838",eD="_taskChildrenSummaryBadges_eor56_1857",tD="_taskChildrenProgressBar_eor56_1865",rD="_taskChildrenProgressBarSegmentDone_eor56_1876",nD="_taskChildrenProgressBarSegmentReview_eor56_1882",aD="_taskChildrenProgressBarSegmentInProgress_eor56_1888",sD="_taskChildrenProgressBarSegmentBlocked_eor56_1894",oD="_taskChildrenProgressText_eor56_1900",iD="_taskChildUnlinkBtn_eor56_1909",cD="_aboutText_eor56_1927",lD="_versionInfo_eor56_1934",dD="_filterBar_eor56_1942",uD="_kanbanHintText_eor56_1956",pD="_searchContainer_eor56_1962",fD="_searchIcon_eor56_1969",mD="_searchInput_eor56_1977",hD="_searchActive_eor56_2003",gD="_searchCount_eor56_2008",yD="_clearSearchBtn_eor56_2024",kD="_filterRow_eor56_2046",vD="_sortLabel_eor56_2052",wD="_archiveToggle_eor56_2060",bD="_filterContainer_eor56_2097",SD="_filterButton_eor56_2102",AD="_filterActive_eor56_2127",CD="_filterDropdown_eor56_2133",_D="_filterSearch_eor56_2148",ID="_filterSearchIcon_eor56_2156",TD="_filterSearchInput_eor56_2165",xD="_filterEmpty_eor56_2177",RD="_filterOption_eor56_2184",PD="_filterDivider_eor56_2214",ED="_filterSelect_eor56_2220",ND="_filterToggleBtn_eor56_2261",jD="_inProgressToggle_eor56_2283",MD="_activeInProgress_eor56_2301",DD="_activeFilter_eor56_2310",LD="_resetFiltersBtn_eor56_2320",OD="_categoryChip_disabled_eor56_2353",BD="_categoryVisibilityToggle_eor56_2363",WD="_editCategoryInput_eor56_2376",$D="_categoryChipActionBtn_eor56_2387",FD="_categoryChipActionBtn_active_eor56_2405",UD="_categoryGroup_eor56_2410",zD="_categoryHeader_eor56_2418",HD="_categoryTitle_eor56_2432",VD="_categoryCount_eor56_2442",GD="_categoryItems_eor56_2448",KD="_selectPriority_low_eor56_2465",qD="_selectPriority_medium_eor56_2470",YD="_selectPriority_high_eor56_2475",ZD="_selectPriority_critical_eor56_2480",JD="_levelSelect_eor56_2489",QD="_levelOption_eor56_2502",XD="_levelOptionFilled_eor56_2519",eL="_levelOption_priority_low_eor56_2526",tL="_levelOption_priority_medium_eor56_2531",rL="_levelOption_priority_high_eor56_2536",nL="_levelOption_priority_critical_eor56_2541",aL="_levelOption_complexity_tiny_eor56_2548",sL="_levelOption_complexity_low_eor56_2553",oL="_levelOption_complexity_medium_eor56_2558",iL="_levelOption_complexity_high_eor56_2563",cL="_levelOption_complexity_epic_eor56_2568",lL="_levelOptionActive_eor56_2575",dL="_levelOptionSelected_eor56_2580",uL="_levelLabel_eor56_2588",pL="_levelLabelFadeIn_eor56_1",fL="_closeConfigBtn_eor56_2613",mL="_configItem_eor56_2635",hL="_settingsLabel_eor56_2641",gL="_settingsHint_eor56_2650",yL="_pathList_eor56_2657",kL="_pathChip_eor56_2664",vL="_pathValid_eor56_2677",wL="_pathInvalid_eor56_2682",bL="_pathValidIcon_eor56_2687",SL="_pathInvalidIcon_eor56_2692",AL="_pathText_eor56_2697",CL="_removePathBtn_eor56_2704",_L="_pathCount_eor56_2726",IL="_specialistSection_eor56_2737",TL="_toggleHeading_eor56_2745",xL="_dropdownList_eor56_2785",RL="_specialistBadge_eor56_2794",PL="_iconGrid_eor56_2824",EL="_iconPickerBtn_eor56_2835",NL="_iconPickerBtnActive_eor56_2854",jL="_categorySubConfig_eor56_2861",ML="_colorPickerRow_eor56_2869",DL="_colorPickerGrid_eor56_2875",LL="_colorSwatch_eor56_2882",OL="_colorSwatchActive_eor56_2901",BL="_categoryChipIcon_eor56_2907",WL="_fieldIconWrapper_eor56_2912",$L="_fieldIcon_eor56_2912",FL="_field_dynamic_eor56_2934",UL="_fieldIcon_dynamic_eor56_2940",zL="_categoryTitleIcon_eor56_2944",HL="_editActionsGroup_eor56_2949",VL="_stickyActionHeader_eor56_2956",GL="_taskNoticeAnchor_eor56_2973",KL="_taskHierarchyHeader_eor56_2979",qL="_taskHierarchyBadgeRow_eor56_2986",YL="_taskHierarchyDivider_eor56_2994",ZL="_taskHierarchySegment_eor56_3000",JL="_taskHierarchyMeta_eor56_3007",QL="_taskHierarchyActionBtn_eor56_3020",XL="_taskWorkstreamPicker_eor56_3026",eO="_taskWorkstreamPickerIcon_eor56_3081",tO="_taskWorkstreamPickerPanel_eor56_3087",rO="_taskWorkstreamPickerOption_eor56_3091",nO="_taskSaveStatus_eor56_3113",aO="_taskSaveStatusCenter_eor56_3124",sO="_taskSaveStatusError_eor56_3132",oO="_primaryUpdateBtn_eor56_3136",iO="_secondaryHeaderBtn_eor56_3164",cO="_secondaryHeaderBtnDestructive_eor56_3185",lO="_attachmentCaptureContainer_eor56_3197",dO="_capturePrompt_eor56_3205",uO="_previewContainer_eor56_3219",pO="_previewHeader_eor56_3225",fO="_attachmentCapturePreview_eor56_3235",mO="_actions_eor56_3242",hO="_primaryButton_eor56_3248",gO="_secondaryButton_eor56_3263",yO="_iconButton_eor56_3278",kO="_attachmentGrid_eor56_3300",vO="_attachmentCard_eor56_3306",wO="_attachmentPreviewContainer_eor56_3320",bO="_attachmentPreviewButton_eor56_3337",SO="_contextFileLink_eor56_3355",AO="_attachmentActions_eor56_3381",CO="_attachmentActionBtn_eor56_3396",_O="_attachmentCaptionInput_eor56_3418",IO="_documentAttachmentCaptionInput_eor56_3419",TO="_hiddenInput_eor56_3439",xO="_contextMenuControl_eor56_3443",RO="_contextMenu_eor56_3443",PO="_contextAddMenu_eor56_3489",EO="_contextActionsMenu_eor56_3494",NO="_contextDestructiveMenuItem_eor56_3498",jO="_contextContent_eor56_3502",MO="_contextContentDropActive_eor56_3512",DO="_contextDropOverlay_eor56_3516",LO="_contextLinkComposer_eor56_3533",OO="_contextEmptyState_eor56_3540",BO="_contextGroupLabel_eor56_3550",WO="_contextNotice_eor56_3559",$O="_contextCaptionEditor_eor56_3564",FO="_attachmentCaptionLabel_eor56_3572",UO="_documentAttachmentList_eor56_3598",zO="_documentAttachmentItem_eor56_3604",HO="_documentAttachmentRow_eor56_3610",VO="_documentAttachmentLink_eor56_3619",GO="_documentAttachmentMain_eor56_3633",KO="_documentAttachmentReference_eor56_3641",qO="_documentAttachmentName_eor56_3646",YO="_documentAttachmentType_eor56_3655",ZO="_documentAttachmentTypeOutline_eor56_3671",JO="_documentAttachmentTypeFoldFill_eor56_3684",QO="_documentAttachmentTypeFoldLine_eor56_3689",XO="_documentAttachmentTypeLabel_eor56_3693",eB="_brokenImage_eor56_3699",tB="_brokenImagePlaceholder_eor56_3707",rB="_regionOverlay_eor56_3721",nB="_selectionBox_eor56_3732",aB="_exportRow_eor56_3740",sB="_exportItem_eor56_3745",oB="_taxonomyDrillDown_eor56_3754",iB="_drillDownList_eor56_3764",cB="_drillDownSection_eor56_3772",lB="_drillDownSectionHeader_eor56_3778",dB="_drillDownSectionTitle_eor56_3785",uB="_drillDownItem_eor56_3794",pB="_drillDownItemDimmed_eor56_3816",fB="_drillDownItemActive_eor56_3824",mB="_drillDownItemInfo_eor56_3829",hB="_drillDownItemText_eor56_3835",gB="_drillDownItemLabel_eor56_3840",yB="_drillDownItemSubtext_eor56_3845",kB="_addTaxonomyBtnSmall_eor56_3850",vB="_taxonomyDetailView_eor56_3872",wB="_slideIn_eor56_1",bB="_detailHeader_eor56_3892",SB="_detailTitle_eor56_3901",AB="_detailContent_eor56_3908",CB="_createOverlay_eor56_3915",_B="_createDialog_eor56_3927",IB="_zoomIn_eor56_1",TB="_dialogActions_eor56_3955",xB="_settingsGroup_eor56_3973",RB="_settingsItem_eor56_3979",PB="_mcpHealthCompactAlert_eor56_3985",EB="_mcpHealthUpdateRow_eor56_3986",NB="_mcpHealthBlockingAlert_eor56_3987",jB="_mcpHealthUpdateIcon_eor56_4015",MB="_mcpHealthCompactBody_eor56_4021",DB="_mcpHealthCompactActions_eor56_4038",LB="_mcpHealthStableAction_eor56_4044",OB="_mcpUpdateDialog_eor56_4049",BB="_mcpUpdateDialogIntro_eor56_4058",WB="_mcpUpdateRestartGuidance_eor56_4059",$B="_mcpUpdateVersionGrid_eor56_4066",FB="_mcpUpdateDiagnostics_eor56_4082",UB="_mcpUpdateLoading_eor56_4098",zB="_mcpUpdateNotice_eor56_4099",HB="_mcpUpdateCommands_eor56_4114",VB="_mcpUpdateSectionLabel_eor56_4120",GB="_mcpHealthCommandRow_eor56_4126",KB="_mcpHealthCommand_eor56_4126",qB="_mcpUpdateDialogActions_eor56_4169",YB="_mcpHealthCopyError_eor56_4175",ZB="_settingLabelGroup_eor56_4209",JB="_settingLabel_eor56_4209",QB="_settingDescription_eor56_4221",XB="_settingInput_eor56_4228",e5="_codeBlockWrapper_eor56_4251",t5="_codeHeader_eor56_4260",r5="_codeHeaderActions_eor56_4271",n5="_codeLabel_eor56_4278",a5="_codeHeaderDescription_eor56_4286",s5="_mcpTokenCardBody_eor56_4294",o5="_mcpTokenFormGrid_eor56_4302",i5="_mcpTokenOutputWrap_eor56_4309",c5="_mcpTokenValueField_eor56_4316",l5="_mcpTokenValueText_eor56_4326",d5="_mcpTokenValueInput_eor56_4339",u5="_mcpTokenActionRow_eor56_4344",p5="_settingsCodeBlock_eor56_4352",f5="_copyBtn_eor56_4367",m5="_copyBtnActive_eor56_4388",h5="_copyBtnNeutralActive_eor56_4394",g5="_headerDivider_eor56_4412",y5="_groupByContainer_eor56_4418",k5="_groupByLabel_eor56_4426",v5="_groupBySelect_eor56_4431",w5="_viewSwitcher_eor56_4453",b5="_selectWithIcon_eor56_4461",S5="_marginBottom16_eor56_4465",A5="_headerDraggable_eor56_4470",C5="_headerDragging_eor56_4474",_5="_filterSelectSort_eor56_4482",I5="_archiveRow_eor56_4486",T5="_taskScopeToggle_eor56_4492",x5="_taskScopeTabs_eor56_4505",R5="_taskScopeTab_eor56_4505",P5="_taskScopeTabActive_eor56_4550",E5="_taskToolbarAction_eor56_4558",N5="_overlayHighZ_eor56_4574",j5="_savedText_eor56_4584",M5="_shortcutInput_eor56_1651",D5="_saveSettingsBtnWrapper_eor56_4592",L5="_marginBottom12_eor56_4596",O5="_exportRowGrid_eor56_4600",B5="_settingSubtitleCustom_eor56_4605",W5="_capitalize_eor56_4611",$5="_marginTop12_eor56_4615",F5="_marginTop16_eor56_4619",U5="_labelGroupFlex_eor56_4623",z5="_codeBlockWrapperCustom_eor56_4629",H5="_kanbanWrapper_eor56_4635",V5="_kanbanContainer_eor56_4643",G5="_kanbanTopScroll_eor56_4665",K5="_kanbanTopScrollSpacer_eor56_4674",q5="_kanbanColumn_eor56_4678",Y5="_kanbanColumnSticky_eor56_4694",Z5="_kanbanColumnCollapsed_eor56_4700",J5="_kanbanColumnPast_eor56_4705",Q5="_kanbanColumnSelectedDay_eor56_4710",X5="_kanbanHeader_eor56_4717",eW="_kanbanCount_eor56_4727",tW="_kanbanHeaderDraggable_eor56_4747",rW="_kanbanHeaderPanning_eor56_4751",nW="_kanbanQuickAdd_eor56_4755",aW="_kanbanColorDot_eor56_4776",sW="_kanbanDroppable_eor56_4788",oW="_kanbanDroppableScroll_eor56_4797",iW="_kanbanEmpty_eor56_4807",cW="_kanbanCard_eor56_4817",lW="_kanbanCardWrapper_eor56_4827",dW="_taxonomyDropdownActive_eor56_4835",uW="_kanbanCardWrapperRaised_eor56_4839",pW="_kanbanCardTitle_eor56_4843",fW="_kanbanBadges_eor56_4847",mW="_kanbanBadge_eor56_4847",hW="_headerFlex_eor56_4863",gW="_marginBottom8_eor56_4870",yW="_marginBottom20_eor56_4874",kW="_configPanel_eor56_4878",vW="_configPanelLarge_eor56_4887",wW="_subLabelBlock_eor56_4891",bW="_subLabelBlock12_eor56_4898",SW="_flexBetween_eor56_4902",AW="_flexBetweenCenter_eor56_4909",CW="_deleteBtnSmall_eor56_4914",_W="_deleteBtnMedium_eor56_4920",IW="_trashIcon_eor56_4927",TW="_gridConfig_eor56_4931",xW="_flexColGap4_eor56_4938",RW="_flexColGap4Center_eor56_4944",PW="_flex1_eor56_4951",EW="_flexCol_eor56_4938",NW="_flexGrow1_eor56_4961",jW="_inputLabel_eor56_4965",MW="_inputLabelBlock_eor56_4969",DW="_checkboxInput_eor56_4975",LW="_configDividerMargin_eor56_4981",OW="_configDividerMargin24_eor56_4986",BW="_pathListMargin_eor56_4991",WW="_cancelBtnRed_eor56_4995",$W="_code_eor56_4251",FW="_workflowList_eor56_5022",UW="_workflowActions_eor56_5030",zW="_textBtn_eor56_5039",HW="_workflowGrid_eor56_5053",VW="_checkboxLabel_eor56_5061",GW="_checkboxSmall_eor56_5075",KW="_docWorkspace_eor56_5094",qW="_docIndexPanel_eor56_5105",YW="_docWorkspaceTrayMode_eor56_5117",ZW="_docViewerPanel_eor56_5117",JW="_docWorkspaceTrayOpen_eor56_5122",QW="_docTrayPanel_eor56_5126",XW="_docTrayPanelOpen_eor56_5150",e6="_docSpinning_eor56_5158",t6="_docSpin_eor56_5158",r6="_docViewerEmpty_eor56_5177",n6="_agentsModuleRoot_eor56_5192",a6="_agentsModuleWithTray_eor56_5204",s6="_agentsModuleTrayOpen_eor56_5208",o6="_agentTrayPanel_eor56_5212",i6="_agentTrayPanelOpen_eor56_5235",c6="_agentTrayHeader_eor56_5243",l6="_agentTrayTitle_eor56_5258",d6="_agentTrayContent_eor56_5270",u6="_agentTrayContentInner_eor56_5278",p6="_agentsModuleContent_eor56_5282",f6="_taskforceAgentsModuleRoot_eor56_5290",m6="_taskforceAgentsModuleMain_eor56_5301",h6="_taskforceAgentsModuleTrayOpen_eor56_5309",g6="_taskforceAgentRosterHeader_eor56_5313",y6="_taskforceAgentRosterTitle_eor56_5326",k6="_taskforceAgentRosterContent_eor56_5338",v6="_taskforceAgentLibraryPortal_eor56_5346",w6="_taskforceAgentBuilderNavigation_eor56_5352",b6="_taskforceAgentBuilderTabs_eor56_5375",S6="_taskforceAgentBuilderCreateBtn_eor56_5392",A6="_taskforceAgentBuilderTab_eor56_5375",C6="_taskforceAgentBuilderTabActive_eor56_5433",_6="_taskforceAgentBuilderPanel_eor56_5451",I6="_taskforceAgentBuilderEmpty_eor56_5459",T6="_taskforceAgentBuilderEmptyIcon_eor56_5468",x6="_taskforceAgentTestGrid_eor56_5480",R6="_taskforceAgentContextBanner_eor56_5487",P6="_taskforceAgentContextActions_eor56_5506",E6="_taskforceAssistantWorkspace_eor56_5530",N6="_taskforceAssistantWorkspaceContent_eor56_5540",j6="_taskforceAssistantWorkspaceOpen_eor56_5549",M6="_taskforceAssistantWorkspaceCollapsed_eor56_5553",D6="_taskforceModalWithAssistantPanel_eor56_5557",L6="_taskforceModalWithAssistantPanelCollapsed_eor56_5562",O6="_taskforceTaskModalOverlay_eor56_5566",B6="_taskforceAgentDrawerOverlay_eor56_5587",W6="_taskforceAgentDrawerOverlayCollapsed_eor56_5597",$6="_taskforceAgentDrawerPanel_eor56_5601",F6="_taskforceAgentDrawerHeader_eor56_5613",U6="_taskforceAgentDrawerAgentHeader_eor56_5623",z6="_taskforceAgentDrawerHeaderFallback_eor56_5624",H6="_taskforceAgentDrawerAgentAvatar_eor56_5632",V6="_taskforceAgentDrawerFallbackAvatar_eor56_5633",G6="_taskforceAgentDrawerAgentAvatarButton_eor56_5655",K6="_taskforceAgentDrawerAgentPicker_eor56_5679",q6="_taskforceAgentDrawerHeaderActions_eor56_5699",Y6="_taskforceAgentDrawerLoading_eor56_5705",Z6="_taskforceAgentDrawerSurface_eor56_5713",J6="_taskforceAgentDrawerControls_eor56_5723",Q6="_taskforceAgentProfileTray_eor56_5730",X6="_taskforceAgentProfileTrayIn_eor56_1",e$="_taskforceAgentProfileTrayHeader_eor56_5742",t$="_taskforceAgentProfileTrayIdentity_eor56_5750",r$="_taskforceAgentProfileTrayDetails_eor56_5758",n$="_taskforceAgentDrawerChatControls_eor56_5824",a$="_taskforceAgentConversationRename_eor56_5832",s$="_taskforceAgentConversationRenameError_eor56_5844",o$="_taskforceAgentDrawerConversationList_eor56_5851",i$="_taskforceAgentDrawerPrompt_eor56_5857",c$="_taskforceAgentDrawerPromptStatus_eor56_5877",l$="_taskforceAgentDrawerMetrics_eor56_5885",d$="_taskforceAgentOutputStack_eor56_5910",u$="_taskforceAgentOutputPanel_eor56_5917",p$="_taskforceAgentTestTitle_eor56_5928",f$="_taskforceAgentTestNotice_eor56_5955",m$="_taskforceAgentTestError_eor56_5956",h$="_taskforceAgentTestPending_eor56_5957",g$="_taskforceAgentTestActions_eor56_5990",y$="_taskforceAgentTestRestriction_eor56_6001",k$="_taskforceAgentTestResult_eor56_6008",v$="_taskforceAgentTestResultHeader_eor56_6018",w$="_taskforceAgentTestResponse_eor56_6036",b$="_taskforceAgentReadonlyField_eor56_6052",S$="_taskforceAgentAvatarPanel_eor56_6065",A$="_taskforceAgentAvatarEditControl_eor56_6077",C$="_taskforceAgentAvatarPreview_eor56_6083",_$="_taskforceAgentListAvatar_eor56_6084",I$="_taskforceAgentAvatarSyncing_eor56_6109",T$="_taskforceAgentAvatarSyncIcon_eor56_6113",x$="_taskforceAgentAvatarCopy_eor56_6126",R$="_taskforceAgentAvatarRole_eor56_6144",P$="_taskforceAgentToolbar_eor56_6164",E$="_taskforceAgentConversationSelect_eor56_6174",N$="_taskforceAgentList_eor56_6084",j$="_taskforceAgentListEmpty_eor56_6191",M$="_taskforceAgentSignatureColorField_eor56_6198",D$="_aiProfileColorPicker_eor56_6217",L$="_taskforceAgentBehaviorGrid_eor56_6222",O$="_taskforceAgentBehaviorWide_eor56_6228",B$="_taskforceAgentFieldHelper_eor56_6232",W$="_taskforceAgentPresentationGroup_eor56_6239",$$="_taskforceAgentLogList_eor56_6254",F$="_taskforceAgentLogEntry_eor56_6260",U$="_taskforceAgentToolDetails_eor56_6271",z$="_taskforceAgentToolActivity_eor56_6285",H$="_taskforceAgentToolActivityList_eor56_6313",V$="_taskforceAgentToolCall_eor56_6320",G$="_taskforceAgentToolCallFailed_eor56_6336",K$="_taskforceAgentToolCallName_eor56_6340",q$="_taskforceAgentToolCallStatus_eor56_6350",Y$="_taskforceAgentToolDetailsGrid_eor56_6356",Z$="_taskforceAgentLogSuccess_eor56_6391",J$="_taskforceAgentLogError_eor56_6395",Q$="_taskforceAgentLogTime_eor56_6399",X$="_taskforceAgentConversationList_eor56_6405",e3="_taskforceAgentConversationBody_eor56_6424",t3="_taskforceAgentConversationMessage_eor56_6425",r3="_taskforceAgentConversationEmpty_eor56_6430",n3="_taskforceAgentConversationMessageUser_eor56_6471",a3="_taskforceAgentConversationMessageAssistant_eor56_6483",s3="_taskforceAgentMetaGrid_eor56_6498",o3="_marginTop24_eor56_6526",i3="_settingSubTitle_eor56_6530",c3="_dangerBtn_eor56_6539",l3="_aiProfilesExplorer_eor56_6555",d3="_aiProfilesRosterPanel_eor56_6564",u3="_aiProfilesRosterSummary_eor56_6575",p3="_aiProfileSeatSummary_eor56_6584",f3="_aiProfilesRosterState_eor56_6588",m3="_aiProfilesListPane_eor56_6600",h3="_aiProfilesList_eor56_6600",g3="_aiProfilesDetailViewport_eor56_6620",y3="_aiProfilesSection_eor56_6627",k3="_aiProfilesSectionHeader_eor56_6633",v3="_aiProfileGroup_eor56_6641",w3="_aiProfileGroupSelected_eor56_6664",b3="_aiProfileGroupDuplicate_eor56_6671",S3="_aiProfileGroupHeader_eor56_6676",A3="_aiProfileGroupAvatar_eor56_6684",C3="_aiProfileGroupAvatarLogo_eor56_6706",_3="_aiProfileGroupIdentity_eor56_6718",I3="_aiProfileName_eor56_6727",T3="_aiProfileHandle_eor56_6735",x3="_aiProfileRole_eor56_6736",R3="_aiProfileSeatScopeIcon_eor56_6756",P3="_aiProfileGroupSignatureSwatch_eor56_6767",E3="_aiProfileSeatScopeIconDetail_eor56_6773",N3="_aiProfileSeatScopeIconCloud_eor56_6778",j3="_aiProfileSeatScopeIconLocal_eor56_6782",M3="_aiProfileDuplicateBadge_eor56_6786",D3="_aiProfileMergeSection_eor56_6798",L3="_aiProfileMergeRow_eor56_6805",O3="_aiProfileIdChip_eor56_6812",B3="_aiProfileKeepBadge_eor56_6824",W3="_aiProfileMergeActions_eor56_6838",$3="_aiProfileDetailPane_eor56_6845",F3="_aiProfileDetailCard_eor56_6851",U3="_aiProfileDetailHero_eor56_6864",z3="_aiProfileDetailIcon_eor56_6870",H3="_aiProfileDetailAvatar_eor56_6884",V3="_aiProfileDetailAvatarLogo_eor56_6888",G3="_aiProfileDetailHeading_eor56_6906",K3="_aiProfileDetailTitleRow_eor56_6911",q3="_aiProfileDetailTitle_eor56_6911",Y3="_aiProfileDetailMetaRow_eor56_6926",Z3="_aiProfileDetailHandle_eor56_6934",J3="_aiProfileDetailRole_eor56_6939",Q3="_aiProfileDetailLinkedCount_eor56_6946",X3="_aiProfileDetailDescription_eor56_6951",eF="_aiProfileSignatureColor_eor56_6958",tF="_aiProfileSignatureSwatch_eor56_6968",rF="_aiProfileSignatureColorButton_eor56_6986",nF="_aiProfileColorOption_eor56_7013",aF="_aiProfileDetailDataList_eor56_7027",sF="_aiProfileDetailDataGroup_eor56_7036",oF="_aiProfileDetailDateGroup_eor56_7043",iF="_aiProfileDetailDataRow_eor56_7048",cF="_aiProfileDetailDataLabel_eor56_7057",lF="_aiProfileDetailDataValue_eor56_7064",dF="_aiProfileStatusSelect_eor56_7070",uF="_aiProfileInstanceSection_eor56_7112",pF="_aiProfileInstanceSectionHeader_eor56_7118",fF="_aiProfileInstanceList_eor56_7128",mF="_aiProfileInstanceCard_eor56_7134",hF="_aiProfileIdFooter_eor56_7147",gF="_aiProfileIdFooterValue_eor56_7157",yF="_aiProfileDangerTextButton_eor56_7167",kF="_aiProfileInstanceTopRow_eor56_7199",vF="_aiProfileInstanceName_eor56_7206",wF="_aiProfileInstanceMeta_eor56_7213",bF="_aiProfileInlineError_eor56_7221",x={filterGlow:q1,floatingButton:Y1,badge:Z1,configBadge:J1,configBadgeActive:Q1,configBadgeRevoked:X1,configBadgeExpired:ej,coreModal:tj,header:rj,headerTitle:nj,brandIcon:aj,brandHomeButton:sj,brandHomeStatic:oj,brandCloudSuffix:ij,projectSlash:cj,projectNameGroup:lj,projectNameGroupHidden:dj,projectName:uj,taskCountBadge:pj,taskCountBadgeIcon:fj,taskCountBadgeButton:mj,taskCountBadgeActive:hj,taskCountBadgeAlert:gj,headerActions:yj,sortDirectionBtn:kj,sortDirectionBtnWidget:vj,form:wj,topRow:bj,field:Sj,labelRow:Aj,label:Cj,manageLink:_j,input:Ij,select:Tj,textarea:xj,taskIdInlineLink:Rj,readOnly:Pj,selectWithConfig:Ej,configBtn:Nj,configBtnActive:jj,hasPath:Mj,pathIndicator:Dj,formActions:Lj,hasCancel:Oj,submitBtn:Bj,cancelBtn:Wj,successMessage:$j,errorMessage:Fj,successIcon:Uj,spinner:zj,spin:Hj,boardRefreshIndicator:Vj,destructiveBtn:Gj,warningBtn:Kj,viewTab:qj,loading:Yj,emptyState:Zj,taskList:Jj,referenceBadge:Qj,referenceBadgeLabel:Xj,referenceBadgeStatic:e2,provisionalReferenceBadge:t2,copiedReference:r2,highlight:n2,modal:a2,priorityEmoji:s2,metaItem:o2,taskFormDateInput:i2,metaBadge:c2,complexityPill:l2,complexityDots:d2,dot:u2,dotFilled:p2,typePill:f2,type_bug:m2,type_feature:h2,type_chore:g2,type_refactor:y2,type_documentation:k2,type_research:v2,"type_ui-ux":"_type_ui-ux_eor56_870",type_security:w2,statusActionsGroup:b2,statusActionsGroupCompact:S2,statusSelectWrap:A2,statusTaxonomyDropdownWrap:C2,statusTaxonomyDropdown:_2,statusTaxonomyDropdownCompact:I2,statusTaxonomyDropdownIconOnly:T2,taxonomyDropdownButton:x2,taxonomyDropdownButtonContent:R2,statusTaxonomyDropdownIconOnlyPanel:P2,actionBtn:E2,startWorkBtn:N2,workingBtn:j2,pulse:M2,reviewBtn:D2,reviewActiveBtn:L2,reviewPill:O2,archiveTaskBtn:B2,bulkArchiveBtn:W2,bulkDeleteBtn:$2,deleteBtn:F2,completeBtn:U2,completeActiveBtn:z2,deleteActiveBtn:H2,disabledBtn:V2,archiveList:G2,archiveHeader:K2,settingsTab:q2,settingsTabMcpOnly:Y2,settingsTabs:Z2,settingsLayout:J2,settingsLayoutMcpOnly:Q2,settingsSidebar:X2,settingsSidebarHeader:eM,settingsSidebarNav:tM,settingsSidebarBtn:rM,settingsSidebarBtnActive:nM,settingsSidebarGroup:aM,settingsSidebarGroupBtn:sM,settingsSidebarGroupLabel:oM,settingsSidebarGroupChevron:iM,settingsSidebarSubnav:cM,settingsSidebarSubBtn:lM,appScrollbar:dM,settingsTabBtn:uM,settingsTabBtnActive:pM,settingsContent:fM,mcpRegistrationHint:mM,mcpRegistrationPrompt:hM,mcpCodexTrustNote:gM,mcpCodexTrustHeader:yM,mcpCodexTrustTitle:kM,mcpCodexTrustCode:vM,mcpAuthRequiredCard:wM,mcpAuthRequiredIcon:bM,mcpAuthRequiredBody:SM,mcpAuthRequiredActions:AM,settingsToast:CM,settingsToastSuccess:_M,settingsToastError:IM,inputWithPrefix:TM,pathHint:xM,settingGroup:RM,settingTitle:PM,settingTitleRow:EM,settingTitleActionBtn:NM,themeOptions:jM,buttonGrid:MM,themeBtn:DM,activeTheme:LM,pathInputGroup:OM,saveSettingsBtn:BM,shortcutInputWrapper:WM,inputIcon:$M,settingHelper:FM,browseBtn:UM,inlineCategoryManager:zM,categoryManager:HM,categoryList:VM,categoryChip:GM,categoryChipLabel:KM,chipActionBtn:qM,removeCategoryBtn:YM,addCategoryForm:ZM,addCategoryBtn:JM,filesList:QM,helpLink:XM,taskChildrenSummaryBadges:eD,taskChildrenProgressBar:tD,taskChildrenProgressBarSegmentDone:rD,taskChildrenProgressBarSegmentReview:nD,taskChildrenProgressBarSegmentInProgress:aD,taskChildrenProgressBarSegmentBlocked:sD,taskChildrenProgressText:oD,taskChildUnlinkBtn:iD,aboutText:cD,versionInfo:lD,filterBar:dD,kanbanHintText:uD,searchContainer:pD,searchIcon:fD,searchInput:mD,searchActive:hD,searchCount:gD,clearSearchBtn:yD,filterRow:kD,sortLabel:vD,archiveToggle:wD,filterContainer:bD,filterButton:SD,filterActive:AD,filterDropdown:CD,filterSearch:_D,filterSearchIcon:ID,filterSearchInput:TD,filterEmpty:xD,filterOption:RD,filterDivider:PD,filterSelect:ED,filterToggleBtn:ND,inProgressToggle:jD,activeInProgress:MD,activeFilter:DD,resetFiltersBtn:LD,categoryChip_disabled:OD,categoryVisibilityToggle:BD,editCategoryInput:WD,categoryChipActionBtn:$D,categoryChipActionBtn_active:FD,categoryGroup:UD,categoryHeader:zD,categoryTitle:HD,categoryCount:VD,categoryItems:GD,selectPriority_low:KD,selectPriority_medium:qD,selectPriority_high:YD,selectPriority_critical:ZD,"critical-glow":"_critical-glow_eor56_1",levelSelect:JD,levelOption:QD,levelOptionFilled:XD,levelOption_priority_low:eL,levelOption_priority_medium:tL,levelOption_priority_high:rL,levelOption_priority_critical:nL,levelOption_complexity_tiny:aL,levelOption_complexity_low:sL,levelOption_complexity_medium:oL,levelOption_complexity_high:iL,levelOption_complexity_epic:cL,levelOptionActive:lL,levelOptionSelected:dL,levelLabel:uL,levelLabelFadeIn:pL,closeConfigBtn:fL,configItem:mL,settingsLabel:hL,settingsHint:gL,pathList:yL,pathChip:kL,pathValid:vL,pathInvalid:wL,pathValidIcon:bL,pathInvalidIcon:SL,pathText:AL,removePathBtn:CL,pathCount:_L,specialistSection:IL,toggleHeading:TL,dropdownList:xL,specialistBadge:RL,iconGrid:PL,iconPickerBtn:EL,iconPickerBtnActive:NL,categorySubConfig:jL,colorPickerRow:ML,colorPickerGrid:DL,colorSwatch:LL,colorSwatchActive:OL,categoryChipIcon:BL,fieldIconWrapper:WL,fieldIcon:$L,field_dynamic:FL,fieldIcon_dynamic:UL,categoryTitleIcon:zL,editActionsGroup:HL,stickyActionHeader:VL,taskNoticeAnchor:GL,taskHierarchyHeader:KL,taskHierarchyBadgeRow:qL,taskHierarchyDivider:YL,taskHierarchySegment:ZL,taskHierarchyMeta:JL,taskHierarchyActionBtn:QL,taskWorkstreamPicker:XL,taskWorkstreamPickerIcon:eO,taskWorkstreamPickerPanel:tO,taskWorkstreamPickerOption:rO,taskSaveStatus:nO,taskSaveStatusCenter:aO,taskSaveStatusError:sO,primaryUpdateBtn:oO,secondaryHeaderBtn:iO,secondaryHeaderBtnDestructive:cO,attachmentCaptureContainer:lO,capturePrompt:dO,previewContainer:uO,previewHeader:pO,attachmentCapturePreview:fO,actions:mO,primaryButton:hO,secondaryButton:gO,iconButton:yO,attachmentGrid:kO,attachmentCard:vO,attachmentPreviewContainer:wO,attachmentPreviewButton:bO,contextFileLink:SO,attachmentActions:AO,attachmentActionBtn:CO,attachmentCaptionInput:_O,documentAttachmentCaptionInput:IO,hiddenInput:TO,contextMenuControl:xO,contextMenu:RO,contextAddMenu:PO,contextActionsMenu:EO,contextDestructiveMenuItem:NO,contextContent:jO,contextContentDropActive:MO,contextDropOverlay:DO,contextLinkComposer:LO,contextEmptyState:OO,contextGroupLabel:BO,contextNotice:WO,contextCaptionEditor:$O,attachmentCaptionLabel:FO,documentAttachmentList:UO,documentAttachmentItem:zO,documentAttachmentRow:HO,documentAttachmentLink:VO,documentAttachmentMain:GO,documentAttachmentReference:KO,documentAttachmentName:qO,documentAttachmentType:YO,documentAttachmentTypeOutline:ZO,documentAttachmentTypeFoldFill:JO,documentAttachmentTypeFoldLine:QO,documentAttachmentTypeLabel:XO,brokenImage:eB,brokenImagePlaceholder:tB,regionOverlay:rB,selectionBox:nB,exportRow:aB,exportItem:sB,taxonomyDrillDown:oB,drillDownList:iB,drillDownSection:cB,drillDownSectionHeader:lB,drillDownSectionTitle:dB,drillDownItem:uB,drillDownItemDimmed:pB,drillDownItemActive:fB,drillDownItemInfo:mB,drillDownItemText:hB,drillDownItemLabel:gB,drillDownItemSubtext:yB,addTaxonomyBtnSmall:kB,taxonomyDetailView:vB,slideIn:wB,detailHeader:bB,detailTitle:SB,detailContent:AB,createOverlay:CB,createDialog:_B,zoomIn:IB,dialogActions:TB,settingsGroup:xB,settingsItem:RB,mcpHealthCompactAlert:PB,mcpHealthUpdateRow:EB,mcpHealthBlockingAlert:NB,mcpHealthUpdateIcon:jB,mcpHealthCompactBody:MB,mcpHealthCompactActions:DB,mcpHealthStableAction:LB,mcpUpdateDialog:OB,mcpUpdateDialogIntro:BB,mcpUpdateRestartGuidance:WB,mcpUpdateVersionGrid:$B,mcpUpdateDiagnostics:FB,mcpUpdateLoading:UB,mcpUpdateNotice:zB,mcpUpdateCommands:HB,mcpUpdateSectionLabel:VB,mcpHealthCommandRow:GB,mcpHealthCommand:KB,mcpUpdateDialogActions:qB,mcpHealthCopyError:YB,settingLabelGroup:ZB,settingLabel:JB,settingDescription:QB,settingInput:XB,codeBlockWrapper:e5,codeHeader:t5,codeHeaderActions:r5,codeLabel:n5,codeHeaderDescription:a5,mcpTokenCardBody:s5,mcpTokenFormGrid:o5,mcpTokenOutputWrap:i5,mcpTokenValueField:c5,mcpTokenValueText:l5,mcpTokenValueInput:d5,mcpTokenActionRow:u5,settingsCodeBlock:p5,copyBtn:f5,copyBtnActive:m5,copyBtnNeutralActive:h5,headerDivider:g5,groupByContainer:y5,groupByLabel:k5,groupBySelect:v5,viewSwitcher:w5,selectWithIcon:b5,marginBottom16:S5,headerDraggable:A5,headerDragging:C5,filterSelectSort:_5,archiveRow:I5,taskScopeToggle:T5,taskScopeTabs:x5,taskScopeTab:R5,taskScopeTabActive:P5,taskToolbarAction:E5,overlayHighZ:N5,savedText:j5,shortcutInput:M5,saveSettingsBtnWrapper:D5,marginBottom12:L5,exportRowGrid:O5,settingSubtitleCustom:B5,capitalize:W5,marginTop12:$5,marginTop16:F5,labelGroupFlex:U5,codeBlockWrapperCustom:z5,kanbanWrapper:H5,kanbanContainer:V5,kanbanTopScroll:G5,kanbanTopScrollSpacer:K5,kanbanColumn:q5,kanbanColumnSticky:Y5,kanbanColumnCollapsed:Z5,kanbanColumnPast:J5,kanbanColumnSelectedDay:Q5,kanbanHeader:X5,kanbanCount:eW,kanbanHeaderDraggable:tW,kanbanHeaderPanning:rW,kanbanQuickAdd:nW,kanbanColorDot:aW,kanbanDroppable:sW,kanbanDroppableScroll:oW,kanbanEmpty:iW,kanbanCard:cW,kanbanCardWrapper:lW,taxonomyDropdownActive:dW,kanbanCardWrapperRaised:uW,kanbanCardTitle:pW,kanbanBadges:fW,kanbanBadge:mW,headerFlex:hW,marginBottom8:gW,marginBottom20:yW,configPanel:kW,configPanelLarge:vW,subLabelBlock:wW,subLabelBlock12:bW,flexBetween:SW,flexBetweenCenter:AW,deleteBtnSmall:CW,deleteBtnMedium:_W,trashIcon:IW,gridConfig:TW,flexColGap4:xW,flexColGap4Center:RW,flex1:PW,flexCol:EW,flexGrow1:NW,inputLabel:jW,inputLabelBlock:MW,checkboxInput:DW,configDividerMargin:LW,configDividerMargin24:OW,pathListMargin:BW,cancelBtnRed:WW,code:$W,workflowList:FW,workflowActions:UW,textBtn:zW,workflowGrid:HW,checkboxLabel:VW,checkboxSmall:GW,docWorkspace:KW,docIndexPanel:qW,docWorkspaceTrayMode:YW,docViewerPanel:ZW,docWorkspaceTrayOpen:JW,docTrayPanel:QW,docTrayPanelOpen:XW,docSpinning:e6,docSpin:t6,docViewerEmpty:r6,agentsModuleRoot:n6,agentsModuleWithTray:a6,agentsModuleTrayOpen:s6,agentTrayPanel:o6,agentTrayPanelOpen:i6,agentTrayHeader:c6,agentTrayTitle:l6,agentTrayContent:d6,agentTrayContentInner:u6,agentsModuleContent:p6,taskforceAgentsModuleRoot:f6,taskforceAgentsModuleMain:m6,taskforceAgentsModuleTrayOpen:h6,taskforceAgentRosterHeader:g6,taskforceAgentRosterTitle:y6,taskforceAgentRosterContent:k6,taskforceAgentLibraryPortal:v6,taskforceAgentBuilderNavigation:w6,taskforceAgentBuilderTabs:b6,taskforceAgentBuilderCreateBtn:S6,taskforceAgentBuilderTab:A6,taskforceAgentBuilderTabActive:C6,taskforceAgentBuilderPanel:_6,taskforceAgentBuilderEmpty:I6,taskforceAgentBuilderEmptyIcon:T6,taskforceAgentTestGrid:x6,taskforceAgentContextBanner:R6,taskforceAgentContextActions:P6,taskforceAssistantWorkspace:E6,taskforceAssistantWorkspaceContent:N6,taskforceAssistantWorkspaceOpen:j6,taskforceAssistantWorkspaceCollapsed:M6,taskforceModalWithAssistantPanel:D6,taskforceModalWithAssistantPanelCollapsed:L6,taskforceTaskModalOverlay:O6,taskforceAgentDrawerOverlay:B6,taskforceAgentDrawerOverlayCollapsed:W6,taskforceAgentDrawerPanel:$6,taskforceAgentDrawerHeader:F6,taskforceAgentDrawerAgentHeader:U6,taskforceAgentDrawerHeaderFallback:z6,taskforceAgentDrawerAgentAvatar:H6,taskforceAgentDrawerFallbackAvatar:V6,taskforceAgentDrawerAgentAvatarButton:G6,taskforceAgentDrawerAgentPicker:K6,taskforceAgentDrawerHeaderActions:q6,taskforceAgentDrawerLoading:Y6,taskforceAgentDrawerSurface:Z6,taskforceAgentDrawerControls:J6,taskforceAgentProfileTray:Q6,taskforceAgentProfileTrayIn:X6,taskforceAgentProfileTrayHeader:e$,taskforceAgentProfileTrayIdentity:t$,taskforceAgentProfileTrayDetails:r$,taskforceAgentDrawerChatControls:n$,taskforceAgentConversationRename:a$,taskforceAgentConversationRenameError:s$,taskforceAgentDrawerConversationList:o$,taskforceAgentDrawerPrompt:i$,taskforceAgentDrawerPromptStatus:c$,taskforceAgentDrawerMetrics:l$,taskforceAgentOutputStack:d$,taskforceAgentOutputPanel:u$,taskforceAgentTestTitle:p$,taskforceAgentTestNotice:f$,taskforceAgentTestError:m$,taskforceAgentTestPending:h$,taskforceAgentTestActions:g$,taskforceAgentTestRestriction:y$,taskforceAgentTestResult:k$,taskforceAgentTestResultHeader:v$,taskforceAgentTestResponse:w$,taskforceAgentReadonlyField:b$,taskforceAgentAvatarPanel:S$,taskforceAgentAvatarEditControl:A$,taskforceAgentAvatarPreview:C$,taskforceAgentListAvatar:_$,taskforceAgentAvatarSyncing:I$,taskforceAgentAvatarSyncIcon:T$,taskforceAgentAvatarCopy:x$,taskforceAgentAvatarRole:R$,taskforceAgentToolbar:P$,taskforceAgentConversationSelect:E$,taskforceAgentList:N$,taskforceAgentListEmpty:j$,taskforceAgentSignatureColorField:M$,aiProfileColorPicker:D$,taskforceAgentBehaviorGrid:L$,taskforceAgentBehaviorWide:O$,taskforceAgentFieldHelper:B$,taskforceAgentPresentationGroup:W$,taskforceAgentLogList:$$,taskforceAgentLogEntry:F$,taskforceAgentToolDetails:U$,taskforceAgentToolActivity:z$,taskforceAgentToolActivityList:H$,taskforceAgentToolCall:V$,taskforceAgentToolCallFailed:G$,taskforceAgentToolCallName:K$,taskforceAgentToolCallStatus:q$,taskforceAgentToolDetailsGrid:Y$,taskforceAgentLogSuccess:Z$,taskforceAgentLogError:J$,taskforceAgentLogTime:Q$,taskforceAgentConversationList:X$,taskforceAgentConversationBody:e3,taskforceAgentConversationMessage:t3,taskforceAgentConversationEmpty:r3,taskforceAgentConversationMessageUser:n3,taskforceAgentConversationMessageAssistant:a3,taskforceAgentMetaGrid:s3,marginTop24:o3,settingSubTitle:i3,dangerBtn:c3,aiProfilesExplorer:l3,aiProfilesRosterPanel:d3,aiProfilesRosterSummary:u3,aiProfileSeatSummary:p3,aiProfilesRosterState:f3,aiProfilesListPane:m3,aiProfilesList:h3,aiProfilesDetailViewport:g3,aiProfilesSection:y3,aiProfilesSectionHeader:k3,aiProfileGroup:v3,aiProfileGroupSelected:w3,aiProfileGroupDuplicate:b3,aiProfileGroupHeader:S3,aiProfileGroupAvatar:A3,aiProfileGroupAvatarLogo:C3,aiProfileGroupIdentity:_3,aiProfileName:I3,aiProfileHandle:T3,aiProfileRole:x3,aiProfileSeatScopeIcon:R3,aiProfileGroupSignatureSwatch:P3,aiProfileSeatScopeIconDetail:E3,aiProfileSeatScopeIconCloud:N3,aiProfileSeatScopeIconLocal:j3,aiProfileDuplicateBadge:M3,aiProfileMergeSection:D3,aiProfileMergeRow:L3,aiProfileIdChip:O3,aiProfileKeepBadge:B3,aiProfileMergeActions:W3,aiProfileDetailPane:$3,aiProfileDetailCard:F3,aiProfileDetailHero:U3,aiProfileDetailIcon:z3,aiProfileDetailAvatar:H3,aiProfileDetailAvatarLogo:V3,aiProfileDetailHeading:G3,aiProfileDetailTitleRow:K3,aiProfileDetailTitle:q3,aiProfileDetailMetaRow:Y3,aiProfileDetailHandle:Z3,aiProfileDetailRole:J3,aiProfileDetailLinkedCount:Q3,aiProfileDetailDescription:X3,aiProfileSignatureColor:eF,aiProfileSignatureSwatch:tF,aiProfileSignatureColorButton:rF,aiProfileColorOption:nF,aiProfileDetailDataList:aF,aiProfileDetailDataGroup:sF,aiProfileDetailDateGroup:oF,aiProfileDetailDataRow:iF,aiProfileDetailDataLabel:cF,aiProfileDetailDataValue:lF,aiProfileStatusSelect:dF,aiProfileInstanceSection:uF,aiProfileInstanceSectionHeader:pF,aiProfileInstanceList:fF,aiProfileInstanceCard:mF,aiProfileIdFooter:hF,aiProfileIdFooterValue:gF,aiProfileDangerTextButton:yF,aiProfileInstanceTopRow:kF,aiProfileInstanceName:vF,aiProfileInstanceMeta:wF,aiProfileInlineError:bF},SF="_standaloneWrapper_128c3_1",AF="_standalonePage_128c3_11",CF="_standaloneHeader_128c3_21",_F="_standaloneTitle_128c3_27",IF="_standaloneContent_128c3_31",TF="_workspaceToolRail_128c3_37",xF="_workspaceToolRailLeft_128c3_48",RF="_workspaceToolRailRight_128c3_57",PF="_workspaceToolRailMain_128c3_64",EF="_workspaceToolRailBottom_128c3_72",NF="_workspaceToolRailDivider_128c3_82",jF="_workspaceToolButton_128c3_89",MF="_headerTitleWidget_128c3_124",zr={standaloneWrapper:SF,standalonePage:AF,standaloneHeader:CF,standaloneTitle:_F,standaloneContent:IF,workspaceToolRail:TF,workspaceToolRailLeft:xF,workspaceToolRailRight:RF,workspaceToolRailMain:PF,workspaceToolRailBottom:EF,workspaceToolRailDivider:NF,workspaceToolButton:jF,headerTitleWidget:MF},DF="_overlay_11v7l_1",LF="_browser_11v7l_16",OF="_header_11v7l_27",BF="_pathInfo_11v7l_36",WF="_actions_11v7l_52",$F="_list_11v7l_57",FF="_item_11v7l_63",UF="_itemCurrent_11v7l_80",zF="_itemFile_11v7l_86",HF="_empty_11v7l_90",In={overlay:DF,browser:LF,header:OF,pathInfo:BF,actions:WF,list:$F,item:FF,itemCurrent:UF,itemFile:zF,empty:HF},VF="_overlay_1hk7m_2",GF="_overlayHighZ_1hk7m_15",KF="_modal_1hk7m_20",qF="_draggableModal_1hk7m_46",YF="_draggableHeader_1hk7m_53",ZF="_headerActions_1hk7m_61",JF="_modalContent_1hk7m_69",QF="_form_1hk7m_80",XF="_formActions_1hk7m_91",e4="_modalFooter_1hk7m_98",t4="_modalSizeSm_1hk7m_104",r4="_modalSizeMd_1hk7m_108",n4="_modalSizeMdWide_1hk7m_112",a4="_modalSizeLg_1hk7m_116",s4="_modalSizeXl_1hk7m_120",o4="_modalSizeFull_1hk7m_124",i4="_settingsViewModal_1hk7m_129",c4="_unsavedOverlay_1hk7m_148",l4="_unsavedModal_1hk7m_153",d4="_unsavedHeader_1hk7m_159",u4="_unsavedTitle_1hk7m_164",p4="_unsavedContent_1hk7m_168",f4="_unsavedText_1hk7m_172",m4="_unsavedActions_1hk7m_177",Jt={overlay:VF,overlayHighZ:GF,modal:KF,draggableModal:qF,draggableHeader:YF,headerActions:ZF,modalContent:JF,form:QF,formActions:XF,modalFooter:e4,modalSizeSm:t4,modalSizeMd:r4,modalSizeMdWide:n4,modalSizeLg:a4,modalSizeXl:s4,modalSizeFull:o4,settingsViewModal:i4,unsavedOverlay:c4,unsavedModal:l4,unsavedHeader:d4,unsavedTitle:u4,unsavedContent:p4,unsavedText:f4,unsavedActions:m4},h4=90;function BC(e){const t=Date.parse(String(e||"").trim());return Number.isFinite(t)?new Date(t+h4*24*60*60*1e3).toISOString():null}function WC(e,t){const r=o.useRef(t);o.useLayoutEffect(()=>{r.current=t},[t]);const a=o.useMemo(()=>y0(e),[e]),s=o.useMemo(()=>a,[a.revision]);return o.useMemo(()=>({resolve:s.resolve,activate:i=>r.current(i)}),[s])}function $C(e,t,r){const[a,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=>a.has(h.id)),[l,a]),f=o.useCallback((h,y)=>{s(k=>{const v=new Set(k);return y?v.add(h):v.delete(h),v})},[]),p=o.useCallback(()=>{s(new Set(l.map(h=>h.id)))},[l]),g=o.useCallback(()=>s(new Set),[]);return{selectedIds:a,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 $k="taskforce:preview-context-attachment";function Ef(e,t){const r=new CustomEvent($k,{detail:{attachment:e,...t},cancelable:!0});return!window.dispatchEvent(r)}async function FC(e,t){const r=t.fetcher||fetch,a=new URLSearchParams({workspaceId:t.workspaceId});if(e.kind==="image"){const c=await r(`/api/taskforce/annotated-attachments/images/${encodeURIComponent(e.token)}?${a.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?${a.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 fi={workspaceId:"workspaceId",task:"task",activity:"activity",comment:"comment",initiative:"initiative",workstream:"workstream",image:"image",document:"document"};function g4(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 y4(e){const t=g4(e.applicationBaseUrl),r=String(e.workspaceId).trim(),a=String(e.id||"").trim();if(!t||!r||!a)return null;const s=new URL("/",t);s.searchParams.set(fi.workspaceId,r),s.searchParams.set(fi[e.target],a);const i=String(e.activityId||"").trim();return e.target==="task"&&i&&s.searchParams.set(fi.activity,i),s.toString()}function k4(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 Gl({label:e,options:t,selected:r,onChange:a,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),v=o.useRef(null),C=o.useRef(null),S=c&&h.trim()?t.filter(E=>E.label.toLocaleLowerCase().includes(h.trim().toLocaleLowerCase())):t;o.useEffect(()=>{const E=K=>{k.current&&!k.current.contains(K.target)&&g(!1)};return document.addEventListener("mousedown",E),()=>document.removeEventListener("mousedown",E)},[]),o.useEffect(()=>{p&&c&&C.current?.focus()},[p,c]);const w=E=>{r.includes(E)?a(r.filter(K=>K!==E)):a([...r,E])},_=t.length>0&&t.every(E=>{const K=s==="label"?E.label:E.value;return r.includes(K)}),M=!t.some(E=>{const K=s==="label"?E.label:E.value;return r.includes(K)}),R=()=>{a(_?[]:t.map(E=>s==="label"?E.label:E.value))},P=t.filter(E=>{const K=s==="label"?E.label:E.value;return r.includes(K)}).length,b=k4(e),$=_?`All ${b}`:M?`No ${b}`:P===1?`1 ${e}`:`${P} ${b}`,I=()=>{y(""),g(E=>!E)};return n.jsxs("div",{className:x.filterContainer,ref:k,style:i,children:[n.jsxs("button",{ref:v,type:"button",className:`${x.filterButton} ${_?"":x.filterActive}`,onClick:I,title:`Filter by ${e}`,"aria-expanded":p,children:[n.jsx("span",{children:$}),n.jsx(dd,{size:14,style:{transform:p?"rotate(180deg)":"none",transition:"transform 0.2s",opacity:.5}})]}),p&&n.jsxs("div",{className:`${x.filterDropdown} ${x.appScrollbar} tf-scrollbar`,onKeyDown:E=>{E.key==="Escape"&&(E.preventDefault(),g(!1),v.current?.focus())},children:[c?n.jsxs("div",{className:x.filterSearch,children:[n.jsx(lg,{size:14,className:x.filterSearchIcon,"aria-hidden":"true"}),n.jsx("input",{ref:C,type:"search",role:"searchbox",className:`tf-field-shell ${x.filterSearchInput}`,value:h,placeholder:d,"aria-label":d,onChange:E=>y(E.target.value)})]}):null,n.jsxs("label",{className:x.filterOption,children:[n.jsx("input",{type:"checkbox",checked:_,onChange:R}),n.jsx("span",{style:{fontWeight:600},children:"Toggle All"})]}),n.jsx("div",{className:x.filterDivider}),S.map(E=>{const K=s==="label"?E.label:E.value,U=r.includes(K);return n.jsxs("label",{className:x.filterOption,children:[n.jsx("input",{type:"checkbox",checked:U,onChange:()=>w(K)}),l?l(E):n.jsx("span",{children:E.label})]},E.value)}),S.length===0?n.jsx("div",{className:x.filterEmpty,role:"status",children:f}):null]})]})}const v4="_taskItem_127l4_1",w4="_compressed_127l4_25",b4="_taskHeader_127l4_30",S4="_taskReferenceCluster_127l4_35",A4="_taskMeta_127l4_39",C4="_taskTitle_127l4_45",_4="_taskItemRecentlyChanged_127l4_75",I4="_assigneeAvatarShared_127l4_115",T4="_assigneePicker_127l4_128",x4="_inProgress_127l4_188",R4="_onHold_127l4_189",P4="_readyForReview_127l4_190",E4="_completed_127l4_191",N4="_cancelled_127l4_204",j4="_readOnly_127l4_215",M4="_archived_127l4_224",D4="_taskContent_127l4_234",L4="_kanbanCardOverlay_127l4_243",O4="_deletedExpiry_127l4_264",B4="_taskReferenceDivider_127l4_289",W4="_taskReferenceSegment_127l4_296",$4="_taskActions_127l4_303",F4="_taskMetaCompact_127l4_328",U4="_taskMetaRow_127l4_335",z4="_taskMetaBadgeGroup_127l4_345",H4="_taskMetaIdentityGroup_127l4_358",V4="_taskDescription_127l4_366",G4="_taskLatestComment_127l4_375",K4="_taskLatestCommentHeader_127l4_389",q4="_taskCommentCount_127l4_406",Y4="_taskLatestCommentText_127l4_416",Z4="_taskMetaCategory_127l4_426",J4="_taskMetaType_127l4_432",Q4="_taskMetaPriority_127l4_438",X4="_taskComplexityLabel_127l4_442",eU="_taskCancellationReason_127l4_447",tU="_archiveBadge_127l4_600",rU="_attachmentThumbnails_127l4_605",nU="_attachmentImageRow_127l4_612",aU="_attachmentDocumentList_127l4_619",sU="_attachmentThumbnail_127l4_605",oU="_contextDocThumb_127l4_654",iU="_contextDocMain_127l4_680",cU="_contextDocText_127l4_687",lU="_contextDocIcon_127l4_695",dU="_contextDocName_127l4_706",uU="_contextDocType_127l4_716",pU="_taskSpecialists_127l4_728",fU="_taxonomiesList_127l4_737",mU="_selected_127l4_798",hU="_selectionControl_127l4_803",ar={taskItem:v4,compressed:w4,taskHeader:b4,taskReferenceCluster:S4,taskMeta:A4,taskTitle:C4,taskItemRecentlyChanged:_4,assigneeAvatarShared:I4,assigneePicker:T4,inProgress:x4,onHold:R4,readyForReview:P4,completed:E4,cancelled:N4,readOnly:j4,archived:M4,taskContent:D4,kanbanCardOverlay:L4,deletedExpiry:O4,taskReferenceDivider:B4,taskReferenceSegment:W4,taskActions:$4,taskMetaCompact:F4,taskMetaRow:U4,taskMetaBadgeGroup:z4,taskMetaIdentityGroup:H4,taskDescription:V4,taskLatestComment:G4,taskLatestCommentHeader:K4,taskCommentCount:q4,taskLatestCommentText:Y4,taskMetaCategory:Z4,taskMetaType:J4,taskMetaPriority:Q4,taskComplexityLabel:X4,taskCancellationReason:eU,archiveBadge:tU,attachmentThumbnails:rU,attachmentImageRow:nU,attachmentDocumentList:aU,attachmentThumbnail:sU,contextDocThumb:oU,contextDocMain:iU,contextDocText:cU,contextDocIcon:lU,contextDocName:dU,contextDocType:uU,taskSpecialists:pU,taxonomiesList:fU,selected:mU,selectionControl:hU};function gU(e){return function(t){return zT(t,e)}}const yU="I-",kU=new RegExp("(?<![\\w-])(I-\\d+)(?![\\w-])","gi");function Nf(e){return Of(yU,e)}const vU="_prose_1rd59_1",wU="_taskReference_1rd59_56",bU="_tableScroll_1rd59_72",SU="_blockScroll_1rd59_99",AU="_compactCodePreview_1rd59_115",CU="_taskList_1rd59_194",_U="_taskListItem_1rd59_198",IU="_taskCheckbox_1rd59_202",TU="_compact_1rd59_115",xU="_compactHeading_1rd59_231",RU="_codeLanguage_1rd59_262",PU="_contentIndicator_1rd59_271",EU="_detail_1rd59_277",NU="_conversation_1rd59_300",jU="_conversationHeading_1rd59_313",MU="_document_1rd59_321",Ga={prose:vU,taskReference:wU,tableScroll:bU,blockScroll:SU,compactCodePreview:AU,taskList:CU,taskListItem:_U,taskCheckbox:IU,compact:TU,compactHeading:xU,codeLanguage:RU,contentIndicator:PU,detail:EU,conversation:NU,conversationHeading:jU,document:MU};function DU(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 Yb(e){return/^(?:https?:)?\/\//i.test(String(e||""))}function LU(e){return String(e||"").match(/(?:^|\s)language-([\w-]+)/)?.[1]||""}const OU=({children:e,variant:t,className:r,taskReferences:a,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=(C,S,w,_)=>{const M=Array.from(C.matchAll(S));if(!M.length)return[C];const R=[];let P=0;return M.forEach((b,$)=>{const I=b[1],E=b.index??-1;if(E<P)return;E>P&&R.push(C.slice(P,E));const K=w(I);R.push(K?_(K,I,`${I}-${E}-${$}`):I),P=E+I.length}),P<C.length&&R.push(C.slice(P)),R};let v=[g];if(a&&(v=v.flatMap(C=>typeof C=="string"?k(C,h0,a.resolve,(S,w,_)=>n.jsx("button",{type:"button",className:Ga.taskReference,onClick:M=>{M.preventDefault(),M.stopPropagation(),a.activate(S)},children:w},`task-${_}`)):[C])),s&&(v=v.flatMap(C=>typeof C=="string"?k(C,kU,s.resolve,(S,w,_)=>n.jsx("button",{type:"button",className:Ga.taskReference,onClick:M=>{M.preventDefault(),M.stopPropagation(),s.activate(S)},children:w},`image-${_}`)):[C])),a?.entityReferences){const C=a.entityReferences;v=v.flatMap(S=>typeof S=="string"?k(S,u0,C.resolve,(w,_,M)=>n.jsx("button",{type:"button",className:Ga.taskReference,title:`Open ${w.kind} ${w.token}`,onClick:R=>{R.preventDefault(),R.stopPropagation(),C.activate(w)},children:_},`entity-${M}`)):[S])}return v.length===1?v[0]:v}if(Array.isArray(g))return g.map(l);if(!Q.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:Q.cloneElement(g,void 0,Q.Children.map(h.children,l))},c=(g,h)=>{const y=l(h);return t==="compact"?n.jsx("div",{className:Ga.compactHeading,children:y}):t==="conversation"?n.jsx("h3",{className:Ga.conversationHeading,children:y}):Q.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})=>n.jsx("p",{children:l(g)}),ul:({children:g,className:h,node:y,...k})=>n.jsx("ul",{...k,className:`${h||""} ${String(h||"").includes("contains-task-list")?Ga.taskList:""}`.trim(),children:g}),ol:({children:g,className:h,node:y,...k})=>n.jsx("ol",{...k,className:`${h||""} ${String(h||"").includes("contains-task-list")?Ga.taskList:""}`.trim(),children:g}),li:({children:g,className:h,node:y,...k})=>{const v=String(h||"").includes("task-list-item");return n.jsx("li",{...k,className:`${h||""} ${v?Ga.taskListItem:""}`.trim(),children:l(g)})},input:({type:g,checked:h,node:y,...k})=>g!=="checkbox"?n.jsx("input",{type:g,checked:h,readOnly:!0,...k}):n.jsx("input",{...k,type:"checkbox",checked:!!h,readOnly:!0,className:Ga.taskCheckbox}),a:({href:g,children:h,node:y,...k})=>{if(!g)return n.jsx("span",{children:h});const v=Yb(g);return n.jsx("a",{...k,href:g,...v?{target:"_blank",rel:"noopener noreferrer"}:{},onClick:C=>C.stopPropagation(),children:h})},strong:({children:g})=>n.jsx("strong",{children:g}),em:({children:g})=>n.jsx("em",{children:g}),code:({children:g,className:h,node:y,...k})=>n.jsx("code",{className:h,...k,children:g}),pre:({children:g})=>{const h=Q.Children.toArray(g).find(Q.isValidElement),y=LU(h?.props.className);return t==="compact"?n.jsxs("div",{className:Ga.compactCodePreview,children:[y?n.jsx("span",{className:Ga.codeLanguage,children:y}):null,n.jsx("pre",{children:g})]}):n.jsx("div",{className:Ga.blockScroll,children:n.jsx("pre",{children:g})})},blockquote:({children:g})=>n.jsx("blockquote",{children:g}),table:({children:g,node:h,...y})=>t==="compact"?n.jsx("span",{className:Ga.contentIndicator,children:"[Table]"}):n.jsx("div",{className:Ga.tableScroll,role:"region","aria-label":"Scrollable table",tabIndex:0,children:n.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 n.jsx("span",{className:Ga.contentIndicator,children:k});const v=Yb(g);return n.jsx("a",{href:g,className:Ga.contentIndicator,...v?{target:"_blank",rel:"noopener noreferrer"}:{},onClick:C=>C.stopPropagation(),children:k})}return n.jsx("img",{src:g,alt:y})},hr:()=>t==="compact"?null:n.jsx("hr",{})},f=t==="document"&&i?{...d,...i}:d,p=t==="document"?[Uw]:[Uw,VT];return n.jsx("div",{className:`${Ga.prose} ${Ga[t]} ${r||""}`.trim(),"data-markdown-surface":t,children:n.jsx(HT,{skipHtml:!0,remarkPlugins:p,rehypePlugins:[gU],urlTransform:DU,components:f,children:e})})},Sg=Q.memo(OU);function Fv({label:e,title:t,ariaLabel:r,copied:a=!1,disabled:s=!1,className:i="",onClick:l,children:c}){return n.jsx("button",{type:"button",className:`${x.referenceBadge} ${a?x.copiedReference:""} ${i}`.trim(),onClick:l,disabled:s,title:t,"aria-label":r,children:n.jsx("span",{className:x.referenceBadgeLabel,children:c??e})})}function Su({copied:e,disabled:t=!1,label:r,onClick:a,title:s="Copy task reference",ariaLabel:i,className:l="",provisional:c=!1}){return n.jsx(Fv,{copied:e,disabled:t,label:"",onClick:a,title:s,ariaLabel:i,className:`${c?x.provisionalReferenceBadge:""} ${l}`.trim(),children:r})}const BU=(e,t=10)=>{const r=Hh[e?.toLowerCase()]||{icon:"FileCode"},a=To[r.icon]||uT;return n.jsx(a,{size:t})},ch=(e,t)=>{if(!e)return null;const r=t.trim();if(!r)return e;const s=wg(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 n.jsx(n.Fragment,{children:c.map((d,f)=>l.test(d)?n.jsx("mark",{className:x.highlight,children:d},f):d)})};function jf(e){return e.trim().replace(/\\/g,"/")}function UC(e){return e.split("?")[0].split("#")[0]}function Ag(e){return typeof e=="string"?e:String(e.path||"").trim()}function zC(e){const r=UC(jf(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 HC(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?jf(r):null}catch{return null}}function WU(e,t){const r=(t||(typeof e=="string"?"":e.fsPath||"")).trim();if(r)return jf(r);const a=Ag(e),s=HC(a);return s?jf(s):null}function $U(e,t){const r=String(typeof e=="string"?"":e.assetId||"").trim();if(r)return r;const a=Ag(e);return zC(a)}function VC(e,t){const r=Ag(e);return zC(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(),HC(r)||"",r].some(s=>{if(!s)return!1;const i=UC(jf(s)).toLowerCase();return i.endsWith(".md")||i.endsWith(".markdown")})}function GC(e,t){const r=Ag(e),a=WU(e,t);if(!a||!VC(e,a))return!1;const s=$U(e),i=new CustomEvent("taskforce:open-markdown-document",{detail:{path:r,fsPath:a,...s?{assetId:s}:{},...typeof e!="string"&&e.taskId?{taskId:e.taskId}:{}},cancelable:!0});return!window.dispatchEvent(i)}function KC(e,t){return e?JSON.stringify([String(e.taskId||"").trim(),String(e.assetId||"").trim(),String(t||"").trim()]):""}function FU(e){const t=KC(e.currentTarget,e.currentSessionId);return!t||t===e.lastHydratedIdentity}function UU(e){return e.trim().replace(/\\/g,"/")}function qC(e){return typeof e=="string"?e:String(e.path||"").trim()}function zU(e){return/\.(png|jpe?g|webp|gif)(\?|#|$)/i.test(e)}function HU(e){return typeof e=="string"?UU(e).split("/").pop()||"Image attachment":String(e.caption||e.displayName||e.originalFilename||e.fsPath||e.path.split("/").pop()||"Image attachment").trim()}function YC(e,t){if(typeof e=="string")return!1;const r=String(e.assetId||"").trim(),a=qC(e);return!!(r&&a&&zU(a))}function ZC(e,t){if(!YC(e))return!1;const r=e,a=String(t?.taskId||r.taskId||"").trim(),s=String(t?.taskReferenceLabel||"").trim(),i=String(r.assetId||"").trim(),l=Nf(r),c=String(t?.sessionId||"").trim(),d=qC(e),f=new CustomEvent("taskforce:open-annotated-attachment",{detail:{...a?{taskId:a}:{},...s?{taskReferenceLabel:s}:{},assetId:i,...l?{imageReferenceLabel:l}:{},...c?{sessionId:c}:{},path:d,displayName:HU(e)},cancelable:!0});return!window.dispatchEvent(f)}function Zb(e,t){if(!e)return null;const r=String(e.taskId||"").trim(),a=String(e.assetId||"").trim(),s=String(e.path||"").trim(),i=String(e.displayName||"").trim()||"Image attachment";if(!a||!s)return null;const l=String(e.taskReferenceLabel||"").trim(),c=r?t.find(f=>f.id===r):void 0,d=r?l||hs(c)||r:void 0;return{...r?{taskId:r}:{},...d?{taskReferenceLabel:d}:{},assetId:a,imageReferenceLabel:String(e.imageReferenceLabel||"").trim()||void 0,sessionId:String(e.sessionId||"").trim()||void 0,path:s,displayName:i}}function qh(e){const t=String(e||"").trim().replace(/\\/g,"/");if(!t)return"";const r=t.split("/").filter(Boolean);return r[r.length-1]||""}function Uv(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 JC(e,t){const r=String(e||"").trim(),a=String(t||"").trim();return r?a&&r.startsWith(`${a}-`)?r.slice(a.length+1):r.replace(/^asset-[a-z0-9-]+-/i,""):""}function VU(e){return String(e||"").replace(/-\d{13,}$/g,"").replace(/[_-]+/g," ").replace(/\s+/g," ").trim()}function Jb(e,t){const{stem:r,ext:a}=Uv(qh(e)),s=JC(r,t),i=VU(s||r);return i?`${i}${a}`:qh(e)||"Untitled document"}function Yy(e,t){const r=String(e||"").trim();if(!r)return!0;const a=qh(r),{stem:s}=Uv(a),i=String(t||"").trim();if(i&&s.toLowerCase()===i.toLowerCase())return!0;const l=JC(s,t);return l?l!==s:!0}function GU(e){const t=String(e.title||"").trim();if(t&&!Yy(t,e.assetId))return t;const r=String(e.logicalName||"").trim();if(r&&!Yy(r,e.assetId))return r;const a=String(e.displayName||"").trim();if(a&&!Yy(a,e.assetId))return a;const s=String(e.originalFilename||"").trim();if(s)return Jb(s,e.assetId);const i=String(e.fsPath||"").trim();return i?Jb(i,e.assetId):"Untitled document"}function KU(e){return GU(e)}function qU(e){const t=KU(e),r=String(e.originalFilename||e.fsPath||"").trim(),a=Uv(qh(r)).ext;return a?t.toLowerCase().endsWith(a.toLowerCase())?t:`${t}${a}`:t}const YU="_taxonomyDropdown_1k2p6_1",ZU="_taxonomyDropdownActive_1k2p6_6",JU="_taxonomyDropdownButton_1k2p6_11",QU="_taxonomyDropdownOpen_1k2p6_50",XU="_taxonomyDropdownButtonContent_1k2p6_56",ez="_taxonomyDropdownIcon_1k2p6_64",tz="_taxonomyDropdownLabel_1k2p6_72",rz="_taxonomyDropdownChevron_1k2p6_81",nz="_taxonomyDropdownChevronOpen_1k2p6_87",az="_taxonomyDropdownPanel_1k2p6_91",sz="_taxonomyDropdownOptions_1k2p6_111",oz="_taxonomyDropdownSearch_1k2p6_117",iz="_taxonomyDropdownSearchIcon_1k2p6_125",cz="_taxonomyDropdownSearchInput_1k2p6_134",lz="_taxonomyDropdownEmpty_1k2p6_148",dz="_taxonomyDropdownPanelPortal_1k2p6_155",uz="_taxonomyDropdownOption_1k2p6_111",pz="_taxonomyDropdownOptionHighlighted_1k2p6_205",fz="_taxonomyDropdownOptionSelected_1k2p6_211",ga={taxonomyDropdown:YU,taxonomyDropdownActive:ZU,taxonomyDropdownButton:JU,taxonomyDropdownOpen:QU,taxonomyDropdownButtonContent:XU,taxonomyDropdownIcon:ez,taxonomyDropdownLabel:tz,taxonomyDropdownChevron:rz,taxonomyDropdownChevronOpen:nz,taxonomyDropdownPanel:az,taxonomyDropdownOptions:sz,taxonomyDropdownSearch:oz,taxonomyDropdownSearchIcon:iz,taxonomyDropdownSearchInput:cz,taxonomyDropdownEmpty:lz,taxonomyDropdownPanelPortal:dz,taxonomyDropdownOption:uz,taxonomyDropdownOptionHighlighted:pz,taxonomyDropdownOptionSelected:fz};function Zy(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 qo({value:e,options:t,onChange:r,placeholder:a="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:v="end",renderOptionContent:C,triggerContent:S,optionLabelColor:w,searchable:_=!1,searchPlaceholder:M="Search options...",noResultsText:R="No matching options."}){const[P,b]=o.useState(!1),[$,I]=o.useState(-1),[E,K]=o.useState({}),[U,L]=o.useState(),[D,ie]=o.useState(""),H=o.useRef(null),be=o.useRef(null),Z=o.useRef(null),me=o.useRef(null),Ve=o.useRef([]),Re=o.useRef(null),je=`taxonomy-listbox-${Q.useId().replace(/:/g,"")}`,ye=t.find(fe=>String(fe.value)===String(e)),ue=Q.useMemo(()=>{const fe=D.trim().toLocaleLowerCase();return!_||!fe?t:t.filter(ke=>ke.label.toLocaleLowerCase().includes(fe))},[t,D,_]);o.useEffect(()=>{if(!P)return;const fe=ke=>{const Y=ke.target,we=!!H.current?.contains(Y),q=!!Z.current?.contains(Y);!we&&!q&&(b(!1),I(-1))};return document.addEventListener("mousedown",fe),()=>document.removeEventListener("mousedown",fe)},[P]),o.useEffect(()=>{if(!P)I(-1);else{const fe=ue.findIndex(ke=>String(ke.value)===String(e));I(fe>=0?fe:ue.length>0?0:-1)}},[P,e,ue]),o.useEffect(()=>{P&&_&&Re.current?.focus()},[P,_]),o.useEffect(()=>{!P||$<0||Ve.current[$]?.scrollIntoView?.({block:"nearest"})},[$,P]),o.useEffect(()=>{if(!P||!y)return;const fe=we=>{const q=be.current;if(!q)return;const le=q.getBoundingClientRect(),$e=8,re=window.innerWidth,de=window.innerHeight,He=Math.max(0,re-$e*2);(we||me.current===null)&&(me.current=Math.min(Math.max(k||0,le.width),He));const ce=Math.min(me.current,He),pe=v==="start"?le.left:le.right-ce,xe=Math.min(Math.max($e,pe),Math.max($e,re-ce-$e)),N=Math.max(0,de-le.bottom-$e),X=Math.max(0,le.top-$e),Ae=Math.min(Z.current?.scrollHeight||280,280),Te=N>=Ae||N>=X,he=Te?N:X;K({position:"fixed",top:Te?le.bottom:void 0,bottom:Te?void 0:de-le.top,left:xe,width:ce,minWidth:ce,maxWidth:He,maxHeight:Math.min(Ae,he),zIndex:2e3})},ke=we=>{const q=we.target;q instanceof Node&&Z.current?.contains(q)||fe(!1)},Y=()=>fe(!0);return me.current=null,fe(!0),window.addEventListener("resize",Y),window.addEventListener("scroll",ke,!0),()=>{window.removeEventListener("resize",Y),window.removeEventListener("scroll",ke,!0),me.current=null}},[P,v,y,k]);const ve=()=>{if(_&&ie(""),y){const fe=H.current?.closest("[data-theme]");L(fe?.dataset.theme)}b(!0)},Pe=()=>{if(!i){if(P){b(!1);return}ve()}},Le=fe=>{r(fe.value),ie(""),b(!1),be.current?.focus()},se=fe=>{if(i)return;const ke=fe.currentTarget===Re.current;switch(fe.key){case"Enter":if(fe.preventDefault(),!P)ve();else if($>=0){const Y=ue[$];Y&&Le(Y)}break;case" ":if(ke)return;if(fe.preventDefault(),!P)ve();else if($>=0){const Y=ue[$];Y&&Le(Y)}break;case"Escape":fe.preventDefault(),b(!1),be.current?.focus();break;case"ArrowDown":fe.preventDefault(),P?ue.length===0?I(-1):I(Y=>Y<ue.length-1?Y+1:0):ve();break;case"ArrowUp":fe.preventDefault(),P?ue.length===0?I(-1):I(Y=>Y>0?Y-1:ue.length-1):ve();break;case"Home":if(ke)return;fe.preventDefault(),P&&I(ue.length>0?0:-1);break;case"End":if(ke)return;fe.preventDefault(),P&&I(ue.length>0?ue.length-1:-1);break;case"Tab":b(!1);break}},V=(fe,ke)=>{const Y=fe.icon&&To[fe.icon]?To[fe.icon]:ad,we=fe.color?Jn(fe.color):"var(--text-secondary)",q=ke?.hideLabel===!0;return n.jsxs(n.Fragment,{children:[n.jsx("span",{className:`taxonomyDropdownIcon ${ga.taxonomyDropdownIcon}`,style:{color:we},children:n.jsx(Y,{size:16})}),!q&&n.jsx("span",{className:`taxonomyDropdownLabel ${ga.taxonomyDropdownLabel}`,style:ke?.labelColor?{color:ke.labelColor}:void 0,children:fe.label})]})},W=(fe,ke)=>!ke?.hideLabel&&C?C(fe):V(fe,ke),z=P?n.jsxs("div",{ref:Z,id:`${je}-panel`,className:`taxonomyDropdownPanel ${ga.taxonomyDropdownPanel} ${y?ga.taxonomyDropdownPanelPortal:""} ${h}`,"data-theme":y?U:void 0,style:y?E:void 0,children:[_?n.jsxs("div",{className:ga.taxonomyDropdownSearch,children:[n.jsx(lg,{size:15,className:ga.taxonomyDropdownSearchIcon,"aria-hidden":"true"}),n.jsx("input",{ref:Re,type:"search",role:"searchbox",className:`tf-field-shell ${ga.taxonomyDropdownSearchInput}`,value:D,placeholder:M,"aria-label":M,"aria-controls":je,"aria-activedescendant":$>=0?`${je}-option-${$}`:void 0,onChange:fe=>ie(fe.target.value),onKeyDown:se})]}):null,n.jsx("div",{id:je,className:`tf-scrollbar tf-scrollbar--compact ${ga.taxonomyDropdownOptions}`,role:"listbox","aria-labelledby":c,"aria-label":d,children:ue.map((fe,ke)=>{const Y=String(fe.value)===String(e),we=ke===$;return n.jsx("div",{ref:q=>{Ve.current[ke]=q},id:`${je}-option-${ke}`,className:`taxonomyDropdownOption ${ga.taxonomyDropdownOption} ${Y?`taxonomyDropdownOptionSelected ${ga.taxonomyDropdownOptionSelected}`:""} ${we?`taxonomyDropdownOptionHighlighted ${ga.taxonomyDropdownOptionHighlighted}`:""}`,role:"option","aria-selected":Y,onClick:()=>Le(fe),onMouseEnter:()=>I(ke),style:(()=>{const q=fe.color,$e=Jn(q)||"var(--brand-primary)";return{"--option-color":$e,"--option-border":Zy($e,.18),"--option-bg":Zy($e,.06)}})(),children:W(fe,{labelColor:w})},String(fe.value))})}),ue.length===0?n.jsx("div",{className:ga.taxonomyDropdownEmpty,role:"status",children:R}):null]}):null;return n.jsxs("div",{ref:H,className:`taxonomyDropdown ${ga.taxonomyDropdown} ${P?`taxonomyDropdownActive ${ga.taxonomyDropdownActive}`:""} ${l}`,children:[n.jsxs("button",{ref:be,type:"button",className:`taxonomyDropdownButton ${ga.taxonomyDropdownButton} ${P?`taxonomyDropdownOpen ${ga.taxonomyDropdownOpen}`:""}`,onClick:Pe,onKeyDown:se,disabled:i,role:"combobox","aria-haspopup":"listbox","aria-expanded":P,"aria-controls":je,"aria-activedescendant":P&&$>=0?`${je}-option-${$}`:void 0,"aria-labelledby":c,"aria-label":d,title:f,style:(()=>{if(!ye)return{};const fe=ye.color,ke=Jn(fe);return{"--field-bg":Zy(ke,.06)}})(),children:[n.jsx("span",{className:`taxonomyDropdownButtonContent ${ga.taxonomyDropdownButtonContent}`,children:S??(ye?W(ye,{hideLabel:p}):n.jsxs(n.Fragment,{children:[n.jsx("span",{className:`taxonomyDropdownIcon ${ga.taxonomyDropdownIcon}`,children:n.jsx(ad,{size:16})}),n.jsx("span",{className:`taxonomyDropdownLabel ${ga.taxonomyDropdownLabel}`,children:a})]}))}),!g&&n.jsx(dd,{size:16,className:`taxonomyDropdownChevron ${ga.taxonomyDropdownChevron} ${P?`taxonomyDropdownChevronOpen ${ga.taxonomyDropdownChevronOpen}`:""}`})]}),y?z?yc.createPortal(z,document.body):null:z]})}function Yh({task:e,status:t,disabled:r=!1,actionDisabled:a,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",v=h==="auto"?!!e&&(y==="done"||y==="cancelled")?"archive":"none":h,C=a??r,S=s??r,w=Ql.map(R=>({...R,label:(i||l)&&R.shortLabel||R.label})),_=Jn(Ql.find(R=>R.value===y)?.color)||"var(--text-secondary)",M={"--field-border":_,"--field-text":_,"--field-hover-border":_,"--field-focus-border":_,"--field-focus-ring":`color-mix(in srgb, ${_} 18%, transparent)`};return n.jsxs("div",{className:`${x.statusActionsGroup} ${i?x.statusActionsGroupCompact:""}`,children:[v==="archive"&&n.jsx("button",{type:"button",className:`${x.actionBtn} ${x.archiveTaskBtn}`,onClick:()=>e&&!C&&p?.(e),disabled:C,title:"Archive Now","aria-label":"Archive task",children:n.jsx(Xc,{size:i?12:16})}),v==="unarchive"&&n.jsx("button",{type:"button",className:`${x.actionBtn} ${x.archiveTaskBtn}`,onClick:()=>e&&!C&&g?.(e),disabled:C,title:"Unarchive task","aria-label":"Unarchive task",children:n.jsx(mi,{size:i?12:16})}),n.jsx("div",{className:`${x.statusSelectWrap} ${x.statusTaxonomyDropdownWrap}`,style:M,children:n.jsx(qo,{value:y,options:w,disabled:S||!e&&!f,ariaLabel:"Status",optionLabelColor:"var(--text-primary)",hideSelectedLabel:!c,hideChevron:!c,className:`${x.statusTaxonomyDropdown} ${i?x.statusTaxonomyDropdownCompact:""} ${c?"":x.statusTaxonomyDropdownIconOnly}`,panelClassName:c?"":x.statusTaxonomyDropdownIconOnlyPanel,portalPanel:!c,panelMinWidth:c?void 0:144,onChange:R=>{const P=R;if(e){d?.(e,P);return}f?.(P)}})})]})}function mz(e){return e==="taskId"?"Task":e==="title"?"Title":e==="description"?"Description":e==="assignee"?"Assigned to":e==="ownerId"?"Owner":e==="status"?"Status":e==="scheduledDate"?"Scheduled date":e==="dueDate"?"Due date":e==="workstreamId"?"Workstream":e==="initiativeId"?"Initiative":e}function hz(e){return e==="task"?"Task":e.replace(/[-_]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,t=>t.toUpperCase())}function ps(e,t,r){const a=r?.(t,e);if(typeof a=="string")return a;if(e==null||e==="")return"none";if(Array.isArray(e)){const s=e.map(i=>ps(i,t,r)).filter(Boolean);return s.length>0?s.join(", "):"none"}return typeof e=="object"?"updated":t==="status"?hz(String(e)):String(e)}function Qb(e){return Array.isArray(e)?e.map((t,r)=>{const a=t&&typeof t=="object"?t:{},s=Number(a.order);return{id:String(a.id||"").trim(),title:String(a.title||"").trim(),isCompleted:!!a.isCompleted,order:Number.isFinite(s)?s:r}}):[]}function gz(e){const t=Qb(e?.from),r=Qb(e?.to),a=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=a.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 a.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 zv(e){return e.split(/[?#]/,1)[0]||e}function Xb(e){const t=zv(e).replace(/\\/g,"/"),r=t.split("/").filter(Boolean);return r[r.length-1]||t}function yz(e){return/\.(png|jpe?g|webp|gif)$/i.test(zv(e))}function kz(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(zv(e))}function eS(e){return Array.isArray(e)?e.flatMap((t,r)=>{const a=t&&typeof t=="object"?t:null,s=typeof t=="string"?t:String(a?.path||"").trim(),i=String(a?.fsPath||"").trim(),l=String(a?.assetId||"").trim(),c=String(a?.referenceLabel||"").trim(),d=[a?.displayName,a?.originalFilename,a?.caption,c,i?Xb(i):"",s?Xb(s):""].map(h=>String(h||"").trim()).find(Boolean)||`Attachment ${r+1}`,f=l||i||s||`${d}:${r}`,p=[s,i,String(a?.originalFilename||"").trim(),String(a?.displayName||"").trim(),c].filter(Boolean),g=p.some(h=>yz(h))?"image":c.startsWith("D-")||p.some(h=>kz(h))?"document":"attachment";return[{key:f,label:d,kind:g}]}):[]}function vz(e,t){return t===1?e:e==="image"?"images":e==="document"?"documents":"attachments"}function lh(e){if(e.length===0)return"attachments";const t=e.reduce((a,s)=>(a[s.kind]+=1,a),{image:0,document:0,attachment:0}),r=Object.entries(t).filter(([,a])=>a>0).map(([a,s])=>s===1?a:`${s} ${vz(a,s)}`);return r.length===1?r[0]:e.length<=3&&r.length<=2?r.join(" and "):`${e.length} attachments`}function qc(e){return e&&e.charAt(0).toUpperCase()+e.slice(1)}function Jy(e){return Array.isArray(e)?e.map(t=>typeof t=="string"?t.trim():"").filter(Boolean):[]}function wz(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=Jy(e.added),a=Jy(e.removed),s=Jy(e.updated);if(r.length===1&&a.length===0&&s.length===0)return`Attachment attached: ${r[0]}`;if(a.length===1&&r.length===0&&s.length===0)return`Attachment removed: ${a[0]}`;if(r.length===1&&a.length===1&&s.length===0)return`Attachment replaced: ${a[0]} -> ${r[0]}`;if(s.length===1&&r.length===0&&a.length===0)return`Attachment updated: ${s[0]}`;if(s.length>0&&r.length===0&&a.length===0)return`${s.length} attachments updated`;if(r.length>0||a.length>0){const c=[...r.length>0?[`${r.length} ${r.length===1?"attachment":"attachments"} attached`]:[],...a.length>0?[`${a.length} ${a.length===1?"attachment":"attachments"} removed`]:[],...s.length>0?[`${s.length} ${s.length===1?"attachment":"attachments"} updated`]:[]];return qc(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 bz(e){const t=e?wz(e):null;if(t)return t;const r=eS(e?.from),a=eS(e?.to),s=new Map(r.map(f=>[f.key,f])),i=new Map(a.map(f=>[f.key,f])),l=a.filter(f=>!s.has(f.key)),c=r.filter(f=>!i.has(f.key));if(l.length===1&&c.length===0)return`${qc(l[0].kind)} attached: ${l[0].label}`;if(c.length===1&&l.length===0)return`${qc(c[0].kind)} removed: ${c[0].label}`;if(l.length>0&&c.length===0)return`${qc(lh(l))} attached`;if(c.length>0&&l.length===0)return`${qc(lh(c))} removed`;if(l.length===1&&c.length===1)return`${qc(l[0].kind)} replaced: ${c[0].label} -> ${l[0].label}`;if(l.length>0||c.length>0)return`${qc(lh(l))} attached, ${lh(c)} removed`;const d=a.filter(f=>{const p=s.get(f.key);return p&&p.label!==f.label});if(d.length===1&&r.length===1&&a.length===1){const f=s.get(d[0].key);return`${qc(d[0].kind)} renamed: ${f?.label||"Attachment"} -> ${d[0].label}`}return"Attachment details updated"}function Zh(e,t,r){if(e==="checklistItems")return gz(t);if(e==="attachments")return bz(t);const a=mz(e);if(e==="title")return`${a}: updated`;if(e==="description"){const s=ps(t?.from,e,r)!=="none",i=ps(t?.to,e,r)!=="none";return!s&&i?`${a}: added`:s&&!i?`${a}: cleared`:`${a}: updated`}return`${a}: ${ps(t?.from,e,r)} -> ${ps(t?.to,e,r)}`}function QC(e,t){const r=e.details?.changes||{},a=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: ${ps(r.status.from,"status",t)} -> ${ps(r.status.to,"status",t)}`;if(e.action==="task-schedule-changed")return r.scheduledDate?`Scheduled date changed: ${ps(r.scheduledDate.from,"scheduledDate",t)} -> ${ps(r.scheduledDate.to,"scheduledDate",t)}`:r.dueDate?`Due date changed: ${ps(r.dueDate.from,"dueDate",t)} -> ${ps(r.dueDate.to,"dueDate",t)}`:"Schedule updated";if(e.action==="task-relationship-changed"&&r.workstreamId)return`Workstream changed: ${ps(r.workstreamId.from,"workstreamId",t)} -> ${ps(r.workstreamId.to,"workstreamId",t)}`;if(e.action==="task-relationship-changed"&&r.initiativeId)return`Initiative changed: ${ps(r.initiativeId.from,"initiativeId",t)} -> ${ps(r.initiativeId.to,"initiativeId",t)}`;if(e.action==="task-attachments-changed")return r.attachments?Zh("attachments",r.attachments,t):"Attachments updated";if(a.length===1){const s=a[0],i=r[s];return Zh(s,i,t)}return a.length>1?`${a.length} fields updated`:"Task updated"}function EX(e,t){if(e.taskId||e.entityType==="task")return QC(e,t);const r=e.details?.changes||{},a=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: ${ps(r.initiativeId.from,"initiativeId",t)} -> ${ps(r.initiativeId.to,"initiativeId",t)}`:(e.action==="initiative-attachments-changed"||e.action==="workstream-attachments-changed")&&r.attachments?Zh("attachments",r.attachments,t):a.length===1?Zh(a[0],r[a[0]],t):a.length>1?`${a.length} fields updated`:e.action==="initiative-updated"||e.action==="workstream-updated"?`${s} updated`:`${s} activity updated`}function Jh(e){const t=Date.parse(String(e.timestamp||""));return Number.isFinite(t)?t:null}function Sz(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 NX(e){if(e.taskId||e.entityType==="task")return Sz(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 XC(e){const t=new Map,r=new Set,a=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(a),Array.isArray(e.comments)&&e.comments.forEach(s=>{const i=String(s.id||"").trim();!i||r.has(i)||a({id:`comment:${i}`,type:"comment",timestamp:s.timestamp,comment:s})}),[...t.values()].sort((s,i)=>{const l=Jh(s),c=Jh(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 Hv(e){return XC(e)}function Az(e){const t=Hv(e);return t.length===0?null:[...t].sort((r,a)=>{const s=Jh(r),i=Jh(a);return s!==null&&i!==null&&s!==i?i-s:s!==null&&i===null?-1:s===null&&i!==null?1:String(a.id||"").localeCompare(String(r.id||""))})[0]||null}function Cz(e,t){return e?e.type==="comment"?e.comment.text:QC(e.event,t):""}const e_="/taskforce/assets/antigravity-DRKQga2U.png",t_="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",r_="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",n_="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiByb2xlPSJpbWciIGFyaWEtbGFiZWxsZWRieT0idGl0bGUiPgogIDx0aXRsZSBpZD0idGl0bGUiPkNsYXVkZSBDb2RlIENsYXcnZCBtYXNjb3Q8L3RpdGxlPgogIDxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiBmaWxsPSIjZDk3NzU3Ii8+CiAgPGcKICAgIGZpbGw9IiNmN2YzZWUiCiAgICBmb250LWZhbWlseT0iTWVubG8sIE1vbmFjbywgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBtb25vc3BhY2UiCiAgICBmb250LXNpemU9IjM1IgogICAgZm9udC13ZWlnaHQ9IjcwMCIKICAgIHRleHQtYW5jaG9yPSJtaWRkbGUiCiAgPgogICAgPHRleHQgeD0iMTI4IiB5PSIxMDIiPiYjeDI1OTA7JiN4MjU5QjsmI3gyNTg4OyYjeDI1ODg7JiN4MjU4ODsmI3gyNTlDOyYjeDI1OEM7PC90ZXh0PgogICAgPHRleHQgeD0iMTI4IiB5PSIxMzciPiYjeDI1OUQ7JiN4MjU5QzsmI3gyNTg4OyYjeDI1ODg7JiN4MjU4ODsmI3gyNTg4OyYjeDI1ODg7JiN4MjU5QjsmI3gyNTk4OzwvdGV4dD4KICAgIDx0ZXh0IHg9IjEyOCIgeT0iMTcyIiB4bWw6c3BhY2U9InByZXNlcnZlIj4gICYjeDI1OTg7JiN4MjU5ODsgJiN4MjU5RDsmI3gyNTlEOyAgPC90ZXh0PgogIDwvZz4KPC9zdmc+Cg==",a_="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",s_="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",o_="/taskforce/assets/cursor-BM_3k4Y4.svg",i_="/taskforce/assets/gemini-cli-icon-dBAVjCcn.png",_z="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",Fk="/taskforce/assets/grok-BuodbWaG.svg",c_="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",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%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",d_="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",u_="/taskforce/assets/vscode-C_7wk1WI.svg",p_="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",Vv={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 Iz(e){const t=String(e||"").trim().toLowerCase();return t==="claude-desktop"?"claude-chat":Object.prototype.hasOwnProperty.call(Vv,t)?t:null}function f_(e){const t=Iz(e);return t?Vv[t]:null}function jX(){return Object.values(Vv).filter(e=>e.generatedOption).map(({id:e,label:t})=>({id:e,label:t}))}function Tz(e){const t=e?.providerMetadata?.taskforce;return!t||typeof t!="object"||Array.isArray(t)?"":String(t.taskforceAgentId||"").trim()}function m_(e){return!!Tz(e)}function MX(e){if(!e||e.archivedAt||e.mergedIntoProfileId||m_(e)||e.surfaceType!=="agent")return!1;const t=e.providerMetadata?.connection,r=t&&typeof t=="object"&&!Array.isArray(t)?t.clientId:null,a=f_(r);return!(a?.logoKey||a?.surfaceHint&&a.surfaceHint!=="agent")}const xz={antigravity:e_,"chatgpt-desktop":t_,"claude-code":n_,"claude-chat":r_,"grok-chat":Fk,"gemini-chat":_z,"mistral-chat":l_,"perplexity-chat":d_,cline:a_,codex:s_,cursor:o_,"gemini-cli":i_,grok:Fk,kiro:c_,vscode:u_,windsurf:p_};function Rz(e){if(!e||m_(e))return"";const t=e.providerMetadata?.connection,r=t&&typeof t=="object"&&!Array.isArray(t)?t.clientId:null,a=f_(r);if(a?.logoKey)return xz[a.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")?t_:s.includes("claude code")?n_:s.includes("claude desktop")?r_:s.includes("cline")?a_:s.includes("codex")?s_:s.includes("cursor")?o_:s.includes("cascade")||s.includes("windsurf")?p_:s.includes("antigravity")?e_:s.includes("gemini")?i_:s.includes("grok")?Fk:s.includes("mistral")||s.includes("le chat")?l_:s.includes("perplexity")?d_:s.includes("kiro")?c_:s.includes("visual studio code")||s.includes("vs code")||s.includes("vscode")?u_:""}function Pz(e,t,r){const a=typeof e=="string"?e.trim():"";if(!a||a.startsWith("data:")||a.startsWith("blob:"))return a;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 a;const[l,c=""]=a.split("#"),d=l.includes("?")?"&":"?";return`${l}${d}v=${encodeURIComponent(i)}${c?`#${c}`:""}`}function h_(e,t){const r=String(e||"").trim(),a=String(t||"").trim(),[s,i]=o.useState(r||a);return o.useEffect(()=>{i(r||a)},[r,a]),{activeImageUrl:s,handleImageError:()=>{if(s&&a&&s!==a){i(a);return}i("")}}}const Ez="_identity_1owqe_1",Nz="_avatar_1owqe_9",jz="_person_1owqe_17",Mz="_provider_1owqe_21",Dz="_unassigned_1owqe_25",Lz="_card_1owqe_31",Oz="_label_1owqe_51",Kl={identity:Ez,avatar:Nz,person:jz,provider:Mz,unassigned:Dz,card:Lz,label:Oz};function Cg({option:e,size:t=22,variant:r="default",unassignedIcon:a}){const s=gv(e.value),i=s?"":Pz(e.avatarUrl,e.avatarRevision,e.avatarUpdatedAt),l=!s&&e.kind==="agent"?Rz({name:e.label,username:e.username,surfaceType:e.surfaceType,providerMetadata:e.providerMetadata}):"",{activeImageUrl:c,handleImageError:d}=h_(i,l),f=To,p=s?Bf:e.icon,g=s&&a?a:p&&f[p]?f[p]:ad,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 n.jsx("span",{className:`${Kl.avatar} ${l?Kl.provider:Kl.person} ${s?Kl.unassigned:""} ${r==="card"?Kl.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?n.jsx("img",{src:c,alt:"",onError:d}):n.jsx(g,{size:h,strokeWidth:s?1.6:void 0})})}function ju({option:e,size:t=22}){return n.jsxs("span",{className:Kl.identity,children:[n.jsx(Cg,{option:e,size:t}),n.jsx("span",{className:Kl.label,children:e.label})]})}function g_({workstreams:e,onSelect:t,disabled:r=!1}){const a=Q.useMemo(()=>e.filter(l=>!l.isArchived),[e]),s=Q.useMemo(()=>new Map(a.map(l=>[l.id,l])),[a]),i=Q.useMemo(()=>a.map(l=>({value:l.id,label:`${xu(l)||l.id} — ${l.title}`})),[a]);return n.jsx(qo,{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:x.taskWorkstreamPicker,panelClassName:x.taskWorkstreamPickerPanel,portalPanel:!0,panelAlign:"start",panelMinWidth:280,searchable:!0,searchPlaceholder:"Search workstreams…",noResultsText:"No matching workstreams.",hideChevron:!0,triggerContent:n.jsx("span",{className:x.taskWorkstreamPickerIcon,children:n.jsx(Au,{size:13,"aria-hidden":"true"})}),renderOptionContent:l=>{const c=s.get(String(l.value));return c?n.jsxs("span",{className:x.taskWorkstreamPickerOption,children:[n.jsx("span",{children:xu(c)||c.id}),n.jsx("span",{children:c.title})]}):l.label}})}const{MessageSquare:Bz,Gauge:Wz,ClipboardList:$z,HelpCircle:Fz,File:Uz}=To,zz=({task:e,searchQuery:t="",copiedId:r=null,taxonomies:a=[],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:v=!1,selectable:C=!1,selected:S=!1,onSelectionChange:w,onClick:_,onCopyId:M,onToggleInProgress:R,onToggleReview:P,onToggleComplete:b,onToggleCancel:$,onSetStatus:I,onArchiveTask:E,onUnarchive:K,onDelete:U,deleteActionTitle:L,taskReferences:D,onAssigneeChange:ie,onWorkstreamChange:H,compressed:be=!1,showStatusLabel:Z=!1})=>{const me=uv(e),Ve=me.label||(me.isProvisional?"Pending":""),Re=me.isProvisional,je=!!me.label,ye=xu(f)||f?.id||"",ue=IC(p)||p?.id||"",ve=i.find(F=>String(F.value)===String(e.priority)),Pe=_o(e.status),Le=Jn(Pe.color),se=l.find(F=>F.value===e.category||F.label===e.category),V=typeof e.complexity=="number"?e.complexity:Number(e.complexity??3),W=Number.isFinite(V)?Math.max(1,Math.min(5,Math.round(V))):3,z={1:"Tiny",2:"Low",3:"Mid",4:"High",5:"Epic"},fe={1:"tiny",2:"low",3:"medium",4:"high",5:"epic"},ke=z[W],Y=`var(--complexity-${fe[W]})`,we=Tf(e.assignee,c),q=Q.useMemo(()=>{const F=String(e.assignee||"").trim();if(!F||F===td.value)return td;const Ne=kA(c,e.assignee).find(ut=>String(ut.value||"").trim()===F);if(Ne)return Ne;const Ce=mk(F);return{...td,value:F,label:we,icon:Ce==="agent"?"Bot":"User",color:Ce==="agent"?"#8b5cf6":"#22c55e",kind:Ce}},[we,c,e.assignee]),le=Q.useMemo(()=>Az(e),[e]),$e=k||(e.isDeleted?"deleted":y?"archived":null),re=$e!==null,de=Q.useMemo(()=>{if($e!=="deleted"||!e.deletedExpiresAt)return"";const F=new Date(e.deletedExpiresAt);return Number.isNaN(F.getTime())?"":`Trash expires ${F.toLocaleString()}`},[$e,e.deletedExpiresAt]),He=!re&&!h&&!!ie&&c.length>0,ce=!re&&!h&&!!H,[pe,xe]=Q.useState(!1),N=Q.useCallback((F,Ne)=>{const Ce=String(Ne||"").trim();if(Ce){if(F==="assignee")return Tf(Ce,c);if(F==="workstreamId"&&Ce===f?.id)return ye||f.id;if(F==="initiativeId"&&Ce===p?.id)return ue||p.id}},[c,ue,p,f,ye]),X=Q.useMemo(()=>Cz(le,N),[N,le]),Ae=Q.useMemo(()=>Hv(e).filter(F=>F.type==="comment").length,[e]),Te=[ar.taskItem,e.status==="on-hold"?ar.onHold:"",e.status==="in-progress"?ar.inProgress:"",e.status==="review"?ar.readyForReview:"",e.status==="done"?ar.completed:"",e.status==="cancelled"?ar.cancelled:"",v?ar.taskItemRecentlyChanged:"",h?ar.kanbanCardOverlay:"",re?ar.readOnly:"",y?ar.archived:"",be?ar.compressed:"",S?ar.selected:""].filter(Boolean).join(" "),he=Jn(ve?.color),ot=s.find(F=>F.value===e.type),We=Jn(ot?.color)||kN(e.type),Xe=F=>{const Ne=typeof F=="string"?F:F.path,Ce=typeof F=="string"?"":(F.fsPath||"").trim(),ut=typeof F=="string"?"":(F.displayName||"").trim(),mt=typeof F=="string"?"":(F.originalFilename||"").trim(),Ue=typeof F=="string"?"":(F.caption||"").trim();return[Ce,mt,ut,Ue,Ne].some(kt=>/\.(png|jpe?g|webp|gif)(\?|#|$)/i.test(kt))},ae=F=>{const Ne=typeof F=="string"?F:F.path,Ce=Ne.includes("/api/taskforce/documents/"),ut=typeof F=="string"?"":(F.displayName||"").trim();if(Ce&&typeof F!="string")return qU({displayName:F.displayName,originalFilename:F.originalFilename,fsPath:F.fsPath,assetId:F.assetId||null});const mt=typeof F=="string"?"":(F.caption||"").trim();if(mt)return mt;if(ut)return ut;const Ue=typeof F=="string"?"":(F.originalFilename||"").trim();return Ue||Ne.split("?")[0].split("#")[0].split("/").pop()||"Context file"},G=F=>{const Ne=typeof F=="string"?F:F.path,Ce=typeof F=="string"?"":(F.fsPath||"").trim(),ut=typeof F=="string"?"":(F.caption||"").trim(),mt=typeof F=="string"?"":(F.originalFilename||"").trim(),Ue=[];if(Ce&&Ue.push(Ce),mt&&Ue.push(mt),ut&&Ue.push(ut),Ne.includes("/api/taskforce/context-link?path="))try{const kt=new URL(Ne,"http://localhost").searchParams.get("path");kt&&Ue.push(kt)}catch{}Ue.push(Ne);for(const wt of Ue){const rt=wt.split("?")[0].split("#")[0].split("/").pop()||"",Ht=rt.lastIndexOf(".");if(Ht<=0||Ht===rt.length-1)continue;const lr=rt.slice(Ht+1);if(lr)return lr.slice(0,5).toUpperCase()}return"FILE"},Ie={"--task-status-color":Le||"var(--border-primary)","--task-card-tint-color":re?"transparent":Le||"transparent","--task-change-glow-color":Le||"var(--brand-primary)",...Le?{borderColor:Le}:{}},Fe=F=>F.replace(/\b\w/g,Ne=>Ne.toUpperCase()),it=$f(a,[e]),Me=e.checklistItems||[],qe=Me.length,ge=qe>0?Me.filter(F=>F.isCompleted).length:0,_e=(F,Ne)=>{F.stopPropagation(),M?.(F,Ne)},Be=async F=>{if(!H||pe)return!1;xe(!0);try{return await H(e,F)!==!1}finally{xe(!1)}},Ge=F=>{const Ne=typeof F=="string"?F:F.path;return/^https?:\/\//i.test(Ne)?(window.open(Ne,"_blank"),!0):Ef(F,{ownerType:"task",ownerId:e.id,ownerReferenceLabel:Ve,workspaceId:g})};return n.jsxs("div",{className:Te,onClick:()=>_?.(e),style:Ie,"data-task-card":"true",children:[n.jsxs("div",{className:ar.taskHeader,children:[C&&n.jsx("label",{className:ar.selectionControl,onClick:F=>F.stopPropagation(),onPointerDown:F=>F.stopPropagation(),children:n.jsx("input",{type:"checkbox",checked:S,onChange:F=>w?.(F.target.checked),"aria-label":`Select ${Ve||e.title} for restore`})}),n.jsxs("div",{className:ar.taskReferenceCluster,children:[p?n.jsxs(n.Fragment,{children:[n.jsx(Su,{copied:r===ue,onClick:F=>_e(F,ue),disabled:!ue,title:p.title,ariaLabel:`Copy initiative reference ${ue}: ${p.title}`,className:y?ar.archiveBadge:"",label:ue}),n.jsx("span",{className:ar.taskReferenceDivider,children:"/"})]}):null,f?n.jsxs(n.Fragment,{children:[n.jsx(Su,{copied:r===ye,onClick:F=>_e(F,ye),disabled:!ye,title:f.title,ariaLabel:`Copy workstream reference ${ye}: ${f.title}`,className:y?ar.archiveBadge:"",label:ye}),n.jsx("span",{className:ar.taskReferenceDivider,children:"/"})]}):null,ce&&!f?n.jsx("div",{className:ar.taskReferenceSegment,onClick:F=>F.stopPropagation(),onPointerDown:F=>F.stopPropagation(),onKeyDown:F=>F.stopPropagation(),children:n.jsx(g_,{workstreams:d,disabled:pe,onSelect:F=>{Be(F.id)}})}):null,Ve?n.jsx("div",{className:ar.taskReferenceSegment,onClick:F=>F.stopPropagation(),onPointerDown:F=>F.stopPropagation(),onKeyDown:F=>F.stopPropagation(),children:n.jsx(Su,{copied:je&&r===me.label,onClick:F=>_e(F,me.label),disabled:!je,title:Re?"Temporary identifier — replaced after synchronization.":"Copy task reference",ariaLabel:Re?`Copy temporary task reference ${Ve}`:void 0,className:y?ar.archiveBadge:"",label:ch(Ve,t),provisional:Re})}):null]}),n.jsx("div",{className:ar.taskActions,onClick:F=>F.stopPropagation(),children:re?K||U?n.jsxs(n.Fragment,{children:[K&&n.jsx("button",{type:"button",className:x.actionBtn,onClick:()=>K(e.id),title:$e==="deleted"?`Restore to ${e.isArchived===!0?"Archived":"Active"}`:"Restore archived task",children:n.jsx(mi,{size:16})}),U&&n.jsx("button",{type:"button",className:`${x.actionBtn} ${x.deleteBtn}`,onClick:()=>U(e.id),title:L||($e==="deleted"?"Delete Permanently":"Move to Trash"),children:n.jsx(Lf,{size:16})})]}):null:n.jsx(Yh,{task:e,compressed:be,shortLabels:!0,showLabel:Z,onSetStatus:(F,Ne)=>{if(I){I(F,Ne);return}if(Ne==="in-progress"){R?.(F);return}if(Ne==="review"){P?.(F);return}if(Ne==="done"){b?.(F);return}Ne==="cancelled"&&$?.(F)},onArchiveTask:E})})]}),n.jsxs("div",{className:ar.taskContent,children:[re&&n.jsx("div",{className:`${ar.taskMeta} ${ar.taskMetaCompact}`}),n.jsxs("div",{children:[n.jsxs("div",{className:ar.taskTitle,style:be?{fontSize:"13px",lineHeight:"1.4"}:{},children:[$e==="archived"&&"✓ ",$e==="deleted"&&"Deleted: ",ch(e.title,t)]}),de&&n.jsx("div",{className:ar.deletedExpiry,title:"Trash items are permanently deleted 90 days after deletion.",children:de}),e.description&&!re&&!be&&n.jsx("div",{className:ar.taskDescription,children:n.jsx(Sg,{variant:"compact",taskReferences:D,children:e.description})})]}),e.attachments&&e.attachments.length>0&&!re&&!be&&n.jsxs("div",{className:ar.attachmentThumbnails,children:[n.jsx("div",{className:ar.attachmentImageRow,children:(e.attachments||[]).map((F,Ne)=>{const Ce=typeof F=="string"?F:F.path;return Xe(F)?n.jsx("button",{type:"button",className:ar.attachmentThumbnail,"aria-label":`Preview ${ae(F)}`,onPointerDown:ut=>ut.stopPropagation(),onClick:ut=>{ut.stopPropagation(),!Ge(F)&&(ZC(typeof F=="string"?{path:Ce}:F,{taskId:e.id,taskReferenceLabel:Ve})||window.open(Ce,"_blank"))},children:n.jsx("img",{src:Ce,alt:`Attachment ${Ne}`})},Ne):null})}),n.jsx("div",{className:ar.attachmentDocumentList,children:(e.attachments||[]).map((F,Ne)=>{const Ce=typeof F=="string"?F:F.path,ut=typeof F=="string"?void 0:F.fsPath,mt=ae(F);if(Xe(F))return null;const Ue=G(F);return n.jsxs("button",{type:"button",className:ar.contextDocThumb,onPointerDown:wt=>wt.stopPropagation(),onClick:wt=>{if(wt.stopPropagation(),Ge(F))return;const kt=typeof F=="string"?{path:F,taskId:e.id}:{...F,taskId:e.id};GC(kt,ut)||window.open(Ce,"_blank")},title:mt,style:{"--context-doc-accent":vN(Ue)},children:[n.jsxs("span",{className:ar.contextDocMain,children:[n.jsx("span",{className:ar.contextDocIcon,"aria-hidden":"true",children:n.jsx(Uz,{size:13})}),n.jsx("span",{className:ar.contextDocText,children:n.jsx("span",{className:ar.contextDocName,children:mt})})]}),n.jsx("span",{className:ar.contextDocType,children:Ue})]},Ne)})})]}),e.status==="cancelled"&&e.canceledReason&&!be&&n.jsxs("div",{className:ar.taskCancellationReason,children:[n.jsx("strong",{children:"Cancellation Reason:"})," ",ch(e.canceledReason,t)]}),(X||Ae>0)&&!re&&!be&&n.jsxs("div",{className:ar.taskLatestComment,"data-task-activity-summary":"true",children:[n.jsxs("div",{className:ar.taskLatestCommentHeader,children:[n.jsx("strong",{children:X?"Latest Activity:":"Activity:"}),Ae>0&&n.jsxs("span",{className:`${x.metaBadge} ${ar.taskCommentCount}`,title:`${Ae} ${Ae===1?"comment":"comments"}`,"aria-label":`${Ae} ${Ae===1?"comment":"comments"}`,children:[n.jsx(Bz,{size:12,"aria-hidden":"true"}),n.jsx("span",{children:Ae})]})]}),X&&n.jsx("div",{className:ar.taskLatestCommentText,title:X,children:ch(X,t)})]}),!re&&it.length>0&&!be&&n.jsx("div",{className:`${ar.taskSpecialists} ${ar.taxonomiesList}`,children:it.map(F=>{const Ne=e.taxonomies?.[F.id];return Ne?(Array.isArray(Ne)?Ne:[Ne]).map(ut=>{const mt=F.options.find(Ht=>Ht.value===ut);if(!mt)return null;const Ue=To[mt.icon||"Layers"]||pk,wt=Jn(mt.color)||"var(--text-primary)",kt=F.status==="retired"?`${F.label} (Retired)`:F.label,rt=mt.status==="retired"?`${mt.label} (Retired)`:mt.label;return n.jsx("span",{className:x.specialistBadge,style:{borderColor:`${wt}50`,backgroundColor:`${wt}15`,color:wt},title:`${kt}: ${Fe(rt)}`,children:n.jsx(Ue,{size:10})},`${F.id}-${ut}`)}):null})}),n.jsx("div",{className:ar.taskMeta,children:re?n.jsx("span",{children:e.category}):n.jsx(n.Fragment,{children:n.jsxs("div",{className:ar.taskMetaRow,style:be?{marginBottom:0}:void 0,children:[n.jsxs("div",{className:ar.taskMetaBadgeGroup,"data-task-meta-primary":"true",children:[(()=>{const F=Jn(se?.color),Ne=se?.icon||"Folder",Ce=To[Ne]||gc;return n.jsx("span",{className:`${x.metaBadge} ${ar.taskMetaCategory}`,title:Fe(e.category),style:{color:F||"var(--text-secondary)",backgroundColor:F?`${F}15`:"var(--bg-tertiary)",borderColor:F?`${F}40`:"transparent"},children:n.jsx(Ce,{size:14})})})(),n.jsx("span",{className:`${x.metaBadge} ${ar.taskMetaType} ${x[`type_${e.type}`]||""}`,title:Fe(e.type||po),style:{color:`var(--type-color, ${We})`,backgroundColor:`color-mix(in srgb, var(--type-color, ${We}), transparent 90%)`,borderColor:`color-mix(in srgb, var(--type-color, ${We}), transparent 75%)`},children:ot?.icon?(()=>{const F=To[ot.icon]||Fz;return n.jsx(F,{size:14})})():BU(e.type,14)}),ve&&n.jsx("span",{className:`${x.metaBadge} ${ar.taskMetaPriority}`,style:{color:he||"var(--text-secondary)",backgroundColor:he?`${he}15`:"var(--bg-tertiary)",borderColor:he?`${he}40`:"var(--border-color)"},title:`${ve.label}`,children:(()=>{const F=ve.icon||"AlertCircle",Ne=To[F]||pT;return n.jsx(Ne,{size:14})})()}),qe>0&&n.jsxs("span",{className:x.metaBadge,title:`${ge}/${qe} checklist items complete`,style:{color:"var(--text-muted)",backgroundColor:"var(--bg-tertiary)",borderColor:"var(--border-primary)",gap:"4px",padding:"0 8px"},children:[n.jsx($z,{size:14}),n.jsx("span",{children:`${ge}/${qe}`})]})]}),n.jsxs("div",{className:ar.taskMetaIdentityGroup,"data-task-meta-identity":"true",children:[n.jsxs("span",{className:x.metaBadge,title:`AI-estimated complexity: ${ke} (${W}/5)`,style:{color:Y,backgroundColor:`color-mix(in srgb, ${Y}, transparent 88%)`,borderColor:`color-mix(in srgb, ${Y}, transparent 72%)`,gap:"4px",padding:"0 8px"},children:[n.jsx(Wz,{size:14}),!be&&n.jsx("span",{className:ar.taskComplexityLabel,children:ke})]}),(()=>{const F=q.kind==="unassigned",Ne=n.jsx("span",{className:ar.assigneeAvatarShared,"data-task-assignee":"true","aria-hidden":He?"true":void 0,"aria-label":He?void 0:F?"Unassigned":`Assigned to ${we}`,children:n.jsx(Cg,{option:q,size:be?32:36,variant:"card",unassignedIcon:He?Ko:void 0})});return He?n.jsx("div",{className:ar.assigneePicker,title:F?"Assign task":we,onClick:Ce=>Ce.stopPropagation(),onPointerDown:Ce=>Ce.stopPropagation(),onKeyDown:Ce=>Ce.stopPropagation(),children:n.jsx(qo,{value:e.assignee||"unassigned",options:c,onChange:Ce=>ie?.(e,String(Ce)),ariaLabel:F?"Assign task":`Reassign task currently assigned to ${we}`,hideChevron:!0,portalPanel:!0,panelMinWidth:240,searchable:!0,searchPlaceholder:"Search assignees...",noResultsText:"No assignees found.",renderOptionContent:Ce=>{const ut=c.find(mt=>String(mt.value)===String(Ce.value));return ut?n.jsx(ju,{option:ut}):Ce.label},triggerContent:Ne})}):n.jsx("span",{title:we,children:Ne})})()]})]})})})]})]})},Mf=Q.memo(zz),Qh="168px",cu=[{value:"open",label:"Open"},{value:"archived",label:"Archived"},{value:"deleted",label:"Deleted"}];function Hz(){return n.jsx("span",{style:{fontSize:"12px",fontWeight:600,color:"var(--text-secondary)",marginRight:"4px"},children:_t("standalone.filtersCaps")})}function Jp({label:e,options:t,selected:r,onChange:a,variant:s="label",renderOptionContent:i,searchable:l=!1,searchPlaceholder:c,noResultsText:d}){return n.jsx(Gl,{label:e,options:t,selected:r,onChange:a,variant:s,renderOptionContent:i,searchable:l,searchPlaceholder:c,noResultsText:d,containerStyle:{flex:`0 0 ${Qh}`,maxWidth:Qh}})}function Vz({onClick:e,disabled:t,label:r="Reset filters"}){return n.jsx("button",{type:"button",className:"tf-control-icon",onClick:e,disabled:t,"aria-label":r,title:r,children:n.jsx(mi,{size:14,"aria-hidden":"true"})})}function tS({label:e,options:t,selected:r,onChange:a,allLabel:s,title:i}){const[l,c]=Q.useState(!1),d=Q.useRef(null),f=t.find(h=>h.value===r),p=f?.selectedLabel||f?.label||s;Q.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=>{a(h),c(!1)};return n.jsxs("div",{className:x.filterContainer,ref:d,style:{flex:`0 0 ${Qh}`,maxWidth:Qh},children:[n.jsxs("button",{type:"button",className:`${x.filterButton} ${r?x.filterActive:""}`,onClick:()=>c(h=>!h),title:i||`Filter by ${e}`,"aria-haspopup":"listbox","aria-expanded":l,children:[n.jsx("span",{children:p}),n.jsx(dd,{size:14,style:{transform:l?"rotate(180deg)":"none",transition:"transform 0.2s",opacity:.5}})]}),l&&n.jsxs("div",{className:`${x.filterDropdown} ${x.appScrollbar} tf-scrollbar`,role:"listbox","aria-label":e,children:[n.jsxs("button",{type:"button",className:x.filterOption,onClick:()=>g(""),"aria-selected":!r,children:[n.jsx(hi,{size:14,style:{opacity:r?0:1}}),n.jsx("span",{style:{fontWeight:r?500:600},children:s})]}),n.jsx("div",{className:x.filterDivider}),t.map(h=>{const y=h.value===r;return n.jsxs("button",{type:"button",className:x.filterOption,onClick:()=>g(h.value),"aria-selected":y,children:[n.jsx(hi,{size:14,style:{opacity:y?1:0}}),n.jsx("span",{style:{fontWeight:y?600:500},children:h.label})]},h.value)})]})]})}function y_({scope:e,onScopeChange:t,className:r,labelClassName:a}){const s=Q.useRef([]),i=(l,c)=>{let d;l.key==="ArrowRight"?d=(c+1)%cu.length:l.key==="ArrowLeft"?d=(c-1+cu.length)%cu.length:l.key==="Home"?d=0:l.key==="End"&&(d=cu.length-1),d!==void 0&&(l.preventDefault(),s.current[d]?.focus(),t(cu[d].value))};return n.jsxs("div",{className:[x.taskScopeToggle,r].filter(Boolean).join(" "),children:[n.jsx("span",{className:a,children:"Scope"}),n.jsx("div",{className:x.taskScopeTabs,role:"tablist","aria-label":"Task scope",children:cu.map((l,c)=>{const d=e===l.value;return n.jsx("button",{ref:f=>{s.current[c]=f},type:"button",className:`${x.taskScopeTab} ${d?x.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 Gz({onClick:e,disabled:t=!1,className:r,title:a="Permanently delete all deleted tasks",children:s="Delete All Permanently"}){return n.jsxs("button",{type:"button",className:r,onClick:e,disabled:t,title:a,children:[n.jsx(Lf,{size:14}),s]})}const{Search:rS,ClipboardList:Kz,ChevronRight:qz,ChevronDown:Yz,Folder:Zz,Archive:Jz,RotateCcw:Qz,X:Xz,Plus:e8,ArrowUpDown:t8,Trash2:r8}=To,n8=new Map,a8=new Set,k_=o.forwardRef((e,t)=>{const{tasks:r,archivedTasks:a,categories:s,types:i,priorities:l,taxonomyDisplayLabels:c,assigneeOptions:d=[],workstreams:f=[],initiatives:p=[],workspaceId:g=null,searchQuery:h,filterCategories:y,filterTypes:k,filterPriorities:v,filterStatus:C,filterAssignees:S=[],filterTaxonomies:w,sortBy:_,sortOrder:M,showArchive:R,taskScope:P,collapsedCategories:b,loadingTasks:$,filteredTasks:I,filteredArchive:E,groupedTasks:K,filteredDeletedTasks:U=[],groupedDeletedTasks:L={},copiedId:D,recentlyChangedTaskIds:ie=[],showTaskCardStatusLabel:H=!1,deletedTaskRecordByTaskId:be=n8,selectedDeletedRecordIds:Z=a8,onDeletedSelectionChange:me,trashControls:Ve,onSearchChange:Re,onFilterCategoriesChange:je,onFilterTypesChange:ye,onFilterPrioritiesChange:ue,onFilterStatusChange:ve,onFilterAssigneesChange:Pe,onTaxonomyFilterChange:Le,onSortByChange:se,onSortOrderChange:V,onShowArchiveChange:W,onTaskScopeChange:z,onClearFilters:fe,onToggleCategory:ke,onEditTask:Y,onUpdateTask:we,taskReferences:q,onCopyId:le,onToggleInProgress:$e,onToggleReview:re,onToggleComplete:de,onToggleCancel:He,onSetStatus:ce,onArchiveTask:pe,onBulkArchive:xe,onUnarchive:N,onDelete:X,onFetchArchive:Ae,onAddTaskToCategory:Te,supplementalTasks:he=[],taxonomies:ot}=e,We=Q.useMemo(()=>new Set(ie),[ie]),Xe=Q.useMemo(()=>new Map(f.map(Ue=>[Ue.id,Ue])),[f]),ae=Q.useMemo(()=>new Map(p.map(Ue=>[Ue.id,Ue])),[p]),G=Q.useCallback(Ue=>{const wt=Ue.workstreamId&&Xe.get(Ue.workstreamId)||null,kt=wt?.initiativeId&&ae.get(wt.initiativeId)||null;return{taskWorkstream:wt,taskInitiative:kt}},[ae,Xe]),Ie=Q.useMemo(()=>[...r,...a,...he],[a,he,r]),Fe=Q.useCallback((Ue,wt)=>we(Ue.id,{assignee:wt}),[we]),it=!!z,Me=z,qe=P??(R?"archived":"open"),ge=it?qe==="archived"?E:qe==="deleted"?U:I:I,_e=it?qe==="archived"?{Archived:E}:qe==="deleted"?L:K:K,Be=it?qe==="deleted"?"deleted":qe==="archived"?"archived":null:null,Ge=wg(h),F=h?Ge?`No task found for ${Ge.toUpperCase()}`:_t("taskList.noMatchingTasks"):qe==="archived"?"No archived tasks found.":qe==="deleted"?"No deleted tasks found.":_t("taskList.noActiveTasks"),Ne=Q.useMemo(()=>{const Ue=s.filter(kt=>!kt.disabled),wt=s.filter(kt=>kt.disabled&&Ie.some(rt=>rt.category===kt.value));return[...Ue,...wt.filter(kt=>!Ue.some(rt=>rt.value===kt.value))].map(kt=>({value:kt.value,label:kt.disabled?`${kt.label} (Legacy)`:kt.label}))},[s,Ie]),Ce=Q.useMemo(()=>{const Ue=i.filter(kt=>kt.status!=="retired"),wt=i.filter(kt=>kt.status==="retired"&&Ie.some(rt=>rt.type===kt.value));return[...Ue,...wt.filter(kt=>!Ue.some(rt=>rt.value===kt.value))].map(kt=>({value:kt.value,label:kt.status==="retired"?`${kt.label} (Retired)`:kt.label}))},[Ie,i]),ut=Q.useMemo(()=>$f(ot,Ie).filter(Ue=>Ue.filterEnabled!==!1).map(Ue=>({...Ue,options:Dv(Ue,Ie)})),[Ie,ot]),mt=Q.useMemo(()=>[{value:"created",label:_t("taskList.sortCreated")},{value:"updated",label:_t("taskList.sortUpdated")},{value:"priority",label:_t("taskList.sortPriority")},...RC(ot,Ie)],[Ie,_t,ot]);return n.jsxs("div",{className:x.viewTab,ref:t,children:[n.jsxs("div",{className:x.filterBar,children:[n.jsxs("div",{className:x.searchContainer,children:[n.jsx(rS,{size:16,className:x.searchIcon}),n.jsx("input",{type:"text",className:x.searchInput,placeholder:_t("taskList.searchPlaceholder"),value:h,onChange:Ue=>Re(Ue.target.value)}),h&&n.jsx("button",{className:x.clearSearchBtn,onClick:()=>Re(""),title:_t("taskList.clearSearchTitle"),children:n.jsx(Xz,{size:14})})]}),n.jsxs("div",{className:x.filterRow,children:[n.jsx(Gl,{label:c?.category||_t("taskList.categoryLabel"),options:Ne,selected:y,onChange:je,variant:"value"}),n.jsx(Gl,{label:c?.type||_t("taskList.typeLabel"),options:Ce,selected:k,onChange:ye,variant:"value"})]}),n.jsxs("div",{className:x.filterRow,children:[n.jsx(Gl,{label:c?.priority||_t("taskList.priorityLabel"),options:l,selected:v,onChange:ue,variant:"value"}),n.jsx(Gl,{label:_t("taskList.statusLabel"),options:Ui,selected:C,onChange:ve,variant:"value"}),n.jsx(Gl,{label:_t("taskList.assigneeLabel"),options:d,selected:S,onChange:Ue=>Pe?.(Ue),variant:"value",renderOptionContent:Ue=>{const wt=d.find(kt=>String(kt.value)===String(Ue.value));return wt?n.jsx(ju,{option:wt,size:20}):Ue.label}})]}),ut.map(Ue=>n.jsx(Gl,{label:Ue.status==="retired"?`${Ue.label} (Retired)`:Ue.label,options:Ue.options.map(wt=>({...wt,label:wt.status==="retired"?`${wt.label} (Retired)`:wt.label})),selected:w[Ue.id]||[],onChange:wt=>Le(Ue.id,wt),variant:"value"},Ue.id)),n.jsxs("div",{className:x.filterRow,children:[n.jsxs("div",{className:x.sortLabel,children:[n.jsx(t8,{size:14,style:{marginRight:"4px"}})," ",_t("taskList.sortByLabel")]}),n.jsx("select",{value:_,onChange:Ue=>se(Ue.target.value),className:`${x.filterSelect} ${x.filterSelectSort} `,children:mt.map(Ue=>n.jsx("option",{value:Ue.value,children:Ue.label},Ue.value))}),n.jsx("button",{className:`${x.resetFiltersBtn} ${x.sortDirectionBtnWidget}`,onClick:V,title:_t(M==="desc"?"taskList.sortDirectionDescTitle":"taskList.sortDirectionAscTitle"),children:M==="desc"?n.jsx(Xk,{size:14}):n.jsx(WS,{size:14})}),n.jsx("button",{className:x.resetFiltersBtn,onClick:fe,title:_t("taskList.resetFiltersTitle"),children:n.jsx(Qz,{size:14})})]}),n.jsxs("div",{className:`${x.filterRow} ${x.archiveRow} `,children:[qe==="open"?n.jsxs("button",{className:`${x.bulkArchiveBtn} ${r.some(Ue=>Ue.status==="done"||Ue.status==="cancelled")?"":x.disabledBtn} `,onClick:()=>r.some(Ue=>Ue.status==="done"||Ue.status==="cancelled")&&xe(),disabled:!r.some(Ue=>Ue.status==="done"||Ue.status==="cancelled"),title:r.some(Ue=>Ue.status==="done"||Ue.status==="cancelled")?_t("taskList.archiveAllTitle"):_t("taskList.noTasksToArchiveTitle"),children:[n.jsx(Jz,{size:12}),n.jsx("span",{children:_t("taskList.archiveFinished")})]}):qe==="deleted"?n.jsx("div",{}):n.jsx("div",{}),it?n.jsx(y_,{scope:qe,onScopeChange:Ue=>{Me?.(Ue),Ue==="archived"?W(!0):R&&W(!1)},className:x.archiveToggle}):n.jsxs("label",{className:x.archiveToggle,children:[n.jsx("input",{type:"checkbox","aria-label":"Archived",checked:R,onChange:Ue=>{W(Ue.target.checked),Ue.target.checked&&Ae()}}),n.jsx("span",{children:"Include Archive"})]})]}),qe==="deleted"&&Ve]}),$&&r.length===0?n.jsx("div",{className:x.loading,children:n.jsx(Ln,{size:24,className:x.spinner})}):ge.length===0&&!$?n.jsxs("div",{className:x.emptyState,children:[h?n.jsx(rS,{size:48}):qe==="deleted"?n.jsx(r8,{size:48}):n.jsx(Kz,{size:48}),n.jsx("p",{children:F})]}):n.jsx("div",{className:x.taskList,style:{opacity:$?.6:1,transition:"opacity 0.2s ease"},children:Object.entries(_e).map(([Ue,wt])=>{if(wt.length===0)return null;const kt=b[Ue];return n.jsxs("div",{className:x.categoryGroup,children:[n.jsx("div",{className:x.categoryHeader,onClick:()=>ke(Ue),children:n.jsxs("div",{className:x.categoryTitle,children:[kt?n.jsx(qz,{size:16}):n.jsx(Yz,{size:16}),(()=>{const rt=s.find(rr=>rr.label===Ue),Ht=rt?.icon&&Ru[rt.icon]?Ru[rt.icon]:Zz,lr=Jn(rt?.color)||"var(--color-purple, #8b5cf6)";return n.jsx(Ht,{size:16,className:x.categoryTitleIcon,style:{color:lr}})})(),Ue,n.jsxs("span",{className:x.categoryCount,children:["(",wt.length,")"]}),Te&&n.jsx("button",{className:x.kanbanQuickAdd,onClick:rt=>{rt.stopPropagation(),Te(Ue)},title:_t("taskList.addTaskToCategoryTitle",{category:Ue}),style:{marginLeft:"auto"},disabled:Be!==null,children:n.jsx(e8,{size:14})})]})}),!kt&&n.jsx("div",{className:x.categoryItems,children:wt.map(rt=>(()=>{const{taskWorkstream:Ht,taskInitiative:lr}=G(rt),rr=Be==="deleted"?be.get(rt.id):void 0;return n.jsx(Mf,{task:rt,taskWorkstream:Ht,taskInitiative:lr,workspaceId:g,searchQuery:h,copiedId:D,taxonomies:ot,types:i,priorities:l,assigneeOptions:d,workstreams:f,onClick:Y,onAssigneeChange:Fe,onWorkstreamChange:(wr,st)=>we(wr.id,{workstreamId:st}),taskReferences:q,onCopyId:le,onToggleInProgress:$e,onToggleReview:re,onToggleComplete:de,onToggleCancel:He,onSetStatus:ce,onArchiveTask:pe,onUnarchive:Be?N:void 0,onDelete:Be?X:void 0,categories:s,isRecentlyChanged:We.has(rt.id),readOnlyMode:Be,selectable:!!(rr&&me),selected:!!(rr&&Z.has(rr.id)),onSelectionChange:rr?wr=>me?.(rr.id,wr):void 0,showStatusLabel:H},rt.id)})())})]},Ue)})}),!it&&R&&E.length>0&&n.jsxs("div",{className:x.archiveList,children:[n.jsx("div",{className:x.archiveHeader,children:"Archived"}),E.map(Ue=>(()=>{const{taskWorkstream:wt,taskInitiative:kt}=G(Ue);return n.jsx(Mf,{task:Ue,taskWorkstream:wt,taskInitiative:kt,workspaceId:g,searchQuery:h,copiedId:D,isArchived:!0,types:i,assigneeOptions:d,workstreams:f,onClick:Y,onCopyId:le,onSetStatus:ce,onUnarchive:N,onDelete:X,deleteActionTitle:"Delete Permanently",taskReferences:q,categories:s,showStatusLabel:H},Ue.id)})())]})]})});k_.displayName="TaskList";const s8="_formNotice_1h100_1",o8="_markdownPreview_1h100_12",i8="_descriptionField_1h100_18",c8="_descriptionImageStatus_1h100_22",l8="_descriptionImageError_1h100_23",d8="_taskFormLifecycle_1h100_46",u8="_taskFormMetaDivider_1h100_51",p8="_taskFormMetaGrid_1h100_58",f8="_compactMetaGrid_1h100_59",m8="_compactMetaSection_1h100_65",h8="_compactMetaField_1h100_71",g8="_compactMetaFieldHint_1h100_85",y8="_workflowAssignmentField_1h100_89",k8="_workflowAssignmentLabels_1h100_93",v8="_workflowAssignmentControls_1h100_94",w8="_workflowAssignmentSelector_1h100_101",b8="_workflowAssignmentError_1h100_110",S8="_workflowExecutionToggle_1h100_121",A8="_workflowExecutionVersion_1h100_147",C8="_workflowExecutionPanel_1h100_168",_8="_workflowExecutionHeader_1h100_176",I8="_workflowExecutionEyebrow_1h100_195",T8="_workflowExecutionSummary_1h100_196",x8="_workflowExecutionSpinner_1h100_206",R8="_workflowExecutionSteps_1h100_239",P8="_workflowExecutionStepCurrent_1h100_261",E8="_workflowExecutionStepMarker_1h100_266",N8="_workflowExecutionStepCompleted_1h100_277",j8="_workflowExecutionStepState_1h100_278",M8="_workflowExecutionStepBody_1h100_282",D8="_workflowExecutionStepTitle_1h100_286",L8="_workflowExecutionStepMeta_1h100_308",O8="_workflowExecutionEmpty_1h100_310",B8="_formFieldsetReset_1h100_350",W8="_formLayoutWithSidebar_1h100_357",$8="_formMainColumn_1h100_365",F8="_activitySidebar_1h100_372",U8="_activitySidebarHeader_1h100_382",z8="_activitySidebarTitle_1h100_389",H8="_taskFormDateRow_1h100_398",V8="_taskFormDateLabel_1h100_405",G8="_taskFormDateValue_1h100_413",K8="_taskFormMetaStack_1h100_421",q8="_taskFormMetaActor_1h100_427",Y8="_taskFormDateWarning_1h100_433",Z8="_taskFormDateError_1h100_439",J8="_helpHeader_1h100_445",Q8="_helpClose_1h100_456",X8="_markdownHelp_1h100_470",e7="_helpGrid_1h100_479",t7="_helpGridItem_1h100_485",r7="_settingsHint_1h100_497",n7="_sectionBlock_1h100_503",a7="_specialistSectionWithoutTaxonomies_1h100_509",s7="_softSectionSurface_1h100_514",o7="_stackedList_1h100_521",i7="_stackedListSpaced_1h100_526",c7="_checklistInputGroup_1h100_530",l7="_checklistRow_1h100_537",d7="_checklistRowDragging_1h100_546",u7="_checklistHandleBtn_1h100_550",p7="_checklistCheckboxBtn_1h100_573",f7="_checklistCheckboxBtnChecked_1h100_593",m7="_checklistItemText_1h100_598",h7="_checklistItemTextCompleted_1h100_606",g7="_checklistRemoveBtn_1h100_611",y7="_specialistChip_1h100_643",k7="_specialistChipActive_1h100_666",v7="_commentPanel_1h100_676",w7="_activitySidebarPanel_1h100_690",b7="_commentThread_1h100_698",S7="_activityTimelineRegion_1h100_702",A7="_activityLoadingThread_1h100_711",C7="_newActivityNotice_1h100_715",_7="_newActivityButton_1h100_723",I7="_emptyComments_1h100_767",T7="_activitySkeletonItem_1h100_781",x7="_activitySkeletonMeta_1h100_787",R7="_activitySkeletonBody_1h100_788",P7="_commentInputArea_1h100_912",E7="_commentInput_1h100_912",N7="_sendCommentBtn_1h100_955",j7="_taxonomyFieldsGrid_1h100_998",M7="_markdownPreviewContainer_1h100_1005",D7="_descriptionSurface_1h100_1010",gt={formNotice:s8,markdownPreview:o8,descriptionField:i8,descriptionImageStatus:c8,descriptionImageError:l8,taskFormLifecycle:d8,taskFormMetaDivider:u8,taskFormMetaGrid:p8,compactMetaGrid:f8,compactMetaSection:m8,compactMetaField:h8,compactMetaFieldHint:g8,workflowAssignmentField:y8,workflowAssignmentLabels:k8,workflowAssignmentControls:v8,workflowAssignmentSelector:w8,workflowAssignmentError:b8,workflowExecutionToggle:S8,workflowExecutionVersion:A8,workflowExecutionPanel:C8,workflowExecutionHeader:_8,workflowExecutionEyebrow:I8,workflowExecutionSummary:T8,workflowExecutionSpinner:x8,workflowExecutionSteps:R8,workflowExecutionStepCurrent:P8,workflowExecutionStepMarker:E8,workflowExecutionStepCompleted:N8,workflowExecutionStepState:j8,workflowExecutionStepBody:M8,workflowExecutionStepTitle:D8,workflowExecutionStepMeta:L8,workflowExecutionEmpty:O8,formFieldsetReset:B8,formLayoutWithSidebar:W8,formMainColumn:$8,activitySidebar:F8,activitySidebarHeader:U8,activitySidebarTitle:z8,taskFormDateRow:H8,taskFormDateLabel:V8,taskFormDateValue:G8,taskFormMetaStack:K8,taskFormMetaActor:q8,taskFormDateWarning:Y8,taskFormDateError:Z8,helpHeader:J8,helpClose:Q8,markdownHelp:X8,helpGrid:e7,helpGridItem:t7,settingsHint:r7,sectionBlock:n7,specialistSectionWithoutTaxonomies:a7,softSectionSurface:s7,stackedList:o7,stackedListSpaced:i7,checklistInputGroup:c7,checklistRow:l7,checklistRowDragging:d7,checklistHandleBtn:u7,checklistCheckboxBtn:p7,checklistCheckboxBtnChecked:f7,checklistItemText:m7,checklistItemTextCompleted:h7,checklistRemoveBtn:g7,specialistChip:y7,specialistChipActive:k7,commentPanel:v7,activitySidebarPanel:w7,commentThread:b7,activityTimelineRegion:S7,activityLoadingThread:A7,newActivityNotice:C7,newActivityButton:_7,emptyComments:I7,activitySkeletonItem:T7,activitySkeletonMeta:x7,activitySkeletonBody:R7,commentInputArea:P7,commentInput:E7,sendCommentBtn:N7,taxonomyFieldsGrid:j7,markdownPreviewContainer:M7,descriptionSurface:D7};function Qy({label:e,value:t,options:r,onChange:a,type:s="priority",hideLabel:i=!1,showSelectedLabel:l=!0}){const c=r.find(d=>String(d.value)===String(t));return n.jsxs("div",{className:x.field,children:[!i&&n.jsxs("div",{className:x.labelRow,children:[n.jsx("label",{className:x.label,children:e}),l&&c&&n.jsx("span",{className:x.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})]}),n.jsx("div",{className:x.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 n.jsx("button",{type:"button",className:`${x.levelOption} ${g?x.levelOptionFilled:""} ${g?x[`levelOption_${s}_${d.value}`]:""} ${h?x.levelOptionSelected:""}`,onClick:()=>a(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 nS=new Map;function L7(e){const t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?null:t}function O7(e,t){const r=Object.entries(t).sort(([a],[s])=>a.localeCompare(s));return JSON.stringify([e,r])}function Xh(e,t,r){const a=L7(e);if(!a)return"";const s=r??fA(),i=O7(s,t);let l=nS.get(i);return l||(l=new Intl.DateTimeFormat(s,t),nS.set(i,l)),l.format(a)}function B7(e){return new Promise((t,r)=>{const a=new FileReader;a.onload=()=>t(String(a.result||"")),a.onerror=()=>r(a.error||new Error("Failed to read file")),a.readAsDataURL(e)})}async function dh(e,t){try{const a=await(typeof e.clone=="function"?e.clone():e).json().catch(()=>null),s=String(a?.error||a?.message||"").trim();if(s)return s}catch{}try{const a=(await(typeof e.clone=="function"?e.clone():e).text().catch(()=>"")).trim();if(a)return a}catch{}return t}async function W7(e,t){const r=String(t.workspaceId||"").trim(),a=String(t.ownerId||"").trim(),s={ownerType:t.ownerType,ownerId:a||null,taskId:t.ownerType==="task"&&a||null},i=globalThis.crypto?.randomUUID?.()||`context-upload-${Date.now()}-${Math.random().toString(16).slice(2)}`,l=()=>({"Content-Type":"application/json",...r?{"x-taskforce-workspace-id":r}:{},"x-taskforce-operation-id":i});let c=null,d=null;const f=await fetch("/api/taskforce/context-upload/init",{method:"POST",headers:l(),body:JSON.stringify({originalName:e.name,mimeType:e.type||"application/octet-stream",size:e.size,...s,workspaceId:r||null})});if(f.ok){const p=await f.json();if(p?.success&&typeof p?.uploadUrl=="string"&&typeof p?.path=="string"){let g=!1;try{const h=await fetch(p.uploadUrl,{method:String(p.method||"PUT"),headers:p.headers||{"Content-Type":e.type||"application/octet-stream"},body:e});if(!h.ok)d=await dh(h,`Upload failed for ${e.name}`);else{g=!0;const y=await fetch("/api/taskforce/context-upload/finalize",{method:"POST",headers:l(),body:JSON.stringify({relativePath:p.relativePath,mimeType:e.type||"application/octet-stream",originalName:e.name,size:e.size,...s,workspaceId:r||null})});if(!y.ok)throw new Error(await dh(y,`Upload failed for ${e.name}`));c=await y.json().catch(()=>null)}}catch(h){if(g)throw h;d=h instanceof Error?h.message:`Upload failed for ${e.name}`}}else p?.success&&typeof p?.path=="string"&&(c=p)}else d=await dh(f,`Upload failed for ${e.name}`);if(!c){const p=await B7(e),g=await fetch("/api/taskforce/context-upload",{method:"POST",headers:l(),body:JSON.stringify({file:p,originalName:e.name,...s,workspaceId:r||null})});if(!g.ok){const h=await dh(g,`Upload failed for ${e.name}`);throw new Error(d&&d!==h?`${h} (${d})`:h)}c=await g.json()}if(!c?.success||!c?.path)throw new Error(`Upload failed for ${e.name}`);return{path:c.path,fsPath:c.fsPath,caption:typeof c.caption=="string"&&c.caption.trim().length>0?c.caption:e.name,displayName:typeof c.displayName=="string"?c.displayName:void 0,originalFilename:typeof c.originalFilename=="string"?c.originalFilename:e.name,assetId:typeof c.assetId=="string"?c.assetId:void 0,referenceNumber:typeof c.referenceNumber=="number"?c.referenceNumber:null,referenceLabel:typeof c.referenceLabel=="string"?c.referenceLabel:void 0,taskId:t.ownerType==="task"&&typeof c.taskId=="string"?c.taskId:null,timestamp:typeof c.timestamp=="string"&&c.timestamp.trim().length>0?c.timestamp:new Date().toISOString()}}class bc extends Error{constructor(t,r){super(t),this.code=r,this.name="WorkflowManagerApiError"}}async function Yo(e,t,r){const a=new Headers(t?.headers||void 0);t?.body&&a.set("Content-Type","application/json");const s=String(r?.workspaceId||"").trim();s&&s!=="default"&&a.set("x-taskforce-workspace-id",s);const i=await ux(e,{credentials:"include",...t,headers:a},r?.apiBaseUrl),l=await i.json().catch(()=>({}));if(!i.ok||l.success===!1)throw new bc(String(l.error||`Workflow request failed (${i.status}).`),l.code);return l}async function $7(e){const t=await Yo("/api/taskforce/workflows",void 0,e);return Array.isArray(t.workflows)?t.workflows:[]}async function uh(e,t){return(await Yo(`/api/taskforce/tasks/${encodeURIComponent(e)}/workflow`,void 0,t)).assignment||null}async function F7(e,t){if(t?.runtimeMode!=="local"||!e.assignmentSnapshot)return e.taskSnapshot||null;try{return(await Yo(`/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 U7(e,t,r,a,s){const i=await Yo(`/api/taskforce/workflow-executions/${encodeURIComponent(e)}/complete-step?taskforceCloud=1`,{method:"POST",body:JSON.stringify({idempotencyKey:t,...a?{evidenceCommentId:a}:{},...s?{expectedStepId:s}:{}})},r);if(!i.result)throw new bc("The workflow step result was not returned.");let l=i.result.taskSnapshot||null;return i.result.assignmentSnapshot&&i.result.route!=="local-outbox"&&(l=await F7({executionId:e,taskId:i.result.execution.taskId,assignmentSnapshot:i.result.assignmentSnapshot,taskSnapshot:i.result.taskSnapshot,taskAuthoritative:i.result.taskAuthoritative},r)),i.result.taskSnapshot&&jN({workspaceId:r?.workspaceId,taskId:i.result.taskSnapshot.id,reason:"workflow-step",...l?{authoritativeTask:l}:{}}),i.result}async function aS(e,t,r){const a=await Yo(`/api/taskforce/tasks/${encodeURIComponent(e)}/workflow`,{method:"POST",body:JSON.stringify(t)},r);if(!a.assignment)throw new bc("The workflow assignment was not returned.");return a.assignment}async function z7(e,t,r){const a=await Yo(`/api/taskforce/tasks/${encodeURIComponent(e)}/workflow`,{method:"PUT",body:JSON.stringify(t)},r);if(!a.assignment)throw new bc("The workflow assignment was not returned.");return a.assignment}async function H7(e,t){await Yo(`/api/taskforce/tasks/${encodeURIComponent(e)}/workflow`,{method:"DELETE"},t)}async function DX(e){const t=await Yo(`/api/taskforce/workflows/${encodeURIComponent(e)}`);if(!t.workflow)throw new bc("Workflow details were not returned.");return t.workflow}async function LX(e){const t=await Yo("/api/taskforce/workflows",{method:"POST",body:JSON.stringify(e)});if(!t.workflow)throw new bc("The new workflow was not returned.");return t.workflow}async function OX(e,t){const r=await Yo(`/api/taskforce/workflows/${encodeURIComponent(e)}/draft`,{method:"PUT",body:JSON.stringify(t)});if(!r.workflow)throw new bc("The saved workflow draft was not returned.");return r.workflow}async function BX(e){const t=await Yo(`/api/taskforce/workflows/${encodeURIComponent(e)}/publish`,{method:"POST"});if(!t.workflow)throw new bc("The published workflow was not returned.");return t.workflow}async function WX(e){const t=await Yo(`/api/taskforce/workflows/${encodeURIComponent(e)}/draft`,{method:"POST"});if(!t.workflow)throw new bc("The new workflow draft was not returned.");return t.workflow}const Xy="__none__";function V7(e){return e.charAt(0).toUpperCase()+e.slice(1)}function G7({taskId:e,workspaceId:t,taskStatus:r,taskUpdatedAt:a,comments:s=[],assigneeOptions:i=[],currentActorId:l,apiBaseUrl:c,runtimeMode:d="local",disabled:f=!1,onActivatePendingWorkflow:p,onActiveOwnerChange:g}){const[h,y]=Q.useState([]),[k,v]=Q.useState(null),[C,S]=Q.useState(!0),[w,_]=Q.useState(!1),[M,R]=Q.useState(!1),[P,b]=Q.useState(!1),[$,I]=Q.useState(0),[E,K]=Q.useState(""),U=Q.useRef(0),L=Q.useRef(null),D=Q.useRef({taskId:e,revision:`${e}:${a||""}`}),ie=Q.useMemo(()=>({workspaceId:t,apiBaseUrl:c,runtimeMode:d}),[c,d,t]);Q.useEffect(()=>{const ce=++U.current;return S(!0),_(!1),R(!1),K(""),y([]),v(null),b(!1),I(0),L.current=null,Promise.allSettled([$7(ie),uh(e,ie)]).then(([pe,xe])=>{ce===U.current&&(pe.status==="fulfilled"&&y(pe.value.filter(N=>N.template.status==="active"&&!!N.latestPublishedVersion)),xe.status==="fulfilled"&&v(xe.value),xe.status==="rejected"?K(String(xe.reason?.message||"Unable to load workflow assignment.")):!xe.value&&pe.status==="rejected"&&K(String(pe.reason?.message||"Unable to load workflows.")),S(!1))}),()=>{U.current+=1}},[ie,e]);const H=k?.execution.taskId===e?k:null,be=H?["pending","running","paused"].includes(H.execution.status):!1,Z=be?H:null,me=H&&!h.some(({template:ce})=>ce.id===H.template.id)?[{template:H.template,draftVersionId:null,latestPublishedVersion:{id:H.version.id,versionNumber:H.version.versionNumber,publishedAt:H.version.publishedAt}},...h]:h,Ve=[...!H||be?[{value:Xy,label:"None"}]:[],...me.map(({template:ce})=>({value:ce.id,label:ce.name}))],Re=Z?.execution.status==="pending",je=!f&&!C&&!w&&(!Z||Re),ye=H?.template.id||Xy,ue=Q.useMemo(()=>[...H?.steps||[]].sort((ce,pe)=>ce.position-pe.position),[H?.steps]),ve=H?.execution.currentStepId&&ue.find(ce=>ce.id===H.execution.currentStepId)||null,Pe=H?.execution.currentStepId?ue.findIndex(ce=>ce.id===H.execution.currentStepId):-1,Le=H?.execution.status==="completed",se=Q.useMemo(()=>new Set((H?.events||[]).filter(ce=>ce.eventType==="step-completed"&&ce.stepId).map(ce=>ce.stepId)),[H?.events]),V=Z?.execution.status==="pending"?(ue.find(ce=>ce.isRequired)||ue[0])?.id:null,W=`task-workflow-execution-${e}`,z=C?"Loading...":E&&!H?"Unavailable":H?V7(H.execution.status):"Not assigned",fe=H?.version.versionNumber?`V${H.version.versionNumber}`:null,ke=z.replace(/\.+$/,""),Y=H?`Status: ${ke}${fe?`, ${fe}`:""}. ${P?"Hide":"View"} workflow execution.`:`Status: ${ke}.`,we=!f&&!M&&Z?.execution.status==="running"&&ve?.ownerType==="user"&&!!l&&ve.ownerId===l,q=Le&&h.find(({template:ce})=>ce.id===H?.template.id)||null,le=!!(!f&&!w&&q?.latestPublishedVersion);Q.useEffect(()=>{const ce=Z?.execution.id||null;if(!ce||Z?.execution.status!=="pending"||r!=="in-progress"||!p||L.current===ce)return;L.current=ce;const pe=U.current;_(!0),K(""),Promise.resolve(p()).then(async()=>{const xe=await uh(e,ie);if(pe!==U.current)return;if(xe?.execution.status==="pending")throw new Error("Workflow is still pending. Retry to start it.");const N=xe?.steps.find(X=>X.id===xe.execution.currentStepId);N?.ownerId&&g?.(N.ownerId),v(xe)}).catch(xe=>{pe===U.current&&(L.current=null,K(String(xe?.message||"Unable to start workflow.")))}).finally(()=>{pe===U.current&&_(!1)})},[$,Z,p,g,ie,e,r]);const $e=Q.useCallback(ce=>ce?Tf(ce,i):"Unassigned",[i]);Q.useEffect(()=>{D.current.taskId!==e&&(D.current={taskId:e,revision:`${e}:${a||""}`})},[e,a]),Q.useEffect(()=>{const ce=`${e}:${a||""}`;if(ce===D.current.revision||r!=="in-progress"||!Re)return;D.current={taskId:e,revision:ce};const pe=U.current;uh(e,ie).then(xe=>{pe===U.current&&v(xe)}).catch(xe=>{pe===U.current&&K(String(xe?.message||"Unable to refresh workflow assignment."))})},[Re,ie,e,r,a]),Q.useEffect(()=>{if(typeof window>"u")return;const ce=pe=>{const xe=pe.detail;if(xe?.reason!=="workflow-step")return;const N=String(xe.workspaceId||"").trim(),X=String(t||"").trim();if(X&&N!==X||String(xe.taskId||"").trim()!==e)return;const Te=++U.current;uh(e,ie).then(he=>{Te===U.current&&(v(he),K(""))}).catch(he=>{Te===U.current&&K(String(he?.message||"Unable to refresh workflow assignment."))})};return window.addEventListener(cd,ce),()=>window.removeEventListener(cd,ce)},[ie,e,t]);const re=async ce=>{const pe=String(ce);if(!je||pe===ye)return;const xe=U.current;_(!0),K("");try{if(pe===Xy){if(await H7(e,ie),xe!==U.current)return;v(null);return}const N=h.find(({template:he})=>he.id===pe),X=N?.latestPublishedVersion;if(!N||!X)return;const Ae={workflowTemplateId:N.template.id,workflowVersionId:X.id},Te=Z?await z7(e,Ae,ie):await aS(e,Ae,ie);if(xe!==U.current)return;v(Te)}catch(N){if(xe!==U.current)return;K(String(N?.message||"Unable to assign workflow."))}finally{xe===U.current&&_(!1)}},de=async()=>{if(!Z||!we)return;const ce=[...Z.events||[]].reverse().find(N=>N.eventType==="step-started"&&N.stepId===ve?.id)?.createdAt||Z.execution.startedAt||Z.execution.createdAt,pe=ve?.requiresCommentEvidence&&[...s].reverse().find(N=>N.author===l&&N.text.trim().length>0&&Date.parse(N.timestamp)>=Date.parse(ce))||null;if(ve?.requiresCommentEvidence&&!pe){K("Add a task comment for this workflow step before completing it.");return}const xe=U.current;R(!0),K("");try{const N=typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`,X=await U7(Z.execution.id,N,ie,pe?.id,ve?.id);if(xe!==U.current)return;v(Ae=>Ae&&{...Ae,execution:X.execution,events:X.events})}catch(N){if(xe!==U.current)return;K(String(N?.message||"Unable to complete workflow step."))}finally{xe===U.current&&R(!1)}},He=async()=>{const ce=q?.latestPublishedVersion;if(!le||!q||!ce)return;const pe=U.current;_(!0),K("");try{const xe=await aS(e,{workflowTemplateId:q.template.id,workflowVersionId:ce.id},ie);if(pe!==U.current)return;v(xe)}catch(xe){if(pe!==U.current)return;K(String(xe?.message||"Unable to run workflow again."))}finally{pe===U.current&&_(!1)}};return n.jsxs("div",{className:`${x.field} ${gt.compactMetaField} ${gt.workflowAssignmentField}`,children:[n.jsxs("div",{className:gt.workflowAssignmentLabels,children:[n.jsx("label",{id:"task-workflow-label",className:x.label,children:"Workflow"}),n.jsx("span",{id:"task-workflow-status-label",className:x.label,children:"Status"})]}),n.jsxs("div",{className:gt.workflowAssignmentControls,children:[n.jsx(qo,{value:ye,options:Ve,onChange:ce=>{re(ce)},placeholder:C?"Loading workflows...":"None",ariaLabelledBy:"task-workflow-label",disabled:!je||Ve.length===1&&!Z,portalPanel:!0,panelMinWidth:280,panelAlign:"start",className:gt.workflowAssignmentSelector}),n.jsxs("button",{type:"button",className:gt.workflowExecutionToggle,onClick:()=>b(ce=>!ce),"aria-expanded":H?P:void 0,"aria-controls":H?W:void 0,"aria-label":Y,disabled:!H,children:[n.jsxs("span",{children:[z,fe?n.jsxs("span",{className:gt.workflowExecutionVersion,children:[" · ",fe]}):null]}),H?P?n.jsx(dd,{size:13,"aria-hidden":"true"}):n.jsx(sd,{size:13,"aria-hidden":"true"}):null]})]}),H&&P?n.jsxs("section",{id:W,className:gt.workflowExecutionPanel,"aria-label":"Workflow execution",children:[n.jsxs("div",{className:gt.workflowExecutionHeader,children:[n.jsxs("div",{children:[n.jsx("span",{className:gt.workflowExecutionEyebrow,children:"Workflow execution"}),n.jsx("strong",{children:H.version.name||H.template.name})]}),Le&&q?n.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{He()},disabled:!le,children:[w?n.jsx(Ln,{size:14,className:gt.workflowExecutionSpinner,"aria-hidden":"true"}):n.jsx(mi,{size:14,"aria-hidden":"true"}),"Run again"]}):null]}),n.jsxs("dl",{className:gt.workflowExecutionSummary,children:[n.jsxs("div",{children:[n.jsx("dt",{children:"Current step"}),n.jsx("dd",{children:Le?"Completed":ve?.name||(H.execution.status==="pending"?"Not started":"Not available")})]}),n.jsxs("div",{children:[n.jsx("dt",{children:"Owner"}),n.jsx("dd",{children:!Le&&ve?$e(ve.ownerId):"Unassigned"})]}),n.jsxs("div",{children:[n.jsx("dt",{children:"Version"}),n.jsx("dd",{children:H.version.versionNumber?`V${H.version.versionNumber}`:"Published"})]})]}),n.jsx("ol",{className:`${gt.workflowExecutionSteps} tf-scrollbar`,children:ue.map((ce,pe)=>{const xe=se.has(ce.id),N=!Le&&ce.id===H.execution.currentStepId,X=!xe&&!N&&Pe>=0&&pe<Pe,Ae=[xe?gt.workflowExecutionStepCompleted:"",N?gt.workflowExecutionStepCurrent:""].filter(Boolean).join(" ")||void 0;return n.jsxs("li",{className:Ae,"aria-current":N?"step":void 0,children:[n.jsx("span",{className:gt.workflowExecutionStepMarker,"aria-hidden":"true",children:xe?n.jsx(fT,{size:16}):N?n.jsx(mT,{size:17}):n.jsx(hT,{size:15})}),n.jsxs("span",{className:gt.workflowExecutionStepBody,children:[n.jsxs("span",{className:gt.workflowExecutionStepTitle,children:[n.jsx("span",{children:pe+1}),n.jsx("strong",{children:ce.name})]}),n.jsxs("span",{className:gt.workflowExecutionStepMeta,children:[$e(ce.ownerId)," · ",ce.isRequired?"Required":"Optional"]})]}),n.jsx("span",{className:gt.workflowExecutionStepState,children:xe?"Completed":X?"Skipped":N&&(we||M)?n.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{de()},disabled:M,children:[M?n.jsx(Ln,{size:14,className:gt.workflowExecutionSpinner,"aria-hidden":"true"}):n.jsx(hi,{size:14,"aria-hidden":"true"}),"Complete Step"]}):N?"Current":ce.id===V?"Starts here":"Upcoming"})]},ce.id)})}),ue.length===0?n.jsx("p",{className:gt.workflowExecutionEmpty,children:"No steps are available for this workflow version."}):null]}):null,E?n.jsxs("span",{className:gt.workflowAssignmentError,role:"alert",children:[E,Re&&r==="in-progress"&&p?n.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>I(ce=>ce+1),disabled:w,children:"Retry"}):null]}):null]})}const K7="_header_g17dz_1",q7="_title_g17dz_15",Y7="_actions_g17dz_24",Z7="_toggle_g17dz_30",ph={header:K7,title:q7,actions:Y7,toggle:Z7};function gf({label:e,count:t,showZeroCount:r=!1,actions:a,expanded:s,expandedTitle:i,collapsedTitle:l,onToggle:c,className:d="",controlsId:f}){const p=typeof t=="number"&&(r||t>0),g=s?dd:sd;return n.jsxs("div",{className:`${ph.header} ${d}`.trim(),children:[n.jsxs("span",{className:ph.title,children:[e,p?` (${t})`:""]}),a?n.jsx("span",{className:ph.actions,children:a}):null,n.jsx("button",{type:"button",className:`tf-control-icon ${ph.toggle}`.trim(),onClick:c,"aria-expanded":s,"aria-controls":f,"aria-label":s?i:l,title:s?i:l,children:n.jsx(g,{size:14,"aria-hidden":"true"})})]})}const J7="system:unverified-comment-import",v_="Imported comment",w_="This comment was recovered during synchronization, but its author could not be verified.";function b_(e){return String(e||"").trim().toLowerCase()===J7}const ek=280,Q7=48,X7=Q.lazy(()=>Po(()=>import("./EntityActivityTimeline-pJ2ZjZ-k.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.EntityActivityTimeline}))),e9=Q.lazy(()=>Po(()=>import("./TaskContextUpload-bl4fOOUz.js"),__vite__mapDeps([7,1,8,2,3,4,5,9])).then(e=>({default:e.TaskContextUpload})));function t9({count:e}){const t=Math.max(2,Math.min(e||3,4));return n.jsx("div",{className:`${gt.commentThread} ${gt.activityLoadingThread}`.trim(),"aria-busy":"true","aria-live":"polite","aria-label":"Loading activity",children:Array.from({length:t},(r,a)=>n.jsxs("div",{className:gt.activitySkeletonItem,children:[n.jsx("div",{className:gt.activitySkeletonMeta}),n.jsx("div",{className:gt.activitySkeletonBody})]},a))})}function r9({id:e,item:t,onToggle:r,onRemove:a}){const{attributes:s,listeners:i,setNodeRef:l,transform:c,transition:d,isDragging:f}=iv({id:e}),p={transform:dg.Transform.toString(c),transition:d,opacity:f?.88:1};return n.jsxs("div",{ref:l,style:p,className:`${gt.checklistRow} ${f?gt.checklistRowDragging:""}`.trim(),children:[n.jsx("button",{type:"button",className:gt.checklistHandleBtn,title:"Reorder checklist item","aria-label":"Reorder checklist item",...s,...i,children:n.jsx(ev,{size:14})}),n.jsx("button",{type:"button",className:`${gt.checklistCheckboxBtn} ${t.isCompleted?gt.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?n.jsx(hi,{size:14,strokeWidth:2.1}):null}),n.jsx("span",{className:`${gt.checklistItemText} ${t.isCompleted?gt.checklistItemTextCompleted:""}`.trim(),children:t.title}),n.jsx("button",{type:"button",className:gt.checklistRemoveBtn,onClick:a,title:"Remove checklist item","aria-label":"Remove checklist item",children:n.jsx(fo,{size:15,strokeWidth:1.9})})]})}function S_(e){const{editingTaskId:t,initialActivityEntryId:r,title:a,description:s,category:i,type:l,priority:c,complexity:d,manualComplexityEnabled:f=!1,assignee:p,scheduledDate:g,dueDate:h,checklistItems:y,comments:k,newCommentText:v,contextFiles:C,currentWorkspaceId:S,currentActorId:w,apiBaseUrl:_,runtimeMode:M="local",showImageReviews:R=!1,descriptionFocused:P,showMarkdownHelp:b,checklistEnabled:$=!0,formTaxonomies:I,onTaxonomyChange:E,onOpenSettings:K,categories:U,types:L,priorities:D,taxonomyDisplayLabels:ie,assigneeOptions:H,taxonomies:be,workstreams:Z=[],initiatives:me=[],copiedId:Ve,onTitleChange:Re,onTitleDraftChange:je,onDescriptionChange:ye,onDescriptionDraftChange:ue,onCategoryChange:ve,onTypeChange:Pe,onPriorityChange:Le,onComplexityChange:se,onAssigneeChange:V,onScheduledDateChange:W,onDueDateChange:z,onChecklistItemsChange:fe,onNewCommentTextChange:ke,onDescriptionFocusedChange:Y,onShowMarkdownHelpChange:we,onSubmit:q,onAddComment:le,onAddContextFile:$e,onRemoveContextFile:re,onUpdateContextCaption:de,onOpenContextImage:He,onCopyId:ce,onToggleInProgress:pe,onToggleReview:xe,onToggleComplete:N,onToggleCancel:X,onSetStatus:Ae,onArchiveTask:Te,onUnarchive:he,taskReferences:ot,currentTask:We,commentsEndRef:Xe}=e,ae=je||Re,G=ue||ye,Ie=hs(We),Fe=Q.useRef(null),it=Q.useRef(null),Me=Q.useRef(s),qe=Q.useRef(t),ge=`${String(S||"").trim()}\0${t||""}`,_e=Q.useRef(ge),Be=Q.useRef(0);_e.current!==ge&&(_e.current=ge,Be.current+=1);const[Ge,F]=Q.useState(!1),[Ne,Ce]=Q.useState(null);Q.useLayoutEffect(()=>{const J=qe.current!==t;Fe.current&&(J||document.activeElement!==Fe.current)&&(Fe.current.value=a),it.current&&(J||document.activeElement!==it.current)&&(it.current.value=s,Me.current=s),qe.current=t},[s,t,a]),Q.useEffect(()=>(F(!1),Ce(null),()=>{Be.current+=1}),[ge]);const ut=Q.useMemo(()=>{if(!He)return;const J=new Map;return C.forEach(Qe=>{if(typeof Qe=="string")return;const St=Nf(Qe);St&&J.set(St.toLowerCase(),Qe)}),{resolve:Qe=>J.get(Qe.toLowerCase())||null,activate:He}},[C,He]),mt=Q.useMemo(()=>lN(be,I),[be,I]),Ue=Q.useMemo(()=>{const J=U.find(Ft=>Ft.value===bu),Qe={value:bu,label:J?.label||ug,icon:J?.icon||"HelpCircle",color:J?.color||"var(--text-secondary)"},St=U.find(Ft=>Ft.value===i),at=U.filter(Ft=>!Ft.disabled||Ft.value===St?.value).filter(Ft=>Ft.value!==bu).map(Ft=>({value:Ft.value,label:Ft.disabled?`${Ft.label} (Legacy)`:Ft.label,icon:Ft.icon,color:Ft.color}));return[Qe,...at]},[U,i]),wt=Q.useMemo(()=>{const J=L.find(St=>St.value===l);return L.filter(St=>St.status!=="retired"||St.value===J?.value).map(St=>({value:St.value,label:St.status==="retired"?`${St.label} (Retired)`:St.label,icon:St.icon||"Box",color:St.color||"violet-500"}))},[L,l]),kt=J=>J&&Xh(J,{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"})||null,rt=kt(We?.createdAt),Ht=kt(We?.updatedAt||We?.createdAt),lr=kt(We?.completedAt),rr=Q.useMemo(()=>{const J=new Date,Qe=J.getFullYear(),St=String(J.getMonth()+1).padStart(2,"0"),Xt=String(J.getDate()).padStart(2,"0");return`${Qe}-${St}-${Xt}`},[]),wr=!!(h&&g&&h<g),st=!!(h&&h<rr&&(!We||We.status!=="done"&&We.status!=="cancelled")),zt=y.filter(J=>J.isCompleted).length,[Lt,Mt]=Q.useState(""),[Ee,ct]=Q.useState(!0),[lt,Je]=Q.useState(!1),nt=Q.useRef(null),Ct=Q.useRef(null),Rt=!!We?.isArchived,Dt=!!We?.isDeleted,It=Rt||Dt,Qt=Q.useRef(null),ir=Q.useRef(null),dr=Q.useRef(null),sr=Q.useRef(null),pr=Q.useRef(null),Jr=Q.useRef(null),Tr=Q.useRef(null),br=Q.useRef(!0),[ur,Qr]=Q.useState(!1),Hr=Q.useRef(new Map),Gt=Q.useRef(void 0),bt=Q.useRef(0),gr=rv(Cf(nv,{activationConstraint:{distance:6}}));Q.useLayoutEffect(()=>{const J=Qt.current;if(!J)return;const Qe=Gt.current;if(Qe===t)return;Qe!==void 0&&Hr.current.set(Qe,bt.current);const St=Hr.current.get(t)??0;J.scrollTop=St,bt.current=St,Gt.current=t},[t]),Q.useLayoutEffect(()=>{ct(!0)},[t]),Q.useEffect(()=>{lt&&nt.current?.focus()},[lt]),Q.useEffect(()=>{Je(!1),Mt("")},[t]),Q.useEffect(()=>{Ee||(Je(!1),Mt(""))},[Ee]);const u=Q.useCallback(J=>{const Qe=J.currentTarget.scrollTop;bt.current=Qe,Hr.current.set(t,Qe)},[t]),ht=()=>{const J=Lt.trim();if(!J)return;const Qe=new Date().toISOString();fe([...y,{id:`checklist-draft-${Qe}-${y.length}`,taskId:t||"",title:J,isCompleted:!1,order:y.length,createdAt:Qe,updatedAt:Qe}]),Mt(""),Je(!1),window.requestAnimationFrame(()=>Ct.current?.focus())},yr=()=>{if(lt){nt.current?.focus();return}Ee||ct(!0),Je(!0)},Er=(J=!0)=>{Je(!1),Mt(""),J&&window.requestAnimationFrame(()=>Ct.current?.focus())},mn=async(J,Qe,St)=>{if(J.length===0||Ge)return;const Xt=Be.current,at=t,Ft=()=>Be.current===Xt&&_e.current===ge;F(!0),Ce(null);const Lr=[];let Nr=0,Rr=null;for(const Kt of J){if(Kt.size>10*1024*1024){Nr+=1,Rr="Images must be 10 MB or smaller.";continue}try{const Bn=await W7(Kt,{ownerType:"task",ownerId:at,workspaceId:S});if(!Ft())return;const Xn=Nf(Bn);if(!Xn)throw new Error("The uploaded image did not receive an image reference.");$e(Bn),nP({workspaceId:String(S||"").trim()||"default",ownerType:"task",ownerId:at,taskId:at,reason:"upload"}),Lr.push(Xn)}catch(Bn){Nr+=1,Rr=Bn instanceof Error?Bn.message:"The image could not be added."}}if(Ft()){if(Lr.length>0){const Kt=Me.current,Bn=Math.min(Qe,Kt.length),Xn=Math.min(Math.max(St,Bn),Kt.length),va=Kt.slice(0,Bn),Cr=Kt.slice(Xn),cn=va&&!/\s$/.test(va)?`
3
- `:"",kn=Cr&&!/^\s/.test(Cr)?`
4
- `:"",zn=`${cn}${Lr.join(`
5
- `)}${kn}`,ea=`${va}${zn}${Cr}`,La=va.length+zn.length;Me.current=ea,it.current&&(it.current.value=ea),G(ea),ye(ea),window.requestAnimationFrame(()=>{it.current?.focus(),it.current?.setSelectionRange(La,La)})}if(Nr>0){const Kt=Lr.length>0?`${Nr} image${Nr===1?"":"s"} could not be added.`:Rr||(J.length===1?"The image could not be added.":"The images could not be added.");Ce(Kt)}F(!1)}},qt=J=>Array.from(J.items).filter(Qe=>Qe.kind==="file"&&/^(?:image\/(?:png|jpeg|webp))$/i.test(Qe.type)).map(Qe=>Qe.getAsFile()).filter(Qe=>!!Qe),Vr=J=>Array.from(J.files).filter(Qe=>/^(?:image\/(?:png|jpeg|webp))$/i.test(Qe.type)),Tt=J=>Array.from(J.items||[]).some(Qe=>Qe.kind==="file"&&/^(?:image\/(?:png|jpeg|webp))$/i.test(Qe.type))||Vr(J).length>0,Ut=J=>{Tt(J.dataTransfer)&&(J.preventDefault(),J.dataTransfer.dropEffect="copy")},fr=Q.useCallback(J=>{const{active:Qe,over:St}=J;if(!St||Qe.id===St.id)return;const Xt=y.findIndex(Nr=>Nr.id===Qe.id),at=y.findIndex(Nr=>Nr.id===St.id);if(Xt<0||at<0)return;const Ft=new Date().toISOString(),Lr=ZS(y,Xt,at).map((Nr,Rr)=>({...Nr,order:Rr,updatedAt:Ft}));fe(Lr)},[y,fe]),$t=J=>{const Qe=String(J||"").trim(),St=J.trim().replace(/^ai-profile-/i,"").replace(/[-_]+/g," ").replace(/\s+/g," ");return!St||St==="ai"||Qe.toLowerCase().startsWith("ai-profile-")?"AI Agent":`AI Agent - ${St.split(" ").map(at=>at.charAt(0).toUpperCase()+at.slice(1)).join(" ")}`},Mr=kA(H,p),Fr=Q.useMemo(()=>new Map(Mr.map(J=>[String(J.value),J])),[Mr]),Vt=Q.useMemo(()=>{const J=[We?.assigneeActor,We?.createdByActor].filter(Boolean);return new Map(J.map(Qe=>[String(Qe.id),Qe]))},[We?.assigneeActor,We?.createdByActor]),Dr=Q.useMemo(()=>new Map(Z.map(J=>[J.id,xu(J)||J.id])),[Z]),Ye=Q.useMemo(()=>new Map(me.map(J=>[J.id,IC(J)||J.id])),[me]),en=Q.useMemo(()=>Hv({activity:We?.activity,comments:k}),[k,We?.activity]),bn=(J,Qe)=>{const St=String(Qe||"").trim();if(St){if(J==="assignee")return Tf(St,Mr);if(J==="workstreamId")return Dr.get(St);if(J==="initiativeId")return Ye.get(St)}},tn=Q.useCallback((J,Qe,St)=>{if(St&&St.trim())return St.trim();const Xt=String(J||"").trim();if(!Xt)return Qe==="ai"?"AI Agent":_t("taskForm.you");const at=Vt.get(Xt);if(at?.label)return at.label;const Ft=Fr.get(Xt)||Fr.get(Xt.toLowerCase());return Ft?.label?Ft.label:Qe==="ai"?$t(Xt):Tf(Xt,Mr)||Xt},[Vt,Fr,$t,Mr]),ft=Q.useCallback(({actorId:J,actorType:Qe,actorProfile:St,fallbackKind:Xt})=>{const at=String(J||"").trim();if(b_(at))return{kind:"system",label:v_,ActorIcon:$S,description:w_};const Ft=at.toLowerCase(),Lr=Vt.get(at),Nr=Fr.get(at)||Fr.get(Ft),Rr=St||Lr||Nr||null,Kt=Qe==="system"?"system":Qe==="ai"||Rr?.kind==="ai"?"agent":Qe==="human"||Rr?.kind==="human"?"member":Nr?.kind==="agent"?"agent":Nr?.kind==="member"?"member":Xt||(Ft===""||Ft==="user"||Ft==="human"?"member":"agent"),Bn=Kt==="system"?"System":tn(at,Kt==="agent"?"ai":"human",Rr?.label||null),Xn=Rr?.color,va=String(Rr?.icon||(Kt==="agent"?"Bot":Kt==="member"?"User":"ClipboardList")),Cr=Ru[va]||(Kt==="agent"?Yl:Kt==="member"?wu:FS);return{kind:Kt,label:Bn,color:Xn,ActorIcon:Cr,isCurrentActorHint:Kt==="member"&&(Ft===""||Ft==="user"||Ft==="human")}},[Vt,Fr,tn]),rn=Q.useMemo(()=>{const J=en[en.length-1];if(!J)return null;if(J.type==="comment"){const St=J.comment;return tn(St.author,St.actor?.kind==="ai"?"ai":St.actor?.kind==="human"?"human":null,St.actor?.label||null)}const Qe=J.event;return tn(Qe.actor,Qe.actorType,Qe.actorProfile?.label||null)},[tn,en]),Nt=Q.useMemo(()=>{if(!We?.completedAt)return null;for(const Qe of en){if(Qe.type!=="event")continue;const St=Qe.event,Xt=St.details?.changes?.status?.to;if(Xt==="done"||Xt==="cancelled")return tn(St.actor,St.actorType,St.actorProfile?.label||null)}return rn},[We?.completedAt,rn,tn,en]),or=We?.createdByActor?.label||tn(We?.createdBy||null,We?.createdByActor?.kind==="ai"?"ai":We?.createdByActor?.kind==="human"?"human":null,We?.createdByActor?.label||null),xr=rn,hn=en.length,ys=en.filter(J=>J.type==="comment").length,Nn=en[0]?.id||null,Sn=en[hn-1]?.id||null,kr=String(r||"").trim(),cr=t&&kr?`${t}\0${kr}`:null,Wr=Q.useCallback(J=>({taskId:t,count:hn,firstItemId:Nn,lastItemId:Sn,scrollHeight:J.scrollHeight,scrollTop:J.scrollTop}),[hn,t,Nn,Sn]),on=Q.useCallback(()=>{const J=ir.current;J&&(J.scrollTop=J.scrollHeight,br.current=!0,Qr(!1),Tr.current=Wr(J))},[Wr]),dt=Q.useCallback(()=>{const J=ir.current,Qe=dr.current;return!J||!Qe||!cr||sr.current===cr?!1:(Qe.scrollIntoView?.({block:"center",inline:"nearest"}),Qe.focus({preventScroll:!0}),br.current=!1,Qr(!1),sr.current=cr,Tr.current=Wr(J),!0)},[cr,Wr]),Un=Q.useCallback(J=>{dr.current=J,J&&dt()},[dt]),Tn=Q.useCallback(J=>{Jr.current?.(J.currentTarget)},[]),jn=Q.useCallback(J=>{const St=J.scrollHeight-J.scrollTop-J.clientHeight<=Q7;br.current=St,St&&Qr(!1),Tr.current=Wr(J)},[Wr]);Q.useLayoutEffect(()=>{Jr.current=jn},[jn]);const an=Q.useCallback(J=>{if(pr.current?.disconnect(),pr.current=null,ir.current=J,!!J&&(cr&&sr.current!==cr?br.current=!1:(J.scrollTop=J.scrollHeight,br.current=!0),Qr(!1),typeof ResizeObserver<"u")){const Qe=new ResizeObserver(()=>{const St=ir.current;St&&Jr.current?.(St)});Qe.observe(J),pr.current=Qe}},[cr,t]);Q.useLayoutEffect(()=>{sr.current=null},[cr]),Q.useLayoutEffect(()=>{if(!t)return;const J=ir.current;if(!J)return;const Qe=Tr.current,St=Qe?.taskId!==t,Xt=!!(Qe&&hn>Qe.count),at=!!(Qe&&Xt&&Qe.lastItemId===Sn&&Qe.firstItemId!==Nn);if(cr&&dt()){Tr.current=Wr(J);return}St||br.current?on():at&&Qe?J.scrollTop=Qe.scrollTop+(J.scrollHeight-Qe.scrollHeight):Xt&&Qr(!0),Tr.current=Wr(J);const Ft=window.requestAnimationFrame(()=>{St||br.current?on():Tr.current=Wr(J)});return()=>window.cancelAnimationFrame(Ft)},[hn,cr,Wr,t,Nn,Sn,on,dt]);const Ds=Q.useCallback(()=>{on(),le()},[le,on]),da=n.jsxs("aside",{className:gt.activitySidebar,"aria-label":_t("taskForm.commentsSectionTitle"),children:[n.jsx("div",{className:gt.activitySidebarHeader,children:n.jsxs("h2",{className:gt.activitySidebarTitle,children:[_t("taskForm.commentsSectionTitle")," (",ys,")"]})}),n.jsxs("div",{className:`${gt.commentPanel} ${gt.activitySidebarPanel} tf-surface-panel`.trim(),children:[n.jsxs("div",{className:gt.activityTimelineRegion,children:[n.jsx(Q.Suspense,{fallback:n.jsx(t9,{count:hn}),children:n.jsx(X7,{activity:We?.activity,comments:k,formatFieldValue:bn,resolveActorPresentation:ft,currentActorId:w,taskReferences:ot,emptyMessage:_t(t?"taskForm.noComments":"taskForm.noActivity"),listClassName:gt.commentThread,emptyClassName:gt.emptyComments,listRef:an,endRef:Xe,onScroll:Tn,targetEntryId:kr,targetEntryRef:Un})}),ur?n.jsx("div",{className:gt.newActivityNotice,role:"status","aria-live":"polite",children:n.jsxs("button",{type:"button",className:gt.newActivityButton,onClick:on,"aria-label":_t("taskForm.newActivityAriaLabel"),children:[n.jsx(Xk,{size:14,"aria-hidden":"true"}),n.jsx("span",{children:_t("taskForm.newActivity")})]})}):null]}),n.jsxs("div",{className:gt.commentInputArea,children:[n.jsx("textarea",{className:`${gt.commentInput} tf-field-shell`,placeholder:t?_t("taskForm.commentPlaceholder"):"Comments become available after saving",value:v,onChange:J=>ke(J.target.value),disabled:!t||It,onKeyDown:J=>{J.key==="Enter"&&!J.shiftKey&&(J.preventDefault(),Ds())},rows:3}),n.jsx("button",{type:"button",className:`${gt.sendCommentBtn} tf-control-icon`,onClick:Ds,disabled:!t||It||!v.trim(),"aria-label":"Send comment",title:"Send comment",children:n.jsx(gT,{size:16,"aria-hidden":"true"})})]})]})]});return n.jsxs("form",{ref:Qt,onSubmit:q,onScroll:u,className:`${x.form} ${x.appScrollbar} tf-scrollbar`,children:[It&&n.jsx("div",{className:`${gt.formNotice} tf-text-helper`,children:Dt?"Deleted tasks are read-only. Restore the task to make changes.":"Archived tasks are read-only. Unarchive the task to make changes."}),n.jsxs("div",{className:gt.formLayoutWithSidebar,children:[n.jsx("fieldset",{disabled:It,className:gt.formFieldsetReset,children:n.jsxs("div",{className:gt.formMainColumn,children:[n.jsxs("div",{className:x.field,children:[n.jsx("label",{className:x.label,children:"Title"}),n.jsx("input",{ref:Fe,type:"text",defaultValue:a,onChange:J=>{const Qe=J.target.value;ae(Qe)},onBlur:J=>{J.currentTarget.value!==a&&Re(J.currentTarget.value)},placeholder:"What needs to be done?",className:x.input,required:!0,maxLength:255,autoFocus:!0})]}),n.jsxs("div",{className:`${x.field} ${gt.descriptionField}`,children:[n.jsxs("div",{className:x.labelRow,children:[n.jsx("label",{className:x.label,children:"Description"}),n.jsx("button",{type:"button",className:x.helpLink,onClick:()=>we(!b),title:"Markdown Help",tabIndex:-1,children:n.jsx(ad,{size:14})})]}),b&&n.jsxs("div",{className:gt.markdownHelp,children:[n.jsxs("div",{className:gt.helpHeader,children:[n.jsx("span",{children:"Markdown Guide"}),n.jsx("button",{onClick:()=>we(!1),className:gt.helpClose,children:n.jsx(fo,{size:12})})]}),n.jsxs("div",{className:gt.helpGrid,children:[n.jsx("div",{children:n.jsx("code",{children:"**bold**"})}),n.jsx("div",{children:n.jsx("code",{children:"_italic_"})}),n.jsx("div",{children:n.jsx("code",{children:"- list"})}),n.jsx("div",{children:n.jsx("code",{children:"1. list"})}),n.jsx("div",{className:gt.helpGridItem,children:n.jsx("code",{children:"`inline code`"})}),n.jsxs("div",{className:gt.helpGridItem,children:[n.jsx("code",{children:"```"}),n.jsx("br",{}),n.jsx("code",{children:"code block"}),n.jsx("br",{}),n.jsx("code",{children:"```"})]}),n.jsx("div",{children:n.jsx("code",{children:"[link](url)"})})]})]}),P||!s?n.jsx("textarea",{ref:it,className:`${x.textarea} ${gt.descriptionSurface}`,placeholder:"What needs to be done? (Markdown supported)",defaultValue:s,onChange:J=>{const Qe=J.target.value;Me.current=Qe,G(Qe)},onFocus:()=>Y(!0),onBlur:J=>{J.currentTarget.value!==s&&ye(J.currentTarget.value),Y(!1)},onPaste:J=>{const Qe=qt(J.clipboardData);if(Qe.length===0)return;J.preventDefault();const St=J.currentTarget;mn(Qe,St.selectionStart,St.selectionEnd)},onDragOver:Ut,onDrop:J=>{const Qe=Vr(J.dataTransfer);if(Qe.length===0)return;J.preventDefault(),J.stopPropagation();const St=J.currentTarget;mn(Qe,St.selectionStart,St.selectionEnd)},rows:9,autoFocus:P}):n.jsx("div",{className:`${x.textarea} ${gt.descriptionSurface} ${gt.markdownPreview} ${gt.markdownPreviewContainer}`,onClick:()=>Y(!0),onDragOver:Ut,onDrop:J=>{const Qe=Vr(J.dataTransfer);Qe.length!==0&&(J.preventDefault(),J.stopPropagation(),Y(!0),mn(Qe,s.length,s.length))},children:n.jsx(Sg,{variant:"detail",taskReferences:ot,imageReferences:ut,children:s})}),Ge&&n.jsx("div",{className:gt.descriptionImageStatus,role:"status",children:"Adding image to Context…"}),Ne&&n.jsx("div",{className:gt.descriptionImageError,role:"alert",children:Ne})]}),n.jsxs("div",{className:gt.compactMetaSection,children:[n.jsxs("div",{className:gt.compactMetaGrid,children:[n.jsxs("div",{className:`${x.field} ${gt.compactMetaField}`,children:[n.jsx("label",{id:"category-label",className:x.label,children:ie?.category||"Category"}),n.jsx(qo,{value:i,options:Ue,onChange:J=>ve(String(J)),required:!0,ariaLabelledBy:"category-label",portalPanel:!0,panelMinWidth:ek,panelAlign:"start"})]}),n.jsxs("div",{className:`${x.field} ${gt.compactMetaField}`,children:[n.jsx("label",{id:"type-label",className:x.label,children:ie?.type||"Type"}),n.jsx(qo,{value:l,options:wt,onChange:J=>Pe(String(J)),ariaLabelledBy:"type-label",portalPanel:!0,panelMinWidth:ek,panelAlign:"start"})]}),n.jsxs("div",{className:`${x.field} ${gt.compactMetaField}`,children:[n.jsx("label",{htmlFor:"task-form-scheduled-date",className:x.label,children:_t("taskForm.scheduledLabel")}),n.jsx("input",{id:"task-form-scheduled-date",type:"date",value:g,onChange:J=>W(J.target.value),className:`${x.input} ${x.taskFormDateInput}`})]}),n.jsxs("div",{className:`${x.field} ${gt.compactMetaField}`,children:[n.jsx("label",{id:"assignee-label",className:x.label,children:"Assigned To"}),n.jsx(qo,{value:p||"unassigned",options:Mr,onChange:J=>V(String(J)),ariaLabelledBy:"assignee-label",portalPanel:!0,panelMinWidth:ek,panelAlign:"start",searchable:!0,searchPlaceholder:"Search assignees...",noResultsText:"No assignees found.",renderOptionContent:J=>{const Qe=Fr.get(String(J.value));return Qe?n.jsx(ju,{option:Qe}):J.label}})]}),n.jsx("div",{className:gt.compactMetaField,children:n.jsx(Qy,{label:ie?.priority||"Priority",options:D,value:c,onChange:Le,type:"priority",showSelectedLabel:!1})}),n.jsxs("div",{className:`${x.field} ${gt.compactMetaField}`,children:[n.jsx("label",{htmlFor:"task-form-due-date",className:x.label,children:_t("taskForm.dueLabel")}),n.jsx("input",{id:"task-form-due-date",type:"date",value:h,onChange:J=>z(J.target.value),className:`${x.input} ${x.taskFormDateInput}`}),wr&&n.jsx("span",{className:`${gt.taskFormDateWarning} ${gt.compactMetaFieldHint}`,children:_t("taskForm.dueBeforeScheduled")}),st&&n.jsx("span",{className:`${gt.taskFormDateError} ${gt.compactMetaFieldHint}`,children:_t("taskForm.overdue")})]}),f&&n.jsx("div",{className:gt.compactMetaField,children:n.jsx(Qy,{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:se,type:"general"})})]}),t&&n.jsx(G7,{taskId:t,workspaceId:S,taskStatus:We?.status,taskUpdatedAt:We?.updatedAt,comments:k,assigneeOptions:Mr,currentActorId:w,apiBaseUrl:_,runtimeMode:M,disabled:!!(We?.isArchived||We?.isDeleted),onActivatePendingWorkflow:We&&Ae?()=>Ae(We,"in-progress",{allowSameStatus:!0}):void 0,onActiveOwnerChange:V})]}),n.jsxs("div",{className:gt.sectionBlock,children:[mt.length>0&&n.jsx("div",{className:gt.taxonomyFieldsGrid,children:mt.map(J=>{const Qe=I[J.id],St=Array.isArray(Qe)?Qe.map(at=>String(at)):Qe!=null&&Qe!==""?[String(Qe)]:[],Xt=J.options.filter(at=>at.status!=="retired"||St.includes(String(at.value)));return n.jsxs("div",{className:x.field,children:[n.jsx("label",{className:x.label,children:J.label}),J.description&&n.jsx("div",{className:`${gt.settingsHint} tf-text-helper`,children:J.description}),J.widgetType==="level"?n.jsx(Qy,{label:J.label,options:Xt.map(at=>({...at,label:at.status==="retired"?`${at.label} (Retired)`:at.label})),value:I[J.id]||"",onChange:at=>E(J.id,at),type:"general",hideLabel:!0}):J.multiSelect?n.jsx("div",{className:`${x.dropdownList} ${gt.softSectionSurface}`,children:Xt.map(at=>{const Ft=String(at.value),Lr=St.includes(Ft);return n.jsxs("button",{type:"button",className:`${gt.specialistChip} ${Lr?gt.specialistChipActive:""}`,onClick:()=>{const Nr=Lr?St.filter(Rr=>Rr!==Ft):[...St,Ft];E(J.id,Nr)},title:Lr?"Click to remove":"Click to add",children:[Lr&&n.jsx(hi,{size:12}),at.status==="retired"?`${at.label} (Retired)`:at.label]},Ft)})}):n.jsxs("div",{className:x.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 at=J.options.find(Nr=>String(Nr.value)===String(I[J.id])),Ft=at?.icon&&To[at.icon]?To[at.icon]:ad,Lr=at?.color||"var(--text-secondary)";return n.jsx("div",{className:x.fieldIcon,style:{color:Jn(Lr)},children:n.jsx(Ft,{size:16})})})(),n.jsxs("select",{value:I[J.id]||"",onChange:at=>E(J.id,at.target.value),className:`${x.select} ${x.field_dynamic}`,required:J.isRequired,children:[n.jsxs("option",{value:"",children:["Select ",J.label,"..."]}),Xt.map(at=>n.jsx("option",{value:at.value,children:at.status==="retired"?`${at.label} (Retired)`:at.label},at.value))]})]})]},J.id)})}),$&&n.jsxs("div",{className:`${x.specialistSection} ${mt.length===0?gt.specialistSectionWithoutTaxonomies:""}`.trim(),children:[n.jsx(gf,{label:`Checklist${y.length>0?` (${zt}/${y.length})`:""}`,expanded:Ee,expandedTitle:"Hide checklist",collapsedTitle:"Show checklist",onToggle:()=>{const J=!Ee;ct(J),J||Er(!1)},actions:n.jsx("div",{className:x.contextMenuControl,children:n.jsx("button",{ref:Ct,type:"button",className:"tf-control-icon","aria-label":"Add checklist item",title:"Add checklist item","aria-expanded":lt,onClick:yr,children:n.jsx(Ko,{size:14,"aria-hidden":"true"})})})}),Ee&&(lt||y.length>0)&&n.jsxs("div",{className:`${x.dropdownList} ${gt.stackedList} ${gt.stackedListSpaced}`,children:[lt&&n.jsxs("div",{className:`${x.pathInputGroup} ${gt.checklistInputGroup}`,children:[n.jsx("input",{ref:nt,type:"text",className:x.input,placeholder:"Add checklist item",value:Lt,onChange:J=>Mt(J.target.value),onKeyDown:J=>{J.key==="Enter"&&(J.preventDefault(),J.stopPropagation(),ht()),J.key==="Escape"&&(J.preventDefault(),J.stopPropagation(),Er())}}),n.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",onClick:ht,disabled:!Lt.trim(),"aria-label":"Confirm checklist item",title:"Add checklist item",children:n.jsx(hi,{size:14,"aria-hidden":"true"})}),n.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",onClick:()=>Er(),"aria-label":"Cancel checklist item",title:"Cancel",children:n.jsx(fo,{size:14,"aria-hidden":"true"})})]}),y.length>0&&n.jsx(av,{sensors:gr,collisionDetection:JS,onDragEnd:fr,children:n.jsx(sv,{items:y.map(J=>J.id),strategy:ov,children:y.map((J,Qe)=>n.jsx(r9,{id:J.id||`checklist-${Qe}`,item:J,onToggle:()=>{const St=new Date().toISOString();fe(y.map((Xt,at)=>at===Qe?{...Xt,isCompleted:!Xt.isCompleted,updatedAt:St}:Xt))},onRemove:()=>fe(y.filter((St,Xt)=>Xt!==Qe).map((St,Xt)=>({...St,order:Xt})))},J.id||`checklist-${Qe}`))})})]})]})]}),n.jsxs("div",{children:[n.jsx(Q.Suspense,{fallback:null,children:n.jsx(e9,{taskId:t,taskReferenceLabel:Ie,workspaceId:S,apiBaseUrl:_,showImageReviews:R&&!!We,contextFiles:C,onAddContextFile:$e,onRemoveContextFile:re,onUpdateContextCaption:de})}),n.jsx("div",{className:`${gt.taskFormLifecycle} ${gt.taskFormMetaDivider}`,children:n.jsx("div",{className:gt.taskFormMetaGrid,children:We&&n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:gt.taskFormDateRow,children:[n.jsx("span",{className:gt.taskFormDateLabel,children:_t("taskForm.createdLabel")}),n.jsxs("span",{className:gt.taskFormMetaStack,children:[n.jsx("span",{className:gt.taskFormDateValue,children:rt||_t("taskForm.emptyValue")}),n.jsx("span",{className:gt.taskFormMetaActor,children:or?`by ${or}`:_t("taskForm.emptyValue")})]})]}),n.jsxs("div",{className:gt.taskFormDateRow,children:[n.jsx("span",{className:gt.taskFormDateLabel,children:_t("taskForm.updatedLabel")}),n.jsxs("span",{className:gt.taskFormMetaStack,children:[n.jsx("span",{className:gt.taskFormDateValue,children:Ht||_t("taskForm.emptyValue")}),n.jsx("span",{className:gt.taskFormMetaActor,children:xr?`by ${xr}`:_t("taskForm.emptyValue")})]})]}),n.jsxs("div",{className:gt.taskFormDateRow,children:[n.jsx("span",{className:gt.taskFormDateLabel,children:_t("taskForm.completedLabel")}),n.jsxs("span",{className:gt.taskFormMetaStack,children:[n.jsx("span",{className:gt.taskFormDateValue,children:lr||_t("taskForm.emptyValue")}),n.jsx("span",{className:gt.taskFormMetaActor,children:Nt?`by ${Nt}`:_t("taskForm.emptyValue")})]})]})]})})})]})]})}),da]})]})}function vu({ariaExpanded:e,ariaLabel:t,children:r,disabled:a=!1,onClick:s,title:i}){return n.jsx("button",{type:"button",className:`${x.referenceBadge} ${x.taskHierarchyActionBtn}`,onClick:s,disabled:a,title:i,"aria-label":t,"aria-expanded":e,children:r})}function A_({editingTaskId:e,loading:t,autoSaveState:r="idle",title:a,status:s="task",onStatusChange:i,showCreateSubmit:l=!0,handleSubmit:c,handleCopyId:d,copiedId:f,tasks:p,currentTask:g,currentTaskWorkstream:h,currentTaskInitiative:y,workstreams:k=[],onWorkstreamInputChange:v,onSetWorkstreamForCurrentTask:C,handleToggleInProgress:S,handleToggleReview:w,handleToggleComplete:_,handleToggleCancel:M,handleSetStatus:R,handleArchiveTask:P,handleUnarchiveTask:b,handleRestoreDeletedTask:$,handlePermanentlyDeleteDeletedTask:I,onAskAgent:E}){const K=g??(e&&p.find(ve=>ve.id===e)||null),U=!!K?.isArchived,L=!!K?.isDeleted,D=Q.useMemo(()=>{if(!L||!K?.deletedExpiresAt)return"";const ve=new Date(K.deletedExpiresAt);return Number.isNaN(ve.getTime())?"":`Trash expires ${ve.toLocaleString()}`},[K?.deletedExpiresAt,L]),ie=uv(K),H=ie.label||(ie.isProvisional?"Pending":""),be=ie.isProvisional,Z=!!ie.label,me=h?xu(h)||h.id:"",Ve=y?fs(y)||y.id:"",Re=Q.useCallback(ve=>{v?.(xu(ve)||ve.id),e&&C?.(ve.id)},[e,C,v]),je=Q.useCallback(()=>{v?.(""),e&&C?.(null)},[e,C,v]),ye=h?n.jsx(vu,{onClick:je,disabled:t||U||L,title:"Unlink task from workstream",ariaLabel:"Unlink task from workstream",children:n.jsx(pf,{size:13})}):null,ue=n.jsx("div",{className:x.taskHierarchyHeader,children:n.jsxs("div",{className:x.taskHierarchyBadgeRow,children:[y?n.jsx("span",{className:x.taskHierarchySegment,children:n.jsx(Su,{copied:f===Ve,onClick:ve=>d(ve,Ve),disabled:t,title:y.title,ariaLabel:`Copy initiative reference ${Ve}: ${y.title}`,label:Ve})}):null,h?n.jsxs("span",{className:x.taskHierarchySegment,children:[y?n.jsx("span",{className:x.taskHierarchyDivider,children:"/"}):null,n.jsx(Su,{copied:f===me,onClick:ve=>d(ve,me),disabled:t,title:h.title,ariaLabel:`Copy workstream reference ${me}: ${h.title}`,label:me})]}):n.jsx(g_,{workstreams:k,onSelect:Re,disabled:t||U||L}),!H&&ye?n.jsxs("span",{className:x.taskHierarchySegment,children:[n.jsx("span",{className:x.taskHierarchyDivider,children:"/"}),ye]}):null,H?n.jsxs("span",{className:x.taskHierarchySegment,children:[h?n.jsx("span",{className:x.taskHierarchyDivider,children:"/"}):null,ye,n.jsx(Su,{copied:Z&&f===ie.label,onClick:ve=>d(ve,ie.label),disabled:t||!Z,title:be?"Temporary identifier — replaced after synchronization.":_t("actionHeader.copyTaskIdTitle"),ariaLabel:be?`Copy temporary task reference ${H}`:void 0,label:H,provisional:be})]}):null,D?n.jsx("span",{className:x.taskHierarchyMeta,title:"Trash items are permanently deleted 90 days after deletion.",children:D}):null]})});return n.jsxs("div",{className:x.stickyActionHeader,children:[ue,e?n.jsxs(n.Fragment,{children:[n.jsx("div",{className:x.taskSaveStatusCenter,children:n.jsx("div",{className:`${x.taskSaveStatus} ${r==="error"?x.taskSaveStatusError:""}`,"aria-live":"polite",children:r==="saving"?n.jsxs(n.Fragment,{children:[n.jsx(Ln,{size:14,className:x.spinner}),n.jsx("span",{children:"Saving…"})]}):r==="saved"?n.jsx("span",{children:"Saved"}):r==="error"?n.jsx("span",{children:"Save failed"}):null})}),n.jsxs("div",{className:x.editActionsGroup,children:[E&&K?n.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>E(K),disabled:t,title:"Ask a Taskforce Agent about this task","aria-label":"Ask a Taskforce Agent about this task",children:n.jsx(Yl,{size:16})}):null,L&&K?.deletedRecordId?n.jsxs(n.Fragment,{children:[$&&n.jsx("button",{type:"button",className:x.actionBtn,onClick:()=>$(K.deletedRecordId||""),disabled:t,title:"Restore deleted task","aria-label":"Restore deleted task",children:n.jsx(mi,{size:16})}),I&&n.jsx("button",{type:"button",className:`${x.actionBtn} ${x.deleteBtn}`,onClick:()=>I(K.deletedRecordId||""),disabled:t,title:"Permanently delete deleted task","aria-label":"Permanently delete deleted task",children:n.jsx(Lf,{size:16})})]}):n.jsx(Yh,{task:K,disabled:t,statusDisabled:t||U,archiveActionMode:U?"unarchive":"auto",onSetStatus:(ve,Pe)=>{if(R){R(ve,Pe);return}if(Pe==="in-progress"){S(ve);return}if(Pe==="review"){w(ve);return}if(Pe==="done"){_(ve);return}Pe==="cancelled"&&M(ve)},onArchiveTask:P,onUnarchiveTask:ve=>b?.(ve.id)})]})]}):n.jsxs(n.Fragment,{children:[n.jsx("div",{className:x.taskSaveStatusCenter}),n.jsxs("div",{className:x.editActionsGroup,children:[n.jsx(Yh,{status:s,disabled:t,archiveActionMode:"none",onStatusChange:i}),l?n.jsxs("button",{type:"button",onClick:ve=>c(ve),disabled:t||!a.trim(),className:x.primaryUpdateBtn,title:_t("actionHeader.addTaskTitle"),children:[t?n.jsx(Ln,{size:16,className:x.spinner}):n.jsx(Ko,{size:16}),_t("actionHeader.addTask")]}):null]})]})]})}function n9(e={x:0,y:0}){const[t,r]=o.useState(e),[a,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 v=f.current.getBoundingClientRect();d(v.top-t.y)}s(!0),l({x:y.clientX-t.x,y:y.clientY-t.y})}},[t]),g=o.useCallback(y=>{if(a){let k=y.clientX-i.x,v=y.clientY-i.y;v<-c&&(v=-c),r({x:k,y:v})}},[a,i,c]),h=o.useCallback(()=>{s(!1)},[]);return o.useEffect(()=>(a?(window.addEventListener("mousemove",g),window.addEventListener("mouseup",h)):(window.removeEventListener("mousemove",g),window.removeEventListener("mouseup",h)),()=>{window.removeEventListener("mousemove",g),window.removeEventListener("mouseup",h)}),[a,g,h]),{position:t,isDragging:a,handleMouseDown:p,modalRef:f,setPosition:r}}const yf=[];let Qp=0,tk="";function a9(e){return yf.push(e),()=>{const t=yf.lastIndexOf(e);t>=0&&yf.splice(t,1)}}function s9(){return Qp===0&&(tk=document.body.style.overflow,document.body.style.overflow="hidden"),Qp+=1,()=>{Qp=Math.max(0,Qp-1),Qp===0&&(document.body.style.overflow=tk,tk="")}}function Ro({isOpen:e,onClose:t,title:r,children:a,footer:s,size:i="md",theme:l=Dh,className:c,overlayStyle:d,headerActions:f,draggable:p=!1,isSettings:g=!1,closeOnOverlayClick:h=!0,closeDisabled:y=!1}){const k=o.useRef(null),v=o.useRef(null),C=o.useRef(t),S=o.useRef(y),w=o.useRef(Symbol("taskforce-modal")),_=o.useId(),{position:M,isDragging:R,handleMouseDown:P,modalRef:b}=n9();if(C.current=t,S.current=y,o.useEffect(()=>{if(e)return a9(w.current)},[e]),o.useEffect(()=>{const I=E=>{if(yf[yf.length-1]!==w.current)return;if(E.key==="Escape"&&e&&!S.current){C.current();return}if(E.key!=="Tab"||!e||!b.current)return;const K=Array.from(b.current.querySelectorAll('button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])'));if(K.length===0){E.preventDefault(),b.current.focus();return}const U=K[0],L=K[K.length-1];E.shiftKey&&document.activeElement===U?(E.preventDefault(),L.focus()):!E.shiftKey&&document.activeElement===L&&(E.preventDefault(),U.focus())};return e&&(v.current=document.activeElement instanceof HTMLElement?document.activeElement:null,window.requestAnimationFrame(()=>{(b.current?.querySelector("[data-modal-initial-focus]")??b.current?.querySelector("button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled])")??b.current)?.focus()})),window.addEventListener("keydown",I),()=>{window.removeEventListener("keydown",I),v.current?.focus()}},[e,b]),o.useEffect(()=>{if(e)return s9()},[e]),!e)return null;const $={sm:Jt.modalSizeSm,md:Jt.modalSizeMd,mdWide:Jt.modalSizeMdWide,lg:Jt.modalSizeLg,xl:Jt.modalSizeXl,full:Jt.modalSizeFull};return yc.createPortal(n.jsx("div",{className:`${Jt.overlay} ${c||""} ${Jt.overlayHighZ}`,style:d,ref:k,onClick:I=>{h&&!y&&I.target===k.current&&t()},children:n.jsxs("div",{ref:b,className:`tf-surface-modal tf-modal-shell ${Jt.modal} tf-scrollbar-scope ${$[i]} ${p?Jt.draggableModal:""} ${g?Jt.settingsViewModal:""}`,role:"dialog","aria-modal":"true","aria-labelledby":_,tabIndex:-1,"data-theme":l,style:{transform:p?`translate(${M.x}px, ${M.y}px)`:void 0,transition:R?"none":"transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease-out"},children:[n.jsxs("div",{className:`tf-modal-header ${p?Jt.draggableHeader:""}`,onMouseDown:p?P:void 0,style:{cursor:p?R?"grabbing":"grab":"default"},children:[n.jsx("div",{className:"tf-modal-title",id:_,children:r}),n.jsxs("div",{className:Jt.headerActions,children:[f,n.jsx("button",{className:"tf-control-icon",onClick:t,disabled:y,title:"Close","aria-label":"Close",children:n.jsx(fo,{size:20})})]})]}),n.jsx("div",{className:Jt.modalContent,children:a}),s&&n.jsx("div",{className:`${Jt.formActions} ${Jt.modalFooter}`,children:s})]})}),document.body)}const o9="_toolbar_1nqyq_1",i9="_masterSelection_1nqyq_13",c9="_selectedCount_1nqyq_32",l9="_actionButton_1nqyq_36",d9="_emptyButton_1nqyq_47",u9="_dialogBody_1nqyq_52",p9="_destinationSummary_1nqyq_62",f9="_hint_1nqyq_66",m9="_progress_1nqyq_70",h9="_failures_1nqyq_77",g9="_spinner_1nqyq_102",Ao={toolbar:o9,masterSelection:i9,selectedCount:c9,actionButton:l9,emptyButton:d9,dialogBody:u9,destinationSummary:p9,hint:f9,progress:m9,failures:h9,spinner:g9};function C_({theme:e,selectedRecords:t,matchingCount:r,allMatchingSelected:a,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"),[v,C]=o.useState(!1),[S,w]=o.useState(null),_=o.useMemo(()=>t.filter(E=>E.taskSnapshot.isArchived===!0).length,[t]),M=t.length-_;o.useEffect(()=>{p.current&&(p.current.indeterminate=s)},[s]);const R=async()=>{if(t.length===0||v)return;C(!0),w({requested:t.length,completed:0,succeeded:[],failed:[]});const E=await d(t,y,w);w(E),C(!1),E.failed.length===0&&(h(!1),w(null))},P=E=>{k(E),w(null),h(!0)},b=y==="archive",$=b?t.length:_,I=b?0:M;return n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:Ao.toolbar,"aria-label":"Trash restore selection",children:[n.jsxs("label",{className:Ao.masterSelection,children:[n.jsx("input",{ref:p,type:"checkbox",checked:a,disabled:r===0||v,onChange:E=>{E.target.checked?l():c()},"aria-label":"Select all matching deleted tasks"}),n.jsxs("span",{className:Ao.selectedCount,children:[t.length," selected"]})]}),n.jsx("button",{type:"button",className:"tf-control-icon",onClick:c,disabled:t.length===0||v,"aria-label":"Clear selected tasks",title:"Clear selection",children:n.jsx(fo,{size:15,"aria-hidden":"true"})}),n.jsxs("button",{type:"button",className:`tf-control-icon ${Ao.actionButton}`,onClick:()=>P("previous"),disabled:t.length===0||v,children:[n.jsx(mi,{size:15,"aria-hidden":"true"}),"Restore"]}),n.jsxs("button",{type:"button",className:`tf-control-icon ${Ao.actionButton}`,onClick:()=>P("archive"),disabled:t.length===0||v,title:"Restore selected tasks directly to Archive",children:[n.jsx(Xc,{size:15,"aria-hidden":"true"}),"Restore to archive"]}),f&&n.jsxs("button",{type:"button",className:`tf-control-icon ${Ao.actionButton} ${Ao.emptyButton}`,onClick:f,disabled:i===0||v,title:i>0?`Permanently delete all ${i} tasks in Trash; filters and selection do not limit this action.`:"Trash is already empty",children:[n.jsx(Lf,{size:14,"aria-hidden":"true"}),"Empty Trash"]})]}),n.jsx(Ro,{isOpen:g,onClose:()=>{v||(h(!1),w(null))},closeDisabled:v,closeOnOverlayClick:!v,size:"sm",theme:e,title:b?"Restore selected tasks to Archive?":"Restore selected tasks?",footer:n.jsxs(n.Fragment,{children:[n.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{h(!1),w(null)},disabled:v,children:"Cancel"}),n.jsxs("button",{type:"button",className:"tf-button-primary tf-button-compact","data-modal-initial-focus":!0,onClick:()=>{R()},disabled:v||t.length===0,children:[v?n.jsx(Ln,{size:15,className:Ao.spinner}):b?n.jsx(Xc,{size:15}):n.jsx(mi,{size:15}),S?.failed.length?"Retry failed":b?"Restore to archive":"Restore"]})]}),children:n.jsxs("div",{className:Ao.dialogBody,children:[n.jsxs("p",{children:["Restore ",t.length," task",t.length===1?"":"s","?"]}),n.jsxs("p",{className:Ao.destinationSummary,children:[$," to Archived · ",I," to Active"]}),n.jsx("p",{className:Ao.hint,children:b?"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."}),S&&n.jsxs("div",{className:Ao.progress,"aria-live":"polite",children:[n.jsxs("strong",{children:[S.completed," / ",S.requested," completed"]}),S.failed.length>0&&n.jsxs("div",{className:Ao.failures,children:[n.jsxs("p",{children:[S.failed.length," failed and remain selected:"]}),n.jsx("ul",{children:S.failed.slice(0,8).map(E=>n.jsxs("li",{children:[n.jsx("span",{children:E.title||E.taskId}),n.jsx("span",{children:E.message})]},E.deletedRecordId))}),S.failed.length>8&&n.jsxs("p",{children:["And ",S.failed.length-8," more."]})]})]})]})})]})}const y9="_topNoticeLayer_1yiif_1",k9="_taskNoticeLayer_1yiif_13",v9="_topNotice_1yiif_1",w9="_topNoticeMessage_1yiif_37",b9="_topNoticeSuccess_1yiif_43",S9="_topNoticeError_1yiif_44",A9="_topNoticeInfo_1yiif_45",C9="_topNoticeDismiss_1yiif_63",fc={topNoticeLayer:y9,taskNoticeLayer:k9,topNotice:v9,topNoticeMessage:w9,topNoticeSuccess:b9,topNoticeError:S9,topNoticeInfo:A9,topNoticeDismiss:C9};function eg({notice:e,onDismiss:t,placement:r="top"}){if(!e)return null;const a=e.tone==="error"?fc.topNoticeError:e.tone==="success"?fc.topNoticeSuccess:fc.topNoticeInfo,s=e.tone==="error"?"alert":"status",i=r==="task"?`${fc.topNoticeLayer} ${fc.taskNoticeLayer}`:fc.topNoticeLayer;return n.jsx("div",{className:i,children:n.jsxs("div",{className:`${fc.topNotice} ${a}`,role:s,"aria-live":e.tone==="error"?"assertive":"polite",children:[e.tone==="error"?n.jsx(od,{size:14}):e.tone==="success"?n.jsx(hi,{size:14}):n.jsx(yT,{size:14}),n.jsx("span",{className:fc.topNoticeMessage,children:e.message}),e.actionLabel&&e.onAction&&n.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",onClick:e.onAction,children:e.actionLabel}),t&&n.jsx("button",{type:"button",className:fc.topNoticeDismiss,onClick:t,"aria-label":"Dismiss notice",title:"Dismiss notice",children:n.jsx(fo,{size:14})})]})})}const _9="D-";function I9(e){return Of(_9,e)}const T9="_overlay_ey7rx_1",x9="_dialog_ey7rx_13",R9="_header_ey7rx_32",P9="_footer_ey7rx_33",E9="_titleGroup_ey7rx_53",N9="_secondaryActions_ey7rx_54",j9="_typeIcon_ey7rx_61",M9="_titleText_ey7rx_66",D9="_title_ey7rx_53",L9="_referenceBadge_ey7rx_79",O9="_content_ey7rx_83",B9="_image_ey7rx_93",W9="_pdf_ey7rx_100",$9="_textPreview_ey7rx_107",F9="_codePreview_ey7rx_108",U9="_message_ey7rx_125",z9="_unavailable_ey7rx_126",H9="_secondaryLink_ey7rx_145",Ta={overlay:T9,dialog:x9,header:R9,footer:P9,titleGroup:E9,secondaryActions:N9,typeIcon:j9,titleText:M9,title:D9,referenceBadge:L9,content:O9,image:B9,pdf:W9,textPreview:$9,codePreview:F9,message:U9,unavailable:z9,secondaryLink:H9},V9=/\.(?:md|markdown|txt|csv|json|js|ts|tsx|css|py|java|go|rs|sh)(?:[?#]|$)/i,G9=/\.(?:png|jpe?g|webp|gif)(?:[?#]|$)/i,K9=/\.pdf(?:[?#]|$)/i;function q9(e){return typeof e=="string"?e:e.path}function Y9(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 Z9(e){return typeof e=="string"?[e]:[e.path,e.fsPath,e.originalFilename,e.displayName,e.caption].filter(t=>!!t)}function J9(e,t){const r=e.includes("?")?"&":"?";return`${e}${r}download=1&filename=${encodeURIComponent(t)}`}function Q9(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 __({theme:e}){const[t,r]=o.useState(null),[a,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),v=o.useId();o.useEffect(()=>{const ie=H=>{const be=H;be.detail?.attachment&&(be.preventDefault(),k.current+=1,y.current!==null&&(window.clearTimeout(y.current),y.current=null),p(!1),r(be.detail))};return window.addEventListener($k,ie),()=>window.removeEventListener($k,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=H=>{if(H.key==="Escape"){H.preventDefault(),H.stopPropagation(),r(null);return}if(H.key!=="Tab"||!g.current)return;const be=Array.from(g.current.querySelectorAll('button:not([disabled]), [href], iframe, [tabindex]:not([tabindex="-1"])'));if(be.length===0){H.preventDefault(),g.current.focus();return}const Z=be[0],me=be[be.length-1];H.shiftKey&&document.activeElement===Z?(H.preventDefault(),me.focus()):!H.shiftKey&&document.activeElement===me&&(H.preventDefault(),Z.focus())};return window.addEventListener("keydown",ie,!0),window.requestAnimationFrame(()=>g.current?.focus()),()=>{window.removeEventListener("keydown",ie,!0),h.current?.focus()}},[t]);const C=t?q9(t.attachment):"",S=t?Z9(t.attachment):[],w=/^https?:\/\//i.test(C),_=S.some(ie=>G9.test(ie)),M=S.some(ie=>K9.test(ie)),R=S.some(ie=>V9.test(ie))&&!w,P=S.some(ie=>/\.(?:md|markdown)(?:[?#]|$)/i.test(ie));if(o.useEffect(()=>{if(s(""),d(null),!t||!R){l(!1);return}const ie=new AbortController;return l(!0),fetch(C,{signal:ie.signal,headers:t.workspaceId?{"x-taskforce-workspace-id":t.workspaceId}:void 0}).then(async H=>{if(!H.ok)throw new Error("Preview unavailable");s(await H.text())}).catch(H=>{H instanceof DOMException&&H.name==="AbortError"||d(H instanceof Error?H.message:"Preview unavailable")}).finally(()=>{ie.signal.aborted||l(!1)}),()=>ie.abort()},[R,C,t]),!t)return null;const b=Y9(t.attachment),$=typeof t.attachment=="string"?null:t.attachment,I=_?Nf($):I9($),E=Q9(t),K=_&&YC(E,{taskId:t.ownerType==="task"?t.ownerId:null,taskReferenceLabel:t.ownerReferenceLabel}),U=!_&&VC(E,typeof E=="string"?void 0:E.fsPath),L=async()=>{if(!I)return;const ie=k.current;try{await navigator.clipboard.writeText(I)}catch{if(k.current!==ie)return;const H=document.createElement("textarea");H.value=I,document.body.appendChild(H),H.select(),document.execCommand("copy"),H.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))},D=()=>{if(K?ZC(E,{taskId:t.ownerType==="task"?t.ownerId:null,taskReferenceLabel:t.ownerReferenceLabel}):GC(E,typeof E=="string"?void 0:E.fsPath)){r(null);return}window.open(C,"_blank","noopener,noreferrer")};return yc.createPortal(n.jsx("div",{className:Ta.overlay,"data-theme":e,onMouseDown:ie=>{ie.target===ie.currentTarget&&r(null)},children:n.jsxs("div",{ref:g,className:Ta.dialog,role:"dialog","aria-modal":"true","aria-labelledby":v,tabIndex:-1,children:[n.jsxs("header",{className:Ta.header,children:[n.jsxs("div",{className:Ta.titleGroup,children:[n.jsx("span",{className:Ta.typeIcon,"aria-hidden":"true",children:_?n.jsx(US,{size:16}):n.jsx(Sf,{size:16})}),n.jsxs("div",{className:Ta.titleText,children:[n.jsx("div",{className:Ta.title,id:v,children:b}),I&&n.jsx(Fv,{label:I,copied:f,onClick:()=>{L()},title:b,ariaLabel:f?`Copied ${I}`:`Copy ${I}`,className:Ta.referenceBadge})]})]}),n.jsx("button",{type:"button",className:"tf-control-icon","aria-label":"Close preview",title:"Close preview",onClick:()=>r(null),children:n.jsx(fo,{size:18})})]}),n.jsxs("div",{className:Ta.content,children:[_&&n.jsx("img",{className:Ta.image,src:C,alt:b}),M&&n.jsx("iframe",{className:Ta.pdf,src:C,title:`Preview ${b}`}),R&&i&&n.jsx("div",{className:Ta.message,children:"Loading preview…"}),R&&c&&n.jsx("div",{className:Ta.message,children:c}),R&&!i&&!c&&(P?n.jsx("div",{className:Ta.textPreview,children:n.jsx(Sg,{variant:"detail",children:a})}):n.jsx("pre",{className:Ta.codePreview,children:a})),!_&&!M&&!R&&n.jsxs("div",{className:Ta.unavailable,children:[n.jsx(Sf,{size:34,"aria-hidden":"true"}),n.jsx("strong",{children:"Preview unavailable"}),n.jsx("span",{children:"This file type can be opened or downloaded instead."})]})]}),n.jsxs("footer",{className:Ta.footer,children:[n.jsxs("div",{className:Ta.secondaryActions,children:[!w&&n.jsxs("a",{className:Ta.secondaryLink,href:J9(C,b),target:"_blank",rel:"noreferrer",children:[n.jsx(kT,{size:14})," Download"]}),(w||!K&&!U)&&n.jsxs("a",{className:Ta.secondaryLink,href:C,target:"_blank",rel:"noreferrer",children:[n.jsx(Bw,{size:14})," Open original"]})]}),(K||U)&&n.jsxs("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:D,children:[K?n.jsx(vT,{size:14}):n.jsx(Bw,{size:14}),K?"Open in Image Notes":"Open in Documents"]})]})]})}),document.body)}const X9=Q.lazy(()=>Po(()=>import("./TaskSettings-xVsxSa0g.js"),__vite__mapDeps([10,1,2,3,4,5,11])).then(e=>({default:e.TaskSettings})));function eH(e){const{activeTab:t,setActiveTab:r,isOpen:a,setIsOpen:s,currentTheme:i,setCurrentTheme:l,saveSettings:c,pathSaved:d,keyShortcut:f,setKeyShortcut:p,jsonBackupEnabled:g,setJsonBackupEnabled:h,mcpHostRoot:y,setMcpHostRoot:k,settingsSection:v,setSettingsSection:C,projectRoot:S,projectName:w,mcpScriptPath:_,serverHostRoot:M,showFolderBrowser:R,setShowFolderBrowser:P,folders:b,files:$,currentBrowsePath:I,fetchFolders:E,browserTarget:K,setBrowserTarget:U,handleSelectPath:L,handleAddPath:D,handleRemovePath:ie,tasks:H,loadingTasks:be,archivedTasks:Z,deletedTasks:me,activeCategories:Ve,activeTypes:Re,priorities:je,taxonomyDisplayLabels:ye,taxonomies:ue,searchQuery:ve,setSearchQuery:Pe,filterCategories:Le,setFilterCategories:se,filterTypes:V,setFilterTypes:W,filterPriorities:z,setFilterPriorities:fe,filterStatus:ke,setFilterStatus:Y,filterAssignees:we,setFilterAssignees:q,assigneeOptions:le,filterTaxonomies:$e,setFilterTaxonomies:re,sortBy:de,setSortBy:He,sortOrder:ce,toggleSortOrder:pe,showArchive:xe,setShowArchive:N,taskScope:X,setTaskScope:Ae,clearFilters:Te,filteredTasks:he,filteredArchive:ot,groupedTasks:We,collapsedCategories:Xe,setCollapsedCategories:ae,handleEdit:G,handleDelete:Ie,handleCopyId:Fe,handleUpdateTask:it,handleToggleComplete:Me,handleToggleCancel:qe,handleToggleInProgress:ge,handleToggleReview:_e,handleSetStatus:Be,handleArchiveTask:Ge,handleBulkArchive:F,handleUnarchive:Ne,handleRestoreDeletedTask:Ce,handleRestoreSelectedDeletedTasks:ut,handlePermanentlyDeleteDeletedTask:mt,handleEmptyDeletedTasks:Ue,fetchArchive:wt,editingTaskId:kt,loading:rt,error:Ht,clearTaskError:lr,title:rr,setTitle:wr,setTitleDraft:st,description:zt,setDescription:Lt,setDescriptionDraft:Mt,checklistItems:Ee,setChecklistItems:ct,category:lt,setCategory:Je,type:nt,setType:Ct,priority:Rt,setPriority:Dt,complexity:It,setComplexity:Qt,status:ir,setStatus:dr,manualComplexityEnabled:sr,checklistDropdownEnabled:pr,showTaskCardStatusLabel:Jr,assignee:Tr,setAssignee:br,scheduledDate:ur,setScheduledDate:Qr,dueDate:Hr,setDueDate:Gt,workstreamInput:bt,setWorkstreamInput:gr,formTaxonomies:u,setFormTaxonomies:ht,comments:yr,newCommentText:Er,setNewCommentText:mn,attachments:qt,setAttachments:Vr,setAttachmentsDirty:Tt,descriptionFocused:Ut,setDescriptionFocused:fr,showMarkdownHelp:$t,setShowMarkdownHelp:Mr,handleSubmit:Fr,resetForm:Vt,handleAddComment:Dr,handleSetWorkstreamForCurrentTask:Ye,handleOpenTaskById:en,autoSaveState:bn,unsavedModalOpen:tn,setUnsavedModalOpen:ft,pendingNavigation:rn,handleNavigation:Nt,handleClose:or,scheduleWarningPrompt:xr,confirmScheduleWarning:hn,cancelScheduleWarning:ys,uiNotice:Nn,pushNotice:Sn,clearNotice:kr,taskReturnTrail:cr,clearReturnToParentTask:Wr,returnToPreviousTask:on,copiedId:dt,recentlyChangedTaskIds:Un,tasksScrollRef:Tn,setTasksScrollPos:jn,currentTask:an,currentTaskWorkstream:Ds,currentTaskInitiative:da,handleUpdateCategory:J,handleRemoveCategory:Qe,handleSaveCategory:St,handleUpdateCategoryIcon:Xt,handleUpdateCategoryColor:at,handleSaveType:Ft,handleRemoveType:Lr,handleUpdateTaxonomies:Nr,handleUpdatePriorities:Rr,pathValidation:Kt,validatePaths:Bn,getCategoryPaths:Xn,commentsEndRef:va,currentWorkspaceId:Cr,authUserId:cn,settingsModel:kn,onHeaderMouseDown:zn,isDragging:ea}=e,La=WC(H,en),mr=o.useCallback(vt=>{if(vt.kind==="initiative"||vt.kind==="workstream"){const nn=vt.kind==="initiative"?e.initiatives.find(ta=>ta.referenceNumber===vt.referenceNumber):e.workstreams.find(ta=>ta.referenceNumber===vt.referenceNumber);if(!nn){Sn(`${vt.token} could not be found.`,"error");return}const vn=y4({applicationBaseUrl:window.location.origin,workspaceId:String(Cr||"default").trim()||"default",target:vt.kind,id:nn.id});if(!vn){Sn(`${vt.token} could not be opened.`,"error");return}window.open(vn,"_blank","noopener,noreferrer");return}const nr=String(Cr||"default").trim()||"default";FC(vt,{workspaceId:nr}).then(nn=>{Ef(nn,{ownerType:"task",ownerId:an?.id||null,ownerReferenceLabel:hs(an),workspaceId:nr})}).catch(()=>{Sn(`${vt.token} could not be opened.`,"error")})},[an,Cr,e.initiatives,e.workstreams,Sn]),Zo=o.useMemo(()=>({...La,entityReferences:{resolve:oA,activate:mr}}),[mr,La]),Za=o.useRef(null),[ks,Eo]=Q.useState(0);o.useLayoutEffect(()=>{if(t==="tasks"&&Tn.current&&ks>0){const vt=setTimeout(()=>{Tn.current&&(Tn.current.scrollTop=ks)},50);return()=>clearTimeout(vt)}},[t,ks,H]);const xa=vt=>{He(vt)},Ja=()=>{Nt(()=>{if(t==="add"||t==="settings"){if(t==="add"&&on())return;t==="add"&&cr.length>0&&Wr(),t==="add"&&Vt(),r("tasks")}else e.onClose?e.onClose():or()})},Ra=()=>{ft(!1),rn?(t==="add"&&Vt(),rn()):r("tasks")},vs=async()=>{await Fr({preventDefault:()=>{}}),ft(!1),rn&&rn()},Qa=(vt,nr)=>{ht(nn=>({...nn,[vt]:nr}))},ws=o.useCallback(vt=>{Vt(),Je(vt),Nt(()=>{r("add")})},[Vt,Je,r,Nt]),ln=Q.useMemo(()=>me.map(vt=>({...vt.taskSnapshot,isDeleted:!0,deletedRecordId:vt.id,deletedAt:vt.deletedAt,deletedExpiresAt:BC(vt.deletedAt)})),[me]),Oa=Q.useMemo(()=>new globalThis.Map(me.map(vt=>[vt.taskId,vt])),[me]),yn=Q.useMemo(()=>{const vt=bg(ve),nr={categories:Ve,types:Re,priorities:je,assigneeOptions:le,taxonomies:ue},nn=Ve.every(Ar=>Le.includes(Ar.value)),vn=Re.every(Ar=>V.includes(Ar.value)),ta=Array.from(new Set(z.map(Ar=>Number(Ar)).filter(Ar=>Number.isFinite(Ar)))),Os=je.map(Ar=>Number(Ar.value)).filter(Ar=>Number.isFinite(Ar)).every(Ar=>ta.includes(Ar)),Bs=["task","in-progress","review","done","cancelled","on-hold"].every(Ar=>ke.includes(Ar)),Xa=le.length>0&&le.every(Ar=>we.includes(Ar.value)),Xr=$f(ue,ln);return ln.filter(Ar=>{const An=Vh(Ar,vt,nr),es=nn||Le.includes(Ar.category),Wn=Os||ta.includes(Oh(Ar.priority)),ra=vn||V.includes(Ar.type||po),ts=Bs||ke.includes(Ar.status),rs=Xa||we.includes(Ar.assignee||"unassigned"),na=Object.entries($e).every(([aa,un])=>{const bs=Xr.find(Hn=>Hn.id===aa);if(!bs||Dv(bs,ln).every(Hn=>un.includes(Hn.value)))return!0;const pn=Ar.taxonomies?.[aa];return pn?Array.isArray(pn)?pn.some(Hn=>un.includes(Hn)):un.includes(pn):un.includes("")});return An&&es&&Wn&&ra&&ts&&rs&&na}).sort((Ar,An)=>Gh(Ar,An,de,ce,ue))},[Ve,Re,Z,le,ln,we,Le,z,ke,$e,V,je,ve,de,ce,ue,H]),Vs=Q.useMemo(()=>{const vt={};return yn.forEach(nr=>{const vn=Ve.find(ta=>ta.value===nr.category||ta.label===nr.category)?.label||nr.category||"General";vt[vn]||(vt[vn]=[]),vt[vn].push(nr)}),vt},[Ve,yn]),Mn=$C(me,yn.map(vt=>vt.id),X==="deleted"),Ls=X==="archived"?ot.length:X==="deleted"?yn.length:he.length;return n.jsxs(n.Fragment,{children:[n.jsxs("div",{ref:Za,className:`${Jt.modal} ${x.coreModal} ${t==="settings"?Jt.settingsViewModal:""}`,"data-theme":i,children:[n.jsxs("div",{className:"tf-modal-header",onMouseDown:zn,style:{cursor:zn?ea?"grabbing":"grab":"default"},children:[n.jsxs("div",{className:`tf-modal-title ${zr.headerTitleWidget}`,children:["Taskforce",w&&n.jsxs(n.Fragment,{children:[n.jsx("span",{className:x.projectSlash,children:"/"}),n.jsx("span",{className:x.projectName,style:{fontSize:"14px",padding:"1px 6px"},children:w})]}),n.jsx("span",{className:x.taskCountBadge,title:X==="deleted"?"Trash tasks — automatically deleted after 90 days":`${X.charAt(0).toUpperCase()+X.slice(1)} tasks`,children:Ls})]}),n.jsxs("div",{className:Jt.headerActions,children:[t==="tasks"&&n.jsx(n.Fragment,{children:n.jsx("button",{className:"tf-control-icon",onClick:()=>{Nt(()=>{Vt(),r("add")})},title:"Add New Task","aria-label":"Add New Task",children:n.jsx(Ko,{size:18})})}),n.jsx("button",{className:`tf-control-icon ${t==="settings"?"tf-control-icon-active":""}`,onClick:()=>{t!=="settings"&&Nt(()=>{r("settings")})},title:"Settings","aria-label":"Settings",children:n.jsx(Af,{size:18})}),n.jsx("button",{className:"tf-control-icon",onClick:Ja,title:t==="tasks"?"Close":"Back to Tasks","aria-label":t==="tasks"?"Close":"Back to Tasks",children:t==="tasks"?n.jsx(fo,{size:20}):n.jsx(wT,{size:20})})]})]}),n.jsx(eg,{notice:t==="add"?null:Nn,onDismiss:kr}),n.jsx(__,{theme:i}),t==="add"&&n.jsxs("div",{className:x.taskNoticeAnchor,children:[n.jsx(A_,{editingTaskId:kt,loading:rt,autoSaveState:bn,title:rr,status:ir,onStatusChange:dr,currentTask:an,currentTaskWorkstream:Ds,currentTaskInitiative:da,workstreams:e.workstreams,onWorkstreamInputChange:gr,onSetWorkstreamForCurrentTask:Ye,handleSubmit:Fr,handleCopyId:Fe,copiedId:dt,tasks:H,handleToggleInProgress:ge,handleToggleReview:_e,handleToggleComplete:Me,handleToggleCancel:qe,handleSetStatus:Be,handleArchiveTask:Ge,handleUnarchiveTask:vt=>{if(an?.isDeleted){const nr=Oa.get(vt);nr&&Ce(nr.id,nr.taskId);return}Ne(vt)},handleRestoreDeletedTask:vt=>{const nr=me.find(nn=>nn.id===vt);Ce(vt,nr?.taskId)},handlePermanentlyDeleteDeletedTask:vt=>{mt(vt)}}),n.jsx(eg,{notice:Ht?{message:Ht,tone:"error"}:Nn,onDismiss:()=>{lr(),kr()},placement:"task"})]}),t==="tasks"&&n.jsx(k_,{ref:Tn,tasks:H,archivedTasks:Z,categories:Ve,types:Re,priorities:je,workspaceId:Cr,taxonomyDisplayLabels:ye,taxonomies:ue,searchQuery:ve,filterCategories:Le,filterTypes:V,filterPriorities:z,filterStatus:ke,filterAssignees:we,assigneeOptions:le,filterTaxonomies:$e,sortBy:de,sortOrder:ce,showArchive:xe,taskScope:X,collapsedCategories:Xe,loadingTasks:be,filteredTasks:he,filteredArchive:ot,groupedTasks:We,filteredDeletedTasks:yn,groupedDeletedTasks:Vs,deletedTaskRecordByTaskId:Oa,selectedDeletedRecordIds:Mn.selectedIds,onDeletedSelectionChange:Mn.toggle,trashControls:n.jsx(C_,{theme:i,selectedRecords:Mn.selectedRecords,matchingCount:Mn.matchingRecords.length,allMatchingSelected:Mn.allMatchingSelected,someMatchingSelected:Mn.someMatchingSelected,fullTrashCount:me.length,onSelectAllMatching:Mn.selectAllMatching,onClearSelection:Mn.clear,onRestore:ut,onEmptyEntireTrash:()=>{confirm(`Permanently delete all ${me.length} tasks in Trash? Filters and selection do not limit this action. This cannot be undone.`)&&Ue()}}),copiedId:dt,recentlyChangedTaskIds:Un,showTaskCardStatusLabel:Jr,workstreams:e.workstreams,initiatives:e.initiatives,onSearchChange:Pe,onFilterCategoriesChange:vt=>se(vt),onFilterTypesChange:vt=>W(vt),onFilterPrioritiesChange:fe,onFilterStatusChange:Y,onFilterAssigneesChange:vt=>q(vt),onTaxonomyFilterChange:(vt,nr)=>re(nn=>({...nn,[vt]:nr})),onSortByChange:xa,onSortOrderChange:pe,onShowArchiveChange:N,onTaskScopeChange:Ae,onClearFilters:Te,onToggleCategory:vt=>ae(nr=>({...nr,[vt]:!nr[vt]})),onEditTask:G,onUpdateTask:it,taskReferences:Zo,onCopyId:Fe,onToggleInProgress:ge,onToggleReview:_e,onToggleComplete:Me,onToggleCancel:qe,onSetStatus:Be,onArchiveTask:Ge,onBulkArchive:F,onUnarchive:vt=>{const nr=Oa.get(vt);if(nr){Ce(nr.id,nr.taskId);return}Ne(vt)},onDelete:vt=>{const nr=Oa.get(vt);if(nr){mt(nr.id);return}Ie(vt)},onDeleteAllDeleted:()=>{Ue()},onFetchArchive:wt,onAddTaskToCategory:ws,supplementalTasks:ln}),t==="add"&&n.jsx(S_,{editingTaskId:kt,initialActivityEntryId:e.initialActivityEntryId,title:rr,description:zt,checklistItems:Ee,category:lt,type:nt,priority:Rt,complexity:It,manualComplexityEnabled:sr,assignee:Tr,scheduledDate:ur,dueDate:Hr,formTaxonomies:u,onTaxonomyChange:Qa,taxonomies:ue,comments:yr,newCommentText:Er,contextFiles:qt,currentWorkspaceId:Cr,currentActorId:cn,apiBaseUrl:"",descriptionFocused:Ut,showMarkdownHelp:$t,checklistEnabled:pr,categories:Ve,types:Re,priorities:je,taxonomyDisplayLabels:ye,assigneeOptions:le,workstreams:e.workstreams,initiatives:e.initiatives,copiedId:dt,onTitleChange:wr,onTitleDraftChange:st,onDescriptionChange:Lt,onDescriptionDraftChange:Mt,onChecklistItemsChange:ct,onCategoryChange:Je,onTypeChange:Ct,onPriorityChange:Dt,onComplexityChange:Qt,onAssigneeChange:br,onScheduledDateChange:Qr,onDueDateChange:Gt,onNewCommentTextChange:mn,onDescriptionFocusedChange:fr,onShowMarkdownHelpChange:Mr,onOpenSettings:vt=>{Nt(()=>{C(vt),r("settings")})},onSubmit:Fr,commentsEndRef:va,onAddComment:()=>Dr(Er),taskReferences:Zo,onAddContextFile:vt=>{Tt(!0),Vr(nr=>[...nr,vt])},onRemoveContextFile:async vt=>{Tt(!0),Vr(nr=>nr.filter((nn,vn)=>vn!==vt))},onUpdateContextCaption:(vt,nr)=>{Tt(!0),Vr(nn=>nn.map((vn,ta)=>ta!==vt?vn:typeof vn=="string"?{path:vn,caption:nr,timestamp:new Date().toISOString()}:{...vn,caption:nr}))},onOpenContextImage:vt=>{Ef(vt,{ownerType:"task",ownerId:kt,ownerReferenceLabel:hs(an),workspaceId:Cr})},onCopyId:Fe,onToggleInProgress:ge,onToggleReview:_e,onToggleComplete:Me,onToggleCancel:qe,onArchiveTask:Ge,onUnarchive:vt=>{if(an?.isDeleted){const nr=Oa.get(vt);nr&&Ce(nr.id,nr.taskId);return}Ne(vt)},currentTask:an}),t==="settings"&&n.jsx(o.Suspense,{fallback:n.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"2rem"},children:n.jsx(Ln,{size:20,className:x.spinner})}),children:n.jsx(X9,{settingsModel:kn,onSectionChange:C})})]}),R&&yc.createPortal(n.jsx("div",{className:In.overlay,children:n.jsxs("div",{className:In.browser,children:[n.jsxs("div",{className:In.header,children:[n.jsxs("div",{className:In.pathInfo,children:[n.jsx(gc,{size:14}),n.jsx("span",{children:I||"Project Root"})]}),n.jsxs("div",{className:In.actions,children:[I&&n.jsx("button",{className:x.helpLink,onClick:()=>{const vt=I.split("/").filter(Boolean);vt.pop(),E(vt.length?vt.join("/")+"/":"")},children:"Back"}),n.jsx("button",{className:x.helpLink,onClick:()=>P(!1),children:"Close"})]})]}),n.jsxs("div",{className:In.list,children:[K&&typeof K=="object"&&n.jsxs("div",{className:`${In.item} ${In.itemCurrent}`,onClick:()=>L(I),children:[n.jsx(hi,{size:14})," Select Current: ./",I||"(root)"]}),b.map(vt=>n.jsxs("div",{className:In.item,onClick:()=>E(I+vt+"/"),children:[n.jsx(gc,{size:14})," ",vt,"/"]},vt)),$.map(vt=>n.jsxs("div",{className:`${In.item} ${In.itemFile}`,onClick:()=>L(I+vt),children:[n.jsx(Sf,{size:14})," ",vt]},vt)),b.length===0&&$.length===0&&n.jsx("div",{className:`${In.item} ${In.empty}`,children:"No items found"})]})]})}),document.body),tn&&n.jsx("div",{className:`${Jt.overlay} ${Jt.unsavedOverlay}`,children:n.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${Jt.modal} ${Jt.unsavedModal}`,"data-theme":i,children:[n.jsx("div",{className:`tf-modal-header ${Jt.unsavedHeader}`,children:n.jsxs("div",{className:`tf-modal-title ${Jt.unsavedTitle}`,children:[n.jsx(od,{size:20}),"Unsaved Changes"]})}),n.jsx("div",{className:`${Jt.form} ${Jt.unsavedContent}`,children:n.jsx("p",{className:Jt.unsavedText,children:"You have unsaved changes. Would you like to save them?"})}),n.jsxs("div",{className:`${Jt.formActions} ${Jt.unsavedActions}`,children:[n.jsx("button",{className:x.cancelBtn,onClick:()=>ft(!1),title:"Close dialog and continue editing",children:"Keep Editing"}),n.jsx("button",{className:x.destructiveBtn,onClick:Ra,title:"Discard unsaved changes and leave",children:"Discard"}),n.jsxs("button",{className:x.submitBtn,onClick:vs,disabled:rt,title:"Save changes and leave",children:[rt?n.jsx(Ln,{size:16,className:x.spinner}):n.jsx(zS,{size:16}),"Save"]})]})]})}),xr&&n.jsx("div",{className:`${Jt.overlay} ${Jt.unsavedOverlay}`,children:n.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${Jt.modal} ${Jt.unsavedModal}`,"data-theme":i,children:[n.jsx("div",{className:`tf-modal-header ${Jt.unsavedHeader}`,children:n.jsxs("div",{className:`tf-modal-title ${Jt.unsavedTitle}`,children:[n.jsx(od,{size:20}),"Date Warning"]})}),n.jsxs("div",{className:`${Jt.form} ${Jt.unsavedContent}`,children:[n.jsx("p",{className:Jt.unsavedText,children:"Due date is before scheduled date."}),n.jsxs("p",{style:{margin:0,fontSize:"12px",color:"var(--text-muted)"},children:["Due: ",xr.dueDate," · Scheduled: ",xr.scheduledDate]})]}),n.jsxs("div",{className:`${Jt.formActions} ${Jt.unsavedActions}`,children:[n.jsx("button",{className:x.cancelBtn,onClick:ys,children:"Go Back"}),n.jsx("button",{className:x.submitBtn,onClick:hn,children:"Save Anyway"})]})]})})]})}const tH="_accountMenuWrap_1mocf_1",rH="_avatarBtn_1mocf_5",nH="_avatarBadge_1mocf_9",aH="_avatarImage_1mocf_24",sH="_avatarIcon_1mocf_30",oH="_accountMenu_1mocf_1",iH="_accountMenuItem_1mocf_48",cH="_accountMenuItemActive_1mocf_68",lH="_accountMenuSection_1mocf_73",dH="_accountMenuSectionLabel_1mocf_79",uH="_accountMenuMeta_1mocf_88",pH="_accountMenuHint_1mocf_93",fH="_accountIdentityEmail_1mocf_99",mH="_accountIdentityBlock_1mocf_104",hH="_accountIdentityMetaLine_1mocf_109",gH="_accountIdentityMetaAction_1mocf_116",yH="_accountIdentityMetaValue_1mocf_125",kH="_accountIdentityMetaLabel_1mocf_130",vH="_accountMenuError_1mocf_159",wH="_accountHubCard_1mocf_165",bH="_profileAvatarEditor_1mocf_172",SH="_profileEditLayout_1mocf_178",AH="_profileFieldStack_1mocf_185",CH="_profileFieldLabel_1mocf_191",Zt={accountMenuWrap:tH,avatarBtn:rH,avatarBadge:nH,avatarImage:aH,avatarIcon:sH,accountMenu:oH,accountMenuItem:iH,accountMenuItemActive:cH,accountMenuSection:lH,accountMenuSectionLabel:dH,accountMenuMeta:uH,accountMenuHint:pH,accountIdentityEmail:fH,accountIdentityBlock:mH,accountIdentityMetaLine:hH,accountIdentityMetaAction:gH,accountIdentityMetaValue:yH,accountIdentityMetaLabel:kH,accountMenuError:vH,accountHubCard:wH,profileAvatarEditor:bH,profileEditLayout:SH,profileFieldStack:AH,profileFieldLabel:CH},_H="_authBlockedBanner_1virb_1",IH="_loginView_1virb_10",TH="_loginCard_1virb_20",xH="_loginCloseBtn_1virb_34",RH="_loginLogo_1virb_56",PH="_authBrandRow_1virb_62",EH="_setupHeaderRow_1virb_68",NH="_runtimeIconBadge_1virb_75",jH="_loginTitle_1virb_94",MH="_loginTitleAccent_1virb_105",DH="_loginSubtitle_1virb_109",LH="_loginError_1virb_115",OH="_loginField_1virb_121",BH="_loginFieldLabel_1virb_126",WH="_loginInput_1virb_133",$H="_loginPrimaryBtn_1virb_149",FH="_authPrimaryActions_1virb_154",UH="_registerConsent_1virb_159",zH="_registerConsentLink_1virb_167",HH="_authModeSwitch_1virb_177",VH="_authModeSwitchLink_1virb_184",GH="_authModeLinks_1virb_199",KH="_authSecondaryActions_1virb_207",qH="_authModeLink_1virb_199",YH="_optionGrid_1virb_236",ZH="_optionGroup_1virb_242",JH="_optionRow_1virb_247",QH="_inlineHint_1virb_254",XH="_actionRowEnd_1virb_260",eV="_oauthProviders_1virb_267",tV="_oauthDivider_1virb_274",rV="_oauthButtons_1virb_290",nV="_oauthButton_1virb_290",Ze={authBlockedBanner:_H,loginView:IH,loginCard:TH,loginCloseBtn:xH,loginLogo:RH,authBrandRow:PH,setupHeaderRow:EH,runtimeIconBadge:NH,loginTitle:jH,loginTitleAccent:MH,loginSubtitle:DH,loginError:LH,loginField:OH,loginFieldLabel:BH,loginInput:WH,loginPrimaryBtn:$H,authPrimaryActions:FH,registerConsent:UH,registerConsentLink:zH,authModeSwitch:HH,authModeSwitchLink:VH,authModeLinks:GH,authSecondaryActions:KH,authModeLink:qH,optionGrid:YH,optionGroup:ZH,optionRow:JH,inlineHint:QH,actionRowEnd:XH,oauthProviders:eV,oauthDivider:tV,oauthButtons:rV,oauthButton:nV},aV="_modalBody_xo2lt_1",sV="_mutedText_xo2lt_5",oV="_sectionText_xo2lt_10",iV="_modalActionsEnd_xo2lt_50",cV="_helpModalBody_xo2lt_56",lV="_helpHero_xo2lt_60",dV="_helpHeroIcon_xo2lt_67",uV="_helpHeroCopy_xo2lt_79",pV="_supportContactCard_xo2lt_84",fV="_supportContactHeader_xo2lt_90",mV="_supportEmailAddress_xo2lt_97",hV="_supportActionRow_xo2lt_112",gV="_supportAction_xo2lt_112",yV="_supportPanel_xo2lt_123",kV="_supportPanelHeader_xo2lt_132",vV="_memberRow_xo2lt_150",wV="_memberTitle_xo2lt_156",bV="_memberActions_xo2lt_160",SV="_selectRole_xo2lt_167",AV="_selectPermission_xo2lt_171",CV="_inviteRow_xo2lt_175",_V="_listHeading_xo2lt_179",IV="_auditList_xo2lt_184",TV="_auditPager_xo2lt_190",xV="_labelFixed_xo2lt_197",Br={modalBody:aV,mutedText:sV,sectionText:oV,modalActionsEnd:iV,helpModalBody:cV,helpHero:lV,helpHeroIcon:dV,helpHeroCopy:uV,supportContactCard:pV,supportContactHeader:fV,supportEmailAddress:mV,supportActionRow:hV,supportAction:gV,supportPanel:yV,supportPanelHeader:kV,memberRow:vV,memberTitle:wV,memberActions:bV,selectRole:SV,selectPermission:AV,inviteRow:CV,listHeading:_V,auditList:IV,auditPager:TV,labelFixed:xV};function RV({isOpen:e,theme:t,onClose:r,onConfirm:a}){return n.jsx(Ro,{isOpen:e,onClose:r,title:"New Workspace",size:"sm",theme:t,draggable:!0,footer:n.jsxs(n.Fragment,{children:[n.jsx("button",{type:"button",className:x.cancelBtn,onClick:r,children:"Cancel"}),n.jsx("button",{type:"button",className:x.submitBtn,onClick:a,children:"Start Setup"})]}),children:n.jsx("div",{className:`${Jt.form} ${Br.modalBody}`,children:n.jsx("p",{className:Br.sectionText,children:"Create and configure a new workspace."})})})}const PV="_editableAvatarButton_1qp11_1",EV="_editableAvatarImage_1qp11_47",NV="_editableAvatarFallback_1qp11_54",jV="_editableAvatarBadge_1qp11_65",MV="_editableAvatarProgress_1qp11_91",DV="_editableAvatarProgressError_1qp11_108",Ul={editableAvatarButton:PV,editableAvatarImage:EV,editableAvatarFallback:NV,editableAvatarBadge:jV,editableAvatarProgress:MV,editableAvatarProgressError:DV};function LV({label:e,imageUrl:t,fallbackImageUrl:r,fallback:a,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:v="Profile photo update failed",className:C="",onClick:S}){const{activeImageUrl:w,handleImageError:_}=h_(t,r),M=l??i,R=c??i,P=typeof d=="number"?`${d}px`:d,b=typeof f=="number"?`${f}px`:f;return n.jsxs("button",{type:"button",className:`${Ul.editableAvatarButton} ${C}`.trim(),"aria-label":e,"aria-busy":h,title:e,onClick:S,disabled:g,style:{"--editable-avatar-size":`${i}px`,"--editable-avatar-width":`${M}px`,"--editable-avatar-height":`${R}px`,...P?{"--editable-avatar-radius":P}:{},...b?{"--editable-avatar-badge-size":b}:{},...s?{"--editable-avatar-accent":s}:{}},children:[w?n.jsx("img",{src:w,alt:"",className:Ul.editableAvatarImage,onError:_}):n.jsx("span",{className:Ul.editableAvatarFallback,children:a}),n.jsx("span",{className:Ul.editableAvatarBadge,"aria-hidden":"true",children:n.jsx(HS,{size:p})}),h?n.jsx("span",{className:Ul.editableAvatarProgress,role:"status","aria-label":y,children:n.jsx(Ln,{size:Math.max(16,Math.round(i*.24))})}):k?n.jsx("span",{className:`${Ul.editableAvatarProgress} ${Ul.editableAvatarProgressError}`,role:"status","aria-label":v,children:n.jsx(od,{size:Math.max(16,Math.round(i*.24))})}):null]})}const OV="_modalBody_1t6q4_1",BV="_layout_1t6q4_5",WV="_sectionTabs_1t6q4_11",$V="_sectionTab_1t6q4_11",FV="_sectionPanel_1t6q4_55",UV="_section_1t6q4_11",zV="_sectionHeader_1t6q4_65",HV="_cardHeader_1t6q4_66",VV="_planSummary_1t6q4_67",GV="_intervalRow_1t6q4_68",KV="_sectionCard_1t6q4_81",qV="_sectionActions_1t6q4_87",YV="_inlineActions_1t6q4_88",ZV="_loginMethodList_1t6q4_96",JV="_loginMethodRow_1t6q4_101",QV="_loginMethodIcon_1t6q4_110",XV="_loginMethodCopy_1t6q4_122",eG="_addPasswordForm_1t6q4_137",tG="_linkProviderBlock_1t6q4_138",rG="_fieldLabel_1t6q4_145",nG="_planName_1t6q4_157",qr={modalBody:OV,layout:BV,sectionTabs:WV,sectionTab:$V,sectionPanel:FV,section:UV,sectionHeader:zV,cardHeader:HV,planSummary:VV,intervalRow:GV,sectionCard:KV,sectionActions:qV,inlineActions:YV,loginMethodList:ZV,loginMethodRow:JV,loginMethodIcon:QV,loginMethodCopy:XV,addPasswordForm:eG,linkProviderBlock:tG,fieldLabel:rG,planName:nG},aG=new Set(["active","trialing","grace"]),sS={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."},fh={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 ld(e){return String(e||"").trim()}function I_(e){return ld(e).toLowerCase()}function sG(e){return ld(e).toLowerCase()}function oG(e){return!!(ld(e?.stripeCustomerId)||ld(e?.stripeSubscriptionId))}function iG(e){const t=ld(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 cG(e){return aG.has(I_(e))}function Uk(e,t){const r=I_(e?.entitlementState),a=sG(e?.gate||t),s=ld(e?.billingConflictCode).toUpperCase(),i=ld(e?.message),l=cG(r),c=oG(e);return s==="CHECKOUT_SESSION_EXPIRED"?{entitlementState:r||null,gate:a||null,isActive:!1,allowReturnToApp:!1,statusTone:"info",message:sS.CHECKOUT_SESSION_EXPIRED,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:c,markCurrentPlan:!1}:s==="CHECKOUT_SESSION_SUPERSEDED"?{entitlementState:r||null,gate:a||null,isActive:!1,allowReturnToApp:!1,statusTone:"info",message:sS.CHECKOUT_SESSION_SUPERSEDED,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:c,markCurrentPlan:!1}:r==="trialing"?{entitlementState:r,gate:a||null,isActive:!0,allowReturnToApp:!0,statusTone:"success",message:iG(e),primaryAction:c?"manage_billing":"none",primaryLabel:c?"Manage Billing":null,showManageBilling:c,markCurrentPlan:!0}:l?{entitlementState:r||null,gate:a||null,isActive:!0,allowReturnToApp:!0,statusTone:"success",message:i||null,primaryAction:"none",primaryLabel:null,showManageBilling:c,markCurrentPlan:!0}:r==="suspended"?{entitlementState:r,gate:a||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:a||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||a==="plan_selection_required"?{entitlementState:r||"pending_plan_selection",gate:a||"plan_selection_required",isActive:!1,allowReturnToApp:!1,statusTone:"info",message:i||fh.planSelectionRequired,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:!1,markCurrentPlan:!1}:r==="checkout_pending"||a==="checkout_pending"?{entitlementState:r||"checkout_pending",gate:a||"checkout_pending",isActive:!1,allowReturnToApp:!1,statusTone:"info",message:i||fh.checkoutPending,primaryAction:"open_plans",primaryLabel:"Open Plans",showManageBilling:c,markCurrentPlan:!1}:a==="misconfigured"?{entitlementState:r||null,gate:a,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:fh.misconfigured,primaryAction:"none",primaryLabel:null,showManageBilling:!1,markCurrentPlan:!1}:a==="missing_entitlement"?{entitlementState:r||null,gate:a,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:fh.missingEntitlement,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:!1,markCurrentPlan:!1}:{entitlementState:r||null,gate:a||null,isActive:!1,allowReturnToApp:!1,statusTone:i?"error":"info",message:i||null,primaryAction:"none",primaryLabel:null,showManageBilling:c,markCurrentPlan:!1}}const zk=12,Hk=256,lG=new Set(["12345678","123456789","1234567890","admin123","changeme","letmein","letmein123","password","password1","password12","password123","password1234","qwerty","qwerty123","welcome","welcome123"]),dG=e=>String(e||"").trim().toLowerCase().replace(/[^a-z0-9]/g,"");function uG(e){const t=new Set,r=String(e?.email||"").trim().toLowerCase(),a=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 a.split(/[^a-z0-9]+/))s.length>=4&&t.add(s);return[...t]}function T_(){return[`Use at least ${zk} characters.`,`Use no more than ${Hk} characters.`,"Avoid common passwords or obvious patterns.","Do not include your email or display name."]}function Vk(e,t){const r=String(e||"");if(!r)return{ok:!1,code:"PASSWORD_REQUIRED",message:"Password is required."};if(r.length<zk)return{ok:!1,code:"PASSWORD_TOO_SHORT",message:`Password must be at least ${zk} characters.`};if(r.length>Hk)return{ok:!1,code:"PASSWORD_TOO_LONG",message:`Password must be no more than ${Hk} characters.`};const a=dG(r);return lG.has(a)?{ok:!1,code:"PASSWORD_TOO_COMMON",message:"Choose a less common password."}:uG(t).some(i=>a.includes(i))?{ok:!1,code:"PASSWORD_CONTAINS_PERSONAL_INFO",message:"Password cannot contain your email or display name."}:{ok:!0}}const oS={password:"Email & Password",google:"Google",github:"GitHub",apple:"Apple"},pG=[{id:"profile",label:"Profile",icon:wu},{id:"security",label:"Sign-in & Security",icon:bT},{id:"billing",label:"Plan & Billing",icon:ST}];function fG(e){const t=String(e||"").trim();return t?t.replace(/[_-]+/g," ").replace(/\b\w/g,r=>r.toUpperCase()):"Not available"}function mG({isOpen:e,theme:t,displayName:r,email:a,avatarDisplayUrl:s,accountBadgeInitial:i,profileSaveBusy:l,profileAvatarBusy:c,profileSaveError:d,profileSaveNotice:f,cloudAuthEnabled:p,availableAuthProviders:g,billingLoading:h,billingError:y,billingActionError:k,billingNotice:v,billingActionBusy:C,billingIntervalChoice:S,accountProfileSummary:w,onClose:_,onSaveProfile:M,onDisplayNameChange:R,onOpenAvatarManager:P,onFetchLoginMethods:b,onUnlinkLoginMethod:$,onAddPassword:I,onChangePassword:E,onLinkProvider:K,onBillingIntervalChange:U,onRefreshBilling:L,onUpdateInterval:D,onManageBilling:ie,onOpenPlans:H}){const[be,Z]=o.useState("profile"),[me,Ve]=o.useState([]),[Re,je]=o.useState(!1),[ye,ue]=o.useState(null),[ve,Pe]=o.useState(null),[Le,se]=o.useState(null),[V,W]=o.useState(!1),[z,fe]=o.useState(""),[ke,Y]=o.useState(!1),[we,q]=o.useState(null),[le,$e]=o.useState(!1),[re,de]=o.useState(!1),[He,ce]=o.useState(""),[pe,xe]=o.useState(""),[N,X]=o.useState(""),[Ae,Te]=o.useState(!1),[he,ot]=o.useState(null),[We,Xe]=o.useState(!1),ae=Uk(w),G=T_(),Ie=String(w?.planName||w?.planId||"No plan selected").trim()||"No plan selected",Fe=new Set(me.map(Ce=>Ce.provider)),it=Fe.has("password"),Me=g.filter(Ce=>Ce!=="password"&&!Fe.has(Ce));o.useEffect(()=>{e&&(Z("profile"),se(null),W(!1),fe(""),q(null),$e(!1),de(!1),ce(""),xe(""),X(""),ot(null),Xe(!1))},[e]),o.useEffect(()=>{be!=="security"&&(de(!1),ce(""),xe(""),X(""),ot(null))},[be]),o.useEffect(()=>{if(!e||be!=="security"||!p)return;let Ce=!1;return je(!0),ue(null),b().then(ut=>{Ce||(je(!1),ut.success&&ut.methods?Ve(ut.methods):ue(ut.error||"Failed to load login methods."))}),()=>{Ce=!0}},[be,p,e,b]);const qe=async Ce=>{Pe(Ce),se(null);const ut=await $(Ce);if(Pe(null),!ut.success){se(ut.error||"Unable to remove this login method.");return}Ve(mt=>mt.filter(Ue=>Ue.provider!==Ce))},ge=async()=>{const Ce=Vk(z,{email:a,displayName:r});if(!Ce.ok){q(Ce.message||"Password does not meet the password policy.");return}Y(!0),q(null);const ut=await I(z);if(Y(!1),!ut.success){q(ut.code==="IDENTITY_ALREADY_EXISTS"?"A password login already exists. Use Forgot Password from sign-in to recover it.":ut.error||"Failed to add password.");return}$e(!0),fe(""),W(!1);const mt=await b();mt.success&&mt.methods&&Ve(mt.methods)},_e=async()=>{if(pe!==N){ot("New passwords do not match.");return}const Ce=Vk(pe,{email:a,displayName:r});if(!Ce.ok){ot(Ce.message||"Password does not meet the password policy.");return}Te(!0),ot(null),Xe(!1);const ut=await E(He,pe);if(Te(!1),!ut.success){ot(ut.error||"Failed to change password.");return}ce(""),xe(""),X(""),de(!1),Xe(!0);const mt=await b();mt.success&&mt.methods&&Ve(mt.methods)},Be=()=>{if(ae.primaryAction==="manage_billing"){ie();return}H()},Ge=()=>n.jsxs("section",{className:qr.section,"aria-labelledby":"account-profile-heading",children:[n.jsx("div",{className:qr.sectionHeader,children:n.jsxs("div",{children:[n.jsx("h2",{className:"tf-heading-card",id:"account-profile-heading",children:"Profile"}),n.jsx("p",{className:"tf-text-secondary",children:"Manage how you appear across Taskforce."})]})}),n.jsxs("div",{className:`${qr.sectionCard} tf-surface-panel`,children:[n.jsxs("div",{className:Zt.profileEditLayout,children:[n.jsx("div",{className:Zt.profileAvatarEditor,children:n.jsx(LV,{label:"Edit profile photo",imageUrl:s,fallback:i,disabled:l||c,onClick:P})}),n.jsxs("div",{className:Zt.profileFieldStack,children:[n.jsxs("label",{className:Zt.profileFieldLabel,children:[n.jsx("span",{children:"Display name"}),n.jsx("input",{className:x.input,type:"text",value:r,onChange:Ce=>R(Ce.target.value),placeholder:"Display name",disabled:l})]}),n.jsxs("label",{className:Zt.profileFieldLabel,children:[n.jsx("span",{children:"Email"}),n.jsx("input",{className:x.input,type:"email",value:a,readOnly:!0,disabled:!0})]})]})]}),d&&n.jsx("p",{className:"tf-text-error",role:"alert",children:d}),f&&!d&&n.jsx("p",{className:"tf-text-secondary",role:"status",children:f}),n.jsx("div",{className:qr.sectionActions,children:n.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:M,disabled:l||c||!r.trim(),children:l?"Saving…":"Save profile"})})]})]}),F=()=>n.jsxs("section",{className:qr.section,"aria-labelledby":"account-security-heading",children:[n.jsx("div",{className:qr.sectionHeader,children:n.jsxs("div",{children:[n.jsx("h2",{className:"tf-heading-card",id:"account-security-heading",children:"Sign-in & Security"}),n.jsx("p",{className:"tf-text-secondary",children:"Manage the methods you use to sign in to your account."})]})}),n.jsxs("div",{className:`${qr.sectionCard} tf-surface-panel`,children:[n.jsx("div",{className:qr.cardHeader,children:n.jsxs("div",{children:[n.jsx("h3",{className:"tf-heading-card",children:"Login methods"}),n.jsx("p",{className:"tf-text-secondary",children:"Keep at least one sign-in method connected."})]})}),Re&&n.jsx("p",{className:"tf-text-secondary",children:"Loading login methods…"}),ye&&n.jsx("p",{className:"tf-text-error",role:"alert",children:ye}),Le&&n.jsx("p",{className:"tf-text-error",role:"alert",children:Le}),le&&n.jsx("p",{className:"tf-text-secondary",role:"status",children:"Password login added."}),We&&n.jsx("p",{className:"tf-text-secondary",role:"status",children:"Password changed."}),!Re&&me.length>0&&n.jsx("div",{className:qr.loginMethodList,children:me.map(Ce=>n.jsxs("div",{className:qr.loginMethodRow,children:[n.jsx("span",{className:qr.loginMethodIcon,"aria-hidden":"true",children:Ce.provider==="password"?n.jsx(AT,{size:16}):n.jsx(Au,{size:16})}),n.jsxs("span",{className:qr.loginMethodCopy,children:[n.jsx("strong",{children:oS[Ce.provider]||Ce.provider}),Ce.providerEmail&&n.jsx("span",{children:Ce.providerEmail})]}),me.length>1&&n.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:ve===Ce.provider,onClick:()=>{qe(Ce.provider)},children:ve===Ce.provider?"Removing…":"Remove"})]},Ce.provider))}),!Re&&!ye&&it&&!re&&n.jsx("div",{className:qr.sectionActions,children:n.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{de(!0),Xe(!1),ot(null)},children:"Change password"})}),re&&n.jsxs("div",{className:qr.addPasswordForm,children:[n.jsxs("label",{className:qr.fieldLabel,children:[n.jsx("span",{children:"Current password"}),n.jsx("input",{type:"password",className:x.input,value:He,onChange:Ce=>ce(Ce.target.value),disabled:Ae,autoComplete:"current-password"})]}),n.jsxs("label",{className:qr.fieldLabel,children:[n.jsx("span",{children:"New password"}),n.jsx("input",{type:"password",className:x.input,value:pe,onChange:Ce=>xe(Ce.target.value),disabled:Ae,autoComplete:"new-password"})]}),n.jsxs("label",{className:qr.fieldLabel,children:[n.jsx("span",{children:"Confirm new password"}),n.jsx("input",{type:"password",className:x.input,value:N,onChange:Ce=>X(Ce.target.value),disabled:Ae,autoComplete:"new-password"})]}),n.jsx("p",{className:"tf-text-helper",children:G.join(" ")}),he&&n.jsx("p",{className:"tf-text-error",role:"alert",children:he}),n.jsxs("div",{className:qr.inlineActions,children:[n.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{de(!1),ce(""),xe(""),X(""),ot(null)},disabled:Ae,children:"Cancel"}),n.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:()=>{_e()},disabled:Ae||!He||!pe||!N,children:Ae?"Changing…":"Change password"})]})]}),!Re&&!ye&&!it&&!V&&n.jsx("div",{className:qr.sectionActions,children:n.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{W(!0),$e(!1),q(null)},children:"Add password login"})}),V&&n.jsxs("div",{className:qr.addPasswordForm,children:[n.jsxs("label",{className:qr.fieldLabel,children:[n.jsx("span",{children:"New password"}),n.jsx("input",{type:"password",className:x.input,placeholder:"Use 12+ characters",value:z,onChange:Ce=>fe(Ce.target.value),disabled:ke,autoComplete:"new-password"})]}),n.jsx("p",{className:"tf-text-helper",children:G.join(" ")}),we&&n.jsx("p",{className:"tf-text-error",role:"alert",children:we}),n.jsxs("div",{className:qr.inlineActions,children:[n.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{W(!1),fe(""),q(null)},disabled:ke,children:"Cancel"}),n.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:()=>{ge()},disabled:ke||!z,children:ke?"Saving…":"Save password"})]})]}),!Re&&!ye&&Me.length>0&&n.jsxs("div",{className:qr.linkProviderBlock,children:[n.jsx("p",{className:"tf-label-micro",children:"Link another account"}),n.jsx("div",{className:qr.inlineActions,children:Me.map(Ce=>n.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>K(Ce),children:[n.jsx(Au,{size:15}),oS[Ce]||Ce]},Ce))})]})]})]}),Ne=()=>n.jsxs("section",{className:qr.section,"aria-labelledby":"account-billing-heading",children:[n.jsxs("div",{className:qr.sectionHeader,children:[n.jsxs("div",{children:[n.jsx("h2",{className:"tf-heading-card",id:"account-billing-heading",children:"Plan & Billing"}),n.jsx("p",{className:"tf-text-secondary",children:"Review your plan and open the secure billing portal."})]}),n.jsxs("button",{type:"button",className:"tf-button-ghost tf-button-compact",onClick:L,disabled:C||h,children:[n.jsx(VS,{size:14}),"Refresh"]})]}),n.jsxs("div",{className:`${qr.sectionCard} tf-surface-panel`,children:[h&&n.jsx("p",{className:"tf-text-secondary",children:"Loading billing status…"}),y&&n.jsx("p",{className:"tf-text-error",role:"alert",children:y}),k&&n.jsx("p",{className:"tf-text-error",role:"alert",children:k}),v&&n.jsx("p",{className:"tf-text-secondary",role:"status",children:v}),n.jsxs("div",{className:qr.planSummary,children:[n.jsxs("div",{children:[n.jsx("p",{className:"tf-label-micro",children:"Current plan"}),n.jsx("strong",{className:qr.planName,children:Ie})]}),n.jsx("span",{className:`tf-chip ${ae.isActive?"tf-chip-success":"tf-chip-neutral"}`,children:fG(w?.entitlementState)})]}),ae.message&&n.jsx("p",{className:ae.statusTone==="error"?"tf-text-error":"tf-text-secondary",children:ae.message}),w?.stripeSubscriptionId&&n.jsxs("div",{className:qr.intervalRow,children:[n.jsxs("label",{className:qr.fieldLabel,children:[n.jsx("span",{children:"Billing interval"}),n.jsxs("select",{className:x.input,value:S,onChange:Ce=>U(Ce.target.value==="year"?"year":"month"),disabled:C,children:[n.jsx("option",{value:"month",children:"Monthly"}),n.jsx("option",{value:"year",children:"Yearly"})]})]}),n.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:D,disabled:C,children:"Update interval"})]}),n.jsxs("div",{className:qr.sectionActions,children:[(ae.primaryAction==="manage_billing"||ae.primaryAction==="none")&&n.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:H,disabled:C,children:"View plans"}),ae.showManageBilling&&ae.primaryAction!=="manage_billing"&&n.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:ie,disabled:C,children:"Manage billing"}),ae.primaryLabel&&n.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:Be,disabled:C,children:C?"Working…":ae.primaryLabel})]})]})]});return n.jsx(Ro,{isOpen:e,onClose:_,title:"Account Settings",size:"mdWide",theme:t,draggable:!0,children:n.jsx("div",{className:`${Jt.form} ${qr.modalBody}`,children:n.jsxs("div",{className:qr.layout,children:[n.jsx("div",{className:qr.sectionTabs,role:"tablist","aria-label":"Account settings sections","aria-orientation":"vertical",children:pG.map(Ce=>{const ut=Ce.icon,mt=Ce.id===be;return n.jsxs("button",{type:"button",role:"tab",id:`account-settings-tab-${Ce.id}`,"aria-controls":`account-settings-panel-${Ce.id}`,"aria-selected":mt,className:qr.sectionTab,onClick:()=>Z(Ce.id),children:[n.jsx(ut,{size:16}),n.jsx("span",{children:Ce.label})]},Ce.id)})}),n.jsxs("div",{className:qr.sectionPanel,role:"tabpanel",id:`account-settings-panel-${be}`,"aria-labelledby":`account-settings-tab-${be}`,children:[be==="profile"&&Ge(),be==="security"&&F(),be==="billing"&&Ne()]})]})})})}var iS=(e,t,r,a,s,i)=>{if(i===0)e.rect(t,r,a,s);else{let l=a-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(a,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)}},hG=(e,t,r,a,s,i)=>{e.fillStyle=i;let l=a/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,a,1),e.fillRect(t,c+r,a,1),e.fillRect(t,c*2+r,a,1),e.fillRect(t,c*3+r,a,1),e.fillRect(t,c*4+r,a,1)},gG=e=>!!e.match(/^\s*data:([a-z]+\/[a-z]+(;[a-z-]+=[a-z-]+)?)?(;base64)?,[a-z0-9!$&',()*+;=\-._~:@/?%\s]*\s*$/i),x_=(e,t)=>new Promise((r,a)=>{let s=new Image;s.addEventListener("load",()=>r(s)),s.addEventListener("error",a),!gG(e)&&t&&(s.crossOrigin=t),s.src=e}),yG=e=>new Promise((t,r)=>{let a=new FileReader;a.addEventListener("load",s=>{try{if(!s?.target?.result)throw Error("No image data");t(x_(s.target.result))}catch(i){r(i)}}),a.readAsDataURL(e)}),kG=typeof File<"u",cS=e=>Math.PI/180*e,lS={x:.5,y:.5},vG=class{constructor(e){this.imageState=lS,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:a}=this.config,s={width:0,height:0},[i,l]=this.getBorders(a);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:a}}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(),a=1/this.config.scale*this.getYScale(),s={x:t.x-r/2,y:t.y-a/2,width:r,height:a},i=0,l=1-s.width,c=0,d=1-s.height;return(this.config.disableBoundaryChecks||r>1||a>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,a,s=this.getDimensions();return s.height/s.width>t/e?(r=s.height,a=r/t*e):(a=s.width,r=a/e*t),{height:r,width:a}}async loadImage(e){let t;if(kG&&e instanceof File)t=await yG(e);else if(typeof e=="string")t=await x_(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=lS}calculatePosition(e=this.imageState,t){let[r,a]=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+=a,d+=r):(c+=r,d+=a),{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(),[a,s]=this.getBorders(r.border),i=r.canvas.height,l=r.canvas.width;t=Math.max(t,0),t=Math.min(t,l/2-a,i/2-s),e.beginPath(),iS(e,a,s,l-a*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(),iS(e,a+.5,s+.5,l-a*2-1,i-s*2-1,t),e.stroke()),this.config.showGrid&&hG(e,a,s,l-a*2,i-s*2,this.config.gridColor),e.restore()}paintImage(e,t,r,a=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(a,a),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 a=r.getContext("2d");if(!a)throw Error("No context found, please report this to: https://github.com/mosch/react-avatar-editor/issues");return a.translate(r.width/2,r.height/2),a.rotate(this.config.rotate*Math.PI/180),a.translate(-(r.width/2),-(r.height/2)),this.isVertical()&&a.translate((r.width-r.height)/2,(r.height-r.width)/2),this.config.backgroundColor&&(a.fillStyle=this.config.backgroundColor,a.fillRect(0,0,r.width,r.height)),a.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 a=r.getContext("2d");if(!a)return r;let s=this.calculatePosition(t,0);return a.save(),a.translate(r.width/2,r.height/2),a.rotate(this.config.rotate*Math.PI/180),a.translate(-(r.width/2),-(r.height/2)),this.isVertical()&&a.translate((r.width-r.height)/2,(r.height-r.width)/2),this.config.backgroundColor&&(a.fillStyle=this.config.backgroundColor,a.fillRect(0,0,r.width,r.height)),a.drawImage(t.resource,s.x,s.y,s.width,s.height),a.restore(),r}calculateDragPosition(e,t,r,a){let s=r-e,i=a-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(cS(p)),h=Math.sin(cS(p)),y=d+s*g+i*h,k=f+-s*h+i*g,v=1/this.config.scale*this.getXScale(),C=1/this.config.scale*this.getYScale();return{x:y/l+v/2,y:k/c+C/2}}},dS=()=>{},wG=()=>{let e=!1;try{let t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("test",dS,t),window.removeEventListener("test",dS,t)}catch{e=!1}return e},R_=o.forwardRef((e,t)=>{let{scale:r=1,rotate:a=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:v,backgroundColor:C,crossOrigin:S,onLoadStart:w,onLoadFailure:_,onLoadSuccess:M,onImageReady:R,onImageChange:P,onMouseUp:b,onMouseMove:$,onPositionChange:I,borderColor:E,style:K}=e,U=o.useRef(null),L=o.useRef(new vG({width:l,height:c,border:s,borderRadius:i,scale:r,rotate:a,color:d,backgroundColor:C,borderColor:E,showGrid:f,gridColor:p,disableBoundaryChecks:g,disableHiDPIScaling:h,disableCanvasRotation:y,crossOrigin:S})),D=o.useRef(!1),ie=o.useRef(void 0),H=o.useRef(void 0),[be,Z]=o.useState(!1),[me,Ve]=o.useState(!1),[Re,je]=o.useState(L.current.getImageState()),ye=o.useRef(b);ye.current=b;let ue=o.useRef($);ue.current=$;let ve=o.useRef(I);ve.current=I,o.useEffect(()=>{L.current.updateConfig({width:l,height:c,border:s,borderRadius:i,scale:r,rotate:a,color:d,backgroundColor:C,borderColor:E,showGrid:f,gridColor:p,disableBoundaryChecks:g,disableHiDPIScaling:h,disableCanvasRotation:y,crossOrigin:S})},[l,c,s,i,r,a,d,C,E,f,p,g,h,y,S]);let Pe=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},[]),Le=o.useCallback(()=>{let le=Pe().getContext("2d");if(!le)throw Error("No context found, please report this to: https://github.com/mosch/react-avatar-editor/issues");return le},[Pe]),se=o.useCallback(async le=>{Ve(!0),w?.();try{let $e=await L.current.loadImage(le);D.current=!1,Z(!1),je($e),R?.(),M?.($e)}catch{_?.()}finally{Ve(!1)}},[w,R,M,_]),V=o.useCallback(()=>{let le=Pe();Le().clearRect(0,0,le.width,le.height),L.current.clearImage(),je(L.current.getImageState())},[Pe,Le]),W=o.useCallback(()=>{let le=Le(),$e=Pe();le.clearRect(0,0,$e.width,$e.height),L.current.paint(le),L.current.paintImage(le,Re,s)},[Le,Pe,Re,s,l,c,i,r,a,d,C,E,f,p,g,h,y,S]),z=o.useCallback(le=>{le.preventDefault(),D.current=!0,ie.current=void 0,H.current=void 0,Z(!0)},[]),fe=o.useCallback(()=>{D.current=!0,ie.current=void 0,H.current=void 0,Z(!0)},[]);o.useImperativeHandle(t,()=>({getImage:()=>L.current.getImage(),getImageScaledToCanvas:()=>L.current.getImageScaledToCanvas(),getCroppingRect:()=>L.current.getCroppingRect()}),[]),o.useEffect(()=>{let le=Le();k&&se(k),L.current.paint(le);let $e=He=>{if(!D.current)return;He.cancelable&&He.preventDefault();let ce="targetTouches"in He?He.targetTouches[0].pageX:He.clientX,pe="targetTouches"in He?He.targetTouches[0].pageY:He.clientY,xe=ie.current,N=H.current;if(ie.current=ce,H.current=pe,xe!==void 0&&N!==void 0){let X=L.current.getImageState();if(X.width&&X.height){let Ae=L.current.calculateDragPosition(ce,pe,xe,N);ve.current?.(Ae);let Te={...X,...Ae};L.current.setImageState(Te),je(Te)}}ue.current?.(He)},re=()=>{D.current&&(D.current=!1,Z(!1),ye.current?.())},de=wG()?{passive:!1}:!1;return document.addEventListener("mousemove",$e,de),document.addEventListener("mouseup",re,de),document.addEventListener("touchmove",$e,de),document.addEventListener("touchend",re,de),()=>{document.removeEventListener("mousemove",$e,!1),document.removeEventListener("mouseup",re,!1),document.removeEventListener("touchmove",$e,!1),document.removeEventListener("touchend",re,!1)}},[]),o.useEffect(()=>{k?se(k):!k&&Re.x!==.5&&Re.y!==.5&&V()},[k,l,c,C]),o.useEffect(()=>{W()},[W]),o.useEffect(()=>{if(!me)return;let le=U.current;if(!le)return;let $e=le.getContext("2d");if(!$e)return;let re,de=performance.now(),He=ce=>{let pe=(ce-de)/1e3,xe=.03+Math.sin(pe*2.5)*.02+.02;$e.save(),$e.clearRect(0,0,le.width,le.height),$e.fillStyle=`rgba(255,255,255,${xe})`,$e.fillRect(0,0,le.width,le.height),$e.restore(),re=requestAnimationFrame(He)};return re=requestAnimationFrame(He),()=>cancelAnimationFrame(re)},[me]);let ke=o.useRef({image:k,width:l,height:c,position:v,scale:r,rotate:a,imageX:Re.x,imageY:Re.y});o.useEffect(()=>{let le=ke.current;(le.image!==k||le.width!==l||le.height!==c||le.position!==v||le.scale!==r||le.rotate!==a||le.imageX!==Re.x||le.imageY!==Re.y)&&(P?.(),ke.current={image:k,width:l,height:c,position:v,scale:r,rotate:a,imageX:Re.x,imageY:Re.y})},[k,l,c,v,r,a,Re.x,Re.y,P]);let Y=L.current.getDimensions(),we=L.current.getPixelRatio(),q={width:Y.canvas.width,height:Y.canvas.height,cursor:be?"grabbing":"grab",touchAction:"none",maxWidth:"none",maxHeight:"none"};return Q.createElement("canvas",{width:Y.canvas.width*we,height:Y.canvas.height*we,onMouseDown:z,onTouchStart:fe,style:{...q,...K},ref:U})});R_.displayName="AvatarEditor";const bG="_avatarManagerBody_1bfoi_1",SG="_editorPanel_1bfoi_7",AG="_editorFrame_1bfoi_13",CG="_gifPreviewImage_1bfoi_21",_G="_emptyPreview_1bfoi_28",IG="_controlPanel_1bfoi_41",TG="_zoomField_1bfoi_47",xG="_zoomSlider_1bfoi_52",RG="_actionGrid_1bfoi_57",PG="_fileInput_1bfoi_71",EG="_messageStack_1bfoi_75",NG="_footerActions_1bfoi_80",zo={avatarManagerBody:bG,editorPanel:SG,editorFrame:AG,gifPreviewImage:CG,emptyPreview:_G,controlPanel:IG,zoomField:TG,zoomSlider:xG,actionGrid:RG,fileInput:PG,messageStack:EG,footerActions:NG},rk=512,jG=48,mh=512;function uS(e,t,r){return new Promise(a=>{e.toBlob(a,t,r)})}function MG(e,t){const r=String(e).trim()||"avatar",a=r.lastIndexOf(".");return a<=0?`${r}${t}`:`${r.slice(0,a)}${t}`}async function DG(e,t){const r=e.getImageScaledToCanvas(),a=document.createElement("canvas");a.width=mh,a.height=mh;const s=a.getContext("2d");if(!s)throw new Error("Image editing requires a 2D canvas context.");s.drawImage(r,0,0,mh,mh);const l=await uS(a,"image/webp",.9)||await uS(a,"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],MG(t,d),{type:c,lastModified:Date.now()})}function LG({isOpen:e,theme:t,title:r="Edit Photo",currentImageUrl:a,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:v,onGenerateImage:C,onRemoveImage:S,onDiscardPendingImage:w}){const _=o.useRef(null),M=o.useRef(null),R=o.useRef(!1),P=o.useRef(!1),[b,$]=o.useState(null),[I,E]=o.useState(""),[K,U]=o.useState(1.1),[L,D]=o.useState(!1),[ie,H]=o.useState(null),[be,Z]=o.useState(null);o.useEffect(()=>{e||($(null),E(""),U(1.1),D(!1),P.current=!1,H(null),Z(null))},[e]),o.useEffect(()=>{e&&(D(!1),P.current=!1)},[a,s,e]),o.useEffect(()=>{if(!b){E("");return}const W=URL.createObjectURL(b);return E(W),()=>URL.revokeObjectURL(W)},[b]);const me=I||s||a,Ve=b?.name||"avatar",Re=String(i||"").trim().charAt(0).toUpperCase(),je=ie||h,ye=be||y,ue=c||d,ve=o.useCallback(W=>{if(H(null),Z(null),!!W){if(!W.type.startsWith("image/")){H("Profile photo must be an image file.");return}W.type==="image/gif"&&Z("Animated GIFs will upload without repositioning."),$(W),U(1.1),D(!1),P.current=!1}},[]),Pe=o.useCallback(async()=>{H(null);const W=_.current;if(b?.type==="image/gif"){await v(b)&&k();return}if(!W||!me){H("Choose a profile photo first.");return}try{const z=await DG(W,Ve);await v(z,b,{preserveExistingSource:!b&&!!s})&&k()}catch(z){H(z instanceof Error?z.message:"Unable to prepare profile photo.")}},[a,me,s,v,k,b,Ve]),Le=o.useCallback(async()=>{if(!(!C||ue||R.current)){R.current=!0,H(null),Z(null);try{await C()&&($(null),U(1.1),D(!1),P.current=!1)}catch(W){H(W instanceof Error?W.message:"Unable to generate profile photo.")}finally{R.current=!1}}},[ue,C]),se=p||!!b||L,V=o.useMemo(()=>n.jsxs("div",{className:zo.footerActions,children:[n.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:k,disabled:c,children:"Cancel"}),n.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:()=>{Pe()},disabled:ue||!se,children:c?"Applying...":"Apply Changes"})]}),[c,se,Pe,ue,k]);return n.jsx(Ro,{isOpen:e,onClose:k,title:r,size:"md",theme:t,draggable:!0,footer:V,children:n.jsxs("div",{className:zo.avatarManagerBody,children:[n.jsxs("div",{className:zo.editorPanel,children:[n.jsx("div",{className:`tf-surface-inset ${zo.editorFrame}`,onPointerDown:()=>{me&&b?.type!=="image/gif"&&(P.current=!0)},children:b?.type==="image/gif"&&I?n.jsx("img",{src:I,alt:"",className:zo.gifPreviewImage}):me?n.jsx(R_,{ref:_,image:me,width:rk,height:rk,border:jG,borderRadius:rk/2,scale:K,color:[15,15,26,.72],backgroundColor:"transparent",onPositionChange:()=>{P.current&&D(!0)},style:{width:"100%",height:"100%",maxWidth:"100%",maxHeight:"100%",display:"block",borderRadius:"var(--radius-lg)",boxShadow:"var(--box-shadow-sm)"},disableCanvasRotation:!0}):n.jsx("div",{className:zo.emptyPreview,"aria-hidden":"true",children:Re})}),n.jsxs("div",{className:zo.controlPanel,children:[n.jsx("input",{ref:M,type:"file","aria-label":"Choose profile photo",accept:l,className:zo.fileInput,onChange:W=>ve(W.target.files?.[0]||null),disabled:ue}),n.jsxs("div",{className:zo.actionGrid,children:[n.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>M.current?.click(),disabled:ue,children:[n.jsx(CT,{size:16}),"Choose"]}),p&&w&&n.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:w,disabled:ue,children:[n.jsx(mi,{size:16}),"Discard"]}),C&&n.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{Le()},disabled:ue,"aria-busy":d,children:[d?n.jsx(Ln,{size:16,className:x.spinner}):n.jsx(_T,{size:16}),d?"Generating":f]}),g&&S&&n.jsxs("button",{type:"button",className:"tf-button-destructive tf-button-compact",onClick:S,disabled:ue,children:[n.jsx(Lf,{size:16}),"Remove"]})]}),n.jsxs("label",{className:`tf-field-stack ${zo.zoomField}`,children:[n.jsx("span",{className:"tf-field-label",children:"Zoom"}),n.jsx("input",{type:"range",min:"1",max:"3",step:"0.01",value:K,onChange:W=>{U(Number(W.target.value)),D(!0)},className:zo.zoomSlider,disabled:ue||!me||b?.type==="image/gif"})]})]})]}),(je||ye)&&n.jsxs("div",{className:zo.messageStack,children:[je&&n.jsx("p",{className:"tf-text-error",children:je}),ye&&!je&&n.jsx("p",{className:"tf-text-helper",children:ye})]})]})})}const Gk="support@taskforcehq.ai";function hh(e){return String(e||"").trim()}function OG(e={}){const t=hh(e.workspaceName),r=hh(e.workspaceId),a=hh(e.accountLabel),s=hh(e.runtimeMode),i=[t?`Workspace: ${t}`:"",r?`Workspace ID: ${r}`:"",a?`Account: ${a}`:"",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:${Gk}?${c.toString()}`}function BG({isOpen:e,theme:t,onClose:r,onOpenSettings:a,supportMailtoHref:s}){const[i,l]=o.useState("idle"),c=async()=>{try{await navigator.clipboard.writeText(Gk),l("copied"),window.setTimeout(()=>l("idle"),1600)}catch{l("failed"),window.setTimeout(()=>l("idle"),2200)}};return n.jsx(Ro,{isOpen:e,onClose:r,title:"Help & Support",size:"sm",theme:t,draggable:!0,children:n.jsxs("div",{className:`${Jt.form} ${Br.modalBody} ${Br.helpModalBody}`,children:[n.jsxs("div",{className:Br.helpHero,children:[n.jsx("span",{className:Br.helpHeroIcon,"aria-hidden":"true",children:n.jsx(IT,{size:20})}),n.jsxs("div",{className:Br.helpHeroCopy,children:[n.jsx("h2",{className:"tf-heading-card",children:"How can we help?"}),n.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."})]})]}),n.jsxs("section",{className:`${Br.supportContactCard} tf-surface-panel`,"aria-labelledby":"support-email-heading",children:[n.jsx("div",{className:Br.supportContactHeader,children:n.jsxs("div",{children:[n.jsx("h3",{className:"tf-label-micro",id:"support-email-heading",children:"Email support"}),n.jsx("a",{className:Br.supportEmailAddress,href:s,children:Gk})]})}),n.jsxs("div",{className:Br.supportActionRow,children:[n.jsxs("a",{className:`tf-button-primary tf-button-compact ${Br.supportAction}`,href:s,children:[n.jsx(TT,{size:15}),"Email Support"]}),n.jsxs("button",{className:`tf-button-secondary tf-button-compact ${Br.supportAction}`,onClick:()=>{c()},type:"button",children:[i==="copied"?n.jsx(hi,{size:15}):n.jsx(GS,{size:15}),i==="copied"?"Copied":i==="failed"?"Copy failed":"Copy address"]})]})]}),n.jsxs("section",{className:Br.supportPanel,"aria-labelledby":"support-settings-heading",children:[n.jsxs("div",{className:Br.supportPanelHeader,children:[n.jsx(Af,{size:17,"aria-hidden":"true"}),n.jsxs("div",{children:[n.jsx("h3",{className:"tf-heading-card",id:"support-settings-heading",children:"Check workspace settings"}),n.jsx("p",{className:"tf-text-secondary",children:"Common workspace, appearance, and setup options are available in Settings."})]})]}),n.jsxs("button",{className:`tf-button-secondary tf-button-compact ${Br.supportAction}`,onClick:a,type:"button",children:[n.jsx(Af,{size:15}),"Open Settings"]})]})]})})}function WG({prompt:e,theme:t,onClose:r,onConfirm:a}){return n.jsx(Ro,{isOpen:!!e,onClose:r,title:"Date Warning",size:"sm",theme:t,draggable:!1,closeOnOverlayClick:!1,children:n.jsxs("div",{className:`${x.form} tf-inline-stack-sm`,style:{padding:"16px",gap:"12px"},children:[n.jsx("p",{className:"tf-text-body",children:"Due date is before scheduled date."}),e&&n.jsxs("p",{className:"tf-text-helper",children:["Due: ",e.dueDate," · Scheduled: ",e.scheduledDate]}),n.jsxs("div",{className:x.formActions,children:[n.jsx("button",{className:x.cancelBtn,onClick:r,children:"Go Back"}),n.jsx("button",{className:x.submitBtn,onClick:a,children:"Save Anyway"})]})]})})}function $G({isOpen:e,theme:t,onClose:r,onConfirm:a}){return n.jsx(Ro,{isOpen:e,onClose:r,title:"Cloud Sync Warning",size:"sm",theme:t,draggable:!1,closeOnOverlayClick:!1,children:n.jsxs("div",{className:`${x.form} tf-inline-stack-sm`,style:{padding:"16px",gap:"12px"},children:[n.jsx("p",{className:"tf-text-body",children:"Turning on cloud sync can renumber task, document, and image references to match the cloud workspace."}),n.jsxs("p",{className:"tf-text-helper",children:["Labels like ",n.jsx("code",{children:"T-12"}),", ",n.jsx("code",{children:"D-4"}),", and ",n.jsx("code",{children:"IMG-2"})," may change. Plain file attachments are not renumbered."]}),n.jsxs("div",{className:x.formActions,children:[n.jsx("button",{className:x.cancelBtn,onClick:r,children:"Go Back"}),n.jsx("button",{className:x.submitBtn,onClick:a,children:"Enable Sync Anyway"})]})]})})}const FG="_syncStatusOverlay_qjzsr_1",UG="_syncStatusModal_qjzsr_5",zG="_syncStatusTop_qjzsr_10",HG="_syncStatusMetaHeader_qjzsr_19",VG="_syncStatusBadge_qjzsr_26",GG="_syncStatusLabel_qjzsr_40",KG="_syncToggle_qjzsr_51",qG="_syncToggleControl_qjzsr_58",YG="_syncToggleControlEnabled_qjzsr_74",ZG="_syncToggleControlDisabled_qjzsr_80",JG="_syncToggleControlBusy_qjzsr_84",QG="_syncToggleControlBlocked_qjzsr_89",XG="_syncToggleInput_qjzsr_94",eK="_syncToggleState_qjzsr_107",tK="_syncToggleStateOn_qjzsr_121",rK="_syncToggleStateOff_qjzsr_125",nK="_syncToggleThumb_qjzsr_134",aK="_syncStatusOverview_qjzsr_145",sK="_syncStatusEventsPanel_qjzsr_146",oK="_syncStatusAdvanced_qjzsr_147",iK="_syncStatusOverviewRow_qjzsr_158",cK="_syncStatusSummaryValue_qjzsr_172",lK="_syncStatusValue_qjzsr_173",dK="_syncStatusIssueRow_qjzsr_181",uK="_syncStatusIssueRowError_qjzsr_185",pK="_syncStatusValueMuted_qjzsr_189",fK="_syncStatusValueError_qjzsr_196",mK="_syncStatusKeyMetrics_qjzsr_203",hK="_syncStatusCompactGrid_qjzsr_204",gK="_syncStatusCompactItem_qjzsr_217",yK="_syncStatusAdvancedContent_qjzsr_258",kK="_syncStatusDiagnosticsList_qjzsr_265",vK="_syncStatusOwnershipControl_qjzsr_271",wK="_syncStatusDiagnosticRow_qjzsr_292",bK="_syncStatusPanelHeader_qjzsr_314",SK="_syncStatusPanelMeta_qjzsr_321",AK="_syncStatusMismatchPanel_qjzsr_327",CK="_syncStatusMismatchItem_qjzsr_337",_K="_syncStatusEventFilters_qjzsr_356",IK="_syncStatusEventFilterActive_qjzsr_383",TK="_syncStatusEventsList_qjzsr_388",xK="_syncStatusEventItem_qjzsr_398",RK="_syncStatusEventItemError_qjzsr_405",PK="_syncStatusEventItemMuted_qjzsr_410",EK="_syncStatusEventLine_qjzsr_414",NK="_syncStatusFooter_qjzsr_424",jK="_syncStatusFooterPrimary_qjzsr_433",Pt={syncStatusOverlay:FG,syncStatusModal:UG,syncStatusTop:zG,syncStatusMetaHeader:HG,syncStatusBadge:VG,syncStatusLabel:GG,syncToggle:KG,syncToggleControl:qG,syncToggleControlEnabled:YG,syncToggleControlDisabled:ZG,syncToggleControlBusy:JG,syncToggleControlBlocked:QG,syncToggleInput:XG,syncToggleState:eK,syncToggleStateOn:tK,syncToggleStateOff:rK,syncToggleThumb:nK,syncStatusOverview:aK,syncStatusEventsPanel:sK,syncStatusAdvanced:oK,syncStatusOverviewRow:iK,syncStatusSummaryValue:cK,syncStatusValue:lK,syncStatusIssueRow:dK,syncStatusIssueRowError:uK,syncStatusValueMuted:pK,syncStatusValueError:fK,syncStatusKeyMetrics:mK,syncStatusCompactGrid:hK,syncStatusCompactItem:gK,syncStatusAdvancedContent:yK,syncStatusDiagnosticsList:kK,syncStatusOwnershipControl:vK,syncStatusDiagnosticRow:wK,syncStatusPanelHeader:bK,syncStatusPanelMeta:SK,syncStatusMismatchPanel:AK,syncStatusMismatchItem:CK,syncStatusEventFilters:_K,syncStatusEventFilterActive:IK,syncStatusEventsList:TK,syncStatusEventItem:xK,syncStatusEventItemError:RK,syncStatusEventItemMuted:PK,syncStatusEventLine:EK,syncStatusFooter:NK,syncStatusFooterPrimary:jK};function P_(e){return/\btaskforce session is invalid\b|\bauthenticated taskforce session is required\b/i.test(e||"")}function MK(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 me=e.phase==="error",Ve=P_(e.errorMessage);return{header:{actionable:!0,status:me?"attention":"syncing",syncEnabledLabel:"unknown",summary:me?"The shared sync coordinator status is unavailable.":"Reading shared sync coordinator status.",recommendedAction:me?Ve?"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||(me?"Coordinator status unavailable.":"None")},pendingLocalChanges:"Unknown",incomingCloudChanges:"Not checked",stage:me?"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,a=r?.runner||null,s=a?.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=!a||!a.running||!a.acceptingWork||!s,v=s?.controlState==="error"||!!s?.lastError,C=s?.controlState==="retry-wait"||f>0,S=t.permits.recoveryObligations,w=s?.pendingV2Push||null,_=w?.lastBatchProgress||null,M=Math.max(0,(w?.frozenPayload.changes.length||0)-(_?.completedChanges||0)),R=!!(_&&(_.failureDomain==="content"||_.failureDomain==="mixed")&&M>0),P=!!(s?.syncEnabled&&s.syncPhase==="attach-cloud"&&!s.lastPullAt),b=!!(a?.queuedCommandCount||["starting","pulling","pushing","repairing","stopping"].includes(s?.controlState||"")||(l?.inFlight??i?.inFlight??0)>0),$=b||(i?.pending||0)>0,I=R&&!b,E=b,K=s?.controlState==="repairing";let U="healthy",L="Sync is healthy.",D="No action needed.",ie=s?.lastError||"None";if(h)U="attention",L="Sync is paused because the coordinator credential is unavailable.",D="Sign in again, then retry sync.";else if(y)U="syncing",L="Sync ownership is changing safely.",D="Wait for the coordinator transition to finish.";else if(k)U="attention",L="The shared sync runner is unavailable.",D="Retry sync. If the runner does not recover, restart the local server.";else if(g>0)U="attention",L=`${g} incoming attachment ${g===1?"change is":"changes are"} waiting for content.`,D=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(S>0||d>0||c>0||p)U="attention",L="Durable local changes need reconciliation.",D=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(I){U="attention";const me=_.failureDomain==="content"?"content":"push";L=`${_.failedChangeCount} ${me} ${_.failedChangeCount===1?"change is":"changes are"} waiting to retry; ${M} total push ${M===1?"change remains":"changes remain"}.`,D=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",L="Workspace sync is turned off.",D="Turn on sync when you are ready to connect this workspace.",ie="None"):v&&!b?(U="attention",L=s?.lastError||"The shared sync runner reported an error.",D="Press Retry now. If the same issue returns, press Repair."):C?(U="attention",L="Sync is waiting for a scheduled retry.",D="Wait for the retry, or press Retry now."):P?(U="attention",L="The initial cloud baseline has not completed.",D="Keep sync enabled until the first cloud check completes."):$&&(U="syncing",L="The shared sync runner is processing workspace changes.",D="Wait for the current transfer to finish.");const H=s?.lastPullAt?s.controlState==="pulling"?"Checking — total unknown":"No known backlog at last check":s?.controlState==="pulling"?"Checking — total unknown":"Not checked",be=i?i.activeDepth+M:w?M:"Unknown",Z=s?.controlState||"unavailable";return{header:{actionable:!0,status:U,syncEnabledLabel:s?.syncEnabled?"yes":"no",summary:L,recommendedAction:D,lastError:ie},pendingLocalChanges:be,incomingCloudChanges:H,stage:Z,lastPullAt:s?.lastPullAt||null,lastPushAt:s?.lastPushAt||null,lastSyncedAt:s?.lastSyncedAt||null,busy:E,repairBusy:K,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(S)},{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:R?`${_.failedChangeCount} blocked ${_.failureDomain==="content"?"content":"push"} ${_.failedChangeCount===1?"change":"changes"}; ${M} total push ${M===1?"change remains":"changes remain"}; ${_.completedBatches}/${_.totalBatches} batches settled`:"None"},{label:"Oldest actionable change",value:i?.oldestActionableAt||"None"},{label:"Local data version",value:String(t.state.localDataVersion)}]}}function DK(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 LK(e){const t=e.runtimeMode==="local"&&e.isAuthenticated;if(t){const r=Math.max(0,Number(e.coordinatorRecoveryObligations||0)),a=DK(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:a?.summary||e.workspaceSyncSummary,recommendedAction:a?.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 OK({isOpen:e,theme:t,currentWorkspaceLabel:r,syncStatus:a,syncStatusMeta:s,workspaceCloudSyncEnabled:i,syncControlBusy:l,canManageWorkspaceSync:c,workspaceSyncSummary:d,workspaceSyncRecommendedAction:f,workspaceSyncRepairBusy:p,referenceMismatchCount:g,syncStageLabel:h,workspaceSyncPendingChanges:y,incomingCloudChanges:k,formattedLastSyncTime:v,formattedLastPullTime:C,formattedLastPushTime:S,syncLastError:w,activeReferenceMismatchSummaries:_,syncDiagnosticsSummary:M,syncEventRows:R,syncEventsListRef:P,workspaceSyncRepairQueued:b,workspaceSyncBusy:$,workspaceSyncCopied:I,coordinatorOwnershipMode:E,coordinatorOwnershipTransferBusy:K,coordinatorOwnershipTransferDisabled:U,onClose:L,onToggleWorkspaceSync:D,onRepairSync:ie,onCopyReport:H,onRetrySync:be,onTransferCoordinatorOwnership:Z}){const[me,Ve]=o.useState("all");o.useEffect(()=>{e&&Ve("all")},[e]);const Re=a==="attention",je=p?g>0?`Repair is reconciling cloud state, including ${g} reference mismatch${g===1?"":"es"}.`:"Repair is reconciling workspace state from the cloud.":Re&&w!=="None"?w:Re?d:"No active issue.",ye=!p&&Re&&w!=="None",ue=/\banother local taskforce process owns workspace synchronization\b/i.test(w),ve=P_(w),Pe=i&&!ue&&!ve&&(Re||$||p||b),Le=i&&!ue&&!ve&&($||Re||/\bpress sync\b/i.test(f)),se=o.useMemo(()=>me==="issues"?R.filter(W=>W.tone==="error"):R,[me,R]),V=n.jsxs("div",{className:Pt.syncStatusFooter,children:[n.jsxs("button",{className:x.cancelBtn,onClick:H,title:"Copy the current sync manager report for support or AI troubleshooting.",children:[n.jsx(GS,{size:14}),n.jsx("span",{children:I?"Copied":"Copy Report"})]}),n.jsxs("div",{className:Pt.syncStatusFooterPrimary,children:[n.jsx("button",{className:x.cancelBtn,onClick:ie,disabled:!Pe||p||b,title:p?"Repair is running now.":b?"Repair is queued and will start when the current sync finishes.":i?ue?"Repair is unavailable in this process. Use the Taskforce process that owns workspace synchronization.":ve?"Sign out and sign back in before running Repair.":$?"Queue a repair to start automatically when the current sync finishes.":Pe?"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?n.jsxs(n.Fragment,{children:[n.jsx(Ln,{size:14,className:x.spinner}),"Repairing..."]}):b?"Repair Queued":"Repair"}),n.jsx("button",{className:x.submitBtn,onClick:be,disabled:!Le||$,title:$?"A sync request is already running.":i?ue?"Retry is unavailable in this process. Use the Taskforce process that owns workspace synchronization.":ve?"Sign out and sign back in before retrying sync.":Le?"Retry workspace synchronization now.":"No retry is currently needed.":"Turn on workspace sync before retrying.",children:$?n.jsxs(n.Fragment,{children:[n.jsx(Ln,{size:14,className:x.spinner}),"Syncing..."]}):n.jsxs(n.Fragment,{children:[n.jsx(VS,{size:14}),"Retry now"]})})]})]});return n.jsx(Ro,{isOpen:e,onClose:L,title:"Sync Manager",size:"mdWide",theme:t,draggable:!0,className:Pt.syncStatusOverlay,footer:V,children:n.jsxs("div",{className:`${Jt.form} ${Pt.syncStatusModal}`,children:[n.jsxs("div",{className:Pt.syncStatusTop,children:[n.jsxs("div",{className:Pt.syncStatusMetaHeader,children:[n.jsx("div",{className:Pt.syncStatusBadge,style:{borderColor:s.border,background:s.background,color:s.color},children:s.label}),n.jsxs("span",{className:Pt.syncStatusLabel,children:["Workspace: ",n.jsx("code",{children:r})]})]}),n.jsx("label",{className:Pt.syncToggle,children:n.jsxs("span",{className:[Pt.syncToggleControl,i?Pt.syncToggleControlEnabled:Pt.syncToggleControlDisabled,l?Pt.syncToggleControlBusy:"",c?"":Pt.syncToggleControlBlocked].filter(Boolean).join(" "),children:[n.jsx("input",{className:Pt.syncToggleInput,type:"checkbox",role:"switch","aria-label":"Enable Sync",checked:i,disabled:!c||l,onChange:W=>D(W.target.checked)}),n.jsx("span",{className:`${Pt.syncToggleState} ${Pt.syncToggleStateOn}`,children:"On"}),n.jsx("span",{className:`${Pt.syncToggleState} ${Pt.syncToggleStateOff}`,children:"Off"}),n.jsx("span",{className:Pt.syncToggleThumb})]})})]}),n.jsxs("section",{className:Pt.syncStatusOverview,"aria-label":"Sync status",children:[n.jsxs("div",{className:Pt.syncStatusOverviewRow,children:[n.jsx("span",{className:Pt.syncStatusLabel,children:"Health"}),n.jsx("span",{className:Pt.syncStatusSummaryValue,children:d})]}),n.jsxs("div",{className:Pt.syncStatusOverviewRow,children:[n.jsx("span",{className:Pt.syncStatusLabel,children:"Next step"}),n.jsx("span",{className:Pt.syncStatusSummaryValue,children:f})]}),n.jsxs("div",{className:[Pt.syncStatusOverviewRow,Pt.syncStatusIssueRow,ye?Pt.syncStatusIssueRowError:""].filter(Boolean).join(" "),children:[n.jsxs("span",{className:Pt.syncStatusLabel,children:[ye?n.jsx(od,{size:12}):null,"Current issue"]}),n.jsx("span",{className:ye?Pt.syncStatusValueError:Pt.syncStatusValueMuted,children:je})]})]}),n.jsxs("div",{className:Pt.syncStatusKeyMetrics,children:[n.jsxs("div",{className:Pt.syncStatusCompactItem,children:[n.jsx("span",{className:Pt.syncStatusLabel,children:"Outgoing local changes"}),n.jsx("span",{className:Pt.syncStatusValue,children:y})]}),n.jsxs("div",{className:Pt.syncStatusCompactItem,children:[n.jsx("span",{className:Pt.syncStatusLabel,children:"Incoming cloud changes"}),n.jsx("span",{className:Pt.syncStatusValue,children:k})]}),n.jsxs("div",{className:Pt.syncStatusCompactItem,children:[n.jsx("span",{className:Pt.syncStatusLabel,children:"Last cloud check"}),n.jsx("span",{className:Pt.syncStatusValue,children:C})]})]}),n.jsxs("details",{className:Pt.syncStatusAdvanced,children:[n.jsxs("summary",{children:[n.jsx("span",{children:"Advanced diagnostics"}),n.jsx(dd,{size:16,"aria-hidden":"true"})]}),n.jsxs("div",{className:Pt.syncStatusAdvancedContent,children:[n.jsxs("div",{className:Pt.syncStatusCompactGrid,children:[n.jsxs("div",{className:Pt.syncStatusCompactItem,children:[n.jsx("span",{className:Pt.syncStatusLabel,children:"Stage"}),n.jsx("span",{className:Pt.syncStatusValue,children:h})]}),n.jsxs("div",{className:Pt.syncStatusCompactItem,children:[n.jsx("span",{className:Pt.syncStatusLabel,children:"Last upload"}),n.jsx("span",{className:Pt.syncStatusValue,children:S})]}),n.jsxs("div",{className:Pt.syncStatusCompactItem,children:[n.jsx("span",{className:Pt.syncStatusLabel,children:"Last successful transfer"}),n.jsx("span",{className:Pt.syncStatusValue,children:v})]})]}),n.jsx("div",{className:Pt.syncStatusDiagnosticsList,children:M.map(W=>n.jsxs("div",{className:Pt.syncStatusDiagnosticRow,children:[n.jsx("span",{className:Pt.syncStatusLabel,children:W.label}),n.jsx("span",{className:Pt.syncStatusValue,children:W.value})]},W.label))}),E?n.jsxs("div",{className:Pt.syncStatusOwnershipControl,children:[n.jsxs("div",{children:[n.jsx("span",{className:Pt.syncStatusLabel,children:"Sync coordinator"}),n.jsx("span",{className:Pt.syncStatusValue,children:E==="server"?"Local server owns background synchronization.":"This browser owns background synchronization."})]}),n.jsx("button",{className:x.cancelBtn,type:"button",onClick:Z,disabled:K||U,title:K?"Sync ownership is transferring.":U?"Finish active sync or recovery work before transferring ownership.":E==="server"?"Return background synchronization to this browser.":"Move background synchronization to the local Taskforce server.",children:K?n.jsxs(n.Fragment,{children:[n.jsx(Ln,{size:14,className:x.spinner}),"Transferring..."]}):E==="server"?"Use browser sync":"Use server sync"})]}):null,g>0&&n.jsxs("div",{className:Pt.syncStatusMismatchPanel,children:[n.jsxs("div",{className:Pt.syncStatusPanelHeader,children:[n.jsx("span",{className:Pt.syncStatusLabel,children:"Identifier integrity"}),n.jsxs("span",{className:Pt.syncStatusPanelMeta,children:[g," mismatch",g===1?"":"es"," detected"]})]}),n.jsx("span",{className:Pt.syncStatusValue,children:"Cloud-backed sync preserved the incoming cloud reference and renumbered the displaced local item."}),_.map(W=>n.jsxs("div",{className:Pt.syncStatusMismatchItem,children:[n.jsx("span",{className:Pt.syncStatusValue,children:W.pathLabel}),W.refsLabel?n.jsx("span",{className:Pt.syncStatusPanelMeta,children:W.refsLabel}):null]},W.key))]})]})]}),n.jsxs("section",{className:Pt.syncStatusEventsPanel,"aria-label":"Recent sync events",children:[n.jsxs("div",{className:Pt.syncStatusPanelHeader,children:[n.jsx("span",{className:Pt.syncStatusLabel,children:"Recent events"}),n.jsxs("div",{className:Pt.syncStatusEventFilters,"aria-label":"Filter recent events",children:[n.jsx("button",{type:"button",className:me==="all"?Pt.syncStatusEventFilterActive:"","aria-pressed":me==="all",onClick:()=>Ve("all"),children:"All"}),n.jsx("button",{type:"button",className:me==="issues"?Pt.syncStatusEventFilterActive:"","aria-pressed":me==="issues",onClick:()=>Ve("issues"),children:"Issues"})]})]}),n.jsx("div",{ref:P,className:Pt.syncStatusEventsList,children:se.length>0?se.map(W=>n.jsx("div",{className:[Pt.syncStatusEventItem,W.tone==="error"?Pt.syncStatusEventItemError:"",W.tone==="muted"?Pt.syncStatusEventItemMuted:""].filter(Boolean).join(" "),children:n.jsx("span",{className:Pt.syncStatusEventLine,children:W.text})},W.key)):n.jsx("div",{className:`${Pt.syncStatusEventItem} ${Pt.syncStatusEventItemMuted}`,children:n.jsx("span",{className:Pt.syncStatusEventLine,children:"No issues in recent events."})})})]})]})})}function BK({isOpen:e,theme:t,teamPlanMode:r,teamMgmtError:a,teamManagementTab:s,teamUsersLoading:i,teamUsers:l,teamActionBusyUserId:c,teamInviteFeedback:d,teamInviteEmail:f,teamInviteRole:p,teamInvitePermissionMode:g,teamInviteBusy:h,pendingInvites:y,teamAuditLoading:k,teamAuditEvents:v,teamAuditPage:C,teamAuditPages:S,teamAuditHasMore:w,onClose:_,onOpenMembersTab:M,onOpenInvitesTab:R,onOpenAuditTab:P,onMemberRoleChange:b,onMemberPermissionChange:$,onToggleMemberDisabled:I,onRevokeInvite:E,onRemoveMember:K,onInviteEmailChange:U,onInviteRoleChange:L,onInvitePermissionModeChange:D,onSubmitInvite:ie,onLoadAuditPrevious:H,onLoadAuditNext:be}){return n.jsx(Ro,{isOpen:e,onClose:_,title:"Team Management",size:"md",theme:t,draggable:!0,children:n.jsxs("div",{className:`${Jt.form} ${Br.modalBody}`,children:[r==="personal"&&n.jsx("p",{className:Ze.loginError,children:"Team management is only available in TEAM accounts."}),a&&n.jsx("p",{className:Ze.loginError,children:a}),n.jsxs("div",{className:`${x.settingsTabs} tf-scrollbar tf-scrollbar--track-transparent tf-scrollbar--compact`,children:[n.jsx("button",{className:`${x.settingsTabBtn} ${s==="members"?x.settingsTabBtnActive:""}`,onClick:M,children:"Members"}),n.jsx("button",{className:`${x.settingsTabBtn} ${s==="invites"?x.settingsTabBtnActive:""}`,onClick:R,children:"Invites"}),n.jsx("button",{className:`${x.settingsTabBtn} ${s==="audit"?x.settingsTabBtnActive:""}`,onClick:P,children:"Audit Log"})]}),s==="members"&&n.jsxs("div",{className:Zt.accountHubCard,children:[i&&n.jsx("p",{className:Br.mutedText,children:"Loading members..."}),!i&&l.length===0&&n.jsx("p",{className:Br.mutedText,children:"No users found."}),!i&&l.map(Z=>n.jsxs("div",{className:Br.memberRow,children:[n.jsx("div",{className:Br.memberTitle,children:Z.displayName||Z.email}),n.jsxs("div",{className:Zt.accountMenuMeta,children:[Z.email," · ",Z.status,Z.disabled?" · deactivated":""]}),n.jsxs("div",{className:Br.memberActions,children:[n.jsxs("select",{className:`${x.input} ${Br.selectRole}`,value:Z.role,onChange:me=>b(Z.userId,me.target.value),disabled:c===Z.userId,children:[n.jsx("option",{value:"owner",children:"Owner"}),n.jsx("option",{value:"admin",children:"Admin"}),n.jsx("option",{value:"member",children:"Member"})]}),Z.role==="member"&&n.jsxs("select",{className:`${x.input} ${Br.selectPermission}`,value:Z.permissionMode,onChange:me=>$(Z.userId,me.target.value),disabled:c===Z.userId,children:[n.jsx("option",{value:"read-write",children:"Read / Write"}),n.jsx("option",{value:"read-only",children:"Read Only"})]}),n.jsx("button",{className:x.cancelBtn,disabled:c===Z.userId,onClick:()=>I(Z.userId,!Z.disabled),children:Z.disabled?"Reactivate":"Deactivate"}),Z.status==="invited"&&n.jsx("button",{className:x.cancelBtn,disabled:c===Z.userId,onClick:()=>E(Z.userId),children:"Revoke Invite"}),n.jsx("button",{className:x.cancelBtn,disabled:c===Z.userId,onClick:()=>K(Z.userId),children:"Remove"})]})]},Z.userId))]}),s==="invites"&&n.jsxs("div",{className:Zt.accountHubCard,children:[d&&n.jsx("p",{className:Br.sectionText,children:d}),n.jsxs("div",{className:x.pathInputGroup,children:[n.jsx("label",{className:`${x.label} ${Br.labelFixed}`,children:"Email"}),n.jsx("input",{className:x.input,value:f,onChange:Z=>U(Z.target.value),placeholder:"name@example.com"})]}),n.jsxs("div",{className:x.pathInputGroup,children:[n.jsx("label",{className:`${x.label} ${Br.labelFixed}`,children:"Role"}),n.jsxs("select",{className:`${x.input} ${Br.selectRole}`,value:p,onChange:Z=>L(Z.target.value==="admin"?"admin":"member"),children:[n.jsx("option",{value:"member",children:"Member"}),n.jsx("option",{value:"admin",children:"Admin"})]}),p==="member"&&n.jsxs("select",{className:`${x.input} ${Br.selectPermission}`,value:g,onChange:Z=>D(Z.target.value==="read-only"?"read-only":"read-write"),children:[n.jsx("option",{value:"read-write",children:"Read / Write"}),n.jsx("option",{value:"read-only",children:"Read Only"})]}),n.jsx("button",{className:x.submitBtn,disabled:h||!f.trim()||r!=="team",onClick:ie,children:h?"Sending...":"Send Invite"})]}),n.jsxs("div",{className:Br.inviteRow,children:[n.jsx("div",{className:Br.listHeading,children:"Pending Invites"}),y.length===0&&n.jsx("p",{className:Br.mutedText,children:"No pending invites."}),y.map(Z=>n.jsxs("div",{className:Br.memberRow,children:[n.jsx("div",{className:Br.memberTitle,children:Z.displayName||Z.email}),n.jsxs("div",{className:Zt.accountMenuMeta,children:[Z.email," · ",Z.role]})]},Z.userId))]})]}),s==="audit"&&n.jsxs("div",{className:Zt.accountHubCard,children:[k&&n.jsx("p",{className:Br.mutedText,children:"Loading audit entries..."}),!k&&v.length===0&&n.jsx("p",{className:Br.mutedText,children:"No audit events for this workspace."}),!k&&n.jsx("div",{className:Br.auditList,children:v.map(Z=>n.jsxs("div",{className:Br.memberRow,children:[n.jsx("div",{className:Zt.accountMenuMeta,children:new Date(Z.createdAt).toLocaleString()}),n.jsx("div",{className:Br.memberTitle,children:Z.action}),n.jsxs("div",{className:Zt.accountMenuMeta,children:[Z.actorUserId," (",Z.actorRole,")"]})]},Z.id))}),n.jsxs("div",{className:Br.auditPager,children:[n.jsx("button",{className:x.cancelBtn,disabled:k||C===0,onClick:H,children:"Previous"}),n.jsxs("span",{className:Zt.accountMenuMeta,children:["Page ",C+1," of ",S]}),n.jsx("button",{className:x.cancelBtn,disabled:k||!w||C+1>=S,onClick:be,children:"Next"})]})]}),n.jsx("div",{className:`${Jt.formActions} ${Br.modalActionsEnd}`,children:n.jsx("button",{className:x.cancelBtn,onClick:_,children:"Close"})})]})})}const WK="_title_j8q8h_1",$K="_message_j8q8h_8",FK="_actions_j8q8h_14",nk={title:WK,message:$K,actions:FK};function UK({isOpen:e,onKeepEditing:t,onDiscard:r,title:a="Unsaved Changes",message:s="Discard your unsaved workflow changes?",theme:i}){return n.jsx(Ro,{isOpen:e,onClose:t,title:n.jsxs("span",{className:nk.title,children:[n.jsx(od,{size:18})," ",a]}),size:"sm",closeOnOverlayClick:!1,theme:i,footer:n.jsxs("div",{className:nk.actions,children:[n.jsx("button",{type:"button",className:"tf-button-secondary",onClick:t,"data-modal-initial-focus":!0,children:"Keep Editing"}),n.jsx("button",{type:"button",className:"tf-button-destructive",onClick:r,children:"Discard"})]}),children:n.jsx("p",{className:nk.message,children:s})})}const E_=e=>{const t=e.status||"task";return t==="done"||t==="cancelled"?"completed":t},zK=(e,t,r)=>{if(E_(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)},HK=({targetTasks:e,overTaskId:t,isBelowOverItem:r})=>{if(!t)return e.length;const a=e.findIndex(s=>s.id===t);return a<0?e.length:a+(r?1:0)},N_=(e,t=new Map)=>{const r=new Map(t);return e.forEach((a,s)=>{r.set(a.id,{...r.get(a.id)||{},orderInDay:s})}),r},Gv=e=>Array.from(e.entries()).map(([t,r])=>({taskId:t,updates:r})),j_=({sourceColumnId:e,targetColumnId:t,sourceTasks:r,updates:a})=>!e||e===t?a:N_(r,a),VK=({activeTask:e,sourceColumnId:t,targetTasks:r,sourceTasks:a,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=j_({sourceColumnId:t,targetColumnId:"backlog",sourceTasks:a,updates:l}),Gv(l)},GK=({activeTask:e,targetTasks:t,insertAt:r})=>{const a=[...t];return a.splice(r,0,e),Gv(N_(a))},KK=({activeTask:e,sourceColumnId:t,targetColumnId:r,targetTasks:a,sourceTasks:s,insertAt:i,scheduledDate:l,scheduledWeekKey:c})=>{const d=[...a];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=j_({sourceColumnId:t,targetColumnId:r,sourceTasks:s,updates:f}),Gv(f)},qK=({activeTask:e,sourceColumnId:t,targetColumnId:r,targetTasks:a,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=HK({targetTasks:a,overTaskId:i,isBelowOverItem:l});if(r==="expired")return t!=="expired"?null:{kind:"updates",updates:GK({activeTask:e,targetTasks:a,insertAt:h})};if(r==="backlog")return{kind:"updates",updates:VK({activeTask:e,sourceColumnId:t,targetTasks:a,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:KK({activeTask:e,sourceColumnId:t,targetColumnId:r,targetTasks:a,sourceTasks:s,insertAt:h,scheduledDate:y,scheduledWeekKey:d(y)}),selectedDate:y}:null},Eh="expired::",YK=new Map,ZK=new Set;function JK({tasks:e,columns:t,groupBy:r,searchQuery:a,copiedId:s,taxonomies:i,types:l,priorities:c,assigneeOptions:d=[],onUpdateTask:f,onTaskClick:p,taskReferences:g,onCopyId:h,onToggleInProgress:y,onToggleReview:k,onToggleComplete:v,onToggleCancel:C,onSetStatus:S,onArchiveTask:w,onUnarchive:_,onDelete:M,allTasks:R=[],onAddTaskToColumn:P,emptyColumnMode:b="show",filterCategories:$=[],filterTypes:I=[],filterPriorities:E=[],filterStatus:K=[],filterAssignees:U=[],filtersReady:L=!0,scheduleFilteredTaskIds:D,categories:ie=[],compressed:H=!1,readOnlyMode:be=null,recentlyChangedTaskIds:Z=[],scheduleDates:me,onScheduleDaySelected:Ve,persistedScrollLeft:Re,onScrollLeftChange:je,sortBy:ye="created",sortOrder:ue="desc",planningDropTargets:ve=null,onAssignTaskToWorkstream:Pe,onAssignWorkstreamToInitiative:Le,showTaskCardStatusLabel:se=!1,workstreams:V=[],initiatives:W=[],workspaceId:z=null,deletedTaskRecordByTaskId:fe=YK,selectedDeletedRecordIds:ke=ZK,onDeletedSelectionChange:Y}){const[we,q]=o.useState(null),[le,$e]=o.useState(!1),[re,de]=o.useState(!1),He=o.useMemo(()=>new Set(Z),[Z]),ce=o.useMemo(()=>new Map(V.map(Ee=>[Ee.id,Ee])),[V]),pe=o.useMemo(()=>new Map(W.map(Ee=>[Ee.id,Ee])),[W]),xe=o.useCallback(Ee=>{const ct=Ee.workstreamId&&ce.get(Ee.workstreamId)||null,lt=ct?.initiativeId&&pe.get(ct.initiativeId)||null;return{taskWorkstream:ct,taskInitiative:lt}},[pe,ce]),N=o.useMemo(()=>new Set(e.map(Ee=>Ee.id)),[e]),X=o.useCallback(Ee=>Ee.startsWith(Eh)?Ee.slice(Eh.length):Ee,[]),Ae=o.useCallback(Ee=>N.has(X(Ee)),[N,X]),Te=o.useMemo(()=>new Set(D||[]),[D]),he=o.useRef(null),ot=o.useCallback(Ee=>{const ct=Ee?.data?.current||{},lt=String(Ee?.id||"");let Je=String(ct.taskId||""),nt=String(ct.workstreamId||"");!Je&&lt&&Ae(lt)&&(Je=X(lt)),!nt&&lt.startsWith("planning-workstream:")&&(nt=lt.slice(20));let Ct=String(ct.type||"");return Ct||(Je?Ct="task-card":nt&&(Ct="planning-workstream")),{activeId:lt,type:Ct,taskId:Je,workstreamId:nt}},[X,Ae]),We=rv(Cf(nv,{activationConstraint:{distance:10}}),Cf(XS,{coordinateGetter:QS})),Xe=E_,ae=o.useMemo(()=>{const Ee=new Date,ct=Ee.getFullYear(),lt=String(Ee.getMonth()+1).padStart(2,"0"),Je=String(Ee.getDate()).padStart(2,"0");return`${ct}-${lt}-${Je}`},[]),G=o.useMemo(()=>{const Ee=Je=>{const nt=Je.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!nt)return null;const Ct=new Date(Date.UTC(Number(nt[1]),Number(nt[2])-1,Number(nt[3]))),Rt=Ct.getUTCDay()||7;Ct.setUTCDate(Ct.getUTCDate()+4-Rt);const Dt=new Date(Date.UTC(Ct.getUTCFullYear(),0,1)),It=Math.ceil(((Ct.getTime()-Dt.getTime())/864e5+1)/7);return`${Ct.getUTCFullYear()}-W${String(It).padStart(2,"0")}`};return{dates:{...(()=>{const Je=new Date,nt=Je.getDay(),Ct=nt===0?-6:1-nt,Rt=new Date(Je);Rt.setDate(Je.getDate()+Ct);const Dt=ir=>{const dr=ir.getFullYear(),sr=String(ir.getMonth()+1).padStart(2,"0"),pr=String(ir.getDate()).padStart(2,"0");return`${dr}-${sr}-${pr}`},It={mon:"",tue:"",wed:"",thu:"",fri:"",sat:"",sun:""};return["mon","tue","wed","thu","fri","sat","sun"].forEach((ir,dr)=>{const sr=new Date(Rt);sr.setDate(Rt.getDate()+dr),It[ir]=Dt(sr)}),It})(),...me||{}},parseToIsoWeekKey:Ee}},[me]),Ie=Ee=>{const ct=Ee.scheduledDate||null;return ct?new Map([[G.dates.mon,"mon"],[G.dates.tue,"tue"],[G.dates.wed,"wed"],[G.dates.thu,"thu"],[G.dates.fri,"fri"],[G.dates.sat,"sat"],[G.dates.sun,"sun"]]).get(ct)||"__offweek":"backlog"},Fe=o.useMemo(()=>{if(r==="schedule")return[];const Ee=new Set(t.map(nt=>String(nt.value))),ct=new Set(t.map(nt=>nt.label)),lt=[],Je=nt=>{const Ct=r==="status"?Xe(nt):nt[r],Rt=String(Ct??"");if(!Rt||Ee.has(Rt)||ct.has(Rt))return null;if(r==="category"){const Dt=ie.find(It=>It.value===Rt||It.label===Rt);return{value:Rt,label:Dt?.label||Rt,icon:Dt?.icon||"Folder",color:Dt?.color}}if(r==="type"){const Dt=l?.find(It=>It.value===Rt||It.label===Rt);return{value:Rt,label:Dt?.label||Rt,icon:Dt?.icon||"CheckSquare",color:Dt?.color}}if(r==="priority"){const Dt=c?.find(It=>Number(It.value)===Number(Rt));return{value:Number.isFinite(Number(Rt))?Number(Rt):Rt,label:Dt?.label||Rt,icon:Dt?.icon||"Flag",color:Dt?.color}}if(r==="complexity")return{value:Number.isFinite(Number(Rt))?Number(Rt):Rt,label:Rt,icon:"Gauge"};if(r==="status")return{value:Rt,label:Rt,icon:"Circle"};if(r==="assignee"){const Dt=d.find(It=>It.value===Rt);return{value:Rt,label:Dt?.label||Rt,icon:Dt?.icon==="HelpCircle"?"Circle":Dt?.icon,color:Dt?.color}}return{value:Rt,label:Rt}};for(const nt of e){const Ct=Je(nt);Ct&&(lt.push(Ct),Ee.add(String(Ct.value)),ct.add(Ct.label))}return lt},[d,ie,r,t,c,e,l]),it=o.useMemo(()=>[...t,...Fe],[Fe,t]),Me=o.useMemo(()=>{const Ee=new Map;for(const ct of it)Ee.set(String(ct.value),ct),Ee.has(ct.label)||Ee.set(ct.label,ct);return Ee},[it]),qe=o.useMemo(()=>{const Ee={};return it.forEach(lt=>{Ee[String(lt.value)]=0}),(R.length>0?R:e).forEach(lt=>{let Je="";if(r==="status")Je=Xe(lt);else if(r==="schedule")Je=Ie(lt);else{const Ct=lt[r];Je=String(Ct??"")}const nt=Me.get(Je);if(nt&&Ee[String(nt.value)]++,r==="schedule"){const Ct=lt.status==="done"||lt.status==="cancelled";lt.scheduledDate&&!Ct&&lt.scheduledDate<ae&&Me.has("expired")&&(Ee.expired=(Ee.expired||0)+1)}}),Ee},[R,e,it,r,Me,ae]),ge=o.useMemo(()=>{const Ee={};if(it.forEach(ct=>{Ee[String(ct.value)]=[]}),e.forEach(ct=>{let lt="";if(r==="status")lt=Xe(ct);else if(r==="schedule")lt=Ie(ct);else{const nt=ct[r];lt=String(nt??"")}const Je=Me.get(lt);if(Je){if(r==="schedule"&&String(Je.value)==="backlog"&&!Te.has(ct.id))return;Ee[String(Je.value)].push(ct)}if(r==="schedule"){const nt=ct.status==="done"||ct.status==="cancelled";ct.scheduledDate&&!nt&&ct.scheduledDate<ae&&Ee.expired&&Ee.expired.push(ct)}}),r==="schedule"){const ct=(Je,nt)=>{const Ct=typeof Je.orderInDay=="number"?Je.orderInDay:Number.MAX_SAFE_INTEGER,Rt=typeof nt.orderInDay=="number"?nt.orderInDay:Number.MAX_SAFE_INTEGER;return Ct!==Rt?Ct-Rt:String(Je.createdAt||"").localeCompare(String(nt.createdAt||""))},lt=(Je,nt)=>Gh(Je,nt,ye,ue,i);Object.keys(Ee).forEach(Je=>{if(Je==="backlog"||Je==="expired"){Ee[Je].sort(lt);return}Ee[Je].sort(ct)})}return Ee},[e,it,r,Me,Te,ae,ye,ue,i]),_e=we?X(we):null,Be=_e?e.find(Ee=>Ee.id===_e):null,Ge=o.useRef(null),F=o.useRef(null),Ne=o.useRef({pointerId:null,startX:0,startY:0,startScrollLeft:0,didPan:!1}),Ce=o.useRef(-1),ut=(Ee,ct)=>L?r==="category"?!$.includes(String(Ee)):r==="type"?!I.includes(String(Ee)):r==="priority"?!E.some(lt=>Number(lt)===Number(Ee)):r==="status"?String(Ee)==="completed"?!K.includes("done")&&!K.includes("cancelled"):!K.includes(String(Ee)):r==="assignee"?!U.includes(String(Ee)):!1:!1,mt=o.useMemo(()=>{let Je=0;return it.forEach((nt,Ct)=>{const Rt=ge[String(nt.value)]||[],Dt=ut(nt.value,nt.label),It=r!=="schedule"&&b==="hide"&&Rt.length===0;if(Dt||It)return;const Qt=b==="collapse"&&Rt.length===0;Je+=Qt?72:320,Je+=4}),Je},[it,ge,b,r,$,I,E,K,U,L]),Ue=o.useCallback(Ee=>{if(!je)return;const ct=Math.max(0,Math.round(Ee));ct!==Ce.current&&(Ce.current=ct,je(ct))},[je]);o.useEffect(()=>{const Ee=Ge.current,ct=F.current;if(!Ee||!ct)return;let lt=!1,Je=!1;const nt=()=>{!Ee||Je||(lt=!0,Ee.scrollLeft=ct.scrollLeft,Ue(ct.scrollLeft),setTimeout(()=>lt=!1,0))},Ct=()=>{!ct||lt||(Je=!0,ct.scrollLeft=Ee.scrollLeft,Ue(Ee.scrollLeft),setTimeout(()=>Je=!1,0))};return ct.addEventListener("scroll",nt),Ee.addEventListener("scroll",Ct),()=>{ct.removeEventListener("scroll",nt),Ee.removeEventListener("scroll",Ct)}},[Ue]);const wt=o.useRef(!1);o.useEffect(()=>{if(wt.current)return;if(typeof Re!="number"||!Number.isFinite(Re)){wt.current=!0;return}const Ee=Ge.current,ct=F.current;if(!Ee||!ct)return;const lt=Math.max(0,Ee.scrollWidth-Ee.clientWidth),Je=Math.min(Math.max(0,Re),lt);Ee.scrollLeft=Je,ct.scrollLeft=Je,wt.current=!0},[Re,mt]),o.useEffect(()=>{const Ee=()=>{const ct=Ge.current;if(!ct){de(!1);return}de(ct.scrollWidth>ct.clientWidth+4)};return Ee(),window.addEventListener("resize",Ee),()=>{window.removeEventListener("resize",Ee)}},[mt,it.length,ge]),o.useEffect(()=>{const Ee=lt=>{const Je=Ne.current;if(Je.pointerId===null||Je.pointerId!==lt.pointerId)return;const nt=lt.clientX-Je.startX,Ct=lt.clientY-Je.startY;if(!Je.didPan){if(Math.abs(nt)<7||Math.abs(nt)<Math.abs(Ct))return;Je.didPan=!0,$e(!0),document.body.style.userSelect="none"}const Rt=Je.startScrollLeft-nt;Ge.current&&(Ge.current.scrollLeft=Rt),F.current&&(F.current.scrollLeft=Rt),lt.preventDefault()},ct=()=>{const lt=Ne.current;lt.pointerId!==null&&(lt.pointerId=null,lt.didPan=!1,le&&($e(!1),document.body.style.userSelect=""))};return window.addEventListener("pointermove",Ee),window.addEventListener("pointerup",ct),window.addEventListener("pointercancel",ct),()=>{window.removeEventListener("pointermove",Ee),window.removeEventListener("pointerup",ct),window.removeEventListener("pointercancel",ct),document.body.style.userSelect=""}},[le]);const kt=Ee=>{!re||Ee.target?.closest('button, a, input, select, textarea, [role="button"], [data-no-header-pan="true"]')||(Ne.current.pointerId=Ee.pointerId,Ne.current.startX=Ee.clientX,Ne.current.startY=Ee.clientY,Ne.current.startScrollLeft=Ge.current?.scrollLeft||0,Ne.current.didPan=!1)},rt=Ee=>{q(Ee.active.id)},Ht=Ee=>{const ct=ot(Ee.active),lt=String(Ee.over?.data?.current?.type||"");ct.type==="task-card"&&lt.startsWith("planning-")?he.current=`${String(Ee.over?.id||"")}:${lt}`:he.current&&(he.current=null)},lr=Ee=>{const{active:ct,over:lt}=Ee;he.current=null,q(null);const Je=ot(ct),nt=Je.type,Ct=String(lt?.data?.current?.type||""),Rt=Je.taskId,Dt=Je.workstreamId,It=String(lt?.data?.current?.workstreamId||""),Qt=String(lt?.data?.current?.initiativeId||"");if(nt==="task-card"&&Ct==="planning-workstream-target"&&Rt&&It){Pe?.(Rt,It);return}if(nt==="planning-workstream"){if(Ct==="planning-initiative-target"&&Dt&&Qt){Le?.(Dt,Qt);return}return}const ir=String(ct.id),dr=lt?String(lt.id):null,sr=X(ir);dr&&X(dr);const pr=e.find(Gt=>Gt.id===sr);if(!pr||!dr)return;const Jr=rr(ir),br=String(ct?.data?.current?.sortable?.containerId||"")||Jr,Qr=String(lt?.data?.current?.sortable?.containerId||"")||rr(dr);if(!Qr)return;const Hr=Me.get(Qr)||it.find(Gt=>String(Gt.value)===Qr||Gt.label===Qr);if(Hr){if(r==="schedule"){const gr=String(Hr.value),u=dr&&Ae(dr)?X(dr):null,ht=lt?.rect,Er=ct.rect.current.translated||ct.rect.current.initial,mn=!!(ht&&Er&&Er.top+Er.height/2>ht.top+ht.height/2),qt=(ge[gr]||[]).filter(Ut=>Ut.id!==sr),Vr=(ge[String(br)]||[]).filter(Ut=>Ut.id!==sr),Tt=qK({activeTask:pr,sourceColumnId:br,targetColumnId:gr,targetTasks:qt,sourceTasks:Vr,overTaskId:u,isBelowOverItem:mn,scheduleDates:G.dates,parseToIsoWeekKey:G.parseToIsoWeekKey,todayDate:ae});if(!Tt)return;if(Tt.kind==="blocked"){window.alert(Tt.reason);return}Tt.updates.forEach(({taskId:Ut,updates:fr})=>f(Ut,fr)),Tt.selectedDate&&Ve?.(Tt.selectedDate);return}let Gt=Hr.value;if(r==="status"){const gr=String(Gt),u=zK(pr,gr,new Date().toISOString());u&&f(pr.id,u);return}(r==="priority"||r==="complexity")&&(Gt=Number(Gt));const bt=pr[r];if(String(bt??"")!==String(Gt??"")){const gr={[r]:Gt};f(pr.id,gr)}}},rr=Ee=>{if(Me.has(Ee)){const Je=Me.get(Ee);return Je?String(Je.value):Ee}if(r==="schedule"&&Ee.startsWith(Eh))return"expired";const ct=X(Ee),lt=e.find(Je=>Je.id===ct);if(lt){let Je="";r==="status"?Je=Xe(lt):r==="schedule"?Je=Ie(lt):Je=String(lt[r]??"");const nt=Me.get(Je);return nt?String(nt.value):null}return null},wr={sideEffects:qT({styles:{active:{opacity:"0"}}})},st=Ee=>{try{const ct=KT(Ee);if(ct.length>0){const lt=ct.find(It=>String(It.id).startsWith("planning-"));if(lt)return[lt];const Je=Ee.pointerCoordinates;if(!Je)return[ct[0]];const nt=ct.filter(It=>{const Qt=String(It.id);return Ae(Qt)&&Qt!==we});if(nt.length===0){const Qt=ct.filter(sr=>{const pr=String(sr.id);return!Ae(pr)}).find(sr=>!!rr(String(sr.id)))||null,ir=Qt?rr(String(Qt.id)):null,dr=(Ee.droppableContainers||[]).filter(sr=>{const pr=String(sr.id);return!Ae(pr)||pr===we?!1:ir?rr(pr)===ir:!0});if(dr.length>0){const sr=zw({...Ee,droppableContainers:dr});if(sr.length>0)return[sr[0]]}return Qt?[Qt]:[ct[0]]}const Ct=nt;let Rt=Ct[0],Dt=Number.POSITIVE_INFINITY;for(const It of Ct){const Qt=Ee.droppableRects?.get(It.id);if(!Qt)continue;const ir=Qt.left+Qt.width/2,dr=Qt.top+Qt.height/2,sr=Je.x-ir,pr=Je.y-dr,Jr=sr*sr+pr*pr;Jr<Dt&&(Dt=Jr,Rt=It)}return[Rt]}return zw(Ee)}catch(ct){return console.error("[TaskKanban] collision detection error",ct),[]}},zt=o.useCallback((Ee,ct)=>f(Ee.id,{assignee:ct}),[f]),Lt=o.useCallback((Ee,ct)=>Pe?Pe(Ee.id,ct):f(Ee.id,{workstreamId:ct}),[Pe,f]),Mt=o.useMemo(()=>({searchQuery:a,copiedId:s,taxonomies:i,types:l,priorities:c,workspaceId:z,assigneeOptions:d,workstreams:V,onAssigneeChange:zt,onWorkstreamChange:Lt,onCopyId:h,onToggleInProgress:y,onToggleReview:k,onToggleComplete:v,onToggleCancel:C,onSetStatus:S,onArchiveTask:w,onUnarchive:_,onDelete:M,taskReferences:g,categories:ie,readOnlyMode:be,resolveTaskHierarchy:xe,groupBy:r,showStatusLabel:se,deletedTaskRecordByTaskId:fe,selectedDeletedRecordIds:ke,onDeletedSelectionChange:Y}),[d,ie,s,fe,r,zt,Lt,w,h,M,Y,S,C,v,y,k,_,c,be,xe,a,ke,se,g,i,l,z,V]);return n.jsxs(av,{sensors:We,collisionDetection:st,onDragStart:rt,onDragOver:Ht,onDragEnd:lr,onDragCancel:Ee=>{he.current=null,q(null)},children:[ve,n.jsxs("div",{className:x.kanbanWrapper,children:[n.jsx("div",{ref:F,className:`${x.kanbanTopScroll} tf-scrollbar`,children:n.jsx("div",{className:x.kanbanTopScrollSpacer,style:{width:`${mt}px`}})}),n.jsx("div",{className:x.kanbanContainer,ref:Ge,children:it.map(Ee=>{const ct=ge[String(Ee.value)]||[],lt=ut(Ee.value,Ee.label),Je=r!=="schedule"&&b==="hide"&&ct.length===0,nt=r==="schedule",Ct=nt&&it.some(pr=>String(pr.value)==="backlog"),Rt=nt&&String(Ee.value)==="backlog",Dt=nt&&String(Ee.value)==="expired",It=ge.backlog||[],ir=b==="collapse"&&It.length===0?72:320,dr=Rt?0:Dt?Ct?ir+4:0:void 0,sr=Rt?6:Dt?5:void 0;return lt||Je?null:n.jsx(QK,{id:String(Ee.value),title:Ee.label,color:Ee.color,icon:Ee.icon,assigneeOption:r==="assignee"?d.find(pr=>String(pr.value)===String(Ee.value)):void 0,tasks:ct,activeId:we,activeTaskId:_e,totalCount:qe[String(Ee.value)],onAddTask:()=>P?.(r,Ee.value),onTaskClick:p,commonCardProps:Mt,changedTaskIdSet:He,collapseEmpty:b==="collapse",compressed:H,onHeaderPointerDown:kt,isHeaderPanning:le,headerPanEnabled:re,stickyLeft:dr,stickyZIndex:sr,isPast:!!Ee.isPast,isSelected:!!Ee.isSelected,isWeekend:!!Ee.isWeekend,disableSorting:!1,scheduleDate:r==="schedule"?G.dates[String(Ee.value)]:void 0,onScheduleDaySelected:Ve},String(Ee.value))})})]}),yc.createPortal(n.jsx(GT,{dropAnimation:wr,children:Be?(()=>{const{taskWorkstream:Ee,taskInitiative:ct}=xe(Be);return n.jsx(Mf,{task:Be,taskWorkstream:Ee,taskInitiative:ct,isOverlay:!0,...Mt,isArchived:Be.isArchived,categories:ie,compressed:H,isRecentlyChanged:He.has(Be.id)})})():null}),document.body)]})}const QK=Q.memo(function({id:t,title:r,color:a,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:v,onHeaderPointerDown:C,isHeaderPanning:S=!1,headerPanEnabled:w=!1,stickyLeft:_,stickyZIndex:M,isPast:R=!1,isSelected:P=!1,isWeekend:b=!1,disableSorting:$=!1,scheduleDate:I,onScheduleDaySelected:E}){const{setNodeRef:K}=cv({id:t,data:{type:"Column"}}),U=k&&l.length===0,L=d?l.filter(Z=>Z.id!==d):l,D=typeof _=="number",ie=o.useRef(null),H=Z=>t==="expired"?`${Eh}${Z}`:Z,be=Z=>{if(!I||!E)return;const me=Z.target;me&&(me.closest('[data-task-card="true"]')||me.closest(`.${x.kanbanCardWrapper}`)||E(I))};return n.jsxs("div",{ref:K,className:`${x.kanbanColumn} ${U?x.kanbanColumnCollapsed:""} ${D?x.kanbanColumnSticky:""} ${R?x.kanbanColumnPast:""} ${P?x.kanbanColumnSelectedDay:""} ${b?x.kanbanColumnWeekend:""}`,style:D?{left:`${_}px`,zIndex:M??4}:void 0,onClick:be,children:[n.jsxs("div",{className:`${x.kanbanHeader} ${w?x.kanbanHeaderDraggable:""} ${S?x.kanbanHeaderPanning:""}`,style:{borderTopColor:Jn(a)||"var(--color-purple)"},onPointerDown:C,children:[n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",minWidth:0,overflow:"hidden"},children:[i?n.jsx(Cg,{option:i,size:20}):(()=>{const Z=s&&Ru[s]?Ru[s]:gc,me=Jn(a)||"var(--color-purple)";return n.jsx(Z,{size:16,style:{color:me}})})(),!U&&n.jsx("span",{style:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:r})]}),n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexShrink:0},children:[(!U||f>0)&&n.jsx("span",{className:x.kanbanCount,children:U?f:`${l.length} / ${f}`}),!h.readOnlyMode&&n.jsx("button",{className:"tf-control-icon tf-control-icon-compact",onClick:Z=>{Z.stopPropagation(),p()},title:`Add task to ${r}`,"aria-label":`Add task to ${r}`,"data-no-header-pan":"true",children:n.jsx(Ko,{size:14})})]})]}),n.jsx("div",{className:x.kanbanDroppable,children:n.jsx("div",{className:`${x.kanbanDroppableScroll} ${x.appScrollbar} tf-scrollbar`,ref:ie,children:$?L.map(Z=>n.jsx("div",{className:x.kanbanCardWrapper,children:(()=>{const{taskWorkstream:me,taskInitiative:Ve}=h.resolveTaskHierarchy?.(Z)||{},Re=h.deletedTaskRecordByTaskId?.get(Z.id);return n.jsx(Mf,{task:Z,taskWorkstream:me,taskInitiative:Ve,onClick:g,...h,isArchived:Z.isArchived,readOnlyMode:h.readOnlyMode||null,compressed:v,isRecentlyChanged:!1,selectable:!!(Re&&h.onDeletedSelectionChange),selected:!!(Re&&h.selectedDeletedRecordIds?.has(Re.id)),onSelectionChange:Re?je=>h.onDeletedSelectionChange?.(Re.id,je):void 0})})()},Z.id)):n.jsx(sv,{id:t,items:L.map(Z=>H(Z.id)),strategy:ov,children:L.map(Z=>n.jsx(XK,{sortableId:H(Z.id),task:Z,onClick:g,commonCardProps:h,compressed:v,isRecentlyChanged:y.has(Z.id)},H(Z.id)))})})})]})}),XK=Q.memo(function({sortableId:t,task:r,onClick:a,commonCardProps:s,compressed:i,isRecentlyChanged:l=!1}){const c=!!s?.readOnlyMode,{attributes:d,listeners:f,setNodeRef:p,transform:g,transition:h,isDragging:y}=iv({id:t,disabled:c,data:{type:"task-card",taskId:r.id}}),k={transform:dg.Transform.toString(g),transition:h,opacity:y?0:1,pointerEvents:y?"none":"auto"},v=s?.groupBy==="schedule",C=!v&&l;return n.jsx("div",{ref:p,style:k,...c?{}:d,...c?{}:f,className:`${x.kanbanCardWrapper} ${C?x.kanbanCardWrapperRaised:""}`,children:(()=>{const{taskWorkstream:S,taskInitiative:w}=s.resolveTaskHierarchy?.(r)||{},_=s.deletedTaskRecordByTaskId?.get(r.id);return n.jsx(Mf,{task:r,taskWorkstream:S,taskInitiative:w,onClick:a,...s,isArchived:r.isArchived,readOnlyMode:s?.readOnlyMode||null,compressed:i,isRecentlyChanged:v?!1:l,selectable:!!(_&&s.onDeletedSelectionChange),selected:!!(_&&s.selectedDeletedRecordIds?.has(_.id)),onSelectionChange:_?M=>s.onDeletedSelectionChange?.(_.id,M):void 0})})()})});function eq(e,t,r){const a=String(t);if(e==="category"){const s=r.categories.find(i=>String(i.value)===a||i.label===a);return s?{category:s.label}:{}}return e==="type"?{type:a}:e==="priority"?Number.isFinite(Number(t))?{priority:Number(t)}:{}:e==="complexity"?Number.isFinite(Number(t))?{complexity:Number(t)}:{}:e==="assignee"?a.trim().length>0?{assignee:a}:{}:e==="status"?a==="completed"?{status:"done"}:a==="task"||a==="on-hold"||a==="in-progress"||a==="review"||a==="done"||a==="cancelled"?{status:a}:{}:e==="schedule"?a==="backlog"||a==="expired"?{}:{scheduledDate:a}:{}}function tq({authUserId:e,taskScope:t,workspaceId:r}){const[a,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:a,toggleTaskHeaderQuickFilter:i,clearTaskHeaderQuickFilter:l}}function rq(e,t,r,a){return e.status==="done"||e.status==="cancelled"||String(e.assignee||"").trim()!==r?!1:t==="overdue"?!!(e.dueDate&&e.dueDate<a):!0}function tg(e,t){return e==="deleted"?!1:e==="archived"?t:!t}function pS(e,t){return t===null?e:e.filter(r=>t.has(r.id))}function nq(e,t,r){const a=t.filter(c=>tg(r,!!c.isArchived)),s=r==="deleted"?[]:e.filter(c=>tg(r,!!c.isArchived)?!0:r!=="archived"?!1:a.some(d=>d.initiativeId===c.id)).map(c=>({...c,workstreams:a.filter(d=>d.initiativeId===c.id)})),i=a.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 M_(e){return typeof e.occurredAt=="string"&&e.occurredAt.trim().length>0?e.occurredAt:"unknown-time"}function aq(e){return typeof e.eventType=="string"&&e.eventType.trim().length>0?e.eventType.trim():"sync"}function sq(e){const t=kg(e.details),r=t?t.source:null;return typeof r=="string"?r.trim():""}function fS(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 mS(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 rg(e){if(e==null)return null;const t=Number(e);return Number.isFinite(t)?Math.max(0,Math.floor(t)):null}function hS(e,t,r){const a=rg(e);if(a===null)return null;const s=rg(t),i=a===1&&(s===null||s===1)?r:`${r}s`;return`${a}${s===null?"":`/${s}`} ${i}`}function oq(e,t){const r=rg(e);if(r===null)return null;const a=r>=1024*1024?`${(r/(1024*1024)).toFixed(1)} MiB`:r>=1024?`${(r/1024).toFixed(1)} KiB`:`${r} B`;return String(t||"")==="content-bodies"?`${a} content`:a}function iq(e){const t=M_(e),r=kg(e.details),a=sq(e);if(a==="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=[hS(s.processedChanges,s.knownTotalChanges,"change"),hS(s.processedPages,s.knownTotalPages,"page"),oq(s.transferredBytes,s.transferredBytesScope)].filter(g=>!!g),f=rg(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 a==="retry.blocked"?`${t} manual retry blocked: ${fS(r?.reason)} during ${mS(r?.phase)}`:a==="repair.started"?`${t} manual repair started: ${mS(r?.repairPhase)} selected`:a==="repair.blocked"?`${t} manual repair blocked: ${fS(r?.reason)}`:null}function Pu(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(),cC(e.details),String(t)].join("|")}function cq(e,t,r=15){const a=new Map;for(const[s,i]of e.entries())a.set(Pu(i,s),i);for(const[s,i]of t.entries())a.set(Pu(i,s),i);return Array.from(a.values()).sort((s,i)=>String(i.occurredAt||"").localeCompare(String(s.occurredAt||""))).slice(0,Math.max(1,r))}function lq(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r+=1)if(Pu(e[r],r)!==Pu(t[r],r))return!1;return!0}function D_(e){const t=iq(e);if(t)return t;const r=M_(e),a=aq(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} ${a} ${s}${l}${d}${p}${g}`}function dq(e){const t=D_(e),r=String(e.occurredAt||"").trim();if(!r||!t.startsWith(r))return t;const a=new Date(r);return Number.isNaN(a.getTime())?t:`${a.toLocaleString()}${t.slice(r.length)}`}function uq(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(),cC(e.details)].join("|")}function Nh(e){if(!e)return"Never";const t=new Date(e);return Number.isNaN(t.getTime())?"Never":t.toLocaleString()}function L_(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 pq(e,t){return L_(t?e:"off")}function O_(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 fq(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,a=r>0?`${r} coordinator obligations open`:null;return[t,a].filter(Boolean).join(", ")||"None"})()},{label:"AI snapshot last fetch",value:Nh(e.aiProfileSnapshotLastFetchAt)},{label:"AI snapshot fetch error",value:e.aiProfileSnapshotLastFetchError||"None"},{label:"AI snapshot skip reason",value:e.aiProfileSnapshotLastSkipReason||"None"}]}function mq({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 a=[];for(const[s,i]of e.entries()){const l=uq(i),c=a[a.length-1];if(l&&c?.signature===l){c.repeatCount+=1,c.text=`${c.baseText} × ${c.repeatCount}`;continue}const d=dq(i);a.push({key:Pu(i,s),text:d,tone:i.status==="error"?"error":"default",signature:l,repeatCount:1,baseText:d})}return a.map(({signature:s,repeatCount:i,baseText:l,...c})=>c)}function B_(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 hq(e){return B_(e).length}function gq(e){return B_(e).map((t,r)=>{const a=t.details&&typeof t.details=="object"?t.details:null,s=String(a?.path||"").trim(),i=String(a?.referenceLabel||"").trim(),l=String(a?.taskTitle||a?.existingTaskTitle||"").trim(),c=Number(a?.existingReferenceNumber),d=Number(a?.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:Pu(t,r),pathLabel:f,refsLabel:p}})}function yq({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:r,workspaceSyncRecommendedAction:a,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: ${a}`,`Last successful sync: ${s}`,`Last pull from cloud: ${i}`,`Last push to cloud: ${l}`,`Last error at: ${Nh(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: ${Nh(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: ${Nh(c.durableOutbox?.oldestActiveCreatedAt)}`,`Durable outbox blocked error code: ${c.durableOutbox?.blockedErrorCode||"None"}`,`Durable recovery state: ${c.durableOutbox?.recovery?.state||"None"}`,`Durable recovery replay total: ${c.durableOutbox?.recovery?.replayTotal??0}`,`Durable recovery replay pending: ${c.durableOutbox?.recovery?.replayPending??0}`,`Durable recovery replay in flight: ${c.durableOutbox?.recovery?.replayInFlight??0}`,`Durable recovery replay blocked: ${c.durableOutbox?.recovery?.replayBlocked??0}`,`Durable recovery replay accepted: ${c.durableOutbox?.recovery?.replayAccepted??0}`,`Durable recovery obligations (coordinator): ${c.coordinatorRecoveryObligations??"Unavailable"}`],k=h.map(v=>D_(v));return[...y,"","Recent sync events",...k.length>0?k:["No recent sync events recorded."]].join(`
7
- `)}const gS="/api/taskforce/account/profile-summary",kq=9e4,mu=new Map;function gh(){return typeof performance<"u"?performance.now():Date.now()}function W_(e,t){const r=String(e||"").trim();if(!r)return"";const a=String(t||"").trim();return a?`${r}::${a}`:r}function yS(e,t){mu.delete(W_(e,t?.identityKey))}async function vq(e,t){const r=String(e||"").trim(),a=W_(e,t?.identityKey);if(!a||!r)return null;const s=t?.force===!0,i=Date.now(),l=mu.get(a);if(!s&&l?.payload!==void 0&&i-l.fetchedAt<kq)return hr("account_profile_summary_cache_hit",{url:r,cacheKey:a,ageMs:i-l.fetchedAt}),l.payload;if(!s&&l?.promise)return hr("account_profile_summary_request_reused",{url:r,cacheKey:a}),l.promise;const c=gh(),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 mu.set(a,{payload:g,fetchedAt:Date.now(),promise:null}),hr("account_profile_summary_loaded",{url:r,cacheKey:a,durationMs:Math.round(gh()-c),fromCache:!1}),g})().catch(f=>{const p=l?.payload??null;if(p)return mu.set(a,{payload:p,fetchedAt:l?.fetchedAt??Date.now(),promise:null}),hr("account_profile_summary_failed",{url:r,cacheKey:a,durationMs:Math.round(gh()-c),error:f instanceof Error?f.message:String(f||"Unknown error"),returnedStale:!0}),p;throw mu.delete(a),hr("account_profile_summary_failed",{url:r,cacheKey:a,durationMs:Math.round(gh()-c),error:f instanceof Error?f.message:String(f||"Unknown error"),returnedStale:!1}),f});return mu.set(a,{payload:l?.payload??null,fetchedAt:l?.fetchedAt??0,promise:d}),d}const wq=512,bq=5*1024*1024,Sq=[.9,.82,.74,.66,.58],Aq=[.9,.82,.74,.66,.58],Cq=[1,.85,.7,.55,.4],_q=new Set(["image/png","image/jpeg","image/webp"]);function Iq(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 Tq(e){const t=URL.createObjectURL(e);try{const r=await new Promise((a,s)=>{const i=new Image;i.onload=()=>a(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 xq(e){const t=Iq(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((a,s)=>{t.toBlob(i=>{if(i){a(i);return}s(new Error("Failed to encode resized image."))},e.type,e.quality)})}const Rq={loadImage:Tq,renderToBlob:xq};function kS(e,t){return e==="image/png"?".png":e==="image/jpeg"?".jpg":e==="image/webp"?".webp":(t.includes(".")?t.slice(t.lastIndexOf(".")):"")||".img"}function vS(e,t){const r=String(e||"").trim();if(!r)return`avatar${t}`;const a=r.lastIndexOf(".");return a<=0?`${r}${t}`:`${r.slice(0,a)}${t}`}function Pq(e){const t=e==="image/jpeg"?"image/jpeg":"image/webp";return Array.from(new Set([t,"image/webp","image/jpeg"]))}function Eq(e){return e==="image/webp"?Sq:e==="image/jpeg"?Aq:[void 0]}async function Nq(e,t,r=Rq){const a=Number.isFinite(t?.maxBytes)&&(t?.maxBytes||0)>0?Math.floor(t?.maxBytes):bq,s=Number.isFinite(t?.maxDimension)&&(t?.maxDimension||0)>0?Math.floor(t?.maxDimension):wq;if(!_q.has(e.type))return{file:e,optimized:!1,exceededLimit:e.size>a};const i=await r.loadImage(e),l=Math.max(i.width,i.height,1);if(e.size<=a&&l<=s)return{file:e,optimized:!1,exceededLimit:!1};const c=Math.min(1,s/l);let d=null;for(const p of Cq){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 Pq(e.type))for(const v of Eq(k)){const C=await r.renderToBlob({image:i,width:h,height:y,type:k,quality:v});if((!d||C.size<d.size)&&(d=C),C.size<=a)return{file:new File([C],vS(e.name,kS(C.type||k,e.name)),{type:C.type||k,lastModified:e.lastModified}),optimized:!0,exceededLimit:!1}}}if(!d)return{file:e,optimized:!1,exceededLimit:!0};const f=new File([d],vS(e.name,kS(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>a}}function jq(e,t){return Array.from([...e,...t].reduce((r,a)=>r.set(a.id,a),new Map).values())}function $_(e){return e.status==="done"||e.status==="cancelled"}function Mq({isArchived:e,tasks:t,dataReady:r}){return{archiveReady:r&&!e&&t.length>0&&t.every($_),activeTaskCount:t.filter(a=>!a.isArchived).length,activeWorkstreamCount:0}}function Dq({isArchived:e,workstreams:t,dataReady:r}){const a=t.flatMap(s=>s.tasks||[]);return{archiveReady:r&&!e&&t.length>0&&a.length>0&&a.every($_),activeTaskCount:a.filter(s=>!s.isArchived).length,activeWorkstreamCount:t.filter(s=>!s.isArchived).length}}async function F_({workstream:e,allowEmpty:t=!1,archiveTask:r,archiveWorkstream:a}){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 a(e.id),!0}async function Lq({workstreams:e,archiveTask:t,archiveWorkstream:r,archiveInitiative:a,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 F_({workstream:l,allowEmpty:!0,archiveTask:t,archiveWorkstream:r}))return!1;return await a(s),!0}function U_({isArchived:e,taskCount:t,completedTaskCount:r,archiveReady:a,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"}:a?{mode:"ready"}:{mode:"checking"}}const Kk="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMzY2LjY3Nzg2IgogICBoZWlnaHQ9IjMzMS4zMDkzMyIKICAgdmlld0JveD0iMCAwIDk3LjAxNjg1IDg3LjY1ODkyMyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMSIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcwogICAgIGlkPSJkZWZzMSIgLz48ZwogICAgIGlkPSJsYXllcjEiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMwLjk2ODgxLC04NzIuMDY2NjgpIj48ZwogICAgICAgaWQ9ImcxLTctMS02LTItMS05IgogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTYzNS4zODE5NiwxMzcuOTM1MTIpIj48cGF0aAogICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiNmZmZmZmY7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuNjEzNjA0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIKICAgICAgICAgZD0ibSAxNDkuNDQwNjYsMTYxLjE5NTA1IGggLTMuNTA2NzQgdiAtMTAuOTA5ODYgaCAtNC4wOTEyIHYgLTIuNzI3NDcgaCAxMS42ODkxNCB2IDIuNzI3NDcgaCAtNC4wOTEyIHoiCiAgICAgICAgIGlkPSJ0ZXh0MS00LTMtMy0xLTAtMyIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJUIiAvPjxwYXRoCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxOS40ODE5cHg7bGluZS1oZWlnaHQ6Mi41O2ZvbnQtZmFtaWx5OidSdXNzbyBPbmUnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J1J1c3NvIE9uZSBNZWRpdW0gSXRhbGljJzt0ZXh0LWFsaWduOmVuZDtsZXR0ZXItc3BhY2luZzowcHg7dGV4dC1hbmNob3I6ZW5kO2ZpbGw6I2ZmOGEwMDtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I2ZmOGEwMDtzdHJva2Utd2lkdGg6MC42MTM2MDQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kIgogICAgICAgICBkPSJtIDE1My41Mzg4OCwxNjQuNTI2NiBoIC0zLjUwNjc0IHYgLTEzLjYzNzMzIGggMTAuODEyNDUgdiAyLjcyNzQ2IGggLTcuMzA1NzEgdiAzLjIxNDUyIGggNS43NDcxNiB2IDIuNzI3NDYgaCAtNS43NDcxNiB6IgogICAgICAgICBpZD0idGV4dDEtOS04LTQtMy03LTItNyIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJGIiAvPjwvZz48L2c+PC9zdmc+Cg==",z_="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMzY2LjY3Nzg5IgogICBoZWlnaHQ9IjMzMS4zMDkzMyIKICAgdmlld0JveD0iMCAwIDk3LjAxNjg1OCA4Ny42NTg5MjMiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzEiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnMKICAgICBpZD0iZGVmczEiIC8+PGcKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4Ni4xOTU2MywtNzgwLjY1NTczKSI+PGcKICAgICAgIGlkPSJnMS03LTEtNi0yLTEiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCg0Ljk4MTU0NzksMCwwLDQuOTg1NTgyMiwtNjkwLjYwODc4LDQ2LjUyNDE0OCkiPjxwYXRoCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxOS40ODE5cHg7bGluZS1oZWlnaHQ6Mi41O2ZvbnQtZmFtaWx5OidSdXNzbyBPbmUnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J1J1c3NvIE9uZSBNZWRpdW0gSXRhbGljJzt0ZXh0LWFsaWduOmNlbnRlcjtsZXR0ZXItc3BhY2luZzowcHg7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiCiAgICAgICAgIGQ9Im0gMTQ5LjQ0MDY2LDE2MS4xOTUwNSBoIC0zLjUwNjc0IHYgLTEwLjkwOTg2IGggLTQuMDkxMiB2IC0yLjcyNzQ3IGggMTEuNjg5MTQgdiAyLjcyNzQ3IGggLTQuMDkxMiB6IgogICAgICAgICBpZD0idGV4dDEtNC0zLTMtMS0wIgogICAgICAgICB0cmFuc2Zvcm09InNrZXdYKC0xNSkiCiAgICAgICAgIGFyaWEtbGFiZWw9IlQiIC8+PHBhdGgKICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiCiAgICAgICAgIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiCiAgICAgICAgIGlkPSJ0ZXh0MS05LTgtNC0zLTctMiIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJGIiAvPjwvZz48L2c+PC9zdmc+Cg==",wS="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxMDAwIiBoZWlnaHQ9IjEwMDAiPjxzdHlsZT4KICAgICNsaWdodC1pY29uIHsKICAgICAgZGlzcGxheTogaW5saW5lOwogICAgfQogICAgI2RhcmstaWNvbiB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgICAjbGlnaHQtaWNvbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAjZGFyay1pY29uIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICAgIH0KICAgIH0KICA8L3N0eWxlPjxnIGlkPSJsaWdodC1pY29uIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEwMDAiIGhlaWdodD0iMTAwMCI+PGc+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMi43MjcxODkyNTA0ODkwMzI3LDAsMCwyLjcyNzE4OTI1MDQ4OTAzMjcsMCw0OC4yMjgzNzgzMTg2MzgxOSkiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIzNjYuNjc3ODkiIGhlaWdodD0iMzMxLjMwOTMzIiB2aWV3Qm94PSIwIDAgOTcuMDE2ODU4IDg3LjY1ODkyMyIgaWQ9InN2ZzEiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzIGlkPSJkZWZzMSI+PC9kZWZzPjxnIGlkPSJsYXllcjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4Ni4xOTU2MywtNzgwLjY1NTczKSI+PGcgaWQ9ImcxLTctMS02LTItMSIgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTY5MC42MDg3OCw0Ni41MjQxNDgpIj48cGF0aCBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC42MTM2MDQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kIiBkPSJtIDE0OS40NDA2NiwxNjEuMTk1MDUgaCAtMy41MDY3NCB2IC0xMC45MDk4NiBoIC00LjA5MTIgdiAtMi43Mjc0NyBoIDExLjY4OTE0IHYgMi43Mjc0NyBoIC00LjA5MTIgeiIgaWQ9InRleHQxLTQtMy0zLTEtMCIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJUIj48L3BhdGg+PHBhdGggc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiIGlkPSJ0ZXh0MS05LTgtNC0zLTctMiIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJGIj48L3BhdGg+PC9nPjwvZz48L3N2Zz48L2c+PC9nPjwvc3ZnPjwvZz48ZyBpZD0iZGFyay1pY29uIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEwMDAiIGhlaWdodD0iMTAwMCI+PGc+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMi43MjcxODk0NzM2MTU4ODcsMCwwLDIuNzI3MTg5NDczNjE1ODg3LDAsNDguMjI4MzQxMzU2NjMzOTA1KSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjM2Ni42Nzc4NiIgaGVpZ2h0PSIzMzEuMzA5MzMiIHZpZXdCb3g9IjAgMCA5Ny4wMTY4NSA4Ny42NTg5MjMiIGlkPSJzdmcxIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcyBpZD0iZGVmczEiPjwvZGVmcz48ZyBpZD0ibGF5ZXIxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzAuOTY4ODEsLTg3Mi4wNjY2OCkiPjxnIGlkPSJnMS03LTEtNi0yLTEtOSIgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTYzNS4zODE5NiwxMzcuOTM1MTIpIj48cGF0aCBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiNmZmZmZmY7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuNjEzNjA0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIgZD0ibSAxNDkuNDQwNjYsMTYxLjE5NTA1IGggLTMuNTA2NzQgdiAtMTAuOTA5ODYgaCAtNC4wOTEyIHYgLTIuNzI3NDcgaCAxMS42ODkxNCB2IDIuNzI3NDcgaCAtNC4wOTEyIHoiIGlkPSJ0ZXh0MS00LTMtMy0xLTAtMyIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJUIj48L3BhdGg+PHBhdGggc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiIGlkPSJ0ZXh0MS05LTgtNC0zLTctMi03IiB0cmFuc2Zvcm09InNrZXdYKC0xNSkiIGFyaWEtbGFiZWw9IkYiPjwvcGF0aD48L2c+PC9nPjwvc3ZnPjwvZz48L2c+PC9zdmc+PC9nPjwvc3ZnPg==";function Oq({projectName:e,currentWorkspaceId:t,brandLabel:r="TaskForce",brandHomeLabel:a="Go to Kanban",onBrandClick:s,runtimeMode:i="local",theme:l=Dh,meta:c,actions:d}){const f=o.useRef(null),p=o.useRef(null),[g,h]=o.useState(!0),y=sA(l)?z_:Kk,k=String(e||"").trim(),v=String(t||"").trim(),C=v.toLowerCase(),S=!!(k&&(i!=="cloud"||C&&C!=="default")),w=o.useCallback(()=>{if(!S){h(!0);return}const b=f.current,$=p.current;if(!b||!$)return;const I=b.getBoundingClientRect().width,E=$.getBoundingClientRect().width;if(I<=0||E<=0)return;const K=window.getComputedStyle(b),U=Number.parseFloat(K.columnGap||K.gap||"0")||0,L=Array.from(b.children).filter(H=>{if(H===$)return!1;const be=H.getBoundingClientRect();return be.width>0&&be.height>0}),ie=L.reduce((H,be)=>H+be.getBoundingClientRect().width,0)+E+U*L.length;h(ie<=I)},[S]);o.useLayoutEffect(()=>{w();const b=f.current,$=p.current;if(!b||!$)return;if(typeof ResizeObserver>"u")return window.addEventListener("resize",w),()=>window.removeEventListener("resize",w);const I=new ResizeObserver(w);return I.observe(b),I.observe($),()=>I.disconnect()},[w,k,c]);const _=S&&g,M=()=>{if(!v||typeof navigator>"u")return;const b=navigator.clipboard;b?.writeText&&b.writeText(v).catch(()=>{})},R=b=>{b.key!=="Enter"&&b.key!==" "||(b.preventDefault(),M())},P=n.jsxs(n.Fragment,{children:[n.jsx("img",{src:y,alt:"Taskforce Logo",className:x.brandIcon,onError:b=>{const $=b.currentTarget;$.src!==wS?$.src=wS:$.style.display="none"}}),n.jsx("span",{children:r}),i==="cloud"&&n.jsx("span",{className:x.brandCloudSuffix,children:"HQ"})]});return n.jsxs("div",{className:`${x.header} ${zr.standaloneHeader}`,children:[n.jsxs("div",{ref:f,className:`${x.headerTitle} ${zr.standaloneTitle}`,children:[s?n.jsx("button",{type:"button",className:x.brandHomeButton,onClick:s,title:a,"aria-label":a,children:P}):n.jsx("span",{className:x.brandHomeStatic,children:P}),S&&n.jsxs("span",{ref:p,className:`${x.projectNameGroup} ${_?"":x.projectNameGroupHidden}`.trim(),"aria-hidden":_?void 0:!0,children:[n.jsx("span",{className:x.projectSlash,children:"/"}),n.jsx("span",{className:x.projectName,title:_&&v?`Workspace ID: ${v}`:void 0,role:_&&v?"button":void 0,tabIndex:_&&v?0:void 0,onClick:M,onMouseDown:b=>b.preventDefault(),onKeyDown:R,children:k})]}),c]}),n.jsx("div",{className:x.headerActions,style:{gap:"16px"},children:d})]})}function Wi(e){return`${e.type}:${e.id}`}function Bq(e){if(!Array.isArray(e))return;const t=new Set,r=[];for(const a of e){if(!a||typeof a!="object"||Array.isArray(a))continue;const s=a.type,i=a.id;if(s!=="initiative"&&s!=="workstream"||typeof i!="string")continue;const l=i.trim();if(!l)continue;const c={type:s,id:l},d=Wi(c);t.has(d)||(t.add(d),r.push(c))}return r}function Wq(e,t){const r=Wi(t);return e.some(s=>Wi(s)===r)?e.filter(s=>Wi(s)!==r):[...e,t]}const $q="taskforce.uiState.layout.v1",Fq=/^\d{4}-\d{2}-\d{2}$/,Uq=/^\d{4}-\d{2}$/;function zq(e){const t=String(e.workspaceId||"default").trim()||"default",r=String(e.userId||"anonymous").trim()||"anonymous",a=mg(`user:${r}`);return`${e.runtimeMode}:${t}:user:${a}`}function Eu(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function yh(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 Df(e){if(!(typeof e!="number"||!Number.isFinite(e)||e<0))return Math.round(e)}function Hq(e,t){if(!Eu(e))return;const r=Object.entries(e).map(([a,s])=>{const i=a.trim(),l=Df(s);return i&&l!==void 0?[i,l]:null}).filter(a=>a!==null).slice(-50);return Object.fromEntries(r)}function Vq(e){if(!Eu(e))return null;const t=typeof e.zoomLevel=="number"&&Number.isFinite(e.zoomLevel)?Math.min(4,Math.max(.25,e.zoomLevel)):void 0,r=Df(e.scrollLeft),a=Df(e.scrollTop);return t===void 0||r===void 0||a===void 0?null:{zoomLevel:t,scrollLeft:r,scrollTop:a}}function Gq(e){if(!Eu(e))return;const t=Object.entries(e).map(([r,a])=>{const s=r.trim(),i=Vq(a);return s&&i?[s,i]:null}).filter(r=>r!==null).slice(-50);return Object.fromEntries(t)}function Kq(e){if(e===null)return null;if(!Eu(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 H_(e){if(!Eu(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 a=Bq(e.planningFavorites);a&&(t.planningFavorites=a),typeof e.scheduleSelectedDate=="string"&&Fq.test(e.scheduleSelectedDate)&&(t.scheduleSelectedDate=e.scheduleSelectedDate),typeof e.scheduleCalendarMonth=="string"&&Uq.test(e.scheduleCalendarMonth)&&(t.scheduleCalendarMonth=e.scheduleCalendarMonth);const s=Df(e.scheduleScrollLeft);s!==void 0&&(t.scheduleScrollLeft=s);const i=yh(e.documentTypeFilters);i&&(t.documentTypeFilters=i);const l=yh(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=yh(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=Hq(e.documentScrollByDocId);d&&(t.documentScrollByDocId=d);const f=Df(e.documentListScrollTop);f!==void 0&&(t.documentListScrollTop=f);const p=yh(e.planningExpandedInitiativeIds);p&&(t.planningExpandedInitiativeIds=p);const g=Kq(e.planningDrawerDetail);g!==void 0&&(t.planningDrawerDetail=g),typeof e.planningNestedWorkstreamDetailId=="string"?t.planningNestedWorkstreamDetailId=e.planningNestedWorkstreamDetailId.trim()||null:e.planningNestedWorkstreamDetailId===null&&(t.planningNestedWorkstreamDetailId=null),Eu(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=Gq(e.annotatedViewportByContextKey);return h&&(t.annotatedViewportByContextKey=h),t}function qq(e,t){if(!e)return{state:t,localFallbackPatch:{}};const r={},a=r;for(const[s,i]of Object.entries(e))Object.prototype.hasOwnProperty.call(t,s)||(a[s]=i);return{state:{...e,...t},localFallbackPatch:r}}function _g(e,t){return Object.is(e,t)?!0:JSON.stringify(e)===JSON.stringify(t)}function Yq(e,t){const r={},a=r;for(const[s,i]of Object.entries(t))_g(e[s],i)||(a[s]=i);return r}function Zq(e,t){return Object.entries(t).every(([r,a])=>Object.prototype.hasOwnProperty.call(e,r)&&_g(e[r],a))}function bS(e,t){const r=e;for(const[a,s]of Object.entries(t))_g(r[a],s)&&delete r[a]}function V_(e){const t=pv(e);return`${$q}.${t}`}function kh(e){const t=String(e.currentWorkspaceId||"").trim();return!e.useCloudProxy||!t||t==="default"?e.headers:{...e.headers||{},"x-taskforce-workspace-id":t}}function Jq(e){if(typeof window>"u")return null;try{const t=window.localStorage.getItem(V_(e));return t?H_(JSON.parse(t)):null}catch{return null}}function SS(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(V_(t),JSON.stringify(e))}catch{}}function Qq(e){const{currentWorkspaceId:t,loadKey:r,enabled:a=!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),v=o.useRef({}),C=o.useRef(null),S=o.useRef(d);return o.useEffect(()=>{S.current=d},[d]),o.useEffect(()=>{y.current=c},[c]),o.useEffect(()=>{if(!a){g.current="",h.current=0,k.current=y.current,v.current={},C.current=null,p("");return}if(g.current===r)return;g.current=r,h.current=0,k.current=y.current,v.current={},C.current=null,p("");let w=!1;const _=h.current,M=Jq(r),R=!!M;return M&&(C.current={source:y.current,target:M},S.current(M),p(r)),(async()=>{try{const b=new URLSearchParams({key:"layout"});t&&b.set("workspaceId",t),i&&b.set("taskforceCloud","1");const $=await fetch(`/api/taskforce/ui-state?${b.toString()}`,{method:"GET",credentials:"include",headers:kh({headers:s,currentWorkspaceId:t,useCloudProxy:i})}),I=$.ok?await $.json().catch(()=>({})):{},E=H_(I?.state),K=E&&l?{...E,planningFavorites:E.planningFavorites??[]}:E;if(!w&&K&&h.current===_){const{state:U,localFallbackPatch:L}=qq(M,K);C.current={source:y.current,target:U},S.current(U),SS(U,r),Object.keys(L).length>0&&await ff({stateKey:"layout",workspaceId:t,headers:kh({headers:s,currentWorkspaceId:t,useCloudProxy:i}),patch:L,dedupeScope:r,useCloudProxy:i})}}catch{}finally{!w&&!R&&(C.current||(k.current=y.current),p(r))}})(),()=>{w=!0}},[t,a,s,r,l,i]),o.useEffect(()=>{if(f!==r)return;const w=C.current;if(w){if(Zq(c,w.target)){k.current=c,C.current=null;return}if(_g(c,w.source))return;C.current=null}const _=Yq(k.current,c);if(k.current=c,Object.keys(_).length===0)return;h.current+=1,SS(c,r),Object.assign(v.current,_);const M=window.setTimeout(async()=>{const R={...v.current};if(Object.keys(R).length!==0)try{const P=await ff({stateKey:"layout",workspaceId:t,headers:kh({headers:s,currentWorkspaceId:t,useCloudProxy:i}),patch:R,dedupeScope:r,useCloudProxy:i});(P.skipped&&P.reason==="unchanged"||!P.skipped&&P.response?.ok&&P.payload?.success!==!1)&&bS(v.current,R)}catch{}},250);return()=>window.clearTimeout(M)},[t,s,r,f,c,i]),o.useEffect(()=>{if(typeof window>"u"||f!==r)return;const w=()=>{const M={...v.current};Object.keys(M).length!==0&&ff({stateKey:"layout",workspaceId:t,headers:kh({headers:s,currentWorkspaceId:t,useCloudProxy:i}),patch:M,keepalive:!0,dedupeScope:r,useCloudProxy:i}).then(R=>{(R.skipped&&R.reason==="unchanged"||!R.skipped&&R.response?.ok&&R.payload?.success!==!1)&&bS(v.current,M)}).catch(()=>{})},_=()=>{document.visibilityState==="hidden"&&w()};return window.addEventListener("pagehide",w),document.addEventListener("visibilitychange",_),()=>{window.removeEventListener("pagehide",w),document.removeEventListener("visibilitychange",_)}},[t,s,r,f,i]),{ready:a&&f===r}}function Xq({value:e,placeholder:t,active:r=!1,onChange:a,onClear:s,clearTitle:i}){return n.jsxs("div",{className:x.searchContainer,style:{width:"240px"},children:[n.jsx(lg,{size:16,className:x.searchIcon}),n.jsx("input",{type:"text",className:`${x.searchInput} ${r?x.searchActive:""}`,placeholder:t,value:e,onChange:l=>a(l.target.value)}),e&&s&&n.jsx("button",{className:x.clearSearchBtn,onClick:s,title:i,children:n.jsx("span",{"aria-hidden":"true",children:"×"})})]})}function AS({label:e,value:t,options:r,onChange:a,trailingAction:s,width:i}){return n.jsxs("div",{className:x.groupByContainer,style:i?{width:i}:void 0,children:[n.jsx("span",{className:x.groupByLabel,children:e}),n.jsx("select",{className:`${x.select} ${x.groupBySelect}`,value:t,onChange:l=>a(l.target.value),children:r.map(l=>n.jsx("option",{value:l.value,children:l.label},String(l.value)))}),s]})}function vh({actions:e}){return n.jsx(n.Fragment,{children:e.map(t=>n.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 CS(){return n.jsx("div",{className:x.headerDivider})}function eY({icon:e,label:t,onClick:r,disabled:a=!1}){return n.jsxs("button",{className:x.primaryUpdateBtn,onClick:r,disabled:a,children:[e," ",t]})}function tY({children:e,id:t}){return n.jsx("div",{id:t,className:x.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 rY({categoryFilterOptions:e,typeFilterOptions:t,priorities:r,taxonomyDisplayLabels:a,filterCategories:s,setFilterCategories:i,filterTypes:l,setFilterTypes:c,filterPriorities:d,setFilterPriorities:f,filterStatus:p,setFilterStatus:g,filterAssignees:h,setFilterAssignees:y,assigneeOptions:k,initiativeFilterOptions:v=[],selectedInitiativeId:C="",setSelectedInitiativeId:S=()=>{},workstreamFilterOptions:w=[],selectedWorkstreamId:_="",setSelectedWorkstreamId:M=()=>{},taskScope:R,setTaskScope:P,showArchive:b,setShowArchive:$,onDeleteAllDeleted:I,clearFilters:E,clearFiltersDisabled:K=!1}){return n.jsxs(n.Fragment,{children:[n.jsx(Hz,{}),n.jsx(Jp,{label:a?.category||_t("standalone.categoryLabel"),options:e,selected:s,onChange:U=>i(U),variant:"value"}),n.jsx(Jp,{label:a?.type||_t("standalone.typeLabel"),options:t,selected:l,onChange:U=>c(U),variant:"value"}),n.jsx(Jp,{label:a?.priority||_t("standalone.priorityLabel"),options:r,selected:d,onChange:U=>f(U),variant:"value"}),n.jsx(Jp,{label:_t("standalone.statusLabel"),options:Ui,selected:p,onChange:U=>g(U),variant:"value"}),n.jsx(Jp,{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 L=k.find(D=>String(D.value)===String(U.value));return L?n.jsx(ju,{option:L,size:20}):U.label}}),n.jsx("div",{className:x.headerDivider,style:{height:"16px",margin:"0 8px"}}),n.jsx(tS,{label:"Initiative",options:v,selected:C,onChange:S,allLabel:"All Initiatives",title:"Filter by initiative"}),n.jsx(tS,{label:"Workstream",options:w,selected:_,onChange:M,allLabel:"All Workstreams",title:"Filter by workstream"}),n.jsx(Vz,{onClick:E,disabled:K,label:"Reset task filters and sort"}),n.jsx("div",{style:{flex:1}}),R==="deleted"&&I&&n.jsx(Gz,{onClick:I,className:`${x.bulkArchiveBtn} ${x.taskToolbarAction} ${x.bulkDeleteBtn}`,title:"Empty trash",children:"Empty Trash"}),n.jsx(y_,{scope:R,onScopeChange:U=>{P(U),U==="archived"?$(!0):b&&$(!1)},className:x.groupByContainer,labelClassName:x.groupByLabel})]})}function nY(e){return n.jsx(tY,{id:e.id,children:n.jsx(rY,{...e})})}const aY="_drawer_12rwh_1",sY="_drawerBody_12rwh_5",oY="_paneShell_12rwh_13",iY="_collapsedPaneShell_12rwh_22",cY="_collapsedPaneHeader_12rwh_31",lY="_collapsedPaneLabel_12rwh_43",dY="_collapsedPaneMuted_12rwh_53",uY="_treePane_12rwh_66",pY="_treePaneSplit_12rwh_76",fY="_detailPane_12rwh_80",mY="_paneHeader_12rwh_90",hY="_paneHeaderLabel_12rwh_104",gY="_paneContent_12rwh_118",yY="_sectionTitle_12rwh_132",kY="_sectionHeaderRow_12rwh_141",vY="_headerActionGroup_12rwh_148",wY="_toggleActive_12rwh_155",bY="_archiveVisibilityToggle_12rwh_161",SY="_sectionGroup_12rwh_167",AY="_navigatorControls_12rwh_173",CY="_navigatorSearchRow_12rwh_179",_Y="_navigatorSearch_12rwh_179",IY="_navigatorClearSearch_12rwh_223",TY="_navigatorOptions_12rwh_244",xY="_navigatorOptionField_12rwh_255",RY="_navigatorOptionLabel_12rwh_262",PY="_navigatorDropdown_12rwh_268",EY="_navigatorDropdownTrigger_12rwh_282",NY="_navigatorEmpty_12rwh_295",jY="_scopeSummary_12rwh_324",MY="_treeList_12rwh_361",DY="_treeChildren_12rwh_374",LY="_treeTaskChildren_12rwh_384",OY="_visuallyHidden_12rwh_388",BY="_treeRow_12rwh_408",WY="_detailChildCard_12rwh_409",$Y="_treeRowArchived_12rwh_429",FY="_rowLeadingActions_12rwh_434",UY="_rowButton_12rwh_435",zY="_treeRowDetailOpen_12rwh_440",HY="_treeRowDropReady_12rwh_458",VY="_treeRowDropActive_12rwh_462",GY="_treeRowDropMode_12rwh_468",KY="_treeChevron_12rwh_468",qY="_scopeButton_12rwh_470",YY="_favoriteButton_12rwh_471",ZY="_dragHandle_12rwh_472",JY="_treeRowDragging_12rwh_476",QY="_rowBody_12rwh_491",XY="_rowButtonWithGrip_12rwh_504",eZ="_rowContent_12rwh_526",tZ="_rowTopRow_12rwh_536",rZ="_rowReferenceActions_12rwh_545",nZ="_rowRelationshipPicker_12rwh_552",aZ="_rowActions_12rwh_564",sZ="_emptyPanel_12rwh_604",oZ="_emptyPanelTitle_12rwh_613",iZ="_emptyPanelText_12rwh_619",cZ="_loadingState_12rwh_625",lZ="_loadingRow_12rwh_631",dZ="_loadingBadge_12rwh_643",uZ="_loadingTitle_12rwh_644",pZ="_loadingMeta_12rwh_645",fZ="_failureState_12rwh_666",mZ="_failureStateCompact_12rwh_675",hZ="_failureCopy_12rwh_679",gZ="_relationshipState_12rwh_705",yZ="_relationshipStateTitle_12rwh_716",kZ="_relationshipStateText_12rwh_722",vZ="_relationshipPaneContentEmpty_12rwh_729",wZ="_relationshipStateEmpty_12rwh_739",bZ="_detailHero_12rwh_753",SZ="_detailReferenceRow_12rwh_760",AZ="_detailTitle_12rwh_767",CZ="_detailTopRow_12rwh_774",_Z="_detailTopActions_12rwh_781",IZ="_detailDescription_12rwh_789",TZ="_detailDescriptionMarkdown_12rwh_802",xZ="_detailOwnerField_12rwh_812",RZ="_detailOwnerLabel_12rwh_818",PZ="_detailSummaryMeta_12rwh_824",EZ="_passiveGuidance_12rwh_828",NZ="_editorCard_12rwh_843",jZ="_inlineEditorCard_12rwh_850",MZ="_editorSelect_12rwh_855",DZ="_ownerSelect_12rwh_859",LZ="_editorField_12rwh_863",OZ="_editorLabel_12rwh_869",BZ="_editorActions_12rwh_875",WZ="_listCard_12rwh_895",$Z="_activityTimelineList_12rwh_904",FZ="_activityTimelineEmpty_12rwh_910",UZ="_sectionDropReady_12rwh_914",zZ="_sectionDropActive_12rwh_919",HZ="_sectionDropMode_12rwh_925",VZ="_linkPickerRow_12rwh_929",GZ="_editorRelationshipRow_12rwh_930",KZ="_relationshipRecovery_12rwh_937",qZ="_listItem_12rwh_953",YZ="_listItemButton_12rwh_962",ZZ="_detailCardButton_12rwh_971",JZ="_listItemText_12rwh_977",QZ="_detailChildCardSelected_12rwh_1001",XZ="_detailChildCardArchived_12rwh_1009",eJ="_detailChildReferenceRow_12rwh_1014",tJ="_detailChildCardTopRow_12rwh_1020",rJ="_detailChildActions_12rwh_1036",nJ="_relationshipPickerRow_12rwh_1045",ze={drawer:aY,drawerBody:sY,paneShell:oY,collapsedPaneShell:iY,collapsedPaneHeader:cY,collapsedPaneLabel:lY,collapsedPaneMuted:dY,treePane:uY,treePaneSplit:pY,detailPane:fY,paneHeader:mY,paneHeaderLabel:hY,paneContent:gY,sectionTitle:yY,sectionHeaderRow:kY,headerActionGroup:vY,toggleActive:wY,archiveVisibilityToggle:bY,sectionGroup:SY,navigatorControls:AY,navigatorSearchRow:CY,navigatorSearch:_Y,navigatorClearSearch:IY,navigatorOptions:TY,navigatorOptionField:xY,navigatorOptionLabel:RY,navigatorDropdown:PY,navigatorDropdownTrigger:EY,navigatorEmpty:NY,scopeSummary:jY,treeList:MY,treeChildren:DY,treeTaskChildren:LY,visuallyHidden:OY,treeRow:BY,detailChildCard:WY,treeRowArchived:$Y,rowLeadingActions:FY,rowButton:UY,treeRowDetailOpen:zY,treeRowDropReady:HY,treeRowDropActive:VY,treeRowDropMode:GY,treeChevron:KY,scopeButton:qY,favoriteButton:YY,dragHandle:ZY,treeRowDragging:JY,rowBody:QY,rowButtonWithGrip:XY,rowContent:eZ,rowTopRow:tZ,rowReferenceActions:rZ,rowRelationshipPicker:nZ,rowActions:aZ,emptyPanel:sZ,emptyPanelTitle:oZ,emptyPanelText:iZ,loadingState:cZ,loadingRow:lZ,loadingBadge:dZ,loadingTitle:uZ,loadingMeta:pZ,failureState:fZ,failureStateCompact:mZ,failureCopy:hZ,relationshipState:gZ,relationshipStateTitle:yZ,relationshipStateText:kZ,relationshipPaneContentEmpty:vZ,relationshipStateEmpty:wZ,detailHero:bZ,detailReferenceRow:SZ,detailTitle:AZ,detailTopRow:CZ,detailTopActions:_Z,detailDescription:IZ,detailDescriptionMarkdown:TZ,detailOwnerField:xZ,detailOwnerLabel:RZ,detailSummaryMeta:PZ,passiveGuidance:EZ,editorCard:NZ,inlineEditorCard:jZ,editorSelect:MZ,ownerSelect:DZ,editorField:LZ,editorLabel:OZ,editorActions:BZ,listCard:WZ,activityTimelineList:$Z,activityTimelineEmpty:FZ,sectionDropReady:UZ,sectionDropActive:zZ,sectionDropMode:HZ,linkPickerRow:VZ,editorRelationshipRow:GZ,relationshipRecovery:KZ,listItem:qZ,listItemButton:YZ,detailCardButton:ZZ,listItemText:JZ,detailChildCardSelected:QZ,detailChildCardArchived:XZ,detailChildReferenceRow:eJ,detailChildCardTopRow:tJ,detailChildActions:rJ,relationshipPickerRow:nJ},aJ="_description_ued10_1",sJ="_visuallyHidden_ued10_6",ng={description:aJ,visuallyHidden:sJ},oJ=Q.lazy(()=>Po(()=>import("./EntityActivityTimeline-pJ2ZjZ-k.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.EntityActivityTimeline}))),iJ=Q.lazy(()=>Po(()=>import("./ContextAttachmentManager-CMxSzHqc.js"),__vite__mapDeps([8,1,2,3,4,5])).then(e=>({default:e.ContextAttachmentManager})));function G_(){return n.jsx("span",{className:ng.visuallyHidden,"aria-hidden":"true",children:"Loading planning details"})}function cJ({description:e,label:t,taskReferences:r,className:a,markdownClassName:s}){const i=String(e||"").trim();return i?n.jsx("div",{className:`${ng.description} ${a||""}`.trim(),role:"region",tabIndex:0,"aria-label":`${t} description`,children:n.jsx(Sg,{variant:"detail",className:s,taskReferences:r,children:i})}):null}function lJ({entityType:e,entityId:t,referenceLabel:r,workspaceId:a,attachments:s,onAddAttachment:i,onRemoveAttachment:l,onUpdateAttachmentCaption:c,readOnly:d=!1,defaultExpanded:f=!0}){return n.jsx(Q.Suspense,{fallback:n.jsx(G_,{}),children:n.jsx(iJ,{ownerType:e,ownerId:t,ownerReferenceLabel:r,workspaceId:a,attachments:s||[],onAddAttachment:p=>i?.(p),onRemoveAttachment:p=>l?.(p),onUpdateAttachmentCaption:(p,g)=>c?.(p,g),readOnly:d,defaultExpanded:f})})}function dJ({entityType:e,item:t,assigneeOptions:r,currentActorId:a,taskReferences:s,parentInitiative:i=null,defaultExpanded:l=!1,listClassName:c,emptyClassName:d,hydrationState:f,onRetryHydration:p}){const[g,h]=Q.useState(l);Q.useEffect(()=>{h(l)},[l,e,t.id]),Q.useEffect(()=>{if(!(f?.status!=="error"||!p))return window.addEventListener("online",p),()=>window.removeEventListener("online",p)},[f?.status,p]);const y=Q.useMemo(()=>{const M=new Map;for(const R of r){const P=String(R.value||"").trim();P&&(M.set(P,R),M.set(P.toLowerCase(),R))}return M},[r]),k=Q.useCallback((M,R,P)=>{if(P&&P.trim())return P.trim();const b=String(M||"").trim();return b?y.get(b)?.label||y.get(b.toLowerCase())?.label||b:R==="ai"?"AI Agent":"You"},[y]),v=Q.useCallback(M=>{const R=String(M.actorId||"").trim();if(b_(R))return{kind:"system",label:v_,ActorIcon:$S,description:w_};const P=y.get(R)||y.get(R.toLowerCase()),b=M.actorProfile||P||null,$=M.actorType==="system"?"system":M.actorType==="ai"||b?.kind==="ai"||P?.kind==="agent"?"agent":M.actorType==="human"||b?.kind==="human"||P?.kind==="member"?"member":M.fallbackKind||"member",I=String(b&&"icon"in b&&b.icon?b.icon:$==="agent"?"Bot":$==="member"?"User":"ClipboardList"),E=Ru[I]||($==="agent"?Yl:$==="member"?wu:FS);return{kind:$,label:$==="system"?"System":k(R,$==="agent"?"ai":"human",b&&"label"in b&&b.label||null),color:b&&"color"in b&&b.color||void 0,ActorIcon:E,isCurrentActorHint:$==="member"&&(R===""||R.toLowerCase()==="user"||R.toLowerCase()==="human")}},[y,k]),C=Q.useCallback((M,R)=>{const P=String(R||"").trim();if(P){if(M==="ownerId")return y.get(P)?.label||y.get(P.toLowerCase())?.label||P;if(M==="initiativeId"&&i&&P===i.id)return fs(i)||i.title}},[y,i]),S=Q.useMemo(()=>XC({activity:t.activity,comments:t.comments}).length,[t.activity,t.comments]),w=Q.useCallback(()=>{h(M=>{const R=!M;return R&&f?.status==="error"&&p?.(),R})},[f?.status,p]),_=f?.error?`${f.error} Retry activity refresh`:"Retry activity refresh";return n.jsxs(n.Fragment,{children:[n.jsx(gf,{label:"Activity",count:S,showZeroCount:!0,expanded:g,expandedTitle:"Hide activity",collapsedTitle:"Show activity",onToggle:w,actions:f?.status==="error"&&p?n.jsx("button",{type:"button",className:"tf-control-icon",onClick:p,"aria-label":"Retry activity refresh",title:_,children:n.jsx(mi,{size:13,"aria-hidden":"true"})}):null}),f?.status==="loading"?n.jsx("span",{className:ng.visuallyHidden,role:"status","aria-live":"polite",children:"Loading latest activity…"}):null,f?.status==="error"?n.jsx("span",{className:ng.visuallyHidden,role:"status","aria-live":"polite",children:"Activity could not be refreshed. Existing activity is still shown."}):null,g?n.jsx(Q.Suspense,{fallback:n.jsx(G_,{}),children:n.jsx(oJ,{activity:t.activity,comments:t.comments,formatFieldValue:C,resolveActorPresentation:v,currentActorId:a,taskReferences:s,emptyMessage:`No ${e} activity yet.`,listClassName:c,emptyClassName:d})}):null]})}const uJ="_identity_1yyv1_1",pJ="_avatar_1yyv1_9",fJ="_picker_1yyv1_16",mJ="_identityDropdown_1yyv1_17",wh={identity:uJ,avatar:pJ,picker:fJ,identityDropdown:mJ};function K_({role:e,option:t,label:r,value:a,options:s=[],onChange:i,disabled:l=!1}){const[c,d]=Q.useState(!1),f=String(t?.label||r||"").trim(),p=t||(f?{...td,value:f,label:f,icon:"User",kind:"member"}:td),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=Q.useMemo(()=>_u(s),[s]),k=Q.useMemo(()=>new Map(y.map(S=>[S.value,S])),[y]),v=n.jsx("span",{className:wh.identity,title:i&&!l?h:g,"aria-label":g,children:n.jsx("span",{className:wh.avatar,children:n.jsx(Cg,{option:p,size:22,variant:"card"})})});if(!i||l)return v;const C=String(a||t?.value||td.value);return n.jsx("span",{className:wh.picker,onClick:S=>S.stopPropagation(),onPointerDown:S=>S.stopPropagation(),onKeyDown:S=>S.stopPropagation(),children:n.jsx(qo,{value:C,options:y,onChange:async S=>{d(!0);try{await i(String(S))}catch{}finally{d(!1)}},disabled:c,ariaLabel:h,className:wh.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:S=>{const w=k.get(String(S.value));return w?n.jsx(ju,{option:w}):S.label},triggerContent:v})})}const hJ="_referenceBadgeButton_f0046_1",gJ="_referenceBadgeStatic_f0046_2",yJ="_title_f0046_13",kJ="_meta_f0046_27",vJ="_cardFooter_f0046_38",wJ="_cardFooterMeta_f0046_47",bJ="_noTasks_f0046_55",SJ="_scopeCount_f0046_63",AJ="_contextCount_f0046_68",CJ="_progressTrack_f0046_75",_J="_progressSegment_f0046_84",IJ="_progressSegmentCancelled_f0046_90",TJ="_progressSegmentTodo_f0046_94",xJ="_progressFill_f0046_98",uo={referenceBadgeButton:hJ,referenceBadgeStatic:gJ,title:yJ,meta:kJ,cardFooter:vJ,cardFooterMeta:wJ,noTasks:bJ,scopeCount:SJ,contextCount:AJ,progressTrack:CJ,progressSegment:_J,progressSegmentCancelled:IJ,progressSegmentTodo:TJ,progressFill:xJ},RJ=["done","review","in-progress","on-hold","cancelled","task"];function nd({label:e,entityType:t,entityName:r,interactive:a=!0,provisional:s=!1,pending:i=!1}){const[l,c]=Q.useState(!1),d=s||i?x.provisionalReferenceBadge:"",f=r?.trim(),p=Q.useCallback(async g=>{g.stopPropagation();try{await navigator.clipboard.writeText(e),c(!0),window.setTimeout(()=>c(!1),1200)}catch{c(!1)}},[e]);return!a||i?n.jsx("span",{className:`${x.referenceBadge} ${x.referenceBadgeStatic} ${uo.referenceBadgeStatic} ${d}`.trim(),title:i?"Canonical reference pending synchronization.":f||(s?"Temporary identifier — replaced after synchronization.":void 0),children:n.jsx("span",{children:e})}):n.jsx(Fv,{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:`${uo.referenceBadgeButton} ${d}`.trim(),children:e})}function q_({children:e}){return n.jsx("span",{className:uo.title,"data-planning-card-title":"true",children:e})}function Y_({children:e,className:t=""}){return n.jsx("span",{className:`${uo.meta} ${t}`.trim(),children:e})}function Z_(){return n.jsx("span",{className:uo.noTasks,children:"No tasks yet"})}function J_({children:e,identity:t}){return n.jsxs("div",{className:uo.cardFooter,children:[n.jsx("div",{className:uo.cardFooterMeta,children:e}),t]})}function Q_({count:e}){const t=Math.max(0,Number(e)||0),r=`${t} context ${t===1?"item":"items"}`;return n.jsxs("span",{className:uo.contextCount,"aria-label":r,title:r,children:[n.jsx(xT,{size:12,"aria-hidden":"true"}),n.jsx("span",{"aria-hidden":"true",children:t})]})}function X_({value:e,label:t,statusCounts:r}){const a=Math.min(100,Math.max(0,Number(e)||0)),s=RJ.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 n.jsx("div",{className:uo.progressTrack,role:"progressbar","aria-label":c,title:l||void 0,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":a,children:i>0?s.map(d=>d.count>0?n.jsx("span",{"aria-hidden":"true","data-progress-status":d.status,className:`${uo.progressSegment} ${d.status==="cancelled"?uo.progressSegmentCancelled:""} ${d.status==="task"?uo.progressSegmentTodo:""}`.trim(),style:{width:`${d.count/i*100}%`,backgroundColor:d.color}},d.status):null):n.jsx("span",{className:uo.progressFill,style:{width:`${a}%`},"aria-hidden":"true"})})}function eI({item:e,workstreamCount:t,className:r=""}){const a=e.taskCount>0,s=Math.max(0,Number(t)||0);return n.jsxs(Y_,{className:r,children:[t!==void 0?n.jsxs(n.Fragment,{children:[n.jsxs("span",{className:uo.scopeCount,children:[s," ",s===1?"workstream":"workstreams"]}),n.jsx("span",{"aria-hidden":"true",children:"•"})]}):null,a?n.jsxs(n.Fragment,{children:[n.jsxs("span",{children:[e.completedTaskCount," of ",e.taskCount," complete"]}),n.jsx("span",{"aria-hidden":"true",children:"•"})]}):null,n.jsx(Q_,{count:e.attachmentCount})]})}function tI({item:e,entityType:t,workstreamCount:r,ownerOption:a,ownerOptions:s,onChangeOwner:i}){const l=e.taskCount>0;return n.jsxs(n.Fragment,{children:[n.jsx(q_,{children:e.title}),l?n.jsx(X_,{value:e.progressPercent,label:`${e.title}: ${e.progressPercent}% resolved`,statusCounts:e.statusCounts}):null,n.jsxs(J_,{identity:n.jsx(K_,{role:"owner",option:a,label:e.ownerLabel,value:e.ownerId,options:s,onChange:i,disabled:!!e.isArchived}),children:[l?null:n.jsx(Z_,{}),n.jsx(eI,{item:e,workstreamCount:t==="initiative"?r:void 0})]})]})}const PJ="_card_6phn6_1",EJ="_content_6phn6_34",NJ="_compact_6phn6_52",jJ="_archived_6phn6_57",MJ="_referenceRow_6phn6_75",DJ="_topRow_6phn6_85",LJ="_actions_6phn6_101",zl={card:PJ,content:EJ,compact:NJ,archived:jJ,referenceRow:MJ,topRow:DJ,actions:LJ};function rI({task:e,assigneeOption:t,assigneeOptions:r,showStatusLabel:a,onOpen:s,onAssigneeChange:i,onStatusChange:l,referenceAction:c,actions:d,feedback:f,referenceInteractive:p=!0,compact:g=!1}){const h=uv(e),y=h.label,k=_o(e.status),v=k.value==="task"?"":k.shortLabel||k.label,C=Jn(k.color),S=y?`Open task ${y}: ${e.title}`:`Open task ${e.title}`,w=_=>{!s||_.key!=="Enter"&&_.key!==" "||(_.preventDefault(),s())};return n.jsxs("div",{className:`${zl.card} ${g?zl.compact:""} ${e.isArchived?zl.archived:""}`.trim(),"data-task-status":k.value,style:{"--planning-task-status-color":C},children:[n.jsxs("div",{className:zl.topRow,children:[n.jsxs("div",{className:zl.referenceRow,children:[c,y?n.jsx(nd,{label:y,entityType:"task",interactive:p,provisional:h.isProvisional}):n.jsx("span",{"aria-hidden":"true"})]}),n.jsxs("div",{className:zl.actions,onClick:_=>_.stopPropagation(),children:[d,n.jsx(Yh,{status:k.value,disabled:!!e.isArchived||!l,compressed:!0,shortLabels:!0,showLabel:a,archiveActionMode:"none",onStatusChange:l})]})]}),f,n.jsxs("div",{role:s?"button":void 0,tabIndex:s?0:void 0,className:zl.content,onClick:s,onKeyDown:w,"aria-label":s?S:void 0,children:[n.jsx(q_,{children:e.title}),n.jsx(J_,{identity:n.jsx(K_,{role:"assignee",option:t,value:e.assignee,options:r,onChange:i,disabled:!!e.isArchived}),children:n.jsxs(Y_,{children:[v?n.jsxs(n.Fragment,{children:[v,n.jsx("span",{"aria-hidden":"true",children:" • "})]}):null,n.jsx(Q_,{count:e.attachmentCount}),e.isArchived?n.jsxs(n.Fragment,{children:[n.jsx("span",{"aria-hidden":"true",children:" • "}),"archived"]}):null]})})]})]})}const ak=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 OJ(e){return e==="ready"||e==="priority"?e:"execution"}function BJ(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 df(e){const t=_o(e.status).value;return t==="done"||t==="cancelled"}function Kv(e,t){const r=typeof e.workstreamOrder=="number"&&Number.isFinite(e.workstreamOrder)?e.workstreamOrder:Number.POSITIVE_INFINITY,a=typeof t.workstreamOrder=="number"&&Number.isFinite(t.workstreamOrder)?t.workstreamOrder:Number.POSITIVE_INFINITY;return r!==a?r-a:String(e.createdAt||"").localeCompare(String(t.createdAt||""))||e.id.localeCompare(t.id)}function _S(e,t){return e.dependencyState?e.dependencyState==="ready":(e.prerequisiteTaskIds||[]).every(r=>_o(t.get(r)?.status).value==="done")}function ag(e){return e.map((t,r)=>({task:t,index:r})).sort((t,r)=>Kv(t.task,r.task)||t.index-r.index).map(({task:t})=>t)}function WJ(e,t){const r=new Set(e.map(f=>f.id)),a=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||df(g)||!r.has(p)||(a.set(p,[...a.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=ag(e.filter(f=>s.get(f.id)===0)),c=[];for(;l.length>0;){const f=l.shift();c.push(f);for(const p of a.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(Kv))}}}if(c.length===e.length)return c;const d=new Set(c.map(f=>f.id));return[...c,...ag(e.filter(f=>!d.has(f.id)))]}function qk(e,t){const r=new Map(e.map(a=>[a.id,a]));if(t==="ready"){const a=e.filter(l=>!df(l)),s=ag(a.filter(l=>_S(l,r))),i=WJ(a.filter(l=>!_S(l,r)),r);return[...s,...i,...ag(e.filter(df))]}return e.map((a,s)=>({task:a,index:s})).sort((a,s)=>{const i=a.task,l=s.task,c=Number(df(i))-Number(df(l));if(c)return c;if(t==="priority"){const d=Number(l.priority||0)-Number(i.priority||0);if(d)return d}return Kv(i,l)||a.index-s.index}).map(({task:a})=>a)}const $J="_control_1n99m_1",qv={control:$J},FJ="_trigger_11iyx_1",UJ={trigger:FJ};function zJ({value:e,onChange:t}){const r=ak.find(a=>a.value===e)||ak[0];return n.jsx(qo,{value:e,options:[...ak],onChange:a=>t(a),ariaLabel:"Arrange workstream tasks",className:qv.control,portalPanel:!0,panelAlign:"end",triggerContent:n.jsxs("span",{className:UJ.trigger,title:r.description,children:[n.jsx(tv,{size:14,"aria-hidden":"true"}),n.jsx("span",{children:r.label})]})})}const HJ="_list_oepxi_1",VJ="_item_oepxi_6",GJ="_grip_oepxi_13",KJ="_card_oepxi_40",kf={list:HJ,item:VJ,grip:GJ,card:KJ};function qJ(e){const t=iv({id:e.task.id,disabled:e.disabled});return n.jsxs("div",{ref:t.setNodeRef,className:kf.item,style:{transform:dg.Transform.toString(t.transform),transition:t.transition},children:[n.jsx("button",{type:"button",className:kf.grip,disabled:e.disabled,"aria-label":`Reorder ${e.task.title}`,title:"Drag to change execution order",...t.attributes,...t.listeners,children:n.jsx(ev,{size:15,"aria-hidden":"true"})}),n.jsx("div",{className:kf.card,children:e.children})]})}function YJ(e){const[t,r]=Q.useState(()=>e.tasks.map(p=>p.id)),[a,s]=Q.useState(!1),i=e.tasks.map(p=>p.id).join("\0");Q.useEffect(()=>r(e.tasks.map(p=>p.id)),[i]);const l=rv(Cf(nv,{activationConstraint:{distance:6}}),Cf(XS,{coordinateGetter:QS})),c=Q.useMemo(()=>{const p=new Map(e.tasks.map(g=>[g.id,g]));return t.map(g=>p.get(g)).filter(g=>!!g)},[t,e.tasks]),d=e.mode==="execution"&&!!e.onReorder,f=Q.useCallback(async p=>{if(!d||a||!p.over||p.active.id===p.over.id)return;const g=t,h=g.indexOf(String(p.active.id)),y=g.indexOf(String(p.over.id));if(h<0||y<0)return;const k=new Map(c.map(S=>[S.id,S])),v=S=>S?.status==="done"||S?.status==="cancelled";if(v(k.get(g[h]))!==v(k.get(g[y])))return;const C=ZS(g,h,y);r(C),s(!0);try{await e.onReorder?.(C)}catch{r(g)}finally{s(!1)}},[d,t,c,e,a]);return d?n.jsx(av,{sensors:l,collisionDetection:JS,onDragEnd:p=>{f(p)},children:n.jsx(sv,{items:t,strategy:ov,children:n.jsx("div",{className:`${kf.list} ${e.className||""}`.trim(),"aria-busy":a||void 0,children:c.map(p=>n.jsx(qJ,{task:p,disabled:a,children:e.children(p)},p.id))})})}):n.jsx("div",{className:`${kf.list} ${e.className||""}`.trim(),children:e.tasks.map(p=>n.jsx(Q.Fragment,{children:e.children(p)},p.id))})}const ZJ="_prompt_16ixe_1",JJ="_actions_16ixe_20",IS={prompt:ZJ,actions:JJ};function Yk({entityType:e,title:t,activeTaskCount:r=0,activeWorkstreamCount:a=0,busy:s,onCancel:i,onConfirm:l}){const c=[r>0?`${r} completed/cancelled ${r===1?"task":"tasks"}`:"",e==="initiative"&&a>0?`${a} ${a===1?"workstream":"workstreams"}`:""].filter(Boolean),d=c.length===0?"":c.length===1?`${c[0]} and `:`${c.join(", ")}, and `;return n.jsxs("div",{className:`${IS.prompt} tf-surface-inset`,role:"group","aria-label":`Confirm archive ${e} ${t}`,children:[n.jsxs("span",{children:["Archive ",d,"this ",e,"?"]}),n.jsxs("div",{className:IS.actions,children:[n.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",disabled:s,onClick:i,title:"Cancel archive","aria-label":"Cancel archive",children:n.jsx(fo,{size:14,"aria-hidden":"true"})}),n.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:n.jsx(hi,{size:14,"aria-hidden":"true"})})]})]})}const QJ="_title_sy4bx_1",XJ="_content_sy4bx_7",eQ="_help_sy4bx_17",tQ="_actions_sy4bx_22",bh={title:QJ,content:XJ,help:eQ,actions:tQ};function rQ({item:e,busy:t,theme:r,onCancel:a,onConfirm:s}){return n.jsx(Ro,{isOpen:!!e,onClose:a,closeDisabled:t,closeOnOverlayClick:!1,size:"sm",theme:r,title:n.jsxs("span",{className:bh.title,children:[n.jsx(pf,{size:17,"aria-hidden":"true"}),"Unlink ",e?.entityType||"item"]}),footer:n.jsxs("div",{className:bh.actions,children:[n.jsx("button",{type:"button",className:"tf-button-secondary",disabled:t,onClick:a,"data-modal-initial-focus":!0,children:"Cancel"}),n.jsx("button",{type:"button",className:"tf-button-destructive",disabled:t,onClick:s,children:t?"Unlinking…":"Unlink"})]}),children:e?n.jsxs("div",{className:bh.content,children:[n.jsxs("p",{children:["Unlink ",n.jsx("strong",{children:e.referenceLabel})," ",e.title," from ",e.parentLabel,"?"]}),n.jsx("p",{className:bh.help,children:"The item will remain available and can be linked again later."})]}):null})}const nQ="_triggerAction_1b041_1",aQ="_triggerSelection_1b041_2",sQ="_option_1b041_15",oQ="_optionTopRow_1b041_22",iQ="_optionTitle_1b041_33",cQ="_optionMeta_1b041_42",lu={triggerAction:nQ,triggerSelection:aQ,option:sQ,optionTopRow:oQ,optionTitle:iQ,optionMeta:cQ};function sg({options:e,selectedId:t="",entityLabel:r,onSelect:a,disabled:s=!1,className:i=""}){const l=Q.useMemo(()=>new Map(e.map(p=>[p.id,p])),[e]),c=Q.useMemo(()=>e.map(p=>({value:p.id,label:[p.referenceLabel,p.title,p.meta].filter(Boolean).join(" ")})),[e]),d=l.get(t),f=`Link ${r}`;return n.jsx(qo,{value:t,options:c,onChange:p=>{const g=l.get(String(p));g&&a(g)},disabled:s||e.length===0,className:`${qv.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:f,triggerContent:d?n.jsxs("span",{className:lu.triggerSelection,children:[n.jsx(nd,{label:d.referenceLabel,entityType:r,entityName:d.title}),n.jsx("span",{children:d.title})]}):n.jsxs("span",{className:lu.triggerAction,children:[n.jsx(Au,{size:14,"aria-hidden":"true"}),n.jsx("span",{children:f})]}),renderOptionContent:p=>{const g=l.get(String(p.value));return g?n.jsxs("span",{className:lu.option,children:[n.jsxs("span",{className:lu.optionTopRow,children:[n.jsx(nd,{label:g.referenceLabel,entityType:r,entityName:g.title}),n.jsx("span",{className:lu.optionTitle,children:g.title})]}),g.meta?n.jsx("span",{className:lu.optionMeta,children:g.meta}):null]}):p.label},placeholder:f})}function nI(e,t){const r=String(t||"").trim(),a=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}`;(!a.has(f)||i===r)&&a.set(f,{...s,value:i,label:l})}return Array.from(a.values()).sort((s,i)=>s.label.localeCompare(i.label,void 0,{sensitivity:"base"}))}function Fi(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":Bf),color:e.color||(t==="agent"?"var(--brand-primary)":t==="member"?"var(--status-success)":gg),kind:t,avatarUrl:e.avatarUrl,avatarRevision:e.avatarRevision,avatarUpdatedAt:e.avatarUpdatedAt,username:e.username,surfaceType:e.surfaceType,providerMetadata:e.providerMetadata,archivedAt:e.archivedAt}}function Yv({value:e,options:t,leadingOptions:r=[],includeUnassigned:a=!0,onChange:s,disabled:i,ariaLabel:l,className:c}){const d=Q.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=nI(t,e).filter(y=>!g.has(y.value));return[...p,...a?[{value:"",label:"Unassigned",icon:Bf,color:gg,kind:"unassigned"}]:[],...h]},[a,r,t,e]),f=Q.useMemo(()=>new Map(d.map(p=>[p.value,Fi(p)])),[d]);return n.jsx(qo,{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?n.jsx(ju,{option:g}):p.label}})}const TS=[{value:"default",label:"Default order"},{value:"title",label:"Title"},{value:"owner",label:"Owner"},{value:"progress",label:"Progress"}];function jh(e,t,r){if(t==="all")return!0;const a=String(e.ownerId||"").trim();return t==="unassigned"?!a:t==="mine"?!!r&&a===r:a===t}function Mh(e,t,r){if(!r)return!0;const a=t==="initiative"?fs(e):Io(e);return e.title.toLocaleLowerCase().includes(r)||a.toLocaleLowerCase().includes(r)}function sk({item:e,entityType:t,showArchivedPlanning:r,searchQuery:a,ownerFilter:s,currentOwnerId:i}){return(r||!e.isArchived)&&jh(e,s,i.trim())&&Mh(e,t,a.trim().toLocaleLowerCase())}function Sh(e,t){return t==="default"?e:e.map((r,a)=>({item:r,index:a})).sort((r,a)=>{let s=0;if(t==="title")s=r.item.title.localeCompare(a.item.title,void 0,{sensitivity:"base"});else if(t==="owner"){const i=String(r.item.ownerLabel||"").trim(),l=String(a.item.ownerLabel||"").trim();!i&&l?s=1:i&&!l?s=-1:s=i.localeCompare(l,void 0,{sensitivity:"base"})}else s=a.item.progressPercent-r.item.progressPercent;return s||r.index-a.index}).map(({item:r})=>r)}function lQ({initiatives:e,standaloneWorkstreams:t,showArchivedPlanning:r,searchQuery:a,ownerFilter:s,currentOwnerId:i,sort:l}){const c=a.trim().toLocaleLowerCase(),d=!!c||s!=="all",f=i.trim(),g=e.filter(C=>r||!C.isArchived).flatMap(C=>{const S=(C.allWorkstreams||C.workstreams).filter($=>r||!$.isArchived);if(!d)return[{initiative:C,workstreams:Sh(S,l)}];const w=jh(C,s,f),_=Mh(C,"initiative",c),M=w&&_,R=S.filter($=>jh($,s,f)),P=R.filter($=>Mh($,"workstream",c)),b=M&&c?R:P;return!M&&b.length===0?[]:[{initiative:C,workstreams:Sh(b,l)}]}),h=new Map(g.map(C=>[C.initiative.id,C])),y=Sh(g.map(({initiative:C})=>C),l).map(C=>h.get(C.id)),k=t.filter(C=>(r||!C.isArchived)&&jh(C,s,f)&&Mh(C,"workstream",c)),v=Sh(k,l);return{initiatives:y,standaloneWorkstreams:v,hasCriteria:d,resultCount:y.length+y.reduce((C,S)=>C+S.workstreams.length,0)+v.length}}const vf=392,zi=392,ok=56,aI=1280,dQ=vf+zi;function uQ(e,t=0){const r=Math.max(0,e-t);return r>=aI?"wide":r>=dQ?"medium":"narrow"}function pQ(e){const t=Q.useCallback(()=>typeof window>"u"?aI+e:window.innerWidth,[e]),[r,a]=Q.useState(t);return Q.useEffect(()=>{const s=()=>a(t());return s(),window.addEventListener("resize",s),()=>window.removeEventListener("resize",s)},[t]),{viewportWidth:r,availableWidth:Math.max(0,r-e),layoutMode:uQ(r,e)}}function sI(e,t,r,a,s){return(e?ok:vf)+(t?r?ok:zi:0)+(a?s?ok:zi:0)}function ik({visible:e,disabled:t,disabledLabel:r,itemLabel:a,onToggle:s}){const i=e?`Hide archived ${a}`:`Show archived ${a}`,l=t?r||`No archived ${a}`:i;return n.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?n.jsx(KS,{size:15,"aria-hidden":"true"}):n.jsx(RT,{size:15,"aria-hidden":"true"})})}function xS(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 Xp({rowId:e,rowType:t,referenceLabel:r,item:a,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:v,onChangeOwner:C,initiativeLinkOptions:S=[],onLinkInitiative:w,favorite:_,favoriteReady:M,onToggleFavorite:R,onArchiveReady:P,hierarchyInteractions:b=!0}){const{title:$}=a,[I,E]=Q.useState(!1),[K,U]=Q.useState(!1),[L,D]=Q.useState(!1),[ie,H]=Q.useState(!1),{active:be}=eA(),Z=String(be?.data?.current?.type||""),me=b&&t==="workstream"&&Z==="task-card",Ve=b&&t==="initiative"&&Z==="planning-workstream",Re=t==="workstream"?"planning-workstream-target":"planning-initiative-target",{setNodeRef:je,isOver:ye}=cv({id:`${Re}:${e}`,data:t==="workstream"?{type:Re,workstreamId:e}:{type:Re,initiativeId:e},disabled:!b}),ue=b&&t==="workstream",{attributes:ve,listeners:Pe,setNodeRef:Le,transform:se,isDragging:V}=YT({id:`planning-workstream:${e}`,data:{type:"planning-workstream",workstreamId:e},disabled:!ue}),W=ue&&se?{transform:dg.Translate.toString(se)}:void 0,z=me||Ve,fe=t==="initiative"?"workstreams":"tasks",ke=p&&!!y,Y=p?`${g?"Collapse":"Expand"} ${fe} for ${$}`:`No ${fe} for ${$}`,we=!!(a.archiveReady&&!d&&P),q=Q.useRef({}),[le,$e]=Q.useState("favorite"),re=Q.useMemo(()=>[...M?["favorite"]:[],...we?["archive"]:[],"scope",...ke?["disclosure"]:[]],[we,ke,M]),de=re.includes(le)?le:re[0];Q.useEffect(()=>{de&&de!==le&&$e(de)},[le,de]);const He=Q.useCallback(Te=>{$e(Te)},[]),ce=Q.useCallback(Te=>{if(!["ArrowLeft","ArrowRight","Home","End"].includes(Te.key))return;const ot=Te.target.closest("[data-planning-row-action]")?.dataset.planningRowAction;if(!ot||!re.includes(ot))return;Te.preventDefault();const We=re.indexOf(ot),Xe=Te.key==="Home"?0:Te.key==="End"?re.length-1:Te.key==="ArrowRight"?(We+1)%re.length:(We-1+re.length)%re.length,ae=re[Xe];$e(ae),q.current[ae]?.focus()},[re]),pe=async()=>{if(!(!P||K)){U(!0);try{await P()&&E(!1)}finally{U(!1)}}},xe=async Te=>{if(!(!w||ie)){H(!0);try{await w(Te)!==!1&&D(!1)}finally{H(!1)}}},N=t==="workstream"&&!!w,X=d||ie||S.length===0,Ae=d?"Unarchive this workstream before linking an initiative":S.length===0?"No initiatives available":"Link initiative";return n.jsx("div",{ref:je,style:W,className:`${ze.treeRow} ${d?ze.treeRowArchived:""} ${f?ze.treeRowDetailOpen:""} ${z?ze.treeRowDropReady:""} ${ye?ze.treeRowDropActive:""} ${V?ze.treeRowDragging:""} ${z?ze.treeRowDropMode:""}`,"data-board-scoped":c||void 0,children:n.jsxs("div",{className:ze.rowContent,children:[n.jsxs("div",{className:ze.rowTopRow,children:[n.jsxs("div",{className:ze.rowReferenceActions,children:[N?n.jsx(vu,{disabled:X,onClick:Te=>{Te.stopPropagation(),D(he=>!he)},title:Ae,ariaLabel:"Link initiative",ariaExpanded:L,children:n.jsx(Au,{size:14,"aria-hidden":"true"})}):null,n.jsx(nd,{label:r||"Reference pending",entityType:t,entityName:$,pending:!r})]}),n.jsxs("div",{className:ze.rowActions,role:"toolbar","aria-label":`${t==="initiative"?"Initiative":"Workstream"} actions for ${$}`,"aria-orientation":"horizontal",onKeyDown:ce,children:[n.jsx("button",{type:"button",ref:Te=>{q.current.favorite=Te},className:`tf-control-icon tf-control-icon-compact ${ze.favoriteButton} ${_?"tf-control-icon-active":""}`.trim(),onClick:R,onFocus:()=>He("favorite"),disabled:!M,tabIndex:de==="favorite"?0:-1,"data-planning-row-action":"favorite",title:M?_?`Remove ${t} from Favorites`:`Add ${t} to Favorites`:"Loading Favorites","aria-label":M?_?`Remove ${t} ${$} from Favorites`:`Add ${t} ${$} to Favorites`:`Loading Favorites for ${t} ${$}`,"aria-pressed":_,children:n.jsx(PT,{size:14,fill:_?"currentColor":"none","aria-hidden":"true"})}),we?n.jsx("button",{type:"button",ref:Te=>{q.current.archive=Te},className:"tf-control-icon tf-control-icon-compact",onClick:()=>E(!0),onFocus:()=>He("archive"),tabIndex:de==="archive"?0:-1,"data-planning-row-action":"archive",title:`Archive completed ${t}`,"aria-label":`Archive completed ${t} ${$}`,"aria-expanded":I,children:n.jsx(Xc,{size:14,"aria-hidden":"true"})}):null,n.jsx("button",{type:"button",ref:Te=>{q.current.scope=Te},className:`tf-control-icon tf-control-icon-compact ${ze.scopeButton} ${c?"tf-control-icon-active":""}`.trim(),onClick:k,onFocus:()=>He("scope"),tabIndex:de==="scope"?0:-1,"data-planning-row-action":"scope",title:c?"Clear board scope":"Scope board to this item","aria-label":c?`Clear board scope for ${$}`:`Scope board to ${$}`,"aria-pressed":c,children:n.jsx(ET,{size:14,"aria-hidden":"true"})}),n.jsx("button",{type:"button",ref:Te=>{q.current.disclosure=Te},className:`tf-control-icon tf-control-icon-compact ${ze.treeChevron}`.trim(),onClick:ke?y:void 0,onFocus:()=>He("disclosure"),tabIndex:de==="disclosure"?0:-1,"data-planning-row-action":"disclosure",title:Y,"aria-label":Y,"aria-expanded":ke?g:!1,"aria-controls":ke&&g?h:void 0,disabled:!ke,children:g&&ke?n.jsx(dd,{size:14,"aria-hidden":"true"}):n.jsx(sd,{size:14,"aria-hidden":"true"})})]})]}),N&&L?n.jsxs("div",{className:`${ze.relationshipPickerRow} ${ze.rowRelationshipPicker}`.trim(),role:"group","aria-label":`Link ${$} to initiative`,children:[n.jsx(sg,{options:S,entityLabel:"initiative",onSelect:Te=>{xe(Te)},disabled:ie}),n.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",disabled:ie,onClick:()=>D(!1),title:"Cancel initiative link","aria-label":"Cancel initiative link",children:n.jsx(fo,{size:14,"aria-hidden":"true"})})]}):null,n.jsxs("div",{className:ze.rowBody,children:[ue?n.jsx("div",{className:ze.rowLeadingActions,"data-planning-leading-actions":"true",children:n.jsx("button",{type:"button",ref:Le,className:ze.dragHandle,title:"Drag workstream","aria-label":`Drag workstream ${$}`,"data-planning-drag-handle":"true",...ve,...Pe,children:n.jsx(ev,{size:15,"aria-hidden":"true"})})}):null,n.jsx("div",{role:"button",tabIndex:0,className:`${ze.rowButton} ${ue?ze.rowButtonWithGrip:""}`.trim(),onClick:v,onKeyDown:Te=>{Te.key!=="Enter"&&Te.key!==" "||(Te.preventDefault(),v())},"aria-label":`View ${t} details for ${$}`,"aria-pressed":f,children:n.jsx(tI,{item:a,entityType:t,workstreamCount:l,ownerOption:s?Fi(s):void 0,ownerOptions:i.map(Fi),onChangeOwner:C})})]}),I?n.jsx(Yk,{entityType:t,title:$,activeTaskCount:a.archiveActiveTaskCount,activeWorkstreamCount:a.archiveActiveWorkstreamCount,busy:K,onCancel:()=>E(!1),onConfirm:()=>{pe()}}):null]})})}function fQ({task:e,assigneeOption:t,assigneeOptions:r,showTaskCardStatusLabel:a,onOpenTaskById:s,onChangeTaskAssignee:i,onSetTaskStatus:l,onArchivePlanningTask:c}){const[d,f]=Q.useState(!1),p=_o(e.status).value,g=!e.isArchived&&(p==="done"||p==="cancelled")&&!!c;return n.jsx("div",{className:`${ze.listItemButton} ${ze.detailCardButton}`.trim(),children:n.jsx(rI,{task:e,assigneeOption:t?Fi(t):void 0,assigneeOptions:r.map(Fi),showStatusLabel:a,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?n.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 ${hs(e)||e.title}`,children:n.jsx(Xc,{size:14,"aria-hidden":"true"})}):void 0,compact:!0})})}function ef({label:e,onExpand:t,muted:r=!1}){return n.jsx("div",{className:`${ze.paneShell} ${ze.collapsedPaneShell} ${r?ze.collapsedPaneMuted:""}`.trim(),"data-relationship-state":r?"missing":void 0,children:n.jsxs("div",{className:ze.collapsedPaneHeader,children:[n.jsx("button",{type:"button",className:"tf-control-icon",onClick:t,title:`Expand ${e}`,"aria-label":`Expand ${e} pane`,children:n.jsx(sd,{size:16,"aria-hidden":"true"})}),n.jsx("span",{className:ze.collapsedPaneLabel,children:e})]})})}function RS({label:e,title:t,description:r,onCollapse:a,action:s,paneRef:i}){const l=!r&&!s;return n.jsxs("div",{ref:i,"data-planning-pane":`${e.toLowerCase()}-relationship`,className:`${ze.paneShell} ${x.appScrollbar} tf-scrollbar ${ze.detailPane}`.trim(),style:{flex:`0 0 ${zi}px`,width:`${zi}px`,minWidth:`${zi}px`,maxWidth:`${zi}px`},children:[n.jsxs("div",{className:ze.paneHeader,children:[n.jsx("h2",{className:ze.paneHeaderLabel,tabIndex:-1,"data-planning-pane-heading":!0,children:e}),n.jsx("button",{type:"button",className:"tf-control-icon",onClick:a,"aria-label":`Collapse ${e} pane`,title:`Collapse ${e} pane`,children:n.jsx(lo,{size:16,"aria-hidden":"true"})})]}),n.jsx("div",{className:`${ze.paneContent} ${l?ze.relationshipPaneContentEmpty:""}`.trim(),children:n.jsxs("div",{className:`${ze.relationshipState} ${l?ze.relationshipStateEmpty:""}`.trim(),"data-relationship-display":l?"empty":"detail",children:[n.jsx("span",{className:ze.relationshipStateTitle,children:t}),r?n.jsx("p",{className:ze.relationshipStateText,children:r}):null,s?n.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:s.onClick,children:s.label}):null]})})]})}function mQ({initiatives:e,standaloneWorkstreams:t,planningLoadState:r,taskScope:a,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:v,favoritesSectionCollapsed:C,initiativesSectionCollapsed:S,workstreamsSectionCollapsed:w,onToggleFavoritesSection:_,onToggleInitiativesSection:M,onToggleWorkstreamsSection:R,expandedInitiativeIds:P,detail:b,secondaryPane:$,onCreateInitiative:I,onCreateWorkstream:E,onToggleInitiative:K,onSelectInitiative:U,onSelectWorkstream:L,onOpenInitiativeDetails:D,onOpenWorkstreamDetails:ie,onOpenNestedWorkstreamDetails:H,onOpenTaskById:be,onSetTaskStatus:Z,onChangePlanningOwner:me,onChangeTaskAssignee:Ve,onArchivePlanningTask:Re,onArchiveResolvedWorkstream:je,onArchiveResolvedInitiative:ye,linkOptions:ue,onAssignInitiativeToWorkstream:ve,onRetryPlanning:Pe}){const[Le,se]=Q.useState(""),[V,W]=Q.useState("all"),[z,fe]=Q.useState(!1),[ke,Y]=Q.useState(()=>new Set),[we,q]=Q.useState(()=>new Set),le=Q.useMemo(()=>new Map(l.filter(G=>!String(G.archivedAt||"").trim()).map(G=>[String(G.value||"").trim(),G])),[l]),$e=Q.useMemo(()=>{const G=String(i||"").trim(),Ie=G?nI(l,G).find(Fe=>Fe.value===G):void 0;return[{value:"all",label:"All owners",icon:"Users",color:"var(--text-secondary)",kind:"unassigned"},...G?[{...Ie,value:"mine",label:"Owned by me",icon:Ie?.icon||"User",color:Ie?.color||"var(--text-secondary)",kind:Ie?.kind||"member"}]:[],{value:"unassigned",label:"Unassigned",icon:Bf,color:gg,kind:"unassigned"}]},[l,i]),re=Q.useMemo(()=>lQ({initiatives:e,standaloneWorkstreams:t,showArchivedPlanning:s,searchQuery:Le,ownerFilter:V,currentOwnerId:String(i||""),sort:g}),[i,e,g,V,Le,s,t]),de=Q.useMemo(()=>new Set(k.map(Wi)),[k]),He=Q.useMemo(()=>{const G=new Map(e.filter(Fe=>sk({item:Fe,entityType:"initiative",showArchivedPlanning:s,searchQuery:Le,ownerFilter:V,currentOwnerId:String(i||"")})).map(Fe=>[Fe.id,Fe])),Ie=new Map;return e.forEach(Fe=>{(Fe.allWorkstreams||Fe.workstreams).forEach(it=>{sk({item:it,entityType:"workstream",showArchivedPlanning:s,searchQuery:Le,ownerFilter:V,currentOwnerId:String(i||"")})&&Ie.set(it.id,{item:it,parentInitiativeId:Fe.id})})}),t.forEach(Fe=>{sk({item:Fe,entityType:"workstream",showArchivedPlanning:s,searchQuery:Le,ownerFilter:V,currentOwnerId:String(i||"")})&&Ie.set(Fe.id,{item:Fe,parentInitiativeId:null})}),k.reduce((Fe,it)=>{if(it.type==="initiative"){const qe=G.get(it.id);return qe&&Fe.push({favorite:it,item:qe,parentInitiativeId:null}),Fe}const Me=Ie.get(it.id);return Me&&Fe.push({favorite:it,...Me}),Fe},[])},[i,e,V,k,Le,s,t]);if(a==="deleted")return n.jsxs("div",{className:ze.scopeSummary,role:"status",children:[n.jsx("strong",{children:"Planning is not shown in Trash"}),n.jsx("span",{children:"Switch the task scope away from Trash to manage initiatives and workstreams."})]});if(r.status==="loading")return n.jsx(hQ,{});if(r.status==="error")return n.jsx(Ah,{title:"Planning unavailable",message:r.error||"Planning could not be loaded.",retrying:r.isRefreshing,onRetry:Pe});const ce=e.filter(G=>!!G.isArchived).length,pe=t.filter(G=>!!G.isArchived).length,xe=e.length>0||t.length>0,N=re.hasCriteria||g!=="default",X=()=>{se(""),W("all"),h&&y("default")},Ae=G=>{Y(Ie=>{const Fe=new Set(Ie);return Fe.has(G)?Fe.delete(G):Fe.add(G),Fe})},Te=G=>{q(Ie=>{const Fe=new Set(Ie);return Fe.has(G)?Fe.delete(G):Fe.add(G),Fe})},he=(G,Ie=ke.has(G.id),Fe=`planning-tasks-${G.id}`,it=`Tasks in ${G.title}`)=>{if(!Ie)return null;const Me=G.tasks||[],qe=qk(s?Me:Me.filter(ge=>!ge.isArchived),d);return n.jsx("ul",{id:Fe,className:`${ze.treeChildren} ${ze.treeTaskChildren}`.trim(),"aria-label":it,children:qe.length>0?qe.map(ge=>n.jsx("li",{children:n.jsx(fQ,{task:ge,assigneeOption:ge.assignee?le.get(ge.assignee):void 0,assigneeOptions:l,showTaskCardStatusLabel:c,onOpenTaskById:be,onSetTaskStatus:Z,onChangeTaskAssignee:Ve,onArchivePlanningTask:Re})},ge.id)):n.jsx("li",{className:ze.passiveGuidance,children:"Archived tasks are hidden."})})},ot=re.hasCriteria?"No matching initiatives":ce>0?"No active initiatives":"No initiatives yet",We=re.hasCriteria?"No initiatives match the current planning search and owner filter.":ce>0?`${ce} archived ${ce===1?"initiative is":"initiatives are"} hidden. Use the archive visibility control above to view ${ce===1?"it":"them"}.`:n.jsxs(n.Fragment,{children:["Initiatives give larger efforts a clear home without crowding the task board. Use the ",n.jsx("code",{children:"+"})," action above to create the first one."]}),Xe=re.hasCriteria?"No matching standalone workstreams":pe>0?"No active standalone workstreams":"No standalone workstreams yet",ae=re.hasCriteria?"No standalone workstreams match the current planning search and owner filter.":pe>0?`${pe} archived standalone ${pe===1?"workstream is":"workstreams are"} hidden. Use the archive visibility control above to view ${pe===1?"it":"them"}.`:n.jsxs(n.Fragment,{children:["Smaller projects can still use workstreams without needing initiative-level structure. Use the ",n.jsx("code",{children:"+"})," action above to add one."]});return n.jsxs(n.Fragment,{children:[r.status==="partial"&&r.collections.initiatives==="ready"&&r.collections.workstreams==="ready"?n.jsx(Ah,{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:Pe}):null,xe?n.jsxs("div",{className:ze.navigatorControls,children:[n.jsxs("div",{className:ze.navigatorSearchRow,children:[n.jsxs("div",{className:ze.navigatorSearch,children:[n.jsx(lg,{size:14,"aria-hidden":"true"}),n.jsx("span",{className:ze.visuallyHidden,children:"Search planning"}),n.jsx("input",{type:"search",value:Le,onChange:G=>se(G.target.value),placeholder:"Search initiatives and workstreams","aria-label":"Search planning"}),Le?n.jsx("button",{type:"button",className:ze.navigatorClearSearch,onClick:()=>se(""),"aria-label":"Clear planning search",title:"Clear search",children:n.jsx(fo,{size:13,"aria-hidden":"true"})}):null]}),n.jsx("button",{type:"button",className:`tf-control-icon ${z||V!=="all"||g!=="default"?ze.toggleActive:""}`.trim(),"aria-label":"Filter and sort planning",title:"Filter and sort planning","aria-expanded":z,"aria-controls":"planning-navigator-options",onClick:()=>fe(G=>!G),children:n.jsx(qS,{size:15,"aria-hidden":"true"})})]}),z?n.jsxs("div",{id:"planning-navigator-options",className:ze.navigatorOptions,children:[n.jsxs("div",{className:ze.navigatorOptionField,children:[n.jsx("span",{className:ze.navigatorOptionLabel,children:"Owner"}),n.jsx(Yv,{value:V,options:l,leadingOptions:$e,includeUnassigned:!1,onChange:W,disabled:!1,ariaLabel:"Filter planning by owner",className:ze.navigatorDropdown})]}),n.jsxs("div",{className:ze.navigatorOptionField,children:[n.jsx("span",{className:ze.navigatorOptionLabel,children:"Sort"}),n.jsx(qo,{value:g,options:TS,onChange:G=>y(String(G)),disabled:!h,ariaLabel:"Sort planning",className:ze.navigatorDropdown,portalPanel:!0,panelAlign:"start",triggerContent:n.jsxs("span",{className:ze.navigatorDropdownTrigger,children:[n.jsx(tv,{size:14,"aria-hidden":"true"}),n.jsx("span",{children:TS.find(G=>G.value===g)?.label})]}),renderOptionContent:G=>G.label})]}),n.jsx("button",{type:"button",className:"tf-control-icon",onClick:X,disabled:!N,"aria-label":"Reset planning filters and sort",title:"Reset planning filters and sort",children:n.jsx(mi,{size:14,"aria-hidden":"true"})})]}):null,n.jsxs("span",{className:ze.visuallyHidden,role:"status","aria-live":"polite",children:[re.resultCount," planning ",re.resultCount===1?"result":"results"]})]}):null,re.hasCriteria&&re.resultCount===0?n.jsxs("div",{className:ze.navigatorEmpty,role:"status",children:[n.jsx("strong",{children:"No planning matches"}),n.jsx("span",{children:"Try another title or reference, or clear the owner filter."}),n.jsx("button",{type:"button",onClick:X,children:"Clear search and filters"})]}):n.jsxs(n.Fragment,{children:[He.length>0?n.jsxs("div",{className:ze.sectionGroup,children:[n.jsx(gf,{label:"Favorites",count:He.length,expanded:!C,expandedTitle:"Collapse favorites",collapsedTitle:"Expand favorites",onToggle:_,controlsId:"planning-favorites-section"}),n.jsx("ul",{id:"planning-favorites-section",className:ze.treeList,"aria-label":"Favorite planning items",hidden:C,children:He.map(({favorite:G,item:Ie,parentInitiativeId:Fe})=>{const it=G.type==="initiative"?b?.type==="initiative"&&b.item.id===Ie.id:b?.type==="workstream"&&b.item.id===Ie.id||$?.kind==="detail"&&$.detail.item.id===Ie.id,Me=G.type==="initiative"?Ie:null,qe=G.type==="workstream"?Ie:null,ge=Me?Me.allWorkstreams||Me.workstreams:[],_e=ge.filter(Ne=>s||!Ne.isArchived),Be=`favorite:${G.type}:${Ie.id}`,Ge=we.has(Be),F=`planning-${Be.replaceAll(":","-")}-children`;return n.jsxs("li",{children:[n.jsx(Xp,{rowId:`favorite:${G.type}:${Ie.id}`,rowType:G.type,referenceLabel:G.type==="initiative"?fs(Ie):Io(Ie),item:Ie,ownerOption:Ie.ownerId?le.get(Ie.ownerId):void 0,ownerOptions:l,onChangeOwner:Ne=>me(G.type,Ie.id,Ne==="unassigned"?"":Ne),workstreamCount:Me?_e.length:void 0,active:G.type==="initiative"?f===Ie.id&&!p:p===Ie.id,isArchived:!!Ie.isArchived,detailOpen:it,canExpand:G.type==="initiative"?ge.length>0:!!qe?.tasks?.length,expanded:Ge,controlsId:F,onToggleExpand:()=>Te(Be),onToggleScope:()=>{G.type==="initiative"?U(Ie.id):L(Ie.id,Fe)},favoriteReady:h,onOpenDetails:()=>{G.type==="initiative"?D(Ie.id):Fe?(D(Fe),H(Ie.id)):ie(Ie.id)},favorite:!0,onToggleFavorite:()=>v(G),onArchiveReady:G.type==="initiative"?ye?()=>ye(Ie.id):void 0:je?()=>je(Ie.id):void 0,hierarchyInteractions:!1,initiativeLinkOptions:G.type==="workstream"&&!Fe?ue.initiatives:void 0,onLinkInitiative:G.type==="workstream"&&!Fe?Ne=>ve(Ie.id,Ne.referenceLabel):void 0}),Me&&Ge?n.jsx("ul",{id:F,className:ze.treeChildren,"aria-label":`Workstreams in favorite ${Me.title}`,children:_e.length>0?_e.map(Ne=>{const Ce=`${Be}:workstream:${Ne.id}`,ut=we.has(Ce),mt=`planning-${Ce.replaceAll(":","-")}-children`;return n.jsxs("li",{children:[n.jsx(Xp,{rowId:Ce,rowType:"workstream",referenceLabel:Io(Ne),item:Ne,ownerOption:Ne.ownerId?le.get(Ne.ownerId):void 0,ownerOptions:l,onChangeOwner:Ue=>me("workstream",Ne.id,Ue==="unassigned"?"":Ue),active:p===Ne.id,isArchived:!!Ne.isArchived,detailOpen:b?.type==="workstream"&&b.item.id===Ne.id||$?.kind==="detail"&&$.detail.item.id===Ne.id,canExpand:!!Ne.tasks?.length,expanded:ut,controlsId:mt,onToggleExpand:()=>Te(Ce),onToggleScope:()=>L(Ne.id,Me.id),onOpenDetails:()=>{D(Me.id),H(Ne.id)},favorite:de.has(Wi({type:"workstream",id:Ne.id})),favoriteReady:h,onToggleFavorite:()=>v({type:"workstream",id:Ne.id}),onArchiveReady:je?()=>je(Ne.id):void 0,hierarchyInteractions:!1}),he(Ne,ut,mt,`Tasks in favorite ${Me.title} / ${Ne.title}`)]},Ne.id)}):n.jsx("li",{className:ze.passiveGuidance,children:"Archived workstreams are hidden."})}):null,qe?he(qe,Ge,F,`Tasks in favorite ${qe.title}`):null]},Wi(G))})})]}):null,n.jsxs("div",{className:ze.sectionGroup,children:[n.jsx(gf,{label:"Initiatives",count:re.initiatives.length,showZeroCount:!0,actions:r.collections.initiatives==="ready"?n.jsx("button",{type:"button",className:"tf-control-icon",title:"Create initiative","aria-label":"Create initiative",onClick:I,children:n.jsx(Ko,{size:15})}):null,expanded:!S,expandedTitle:"Collapse initiatives",collapsedTitle:"Expand initiatives",onToggle:M,controlsId:S?void 0:"planning-initiatives-section"}),S?null:n.jsx("ul",{id:"planning-initiatives-section",className:ze.treeList,"aria-label":"Initiatives",children:r.collections.initiatives==="error"?n.jsx("li",{children:n.jsx(Ah,{compact:!0,title:"Initiatives unavailable",message:"Initiatives could not be loaded.",retrying:r.isRefreshing,onRetry:Pe})}):re.initiatives.length===0?n.jsxs("li",{className:ze.emptyPanel,children:[n.jsx("div",{className:ze.emptyPanelTitle,children:ot}),n.jsx("div",{className:ze.emptyPanelText,children:We})]}):re.initiatives.map(({initiative:G,workstreams:Ie})=>{const Fe=G.allWorkstreams||G.workstreams,it=s?Fe:Fe.filter(ge=>!ge.isArchived),Me=Ie,qe=re.hasCriteria?Me.length>0:P.has(G.id);return n.jsxs("li",{children:[n.jsx(Xp,{rowId:G.id,rowType:"initiative",referenceLabel:fs(G),item:G,ownerOption:G.ownerId?le.get(G.ownerId):void 0,ownerOptions:l,onChangeOwner:ge=>me("initiative",G.id,ge==="unassigned"?"":ge),workstreamCount:it.length,active:f===G.id&&!p,isArchived:!!G.isArchived,detailOpen:b?.type==="initiative"&&b.item.id===G.id,canExpand:Fe.length>0,expanded:qe,controlsId:`planning-children-${G.id}`,onToggleExpand:()=>K(G.id),onToggleScope:()=>U(G.id),onOpenDetails:()=>D(G.id),favorite:de.has(Wi({type:"initiative",id:G.id})),favoriteReady:h,onToggleFavorite:()=>v({type:"initiative",id:G.id}),onArchiveReady:ye?()=>ye(G.id):void 0}),qe&&Me.length>0&&n.jsx("ul",{id:`planning-children-${G.id}`,className:ze.treeChildren,"aria-label":`Workstreams in ${G.title}`,children:Me.map(ge=>n.jsxs("li",{children:[n.jsx(Xp,{rowId:ge.id,rowType:"workstream",referenceLabel:Io(ge),item:ge,ownerOption:ge.ownerId?le.get(ge.ownerId):void 0,ownerOptions:l,onChangeOwner:_e=>me("workstream",ge.id,_e==="unassigned"?"":_e),active:p===ge.id,isArchived:!!ge.isArchived,detailOpen:b?.type==="workstream"&&b.item.id===ge.id||$?.kind==="detail"&&$.detail.item.id===ge.id,canExpand:(ge.tasks||[]).length>0,expanded:ke.has(ge.id),controlsId:`planning-tasks-${ge.id}`,onToggleExpand:()=>Ae(ge.id),onToggleScope:()=>L(ge.id,G.id),onOpenDetails:()=>{D(G.id),H(ge.id)},favorite:de.has(Wi({type:"workstream",id:ge.id})),favoriteReady:h,onToggleFavorite:()=>v({type:"workstream",id:ge.id}),onArchiveReady:je?()=>je(ge.id):void 0}),he(ge)]},ge.id))})]},G.id)})})]}),n.jsxs("div",{className:ze.sectionGroup,children:[n.jsx(gf,{label:"Workstreams",count:re.standaloneWorkstreams.length,showZeroCount:!0,actions:r.collections.workstreams==="ready"?n.jsx("button",{type:"button",className:"tf-control-icon",title:"Create workstream","aria-label":"Create workstream",onClick:E,children:n.jsx(Ko,{size:15})}):null,expanded:!w,expandedTitle:"Collapse workstreams",collapsedTitle:"Expand workstreams",onToggle:R,controlsId:w?void 0:"planning-workstreams-section"}),w?null:n.jsx("ul",{id:"planning-workstreams-section",className:ze.treeList,"aria-label":"Standalone workstreams",children:r.collections.workstreams==="error"?n.jsx("li",{children:n.jsx(Ah,{compact:!0,title:"Workstreams unavailable",message:"Workstreams could not be loaded.",retrying:r.isRefreshing,onRetry:Pe})}):re.standaloneWorkstreams.length===0?n.jsxs("li",{className:ze.emptyPanel,children:[n.jsx("div",{className:ze.emptyPanelTitle,children:Xe}),n.jsx("div",{className:ze.emptyPanelText,children:ae})]}):re.standaloneWorkstreams.map(G=>n.jsxs("li",{children:[n.jsx(Xp,{rowId:G.id,rowType:"workstream",referenceLabel:Io(G),item:G,ownerOption:G.ownerId?le.get(G.ownerId):void 0,ownerOptions:l,onChangeOwner:Ie=>me("workstream",G.id,Ie==="unassigned"?"":Ie),active:p===G.id,isArchived:!!G.isArchived,detailOpen:b?.type==="workstream"&&b.item.id===G.id||$?.kind==="detail"&&$.detail.item.id===G.id,canExpand:(G.tasks||[]).length>0,expanded:ke.has(G.id),controlsId:`planning-tasks-${G.id}`,onToggleExpand:()=>Ae(G.id),onToggleScope:()=>L(G.id,null),onOpenDetails:()=>ie(G.id),favorite:de.has(Wi({type:"workstream",id:G.id})),favoriteReady:h,onToggleFavorite:()=>v({type:"workstream",id:G.id}),onArchiveReady:je?()=>je(G.id):void 0,initiativeLinkOptions:ue.initiatives,onLinkInitiative:Ie=>ve(G.id,Ie.referenceLabel)}),he(G)]},G.id))})]})]})]})}function hQ(){return n.jsxs("div",{className:ze.loadingState,role:"status","aria-live":"polite",children:[n.jsx("span",{className:ze.visuallyHidden,children:"Loading planning"}),[0,1,2].map(e=>n.jsxs("div",{className:ze.loadingRow,"aria-hidden":"true",children:[n.jsx("span",{className:ze.loadingBadge}),n.jsx("span",{className:ze.loadingTitle}),n.jsx("span",{className:ze.loadingMeta})]},e))]})}function Ah({title:e,message:t,retrying:r,onRetry:a,compact:s=!1}){return n.jsxs("div",{className:`${ze.failureState} ${s?ze.failureStateCompact:""} tf-surface-inset`.trim(),role:"alert",children:[n.jsxs("div",{className:ze.failureCopy,children:[n.jsx("strong",{children:e}),n.jsx("span",{children:t})]}),n.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:r,onClick:a,children:r?"Retrying…":"Retry"})]})}function PS({detail:e,showArchivedChildren:t,inlineEditor:r,selectedChildWorkstreamId:a,currentWorkspaceId:s,currentActorId:i,theme:l,onOpenNestedWorkstreamDetails:c,onArchivePlanningTask:d,onArchiveResolvedWorkstream:f,onArchiveResolvedEntity:p,onEdit:g,onChangeOwner:h,onChangePlanningOwner:y,onArchive:k,onUnarchive:v,onCreateTaskInWorkstream:C,onCreateWorkstreamInInitiative:S,onOpenTaskById:w,onChangeTaskAssignee:_,taskReferences:M,onAssignTaskToWorkstream:R,onAssignInitiativeToWorkstream:P,onAttachTaskToWorkstreamByReference:b,onAttachWorkstreamToInitiativeByReference:$,onAddPlanningContextFile:I,onRemovePlanningContextFile:E,onUpdatePlanningContextCaption:K,parentInitiative:U=null,assigneeOptions:L,linkOptions:D,showTaskCardStatusLabel:ie=!1,taskArrangeMode:H="execution",onTaskArrangeModeChange:be=()=>{},onReorderWorkstreamTasks:Z,onSetTaskStatus:me,hydrationState:Ve,onRetryHydration:Re}){const je=Q.useId(),[ye,ue]=Q.useState(!1),[ve,Pe]=Q.useState(!1),[Le,se]=Q.useState(null),[V,W]=Q.useState(null),[z,fe]=Q.useState(!1),[ke,Y]=Q.useState(null),[we,q]=Q.useState(!1),[le,$e]=Q.useState(!1),[re,de]=Q.useState(!1),[He,ce]=Q.useState(null),[pe,xe]=Q.useState(String(e.item.ownerId||"")),[N,X]=Q.useState(!1),{active:Ae}=eA(),Te=String(Ae?.data?.current?.type||""),he=e.type==="workstream"&&Te==="task-card",ot=e.type==="initiative"&&Te==="planning-workstream",We=e.type==="initiative"?"planning-initiative-target":"planning-workstream-target",{setNodeRef:Xe,isOver:ae}=cv({id:`${We}:detail:${e.item.id}`,data:e.type==="initiative"?{type:We,initiativeId:e.item.id}:{type:We,workstreamId:e.item.id}}),G=e.type==="initiative"?"Workstreams":"Tasks",Ie=Q.useMemo(()=>{if(e.type!=="initiative")return[];const st=new Set(e.item.workstreams.map(Lt=>Lt.id)),zt=(e.item.allWorkstreams||[]).filter(Lt=>!!Lt.isArchived&&!st.has(Lt.id));return[...e.item.workstreams,...zt]},[e.item,e.type]),Fe=Q.useMemo(()=>e.type!=="workstream"?[]:e.item.tasks||[],[e.item,e.type]),it=Q.useMemo(()=>new Map(L.filter(st=>!String(st.archivedAt||"").trim()).map(st=>[String(st.value||"").trim(),st])),[L]),Me=t?Ie:Ie.filter(st=>!st.isArchived),qe=qk(t?Fe:Fe.filter(st=>!st.isArchived),H),ge=e.type==="initiative"?Me.length:qe.length,_e=e.type==="initiative"?"Initiative":"Workstream",Be=e.type==="initiative"?fs(e.item):Io(e.item),Ge=U_({entityType:e.type,isArchived:e.item.isArchived,taskCount:e.item.taskCount,completedTaskCount:e.item.completedTaskCount,archiveReady:e.item.archiveReady,activeWorkstreamCount:e.item.archiveActiveWorkstreamCount}),F=Ge.mode==="archived"?`Unarchive ${_e.toLowerCase()}`:Ge.mode==="blocked"?`Archive unavailable — active ${Ge.remainingKind==="task"?"tasks":"workstreams"} remain`:Ge.mode==="checking"?"Archive availability is still loading":`Archive ${_e.toLowerCase()}`;Q.useEffect(()=>{ue(!1),Pe(!1),se(null),W(null),fe(!1),$e(!1)},[e.item.id,e.type]),Q.useEffect(()=>{xe(String(e.item.ownerId||""))},[e.item.id,e.item.ownerId,e.type]);const Ne=Q.useCallback(async st=>{if(!h||N||st===pe)return;const zt=pe;xe(st),X(!0);try{await h(st)}catch{xe(zt)}finally{X(!1)}},[N,h,pe]),Ce=Q.useCallback(async()=>{if(!(!p||re)){de(!0);try{await p(e.item.id)&&$e(!1)}finally{de(!1)}}},[re,e.item.id,p]),ut=e.type==="initiative"?!!$:!!b,mt=Q.useCallback(async st=>{if(ye)return;const zt=e.type==="initiative"?$:b;if(zt){ue(!0);try{await zt(e.item.id,st.referenceLabel)}finally{ue(!1)}}},[e.item.id,e.type,ye,b,$]),Ue=Q.useCallback(async st=>{if(!(!P||e.type!=="workstream"||z)){fe(!0);try{await P(e.item.id,st.referenceLabel)!==!1&&Pe(!1)}finally{fe(!1)}}},[e.item.id,e.type,z,P]),wt=e.type==="workstream"&&U?fs(U):"",kt=Q.useMemo(()=>new Set(e.type==="initiative"?Ie.map(st=>st.id):Fe.map(st=>st.id)),[Ie,e.type,Fe]),rt=Q.useMemo(()=>(e.type==="initiative"?D.workstreams:D.tasks).filter(st=>!kt.has(st.id)),[e.type,D.tasks,D.workstreams,kt]),Ht=Q.useCallback(async()=>{if(!(!Le||z)){fe(!0);try{if(Le.entityType==="workstream"){if(!P)return;const st=e.type==="initiative"?Be:wt;if(await P?.(Le.id,null)===!1)return;W({entityType:Le.entityType,id:Le.id,message:`${Le.referenceLabel} removed from its initiative.`,onUndo:async()=>{if(!st)return;await P?.(Le.id,st)!==!1&&W(null)}})}else{if(!R||await R(Le.id,null)===!1)return;W({entityType:Le.entityType,id:Le.id,message:`${Le.referenceLabel} removed from this workstream.`,onUndo:async()=>{await R(Le.id,e.item.id)!==!1&&W(null)}})}se(null)}finally{fe(!1)}}},[e.item.id,e.type,Be,z,P,R,wt,Le]),lr=Q.useCallback(async()=>{if(!(!V||z)){fe(!0);try{await V.onUndo()}finally{fe(!1)}}},[z,V]),rr=Q.useCallback((st,zt)=>V?.entityType===st&&V.id===zt?n.jsxs("div",{className:ze.relationshipRecovery,role:"status",children:[n.jsx("span",{children:V.message}),n.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:z,onClick:()=>{lr()},children:z?"Restoring…":"Undo"})]}):null,[lr,z,V]),wr=V&&!kt.has(V.id)?n.jsxs("div",{className:ze.relationshipRecovery,role:"status",children:[n.jsx("span",{children:V.message}),n.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:z,onClick:()=>{lr()},children:z?"Restoring…":"Undo"})]}):null;return n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:ze.detailHero,children:[n.jsxs("div",{className:ze.detailTopRow,children:[n.jsxs("div",{className:ze.detailReferenceRow,children:[e.type==="workstream"?n.jsx(n.Fragment,{children:wt?n.jsxs(n.Fragment,{children:[n.jsx(nd,{label:wt,entityType:"initiative",entityName:U?.title}),n.jsx("span",{className:x.taskHierarchyDivider,children:"/"}),r?null:n.jsx(vu,{disabled:!P,onClick:()=>{se({entityType:"workstream",id:e.item.id,referenceLabel:Be,title:e.item.title,parentLabel:U?`${fs(U)} ${U.title}`.trim():wt})},title:"Unlink workstream from initiative",ariaLabel:"Unlink workstream from initiative",children:n.jsx(pf,{size:14,"aria-hidden":"true"})})]}):null}):null,e.type==="workstream"&&!wt&&!r?n.jsx(vu,{disabled:!P,onClick:()=>Pe(!0),title:"Link initiative",ariaLabel:"Link initiative",ariaExpanded:ve,children:n.jsx(Au,{size:14,"aria-hidden":"true"})}):null,n.jsx(nd,{label:Be||"Reference pending",entityType:e.type,entityName:e.item.title,pending:!Be})]}),n.jsx("div",{className:ze.detailTopActions,children:r?n.jsxs(n.Fragment,{children:[n.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",onClick:r.onCancel,disabled:r.isSubmitting,children:"Cancel"}),n.jsx("button",{type:"submit",form:je,className:"tf-button-primary tf-button-compact",disabled:r.isSubmitting,children:r.isSubmitting?"Saving…":"Save"})]}):n.jsxs(n.Fragment,{children:[n.jsx("button",{type:"button",className:"tf-control-icon",disabled:Ge.mode==="blocked"||Ge.mode==="checking",onClick:()=>{Ge.mode==="archived"?v?.():Ge.mode==="empty"?k?.():Ge.mode==="ready"&&$e(!0)},title:F,"aria-label":F,"aria-expanded":Ge.mode==="ready"?le:void 0,children:Ge.mode==="archived"?n.jsx(mi,{size:14,"aria-hidden":"true"}):n.jsx(Xc,{size:14,"aria-hidden":"true"})}),n.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>{Pe(!1),g()},title:`Edit ${_e.toLowerCase()} details`,"aria-label":`Edit ${_e.toLowerCase()} details`,children:n.jsx(HS,{size:14,"aria-hidden":"true"})})]})})]}),le&&Ge.mode==="ready"?n.jsx(Yk,{entityType:e.type,title:e.item.title,activeTaskCount:e.item.archiveActiveTaskCount,activeWorkstreamCount:e.item.archiveActiveWorkstreamCount,busy:re,onCancel:()=>$e(!1),onConfirm:()=>{Ce()}}):null,e.type==="workstream"?rr("workstream",e.item.id):null,e.type==="workstream"&&!wt&&ve?n.jsxs("div",{className:ze.relationshipPickerRow,role:"group","aria-label":"Link workstream to initiative",children:[n.jsx(sg,{options:D.initiatives,entityLabel:"initiative",onSelect:Ue,disabled:!P||z}),n.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",disabled:z,onClick:()=>Pe(!1),title:"Cancel initiative link","aria-label":"Cancel initiative link",children:n.jsx(fo,{size:14,"aria-hidden":"true"})})]}):null,r?n.jsx(Zk,{editor:r.editor,draftTitle:r.draftTitle,draftDescription:r.draftDescription,draftOwner:r.draftOwner,draftInitiativeId:r.draftInitiativeId,assigneeOptions:L,initiativeLinkOptions:D.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:je}):n.jsxs(n.Fragment,{children:[n.jsx("h3",{className:ze.detailTitle,children:e.item.title}),n.jsx(cJ,{description:e.item.description,label:_e,taskReferences:M,className:`${ze.detailDescription} ${x.appScrollbar} tf-scrollbar`.trim(),markdownClassName:ze.detailDescriptionMarkdown})]}),n.jsxs("div",{className:ze.detailOwnerField,children:[n.jsx("span",{className:ze.detailOwnerLabel,children:"Owner"}),n.jsx(Yv,{value:pe,disabled:!h||N,onChange:st=>{Ne(st)},ariaLabel:`${_e} owner`,options:L,className:`${qv.control} ${ze.ownerSelect}`})]}),e.item.taskCount>0?n.jsx(X_,{value:e.item.progressPercent,label:`${e.item.progressPercent}% resolved`,statusCounts:e.item.statusCounts}):n.jsx(Z_,{}),n.jsx(eI,{item:e.item,workstreamCount:e.type==="initiative"?e.item.workstreamCount??e.item.workstreams.length:void 0,className:ze.detailSummaryMeta}),e.item.taskCount>0?n.jsx("span",{className:ze.passiveGuidance,children:"Lifetime progress includes archived tasks."}):null]}),n.jsxs("div",{ref:Xe,className:`${ze.listCard} ${he||ot?ze.sectionDropReady:""} ${ae?ze.sectionDropActive:""} ${he||ot?ze.sectionDropMode:""}`.trim(),children:[n.jsxs("div",{className:ze.sectionHeaderRow,children:[n.jsxs("div",{className:ze.sectionTitle,children:[G," (",ge,")"]}),n.jsx("div",{className:ze.headerActionGroup,children:e.type==="initiative"?n.jsx("button",{type:"button",className:"tf-control-icon",title:"Create workstream in this initiative","aria-label":"Create workstream in this initiative",onClick:()=>S?.(e.item.id),children:n.jsx(Ko,{size:15})}):n.jsx("button",{type:"button",className:"tf-control-icon",title:"Create task in this workstream","aria-label":"Create task in this workstream",onClick:()=>C?.(e.item.id),children:n.jsx(Ko,{size:15})})})]}),n.jsx("div",{className:ze.linkPickerRow,children:n.jsx(sg,{options:rt,entityLabel:e.type==="initiative"?"workstream":"task",onSelect:mt,disabled:!ut||ye})}),e.type==="workstream"?n.jsx(zJ,{value:H,onChange:be}):null,e.type==="initiative"?Me.length>0?Me.map(st=>{const zt=Io(st),Lt=()=>c?.(st.id),Mt=a===st.id,Ee=ke===st.id,ct=async()=>{if(!(!f||we)){q(!0);try{await f(st.id)&&Y(null)}finally{q(!1)}}};return n.jsx("div",{className:`${ze.listItemButton} ${ze.detailCardButton}`.trim(),children:n.jsxs("div",{className:`${ze.listItem} ${ze.detailChildCard} ${Mt?ze.detailChildCardSelected:""} ${st.isArchived?ze.detailChildCardArchived:""}`.trim(),children:[n.jsxs("div",{className:ze.detailChildCardTopRow,children:[n.jsxs("div",{className:ze.detailChildReferenceRow,children:[n.jsx(vu,{disabled:!P,onClick:lt=>{lt.stopPropagation(),se({entityType:"workstream",id:st.id,referenceLabel:zt,title:st.title,parentLabel:`${Be} ${e.item.title}`.trim()})},title:`Unlink ${zt||st.title} from initiative`,ariaLabel:`Unlink ${zt||st.title} from initiative`,children:n.jsx(pf,{size:14,"aria-hidden":"true"})}),zt?n.jsx(nd,{label:zt,entityType:"workstream",entityName:st.title}):n.jsx("span",{"aria-hidden":"true"})]}),n.jsx("div",{className:ze.detailChildActions,onClick:lt=>lt.stopPropagation(),children:st.archiveReady&&!st.isArchived&&f?n.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>Y(st.id),title:"Archive completed workstream","aria-label":`Archive completed workstream ${st.title}`,"aria-expanded":Ee,children:n.jsx(Xc,{size:14,"aria-hidden":"true"})}):null})]}),rr("workstream",st.id),Ee?n.jsx(Yk,{entityType:"workstream",title:st.title,activeTaskCount:st.archiveActiveTaskCount,busy:we,onCancel:()=>Y(null),onConfirm:()=>{ct()}}):null,n.jsx("div",{role:"button",tabIndex:0,"aria-current":Mt?"true":void 0,className:ze.listItemText,onClick:Lt,onKeyDown:lt=>{lt.key!=="Enter"&&lt.key!==" "||(lt.preventDefault(),Lt())},children:n.jsx(tI,{item:st,entityType:"workstream",ownerOption:st.ownerId&&it.has(st.ownerId)?Fi(it.get(st.ownerId)):void 0,ownerOptions:L.map(Fi),onChangeOwner:y?lt=>y("workstream",st.id,lt==="unassigned"?"":lt):void 0})})]})},st.id)}):n.jsx("div",{className:ze.passiveGuidance,children:"No workstreams are linked to this initiative."}):qe.length>0?n.jsx(YJ,{tasks:qe,mode:H,onReorder:Z?st=>Z(e.item.id,BJ(qk(Fe,"execution"),st)):void 0,children:st=>{const zt=hs(st)||st.id,Lt=_o(st.status);return n.jsx("div",{className:`${ze.listItemButton} ${ze.detailCardButton}`.trim(),children:n.jsx(rI,{task:st,assigneeOption:st.assignee&&it.has(st.assignee)?Fi(it.get(st.assignee)):void 0,assigneeOptions:L.map(Fi),showStatusLabel:ie,onOpen:w?()=>w(st.id):void 0,onAssigneeChange:_?Mt=>_(st.id,Mt):void 0,onStatusChange:me?Mt=>me(st.id,Mt):void 0,feedback:rr("task",st.id),referenceAction:n.jsx(vu,{disabled:!R,onClick:Mt=>{Mt.stopPropagation(),se({entityType:"task",id:st.id,referenceLabel:zt,title:st.title,parentLabel:`${Be} ${e.item.title}`.trim()})},title:`Unlink ${zt||st.title} from workstream`,ariaLabel:`Unlink ${zt||st.title} from workstream`,children:n.jsx(pf,{size:14,"aria-hidden":"true"})}),actions:!st.isArchived&&(Lt.value==="done"||Lt.value==="cancelled")&&d?n.jsx("button",{type:"button",className:"tf-control-icon",disabled:He===st.id,onClick:async Mt=>{Mt.stopPropagation(),ce(st.id);try{await d(st.id)}finally{ce(null)}},title:"Archive task","aria-label":`Archive task ${zt||st.title}`,children:n.jsx(Xc,{size:14,"aria-hidden":"true"})}):void 0})},st.id)}}):n.jsx("div",{className:ze.passiveGuidance,children:"No tasks are linked to this workstream."}),wr]}),n.jsx("div",{className:ze.listCard,children:n.jsx(lJ,{entityType:e.type,entityId:e.item.id,referenceLabel:Be,workspaceId:s,attachments:e.item.attachments,readOnly:!!e.item.isArchived,onAddAttachment:st=>I?.(e.type,e.item.id,st),onRemoveAttachment:st=>E?.(e.type,e.item.id,st),onUpdateAttachmentCaption:(st,zt)=>K?.(e.type,e.item.id,st,zt)})}),n.jsx("div",{className:ze.listCard,children:n.jsx(dJ,{entityType:e.type,item:e.item,assigneeOptions:L.map(Fi),currentActorId:i,taskReferences:M,parentInitiative:U,listClassName:ze.activityTimelineList,emptyClassName:ze.activityTimelineEmpty,hydrationState:Ve,onRetryHydration:Re})}),n.jsx(rQ,{item:Le,busy:z,theme:l,onCancel:()=>se(null),onConfirm:()=>{Ht()}})]})}function Zk({editor:e,draftTitle:t,draftDescription:r,draftOwner:a,draftInitiativeId:s,assigneeOptions:i,initiativeLinkOptions:l,draftInitiativeSummary:c,onChangeDraftTitle:d,onChangeDraftDescription:f,onChangeDraftOwner:p,onChangeDraftInitiativeId:g,onCancel:h,onSubmit:y,isSubmitting:k,inline:v=!1,formId:C}){const S=e.entityType==="initiative"?"Initiative":"Workstream",w=Q.useId(),_=Q.useId(),M=Q.useId(),R=Q.useRef(null),[P,b]=Q.useState(null),$=k?e.mode==="create"?`Creating ${S}...`:`Saving ${S}...`:e.mode==="create"?`Create ${S}`:`Save ${S}`,I=Q.useCallback(K=>{if(K.preventDefault(),!t.trim()){b(`${S} title is required.`),R.current?.focus();return}b(null),y()},[t,S,y]),E=Q.useCallback(K=>{!v||K.key!=="Escape"||k||(K.preventDefault(),h())},[v,k,h]);return n.jsxs("form",{id:C,className:`${ze.editorCard} ${v?ze.inlineEditorCard:""}`.trim(),onSubmit:I,onKeyDown:E,noValidate:!0,children:[n.jsxs("div",{className:ze.editorField,children:[n.jsxs("label",{className:ze.editorLabel,htmlFor:w,children:[S," title"]}),n.jsx("input",{ref:R,id:w,"data-planning-editor-title":!0,className:x.input,disabled:k,required:!0,"aria-invalid":P?"true":void 0,"aria-describedby":P?_:void 0,value:t,onChange:K=>{P&&b(null),d(K.target.value)},placeholder:e.entityType==="initiative"?"Enter initiative title":"Enter workstream title"}),P?n.jsx("p",{id:_,className:"tf-text-error",children:P}):null]}),n.jsxs("div",{className:ze.editorField,children:[n.jsxs("label",{className:ze.editorLabel,htmlFor:M,children:[S," description"]}),n.jsx("textarea",{id:M,className:x.textarea,disabled:k,value:r,onChange:K=>f(K.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"&&n.jsxs("div",{className:ze.editorField,children:[n.jsx("span",{className:ze.editorLabel,children:"Initiative"}),n.jsxs("div",{className:ze.editorRelationshipRow,children:[n.jsx(sg,{options:l,selectedId:c?.id||"",entityLabel:"initiative",disabled:k,onSelect:K=>g(K.referenceLabel)}),s.trim()?n.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:k,onClick:()=>g(""),children:"Remove"}):null]})]}),v?null:n.jsxs("div",{className:ze.editorField,children:[n.jsxs("span",{className:ze.editorLabel,children:[S," owner"]}),n.jsx(Yv,{disabled:k,value:a,onChange:p,ariaLabel:`${S} owner`,options:i,className:ze.editorSelect})]}),v?null:n.jsxs("div",{className:ze.editorActions,children:[n.jsx("button",{type:"button",className:x.secondaryHeaderBtn,onClick:h,disabled:k,children:"Cancel"}),n.jsx("button",{type:"submit",className:x.primaryUpdateBtn,disabled:k,children:$})]})]})}function gQ({open:e,leftOffset:t=0,returnFocusRef:r,onWidthChange:a,initiatives:s,standaloneWorkstreams:i,planningLoadState:l,onRetryPlanning:c,taskScope:d,activeInitiativeId:f,activeWorkstreamId:p,navigatorSort:g,navigatorSortReady:h,onNavigatorSortChange:y,taskArrangeMode:k="execution",onTaskArrangeModeChange:v=()=>{},onReorderWorkstreamTasks:C,planningFavorites:S,onTogglePlanningFavorite:w,favoritesSectionCollapsed:_,initiativesSectionCollapsed:M,workstreamsSectionCollapsed:R,onToggleFavoritesSection:P,onToggleInitiativesSection:b,onToggleWorkstreamsSection:$,expandedInitiativeIds:I,detail:E,editor:K,secondaryEditor:U=null,secondaryPane:L,primaryHydrationState:D,secondaryHydrationState:ie,onRetryPrimaryHydration:H,onRetrySecondaryHydration:be,currentWorkspaceId:Z,currentOwnerId:me,theme:Ve,assigneeOptions:Re,linkOptions:je,showTaskCardStatusLabel:ye=!1,draftInitiativeSummary:ue,draftTitle:ve,draftDescription:Pe,draftOwner:Le,draftInitiativeId:se,onChangeDraftTitle:V,onChangeDraftDescription:W,onChangeDraftOwner:z,onChangeDraftInitiativeId:fe,onCollapseTreePane:ke,onExpandTreePane:Y,onCollapsePrimaryPane:we,onExpandPrimaryPane:q,onCollapseSecondaryPane:le,onExpandSecondaryPane:$e,onBackFromSecondary:re,treeCollapsed:de,primaryCollapsed:He,secondaryCollapsed:ce,onCancelEditor:pe,onCancelSecondaryEditor:xe,onSubmitEditor:N,isSubmittingEditor:X,onCreateInitiative:Ae,onCreateWorkstream:Te,onToggleInitiative:he,onSelectInitiative:ot,onSelectWorkstream:We,onOpenInitiativeDetails:Xe,onOpenWorkstreamDetails:ae,onOpenNestedWorkstreamDetails:G,onEditInitiative:Ie,onEditWorkstream:Fe,onChangePlanningOwner:it,onChangeTaskAssignee:Me,onArchiveInitiative:qe,onUnarchiveInitiative:ge,onArchiveWorkstream:_e,onUnarchiveWorkstream:Be,onArchivePlanningTask:Ge,onArchiveResolvedWorkstream:F,onArchiveResolvedInitiative:Ne,onCreateTaskInWorkstream:Ce,onCreateWorkstreamInInitiative:ut,onAssignInitiativeToWorkstream:mt,onOpenTaskById:Ue,onSetTaskStatus:wt,taskReferences:kt,onAssignTaskToWorkstream:rt,onAttachTaskToWorkstreamByReference:Ht,onAttachWorkstreamToInitiativeByReference:lr,onAddPlanningContextFile:rr,onRemovePlanningContextFile:wr,onUpdatePlanningContextCaption:st}){const zt=K?.mode==="edit"&&E&&K.entityType===E.type&&K.targetId===E.item.id?K:null,Lt=U?.mode==="edit"&&L?.kind==="detail"&&U.entityType===L.detail.type&&U.targetId===L.detail.item.id?U:null,Mt=K&&!zt?K:null,Ee=!!(E||Mt),ct=!!L,lt=Mt?.entityType||E?.type||null,Je=lt==="initiative",nt=lt==="workstream",[Ct,Rt]=Q.useState(!1),[Dt,It]=Q.useState(!1),[Qt,ir]=Q.useState(!1),[dr,sr]=Q.useState({initiative:!1,workstream:!1}),pr=Q.useMemo(()=>{const kr=[...s.flatMap(cr=>cr.allWorkstreams||cr.workstreams),...i];return s.filter(cr=>!!cr.isArchived).length+kr.filter(cr=>!!cr.isArchived).length+kr.reduce((cr,Wr)=>cr+(Wr.tasks||[]).filter(on=>!!on.isArchived).length,0)},[s,i]),{availableWidth:Jr,layoutMode:Tr}=pQ(t),br=Tr==="wide",ur=br&&de,Qr=br&&He,Hr=br&&ce,gr=sI(ur,!0,Je?Qr:!Ct,!0,nt?Qr:ct?Hr:!Dt),u=Tr!=="narrow"||!Ee&&!ct,ht=Ee&&(br||!ct),yr=ct,mn=br?gr:Tr==="medium"?vf+(ht||yr?zi:0):Jr,qt=Math.max(0,Math.min(mn,Jr)),Vr=Math.max(0,qt-(u?vf:0)),Tt=Mt?Mt.entityType==="initiative"?Mt.mode==="create"?"New Initiative":"Edit Initiative":Mt.mode==="create"?"New Workstream":"Edit Workstream":E?.type==="initiative"?"Initiative":"Workstream",Ut=L?.kind==="editor"?L.editor.mode==="create"?"New Workstream":"Edit Workstream":"Workstream",fr=Mt?null:E,$t=L?.kind==="detail"?L.detail:null,Mr=Q.useCallback(kr=>{sr(cr=>({...cr,[kr]:!cr[kr]}))},[]),Fr=Q.useCallback(kr=>{const cr=String(kr.initiativeId||"").trim();return cr&&s.find(Wr=>Wr.id===cr)||null},[s]),Vt=Q.useRef(null),Dr=Q.useRef(null),Ye=Q.useRef(null),en=Q.useRef(null),bn=Q.useRef(null),tn=Q.useRef(e),ft=Q.useRef(""),rn=Lt?`secondary:inline-editor:${Lt.targetId}`:L?`secondary:${L.kind}:${L.kind==="detail"?L.detail.item.id:`${L.editor.mode}:${L.editor.entityType}:${L.editor.mode==="edit"?L.editor.targetId:""}`}`:zt?`primary:inline-editor:${zt.targetId}`:Mt?`primary:editor:${Mt.mode}:${Mt.entityType}:${Mt.mode==="edit"?Mt.targetId:""}`:E?`primary:detail:${E.type}:${E.item.id}`:"tree";Q.useEffect(()=>{const kr=tn.current;if(tn.current=e,kr&&!e){r?.current?.focus(),ft.current="";return}if(!e||kr&&ft.current===rn)return;ft.current=rn;const cr=yr?Ye.current:ht?Dr.current:Vt.current,Wr=window.requestAnimationFrame(()=>{(cr?.querySelector("[data-planning-editor-title]")||cr?.querySelector("[data-planning-pane-heading]"))?.focus()});return()=>window.cancelAnimationFrame(Wr)},[rn,e,r,ht,yr]);const Nt=Q.useCallback(()=>{if(K){pe();return}E?.type==="initiative"&&Xe(""),E?.type==="workstream"&&ae("")},[E,K,pe,Xe,ae]),or=Q.useCallback(kr=>({flex:`0 0 ${kr}px`,width:`${kr}px`,minWidth:`${kr}px`,maxWidth:`${kr}px`}),[]);Q.useEffect(()=>{a?.(qt)},[qt,a]),Q.useEffect(()=>{Ct&&en.current?.querySelector("[data-planning-pane-heading]")?.focus()},[Ct]),Q.useEffect(()=>{Dt&&bn.current?.querySelector("[data-planning-pane-heading]")?.focus()},[Dt]);const xr=E?.type==="workstream"?E.item:null,hn=xr?Fr(xr):ue,ys=!!(hn||String(xr?.initiativeId||"").trim()),Nn=hn?{title:hn.title,description:xr?`${xr.title} belongs to this initiative.`:"This workstream will belong to the selected initiative.",action:xr?{label:"Open initiative",onClick:()=>Xe(hn.id)}:void 0}:xr&&ys?{title:"Initiative unavailable",description:`${xr.title} is assigned to an initiative that is not available in the current planning data.`}:xr?{title:"Not linked to an initiative"}:{title:"No initiative selected"},Sn={title:"No workstream selected"};return n.jsx("aside",{className:ze.drawer,"aria-label":"Planning","aria-hidden":!e,inert:!e,"data-layout":Tr,style:{position:"absolute",top:0,left:e?`${t}px`:`${t-qt-24}px`,bottom:0,width:`${qt}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:n.jsxs("div",{className:ze.drawerBody,children:[u&&(ur?n.jsx(ef,{label:"Planning",onExpand:Y}):n.jsxs("div",{ref:Vt,"data-planning-pane":"tree",className:`${ze.paneShell} ${x.appScrollbar} tf-scrollbar ${ze.treePane} ${Ee&&!He?ze.treePaneSplit:""}`.trim(),style:or(Tr==="narrow"?qt:vf),children:[n.jsxs("div",{className:ze.paneHeader,children:[n.jsx("h2",{className:ze.paneHeaderLabel,tabIndex:-1,"data-planning-pane-heading":!0,children:"Planning"}),n.jsxs("div",{className:ze.headerActionGroup,children:[n.jsx(ik,{visible:Qt,disabled:d==="deleted"||pr===0,disabledLabel:d==="deleted"?"Archive visibility unavailable in Trash":void 0,itemLabel:"planning items",onToggle:()=>ir(kr=>!kr)}),br?n.jsx("button",{type:"button",className:"tf-control-icon",onClick:ke,"aria-label":"Collapse Planning pane",title:"Collapse Planning pane",children:n.jsx(lo,{size:16,"aria-hidden":"true"})}):null]})]}),n.jsx("div",{className:ze.paneContent,"aria-busy":l.status==="loading"||l.isRefreshing,children:n.jsx(mQ,{initiatives:s,standaloneWorkstreams:i,planningLoadState:l,taskScope:d,showArchivedPlanning:Qt,currentOwnerId:me,assigneeOptions:Re,showTaskCardStatusLabel:ye,taskArrangeMode:k,activeInitiativeId:f,activeWorkstreamId:p,navigatorSort:g,navigatorSortReady:h,onNavigatorSortChange:y,planningFavorites:S,onTogglePlanningFavorite:w,favoritesSectionCollapsed:_,initiativesSectionCollapsed:M,workstreamsSectionCollapsed:R,onToggleFavoritesSection:P,onToggleInitiativesSection:b,onToggleWorkstreamsSection:$,expandedInitiativeIds:I,detail:E,secondaryPane:L,onCreateInitiative:Ae,onCreateWorkstream:Te,onToggleInitiative:he,onSelectInitiative:ot,onSelectWorkstream:We,onOpenInitiativeDetails:Xe,onOpenWorkstreamDetails:ae,onOpenNestedWorkstreamDetails:G,onOpenTaskById:Ue,onSetTaskStatus:wt,onChangePlanningOwner:it,onChangeTaskAssignee:Me,onArchivePlanningTask:Ge,onArchiveResolvedWorkstream:F,onArchiveResolvedInitiative:Ne,linkOptions:je,onAssignInitiativeToWorkstream:mt,onRetryPlanning:c})})]})),br&&!Je&&(Ct?n.jsx(RS,{label:"Initiative",title:Nn.title,description:Nn.description,action:Nn.action,onCollapse:()=>Rt(!1),paneRef:en}):n.jsx(ef,{label:"Initiative",muted:!ys,onExpand:()=>Rt(!0)})),ht&&(Qr?n.jsx(ef,{label:lt==="initiative"?"Initiative":"Workstream",onExpand:q}):n.jsxs("div",{ref:Dr,"data-planning-pane":"primary",className:`${ze.paneShell} ${x.appScrollbar} tf-scrollbar ${ze.detailPane}`.trim(),style:or(br?zi:Vr),children:[n.jsxs("div",{className:ze.paneHeader,children:[Tr==="narrow"?n.jsx("button",{type:"button",className:"tf-control-icon",onClick:Nt,"aria-label":"Back to Planning",title:"Back to Planning",children:n.jsx(lo,{size:16,"aria-hidden":"true"})}):null,n.jsx("h2",{className:ze.paneHeaderLabel,tabIndex:-1,"data-planning-pane-heading":!0,children:Tt}),n.jsxs("div",{className:ze.headerActionGroup,children:[fr?n.jsx(ik,{visible:dr[fr.type],disabled:xS(fr)===0,itemLabel:fr.type==="initiative"?"workstreams":"tasks",onToggle:()=>Mr(fr.type)}):null,br?n.jsx("button",{type:"button",className:"tf-control-icon",onClick:we,"aria-label":`Collapse ${Tt} pane`,title:`Collapse ${Tt} pane`,children:n.jsx(lo,{size:16,"aria-hidden":"true"})}):null]})]}),n.jsx("div",{className:ze.paneContent,"aria-busy":D?.status==="loading",children:Mt?n.jsx(Zk,{editor:Mt,draftTitle:ve,draftDescription:Pe,draftOwner:Le,draftInitiativeId:se,assigneeOptions:Re,initiativeLinkOptions:je.initiatives,draftInitiativeSummary:ue,onChangeDraftTitle:V,onChangeDraftDescription:W,onChangeDraftOwner:z,onChangeDraftInitiativeId:fe,onCancel:pe,onSubmit:N,isSubmitting:X}):E?n.jsx(PS,{detail:E,showArchivedChildren:dr[E.type],inlineEditor:zt?{editor:zt,draftTitle:ve,draftDescription:Pe,draftOwner:Le,draftInitiativeId:se,draftInitiativeSummary:ue,onChangeDraftTitle:V,onChangeDraftDescription:W,onChangeDraftOwner:z,onChangeDraftInitiativeId:fe,onCancel:pe,onSubmit:N,isSubmitting:X}:null,selectedChildWorkstreamId:L?.kind==="detail"?L.detail.item.id:null,currentWorkspaceId:Z,currentActorId:me,theme:Ve,assigneeOptions:Re,linkOptions:je,showTaskCardStatusLabel:ye,taskArrangeMode:k,onTaskArrangeModeChange:v,onReorderWorkstreamTasks:C,hydrationState:D,onRetryHydration:H,onSetTaskStatus:E.type==="workstream"?wt:void 0,onArchivePlanningTask:E.type==="workstream"?Ge:void 0,onArchiveResolvedWorkstream:E.type==="initiative"?F:void 0,onArchiveResolvedEntity:E.type==="initiative"?Ne:F,onOpenNestedWorkstreamDetails:E.type==="initiative"?G:void 0,onCreateTaskInWorkstream:E.type==="workstream"?Ce:void 0,onCreateWorkstreamInInitiative:E.type==="initiative"?ut:void 0,onOpenTaskById:E.type==="workstream"?Ue:void 0,onChangeTaskAssignee:E.type==="workstream"?Me:void 0,taskReferences:kt,onAssignTaskToWorkstream:E.type==="workstream"?rt:void 0,onAssignInitiativeToWorkstream:mt,onAttachTaskToWorkstreamByReference:E.type==="workstream"?Ht:void 0,onAttachWorkstreamToInitiativeByReference:E.type==="initiative"?lr:void 0,parentInitiative:E.type==="workstream"?Fr(E.item):null,onEdit:()=>E.type==="initiative"?Ie(E.item.id):Fe(E.item.id),onChangeOwner:kr=>it(E.type,E.item.id,kr),onChangePlanningOwner:it,onArchive:()=>E.type==="initiative"?qe(E.item.id):_e(E.item.id),onUnarchive:()=>E.type==="initiative"?ge(E.item.id):Be(E.item.id),onAddPlanningContextFile:rr,onRemovePlanningContextFile:wr,onUpdatePlanningContextCaption:st}):null})]})),br&&!nt&&!ct&&(Dt?n.jsx(RS,{label:"Workstream",title:Sn.title,description:Sn.description,action:Sn.action,onCollapse:()=>It(!1),paneRef:bn}):n.jsx(ef,{label:"Workstream",muted:!0,onExpand:()=>It(!0)})),yr&&(Hr?n.jsx(ef,{label:"Workstream",onExpand:$e}):n.jsxs("div",{ref:Ye,"data-planning-pane":"secondary",className:`${ze.paneShell} ${x.appScrollbar} tf-scrollbar ${ze.detailPane}`.trim(),style:or(br?zi:Vr),children:[n.jsxs("div",{className:ze.paneHeader,children:[br?null:n.jsx("button",{type:"button",className:"tf-control-icon",onClick:Lt&&xe||re,"aria-label":Lt?"Cancel workstream editing":`Back to ${Tt}`,title:Lt?"Cancel workstream editing":`Back to ${Tt}`,children:n.jsx(lo,{size:16,"aria-hidden":"true"})}),n.jsx("h2",{className:ze.paneHeaderLabel,tabIndex:-1,"data-planning-pane-heading":!0,children:Ut}),n.jsxs("div",{className:ze.headerActionGroup,children:[$t?n.jsx(ik,{visible:dr.workstream,disabled:xS($t)===0,itemLabel:"tasks",onToggle:()=>Mr("workstream")}):null,br?n.jsx("button",{type:"button",className:"tf-control-icon",onClick:le,"aria-label":`Collapse ${Ut} pane`,title:`Collapse ${Ut} pane`,children:n.jsx(lo,{size:16,"aria-hidden":"true"})}):null]})]}),n.jsx("div",{className:ze.paneContent,"aria-busy":ie?.status==="loading",children:L?.kind==="editor"?n.jsx(Zk,{editor:L.editor,draftTitle:ve,draftDescription:Pe,draftOwner:Le,draftInitiativeId:se,assigneeOptions:Re,initiativeLinkOptions:je.initiatives,draftInitiativeSummary:ue,onChangeDraftTitle:V,onChangeDraftDescription:W,onChangeDraftOwner:z,onChangeDraftInitiativeId:fe,onCancel:re,onSubmit:N,isSubmitting:X}):L?n.jsx(PS,{detail:L.detail,showArchivedChildren:dr.workstream,inlineEditor:Lt?{editor:Lt,draftTitle:ve,draftDescription:Pe,draftOwner:Le,draftInitiativeId:se,draftInitiativeSummary:ue,onChangeDraftTitle:V,onChangeDraftDescription:W,onChangeDraftOwner:z,onChangeDraftInitiativeId:fe,onCancel:xe||re,onSubmit:N,isSubmitting:X}:null,currentWorkspaceId:Z,currentActorId:me,theme:Ve,assigneeOptions:Re,linkOptions:je,showTaskCardStatusLabel:ye,taskArrangeMode:k,onTaskArrangeModeChange:v,onReorderWorkstreamTasks:C,hydrationState:ie,onRetryHydration:be,onSetTaskStatus:wt,onArchivePlanningTask:Ge,onArchiveResolvedEntity:F,onCreateTaskInWorkstream:Ce,onOpenTaskById:Ue,onChangeTaskAssignee:Me,taskReferences:kt,onAssignTaskToWorkstream:rt,onAssignInitiativeToWorkstream:mt,onAttachTaskToWorkstreamByReference:Ht,parentInitiative:Fr(L.detail.item),onEdit:()=>Fe(L.detail.item.id),onChangeOwner:kr=>it("workstream",L.detail.item.id,kr),onChangePlanningOwner:it,onArchive:()=>_e(L.detail.item.id),onUnarchive:()=>Be(L.detail.item.id),onAddPlanningContextFile:rr,onRemovePlanningContextFile:wr,onUpdatePlanningContextCaption:st}):null})]}))]})})}function yQ(e,t,r){const a=String(t||"").trim();if(a)return e.some(l=>l.id===a)?{initiativeId:a,invalid:!1}:{initiativeId:null,invalid:!0};const s=r.trim();if(!s)return{initiativeId:null,invalid:!1};const i=Mk(e,s);return i?{initiativeId:i.id,invalid:!1}:{initiativeId:null,invalid:!0}}function kQ(e){return e.taskScope==="open"&&e.summaryCount>0&&(e.loadingTasks||e.activeTaskCount===0||!e.archiveHydrated)}const vQ={"annotated_attachments.workspace_access":{enabled:!0,description:"Annotated Attachment workspace readiness gate.",owner:"taskforce",removalMilestone:"Annotated Attachment GA"},"documents.workspace_access":{enabled:!0,description:"Document Manager/editor workspace readiness gate.",owner:"taskforce",removalMilestone:"Document Manager GA"},"workflow_manager.workspace_access":{enabled:!0,description:"Workflow Manager workspace readiness gate.",owner:"taskforce",removalMilestone:"Workflow Manager GA"},"taskforce_agents.workspace_access":{enabled:!0,description:"Taskforce Agents workspace readiness gate.",owner:"taskforce",removalMilestone:"Taskforce Agents workspace GA"},"ai_profiles.workspace_access":{enabled:!0,description:"AI Profiles workspace readiness gate.",owner:"taskforce",removalMilestone:"AI Profiles workspace GA"},"planning.workspace_access":{enabled:!1,description:"Planning workspace readiness gate.",owner:"taskforce",removalMilestone:"Planning workspace GA"}},wf="annotated_attachments.workspace_access",bf="documents.workspace_access",og="workflow_manager.workspace_access",ql="taskforce_agents.workspace_access",ig="ai_profiles.workspace_access",cg="planning.workspace_access",wQ=Object.entries(vQ).reduce((e,[t,r])=>(e[t]={key:t,enabled:!!r.enabled,description:String(r.description||""),owner:String(r.owner||""),removalMilestone:String(r.removalMilestone||"")},e),{});function bQ(e){const t=String(e||"").trim();return t&&wQ[t]||null}function SQ(e){const t=bQ(e);return t?t.enabled?{featureKey:e,allowed:!0,source:"app_gate",code:"OK"}:{featureKey:e,allowed:!1,source:"app_gate",code:"APP_GATE_DISABLED"}:{featureKey:e,allowed:!0,source:"none",code:"OK"}}function du(e){return SQ(e.featureKey)}const Hl={tasks:"Tasks",planning:"Planning",docs:"Documents",annotate:"Image Notes",workflowManager:"Workflow Manager",taskforceAgents:"Taskforce Agents",aiProfiles:"AI Profiles"},AQ=["tasks","planning","docs","annotate","workflowManager","taskforceAgents","aiProfiles"];function CQ(e){const t=e?.featureAccess||{},r={tasks:{id:"tasks",label:Hl.tasks,featureKey:null,enabled:!0,fallbackModuleId:"tasks"},planning:{id:"planning",label:Hl.planning,featureKey:cg,enabled:t[cg]?.allowed??!1,fallbackModuleId:"tasks"},docs:{id:"docs",label:Hl.docs,featureKey:bf,enabled:t[bf]?.allowed??!0,fallbackModuleId:"tasks"},annotate:{id:"annotate",label:Hl.annotate,featureKey:wf,enabled:t[wf]?.allowed??!1,fallbackModuleId:"tasks"},workflowManager:{id:"workflowManager",label:Hl.workflowManager,featureKey:og,enabled:t[og]?.allowed??!1,fallbackModuleId:"tasks"},taskforceAgents:{id:"taskforceAgents",label:Hl.taskforceAgents,featureKey:ql,enabled:t[ql]?.allowed??!1,fallbackModuleId:"tasks"},aiProfiles:{id:"aiProfiles",label:Hl.aiProfiles,featureKey:ig,enabled:t[ig]?.allowed??!1,fallbackModuleId:"tasks"}};return AQ.map(a=>r[a])}function _Q(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 ES(e,t){const r=e==="agents"?"aiProfiles":e,a=t.find(s=>s.id===r);return a?a.enabled?a.id:a.fallbackModuleId:"tasks"}const IQ="_weekLabel_vet2o_1",TQ="_sectionTitle_vet2o_6",xQ="_calendarHeader_vet2o_11",RQ="_monthLabel_vet2o_18",PQ="_weekdayGrid_vet2o_23",EQ="_weekdayLabel_vet2o_30",NQ="_calendarGrid_vet2o_36",jQ="_calendarDay_vet2o_42",MQ="_calendarDayDot_vet2o_55",DQ="_jumpRow_vet2o_67",LQ="_displaySection_vet2o_73",OQ="_toggleLabel_vet2o_79",BQ="_expiredSummary_vet2o_87",WQ="_actionButton_vet2o_95",Ka={weekLabel:IQ,sectionTitle:TQ,calendarHeader:xQ,monthLabel:RQ,weekdayGrid:PQ,weekdayLabel:EQ,calendarGrid:NQ,calendarDay:jQ,calendarDayDot:MQ,jumpRow:DQ,displaySection:LQ,toggleLabel:OQ,expiredSummary:BQ,actionButton:WQ},NS=["mon","tue","wed","thu","fri","sat","sun"],$Q={mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat",sun:"Sun"};function Xl(e){const t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return`${t}-${r}-${a}`}function uf(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 Jk(e,t){const r=e.getDay(),a=t==="sunday"?-r:r===0?-6:1-r,s=new Date(e);return s.setHours(0,0,0,0),s.setDate(s.getDate()+a),s}function FQ(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 oI(e,t){const r=new Date(e);return r.setDate(e.getDate()+t),r}function UQ(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]))),a=r.getUTCDay()||7;r.setUTCDate(r.getUTCDate()+4-a);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 Qk=320;function zQ({open:e,onClose:t,scheduleSelectedDate:r,setScheduleSelectedDate:a,scheduleCalendarMonth:s,setScheduleCalendarMonth:i,scheduleShowWeekends:l,setScheduleShowWeekends:c,scheduleShowBacklog:d,setScheduleShowBacklog:f,scheduleOnlyExpired:p,setScheduleOnlyExpired:g,expiredScheduledCount:h,overdueDueCount:y,expiredLeafCandidates:k,expiredRecoveryCandidates:v,onMoveExpiredToSelectedWeek:C,onMoveExpiredToBacklog:S,scheduleBulkBusy:w,globalWeekStartsOn:_,resolvedLocale:M,todayDateOnly:R,scheduleBaseTasks:P,scheduleWeekStart:b,scheduleWeekLabel:$}){const I=Q.useMemo(()=>{const[D,ie]=s.split("-"),H=Number(D),be=Number(ie);if(!Number.isInteger(H)||!Number.isInteger(be)||be<1||be>12){const Z=uf(r)||new Date;return new Date(Z.getFullYear(),Z.getMonth(),1)}return new Date(H,be-1,1)},[s,r]),E=Q.useMemo(()=>Xh(I,{month:"long",year:"numeric"},M),[I,M]),K=Q.useMemo(()=>{const D=Jk(I,_);return Array.from({length:42},(ie,H)=>oI(D,H))},[I,_]),U=Q.useMemo(()=>{const D=new Map;for(const ie of P){const H=ie.scheduledDate||"";if(!H)continue;const Z=!(ie.status==="done"||ie.status==="cancelled")&&H<R,me=D.get(H);me?(me.count+=1,Z&&(me.hasExpired=!0)):D.set(H,{count:1,hasExpired:Z})}return D},[P,R]),L=Q.useMemo(()=>_==="sunday"?["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]:["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],[_]);return n.jsxs("aside",{className:`${x.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:`${Qk}px`,minWidth:`${Qk}px`},children:[n.jsxs("div",{className:"tf-sidebar-header",children:[n.jsxs("div",{className:"tf-sidebar-title",children:[n.jsx(NT,{size:16}),n.jsx("span",{children:"Schedule Controls"})]}),n.jsx("button",{type:"button",className:"tf-control-icon",onClick:t,title:"Hide Schedule Sidebar",children:n.jsx(sd,{size:16})})]}),n.jsxs("div",{className:Ka.weekLabel,children:["Week of ",$]}),n.jsxs("div",{className:"tf-sidebar-section tf-surface-panel",children:[n.jsxs("div",{className:Ka.calendarHeader,children:[n.jsx("button",{className:"tf-control-icon",onClick:()=>{const D=new Date(I);D.setMonth(I.getMonth()-1),i(`${D.getFullYear()}-${String(D.getMonth()+1).padStart(2,"0")}`)},title:"Previous month",children:n.jsx(lo,{size:14})}),n.jsx("div",{className:Ka.monthLabel,children:E}),n.jsx("button",{className:"tf-control-icon",onClick:()=>{const D=new Date(I);D.setMonth(I.getMonth()+1),i(`${D.getFullYear()}-${String(D.getMonth()+1).padStart(2,"0")}`)},title:"Next month",children:n.jsx(sd,{size:14})})]}),n.jsx("div",{className:Ka.weekdayGrid,children:L.map(D=>n.jsx("div",{className:Ka.weekdayLabel,children:D},D))}),n.jsx("div",{className:Ka.calendarGrid,children:K.map(D=>{const ie=Xl(D),H=D.getMonth()!==I.getMonth(),be=Jk(D,_),Z=Xl(be)===Xl(b),me=ie===r,Ve=ie===R,Re=ie<R,je=U.get(ie),ye=!!je,ue=!!je?.hasExpired;return n.jsxs("button",{onClick:()=>{a(ie),i(`${D.getFullYear()}-${String(D.getMonth()+1).padStart(2,"0")}`)},className:Ka.calendarDay,style:{"--calendar-day-border":me?"1px solid #2563eb":Ve?"1px solid rgba(245, 158, 11, 0.95)":"1px solid transparent","--calendar-day-background":me?"rgba(59,130,246,0.22)":Ve?"rgba(245,158,11,0.16)":Z?"rgba(59,130,246,0.18)":"transparent","--calendar-day-color":H?"var(--text-helper)":"var(--text-primary)","--calendar-day-font-weight":me||Ve?700:500,"--calendar-day-opacity":Re?.42:1},title:`${Ve?`${ie} (Today)`:ie}`+(ye?` • ${je?.count} scheduled`:"")+(ue?" • includes expired":""),children:[D.getDate(),ye&&n.jsx("span",{className:Ka.calendarDayDot,style:{"--calendar-dot-background":ue?"#ef4444":"#3b82f6","--calendar-dot-opacity":H?.6:.95}})]},ie)})}),n.jsx("div",{className:Ka.jumpRow,children:n.jsx("button",{className:"tf-control-icon",onClick:()=>{const D=new Date;a(Xl(D)),i(`${D.getFullYear()}-${String(D.getMonth()+1).padStart(2,"0")}`)},title:"Jump to current week",children:"Today"})})]}),n.jsxs("div",{className:`tf-sidebar-section tf-surface-panel ${Ka.displaySection}`,children:[n.jsx("div",{className:Ka.sectionTitle,children:"Display"}),n.jsxs("label",{className:Ka.toggleLabel,children:[n.jsx("input",{type:"checkbox",checked:l,onChange:D=>c(D.target.checked)}),"Show weekends"]}),n.jsxs("label",{className:Ka.toggleLabel,children:[n.jsx("input",{type:"checkbox",checked:d,onChange:D=>f(D.target.checked)}),"Show backlog"]}),n.jsxs("label",{className:Ka.toggleLabel,children:[n.jsx("input",{type:"checkbox",checked:p,onChange:D=>g(D.target.checked)}),"Only expired/overdue"]})]}),h>0&&n.jsxs("div",{className:"tf-sidebar-section tf-surface-panel",children:[n.jsx("div",{className:Ka.sectionTitle,children:"Expired Tasks"}),n.jsxs("div",{className:Ka.expiredSummary,children:[n.jsxs("span",{children:[h," expired"]}),n.jsxs("span",{children:[y," overdue"]})]}),n.jsx("button",{className:`tf-control-icon ${Ka.actionButton}`,onClick:C,disabled:w||k.length===0,title:"Move expired leaf tasks to the selected week while keeping weekday alignment",children:w?"Working...":"Schedule to selected week"}),n.jsx("button",{className:`tf-control-icon ${Ka.actionButton}`,onClick:S,disabled:w||v.length===0,title:"Unschedule expired/overdue tasks back to backlog",children:w?"Working...":"Unschedule to backlog"})]})]})}const HQ=[{value:"implementation-plan",label:"Plans"},{value:"review",label:"Reviews"},{value:"walkthrough",label:"Walkthroughs"},{value:"planning",label:"Planning"},{value:"other",label:"Other"}],VQ=[{value:"attached",label:"Attached"},{value:"unattached",label:"Unattached"}];function iI(e,t){return e&&(t==="owner"||t==="admin")}function GQ(e,t,r){return iI(e,t)&&r==="team"}function KQ({isOpen:e,workspaceId:t,refreshKeys:r}){const[a,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=YQ(f.current,p.current)},[a]);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=a.length===0;return y&&l(!0),g().then(k=>{h||(p.current=qQ(f.current),s(v=>{const C=v.length===0?k:cq(v,k,15);return lq(v,C)?v:C}),d(null))}).catch(k=>{if(h)return;const v=k instanceof Error&&k.message.trim().length>0?k.message.trim():"Unable to load recent sync events.";d(v),y&&s([])}).finally(()=>{h||y&&l(!1)}),()=>{h=!0}},[e,g,...r]),{syncRecentEvents:a,syncRecentEventsLoading:i,syncRecentEventsError:c,syncEventsListRef:f,loadRecentSyncEvents:g}}function qQ(e){return e&&e.scrollTop>8?{scrollTop:e.scrollTop,scrollHeight:e.scrollHeight}:null}function YQ(e,t){if(!t||!e)return null;const r=e.scrollHeight-t.scrollHeight;return e.scrollTop=t.scrollTop+Math.max(0,r),null}function ZQ({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:r,workspaceSyncRecommendedAction:a,formattedLastSyncTime:s,formattedLastPullTime:i,formattedLastPushTime:l,workspaceSyncDiagnostics:c,workspaceSyncPendingChanges:d,syncLastError:f,workspaceSyncPhase:p,referenceMismatchCount:g,syncRecentEvents:h,loadRecentSyncEvents:y,pushNotice:k,resetWorkspaceSyncCursorAndPull:v,workspaceSyncBusy:C,durableRepairQueueAvailable:S=!1}){const[w,_]=o.useState(!1),[M,R]=o.useState(!1),[P,b]=o.useState(!1),$=o.useCallback(async()=>{try{const K=h.length>0?h:await y(),U=yq({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:r,workspaceSyncRecommendedAction:a,formattedLastSyncTime:s,formattedLastPullTime:i,formattedLastPushTime:l,workspaceSyncDiagnostics:c,workspaceSyncPendingChanges:d,syncLastError:f,syncStageLabel:O_(p,w,C),referenceMismatchCount:g,syncRecentEvents:K});await navigator.clipboard.writeText(U),b(!0),window.setTimeout(()=>{b(!1)},1800),k("Sync details copied to clipboard.","success")}catch{b(!1),k("Failed to copy sync details.","error")}},[e,i,l,s,y,k,g,f,h,t,c,p,d,a,r,C,w]),I=o.useCallback(async()=>{R(!1),_(!0);try{await v()}finally{_(!1)}},[v]),E=o.useCallback(()=>{if(!w){if(C&&!S){R(!0);return}I()}},[S,I,C,w]);return o.useEffect(()=>{M&&(C||w||I())},[I,C,w,M]),{workspaceSyncRepairBusy:w,workspaceSyncRepairQueued:M,workspaceSyncCopied:P,handleCopySyncDetails:$,handleQueueOrRunRepairSync:E}}function JQ({canManageWorkspaceSync:e,workspaceCloudSyncEnabled:t,saveWorkspaceCloudSyncSettings:r}){const[a,s]=o.useState(!1),[i,l]=o.useState(!1),[c,d]=o.useState(!1),[f,p]=o.useState(null),g=o.useCallback(async S=>{if(e){p(null),d(!0);try{const w=await r({enabled:S});w.success||p(w.error||(S?"Failed to enable sync.":"Failed to disable sync."))}finally{d(!1)}}},[e,r]),h=o.useCallback(async S=>{if(S&&!t){l(!0);return}await g(S)},[g,t]),y=o.useCallback(()=>{l(!1)},[]),k=o.useCallback(()=>{l(!1),g(!0)},[g]),v=o.useCallback(()=>{s(!0)},[]),C=o.useCallback(()=>{s(!1)},[]);return{showSyncStatusModal:a,showSyncEnableWarning:i,workspaceSyncToggleBusy:c,workspaceSyncError:f,syncControlBusy:c,openSyncStatusModal:v,closeSyncStatusModal:C,handleWorkspaceSyncToggle:h,cancelSyncEnableWarning:y,confirmSyncEnableWarning:k}}const jS=Q.lazy(()=>Po(()=>import("./TaskSettings-xVsxSa0g.js"),__vite__mapDeps([10,1,2,3,4,5,11])).then(e=>({default:e.TaskSettings}))),QQ=Q.lazy(()=>Po(()=>import("./AnnotatedAttachmentWorkspace-DHNYaNg6.js"),__vite__mapDeps([12,1,4,13,2,14,3,5,15])).then(e=>({default:e.AnnotatedAttachmentWorkspaceShell}))),XQ=Q.lazy(()=>Po(()=>import("./DocumentWorkspace-BC7sy5TG.js"),__vite__mapDeps([16,1,13,2,14,3,4,5,17])).then(e=>({default:e.DocumentWorkspaceShell}))),MS=Q.lazy(()=>Po(()=>import("./TaskforceAgentsModule-CkAxW19K.js"),__vite__mapDeps([18,1,19,2,3,4,5,20])).then(e=>({default:e.TaskforceAgentsModule}))),eX=Q.lazy(()=>Po(()=>import("./WorkflowManagerModule-BKqIGVnF.js"),__vite__mapDeps([21,1,2,3,4,5,22])).then(e=>({default:e.WorkflowManagerModule}))),tX=Q.lazy(()=>Po(()=>import("./AiProfilesModule-DPxQeF9N.js"),__vite__mapDeps([23,1,19,2,3,4,5])).then(e=>({default:e.AiProfilesModule}))),rX=Q.lazy(()=>Po(()=>import("./PlanningModule-t5GbvVR9.js"),__vite__mapDeps([24,1,2,3,4,5,25])).then(e=>({default:e.PlanningModule}))),nX=Q.lazy(()=>Po(()=>import("./PlansPage-BVH_NfgT.js"),__vite__mapDeps([26,1,2,5,3,4,27])).then(e=>({default:e.PlansPage})));function DS(e,t,r){const a=t.trim();if(!a)return e;const s={...e};return delete s[a],s[a]=r,Object.fromEntries(Object.entries(s).slice(-50))}const aX="image/png,image/jpeg,image/webp,image/gif",sX=5*1024*1024,ck=56,oX=e=>e;function iX(e,t){const r=hg(e);if(r)return Gw(r).label.toUpperCase();for(const a of t){const s=String(a||"").trim();if(!s)continue;const i=mv(s);if(i)return Gw(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 tf(){return typeof performance<"u"?performance.now():Date.now()}function cX(e){const a=tA(),s=rA(),i=o.useMemo(()=>new URLSearchParams(s.search),[s.search]),l=String(i.get("screen")||"").trim().toLowerCase()==="plans",c=o.useCallback(m=>{const A=new URLSearchParams(s.search);A.set("screen","plans");for(const[B,Se]of Object.entries(m||{}))Se==null||String(Se).trim()===""?A.delete(B):A.set(B,String(Se));a(`/?${A.toString()}${s.hash||""}`)},[s.hash,s.search,a]),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 A=m.toString();a(`${s.pathname==="/"?"/":s.pathname}${A?`?${A}`:""}${s.hash||""}`)},[s.hash,s.pathname,s.search,a]),{activeTab:f,setActiveTab:p,activeCategories:g,groupBy:h,setGroupBy:y,activeWorkspaceModule:k,setActiveWorkspaceModule:v,emptyColumnMode:C,setEmptyColumnMode:S,zenMode:w,setZenMode:_,filterStatus:M,setFilterStatus:R,tasks:P,handleEdit:b,handleSubmit:$,resetForm:I,handleUpdateTask:E,handleSetStatus:K,editingTaskId:U,loading:L,error:D,title:ie,setTitle:H,setTitleDraft:be,description:Z,setDescription:me,setDescriptionDraft:Ve,checklistItems:Re,setChecklistItems:je,category:ye,setCategory:ue,type:ve,setType:Pe,priority:Le,setPriority:se,complexity:V,setComplexity:W,status:z,setStatus:fe,assignee:ke,setAssignee:Y,scheduledDate:we,setScheduledDate:q,dueDate:le,setDueDate:$e,workstreamInput:re,setWorkstreamInput:de,manualComplexityEnabled:He,checklistDropdownEnabled:ce,showTaskCardStatusLabel:pe,formTaxonomies:xe,setFormTaxonomies:N,comments:X,newCommentText:Ae,setNewCommentText:Te,attachments:he,setAttachments:ot,setAttachmentsDirty:We,descriptionFocused:Xe,setDescriptionFocused:ae,showMarkdownHelp:G,setShowMarkdownHelp:Ie,handleAddComment:Fe,handleSetWorkstreamForCurrentTask:it,handleOpenTaskById:Me,taxonomies:qe,activeTypes:ge,priorities:_e,taxonomyDisplayLabels:Be,copiedId:Ge,handleCopyId:F,handleToggleInProgress:Ne,handleToggleComplete:Ce,handleToggleReview:ut,handleToggleCancel:mt,handleArchiveTask:Ue,handleDelete:wt,handleUnarchive:kt,handleRestoreDeletedTask:rt,handleRestoreSelectedDeletedTasks:Ht,handlePermanentlyDeleteDeletedTask:lr,handleEmptyDeletedTasks:rr,fetchTasks:wr,searchQuery:st,setSearchQuery:zt,filterCategories:Lt,setFilterCategories:Mt,filterTypes:Ee,setFilterTypes:ct,filterPriorities:lt,setFilterPriorities:Je,filterAssignees:nt,setFilterAssignees:Ct,hasInitedFilters:Rt,assigneeOptions:Dt,taskScope:It,setTaskScope:Qt,compressedCards:ir,setCompressedCards:dr,sortBy:sr,setSortBy:pr,clearFilters:Jr,settingsModel:Tr,configLoaded:br,currentTheme:ur,setCurrentTheme:Qr,pathSaved:Hr,saveSettings:Gt,keyShortcut:bt,setKeyShortcut:gr,globalWeekStartsOn:u,locale:ht,jsonBackupEnabled:yr,setJsonBackupEnabled:Er,mcpHostRoot:mn,setMcpHostRoot:qt,settingsSection:Vr,setSettingsSection:Tt,runtimeMode:Ut,workspaceSwitchingEnabled:fr,cloudAuthConfigured:$t,authRequiredForApi:Mr,authBlocked:Fr,isAuthenticated:Vt,authUserId:Dr,authWorkspaceId:Ye,authUserEmail:en,authUserDisplayName:bn,authUserAvatarUrl:tn,authSessionResolved:ft,realtimeSyncEnabled:rn,realtimeSyncFlagSource:Nt,workspaceCloudSyncEnabled:or,workspaceSyncPhase:xr,workspaceSyncStatus:hn,workspaceSyncSummary:ys,workspaceSyncRecommendedAction:Nn,workspaceSyncBusy:Sn,workspaceSyncPendingChanges:kr,localCoordinatorStatus:cr,transferLocalCoordinatorOwnership:Wr,saveWorkspaceCloudSyncSettings:on,pushNotice:dt,userGlobalSyncStatus:Un,workspaceLastSuccessfulSyncAt:Tn,workspaceLastPullAt:jn,workspaceLastPushAt:an,workspaceLastErrorAt:Ds,userGlobalSyncError:da,workspaceLastErrorMessage:J,retryWorkspaceCloudSync:Qe,resetWorkspaceSyncCursorAndPull:St,getWorkspaceSyncDiagnostics:Xt,currentWorkspaceId:at,currentWorkspaceRole:Ft,availableWorkspaces:Lr,switchWorkspace:Nr,updateCurrentUserProfile:Rr,resolveCloudAuthUrl:Kt=oX,logout:Bn,fetchLoginMethods:Xn,unlinkLoginMethod:va,addPasswordToAccount:Cr,changePassword:cn,beginOAuthLogin:kn,beginOAuthLink:zn,availableAuthProviders:ea,projectRoot:La,projectName:mr,mcpScriptPath:Zo,serverHostRoot:Za,showFolderBrowser:ks,setShowFolderBrowser:Eo,folders:xa,files:Ja,currentBrowsePath:Ra,fetchFolders:vs,browserTarget:Qa,setBrowserTarget:ws,handleSelectPath:ln,handleAddPath:Oa,handleRemovePath:yn,handleUpdateCategory:Vs,handleRemoveCategory:Mn,handleSaveCategory:Ls,handleUpdateCategoryIcon:vt,handleUpdateCategoryColor:nr,handleSaveType:nn,handleRemoveType:vn,handleUpdateTaxonomies:ta,handleUpdatePriorities:ho,pathValidation:Os,taskforceAgentId:wa,setTaskforceAgentId:Bs,taskforceAgentConversationId:Xa,setTaskforceAgentConversationId:Xr,taskforceAgentConversationByAgentId:Ar,setTaskforceAgentConversationByAgentId:An,uiStateReady:es,initiativeTemplates:Wn,fetchInitiativeTemplates:ra,createInitiativeFromTemplate:ts,uiNotice:rs,clearNotice:na,clearTaskError:aa,taskReturnTrail:un,clearReturnToParentTask:bs,returnToPreviousTask:Ws,tasksScrollRef:go,setTasksScrollPos:pn,commentsEndRef:Hn,autoSaveState:ua,unsavedModalOpen:Pa,setUnsavedModalOpen:Gs,pendingNavigation:Vn,handleNavigation:wn,currentTask:oe,currentTaskWorkstream:yt,currentTaskInitiative:Yt,scheduleWarningPrompt:vr,confirmScheduleWarning:Ur,cancelScheduleWarning:sa}=e,Dn=WC(P,Me),Cn=ht||fA();o.useEffect(()=>{const m=String(mr||"").trim();document.title=m?`Taskforce - ${m}`:"Taskforce"},[mr]);const gi=()=>{Gs(!1),Vn?(f==="add"&&I(),Vn()):(f==="add"&&I(),p("tasks"))},ba=async()=>{await $({preventDefault:()=>{}}),Gs(!1),Vn&&Vn()},[Ba,yo]=o.useState(!1),[Ss,ko]=o.useState(!0),[Bt,Gn]=o.useState(!1),[$n,sn]=o.useState(!0),[Sa,ns]=o.useState(Xl(new Date)),[As,Ks]=o.useState(()=>{const m=new Date;return`${m.getFullYear()}-${String(m.getMonth()+1).padStart(2,"0")}`}),[No,jo]=o.useState(0),[pa,Wa]=o.useState(!1),[Yr,$a]=o.useState(!1),[Kn,Mo]=o.useState(!1),yi=o.useRef(null),[qs,Ys]=o.useState(!0),[Aa,as]=o.useState(!0),[Cs,Do]=o.useState(!0),[Zs,_s]=o.useState(!0),[Js,qn]=o.useState(!0),[Fa,Gr]=o.useState(!1),[rl,oa]=o.useState(null),Fn=o.useRef(!1),vo=o.useRef(null),[nl,ud]=o.useState(ck),[Ea,Sc]=o.useState(!1),[Na,Ca]=o.useState(!1),[ss,os]=o.useState(!1),[Lo,$s]=o.useState(!1),[Ac,Hi]=o.useState(!1),[Cc,_c]=o.useState(!1),[Ic,al]=o.useState("default"),[_a,Zr]=o.useState("execution"),[sl,ja]=o.useState([]),[Kr,Ua]=o.useState(""),[fa,Jo]=o.useState(""),[ol,O]=o.useState(new Set),[j,xt]=o.useState(null),[Et,At]=o.useState(null),[De,Fs]=o.useState({}),[er,Yn]=o.useState(null),[Oo,ma]=o.useState(null),[Is,gn]=o.useState(""),[il,ki]=o.useState(""),[Mu,vi]=o.useState(""),[Qo,Xo]=o.useState(""),[Ig,wi]=o.useState(!1),pd=o.useRef({taskId:null,attachments:[]}),dn=o.useMemo(()=>Xl(new Date),[]),xn=String(Dr||"").trim(),{taskHeaderQuickFilter:is,toggleTaskHeaderQuickFilter:Ff,clearTaskHeaderQuickFilter:Uf}=tq({authUserId:xn,workspaceId:at,taskScope:It}),zf=o.useRef(new Map),fd=o.useRef(new Map),[Du,Hf]=o.useState(()=>HQ.map(m=>m.value)),[Lu,Vf]=o.useState(()=>VQ.map(m=>m.value)),[Ou,Gf]=o.useState("updated"),[Bu,Kf]=o.useState("desc"),[Wu,qf]=o.useState([]),[$u,Fu]=o.useState(""),[Uu,Yf]=o.useState(null),[zu,Zf]=o.useState({}),[cl,md]=o.useState(0),[Hu,Tc]=o.useState(null),[ll,ei]=o.useState(null),[xc,Bo]=o.useState(null),[hd,Vi]=o.useState(null),[gd,Vu]=o.useState({}),[Jf,yd]=o.useState(0),Rc=o.useRef(null),[bi,Qf]=o.useState({}),Wo=o.useRef(!1),$o=o.useRef(null),ti=o.useRef(null),Pc=o.useRef(null),kd=o.useRef(new Set);o.useEffect(()=>{pd.current={taskId:U||null,attachments:he}},[U,he]);const Si=o.useCallback(m=>{const A=U||null,B=pd.current,Se=B.taskId===A?B.attachments:he,Oe=m(Se);pd.current={taskId:A,attachments:Oe},ot(Oe),We(!0),A&&E(A,{attachments:Oe}).then(jt=>{const Ir=pd.current;jt!==!1&&Ir.taskId===A&&Ir.attachments===Oe&&We(!1)}).catch(()=>{})},[he,U,E,ot,We]),Ai=o.useMemo(()=>{const m={},A=String(at||"").trim();return Ut==="cloud"&&A&&A!=="default"&&(m["x-taskforce-workspace-id"]=A),m},[Ut,at]),Ts=o.useMemo(()=>zq({runtimeMode:Ut,workspaceId:at,userId:xn}),[at,xn,Ut]),vd=o.useRef(Ts),dl=vd.current===Ts,xs=dl?xc:null,wd=dl?hd:null,Ci=o.useMemo(()=>`taskforce:task-origin-workspace-module:${Ts}`,[Ts]),Gu=o.useMemo(()=>Ut==="cloud"?ft:br,[ft,br,Ut]),wo=o.useRef(!1),Ku=o.useRef(!1),bd=o.useCallback(m=>{const A=String(m||"").trim();if(!(!A||typeof window>"u")){wo.current=!0;try{window.sessionStorage.setItem(Ci,A)}catch{}}},[Ci]),ri=o.useCallback(()=>{if(wo.current=!1,!(typeof window>"u"))try{window.sessionStorage.removeItem(Ci)}catch{}},[Ci]);o.useEffect(()=>{$o.current=xc},[xc]),o.useEffect(()=>{ti.current=hd},[hd]),o.useEffect(()=>{vd.current!==Ts&&(vd.current=Ts,$o.current=null,ti.current=null,Pc.current=null,Bo(null),Vi(null))},[Ts]);const Fo=o.useMemo(()=>({[bf]:du({featureKey:bf}),[wf]:du({featureKey:wf}),[og]:du({featureKey:og}),[ql]:du({featureKey:ql}),[ig]:du({featureKey:ig}),[cg]:du({featureKey:cg})}),[Ut]),ni=o.useMemo(()=>CQ({featureAccess:Fo}),[Fo]),Sr=o.useMemo(()=>ES(k,ni),[k,ni]),Sd=Kn||Sr==="planning";o.useEffect(()=>{Sd&&e.ensureArchiveHydrated(!0)},[Sd,e.ensureArchiveHydrated,at]);const[Us,Gi]=o.useState(!1),[ai,Ki]=o.useState(!1),[Xf,Ad]=o.useState(null),[Cd,qu]=o.useState(null),em=o.useCallback(m=>{qu(m)},[]),ul=o.useCallback(m=>{const A=String(m.agentId||"").trim(),B=String(m.conversationId||"").trim();Bs(A),Xr(B),A&&An(Se=>{if(B)return Se[A]===B?Se:{...Se,[A]:B};if(!Se[A])return Se;const Oe={...Se};return delete Oe[A],Oe})},[An,Xr,Bs]),_i=Fo[bf]?.allowed??!1,Ec=Fo[wf]?.allowed??!1,pl=Fo[ql]?.allowed??!1,Yu="Documents is not available in this build yet.",Zu="Annotate is not available in this build yet.",bo=o.useCallback(m=>{if(f!=="add"){m();return}wn(()=>{$a(!1),I(),p("tasks"),m()})},[f,wn,I,p]);o.useEffect(()=>{const m=A=>{const B=A,Se=B.detail?.fsPath,Oe=String(B.detail?.assetId||"").trim()||null;if(!(!Se&&!Oe)){if(B.preventDefault(),!_i){dt(Yu,"error");return}bo(()=>{bd(B.detail?.taskId),Tc(Se||null),ei(Oe),v("docs")})}};return window.addEventListener("taskforce:open-markdown-document",m),()=>{window.removeEventListener("taskforce:open-markdown-document",m)}},[_i,Yu,bo,dt,bd,v]),o.useEffect(()=>{Sr!==k&&v(Sr)},[k,Sr,v]),o.useEffect(()=>{Sr==="docs"&&_i||(Tc(null),ei(null))},[_i,Sr]),o.useEffect(()=>{if(!Ku.current&&!(Sr!=="docs"&&Sr!=="annotate")&&(Ku.current=!0,!(wo.current||typeof window>"u")))try{if(!String(window.sessionStorage.getItem(Ci)||"").trim())return;window.sessionStorage.removeItem(Ci),v("tasks")}catch{}},[Sr,v,Ci]),o.useEffect(()=>{Ku.current=!1,wo.current=!1},[Ci]);const Ju=o.useCallback(m=>{typeof m.scheduleShowWeekends=="boolean"&&yo(m.scheduleShowWeekends),typeof m.scheduleShowBacklog=="boolean"&&ko(m.scheduleShowBacklog),typeof m.scheduleOnlyExpired=="boolean"&&Gn(m.scheduleOnlyExpired),typeof m.scheduleSidebarOpen=="boolean"&&sn(m.scheduleSidebarOpen),typeof m.scheduleSelectedDate=="string"&&ns(m.scheduleSelectedDate),typeof m.scheduleCalendarMonth=="string"&&Ks(m.scheduleCalendarMonth),typeof m.scheduleScrollLeft=="number"&&jo(m.scheduleScrollLeft),typeof m.showFilters=="boolean"&&Wa(m.showFilters),Array.isArray(m.documentTypeFilters)&&Hf(m.documentTypeFilters),Array.isArray(m.documentAttachmentFilters)&&Vf(m.documentAttachmentFilters),(m.documentSortField==="updated"||m.documentSortField==="reference"||m.documentSortField==="name"||m.documentSortField==="size"||m.documentSortField==="created")&&Gf(m.documentSortField),(m.documentSortOrder==="asc"||m.documentSortOrder==="desc")&&Kf(m.documentSortOrder),Array.isArray(m.documentPinnedDocIds)&&qf(m.documentPinnedDocIds),typeof m.documentSearchQuery=="string"&&Fu(m.documentSearchQuery),(typeof m.documentSelectedDocId=="string"||m.documentSelectedDocId===null)&&Yf(m.documentSelectedDocId),Zf(m.documentScrollByDocId&&typeof m.documentScrollByDocId=="object"?m.documentScrollByDocId:{}),typeof m.documentListScrollTop=="number"&&md(m.documentListScrollTop),typeof m.planningDrawerOpen=="boolean"&&Mo(m.planningDrawerOpen),typeof m.documentTrayOpen=="boolean"&&Ys(m.documentTrayOpen),typeof m.imageTrayOpen=="boolean"&&as(m.imageTrayOpen),typeof m.agentTrayOpen=="boolean"&&Do(m.agentTrayOpen),typeof m.taskforceAgentRosterTrayOpen=="boolean"&&_s(m.taskforceAgentRosterTrayOpen),typeof m.taskforceAgentDrawerOpen=="boolean"&&Gi(m.taskforceAgentDrawerOpen),typeof m.taskforceAgentPanelCollapsed=="boolean"&&Ki(m.taskforceAgentPanelCollapsed),typeof m.planningTreeCollapsed=="boolean"&&Sc(m.planningTreeCollapsed),typeof m.planningPrimaryCollapsed=="boolean"&&Ca(m.planningPrimaryCollapsed),typeof m.planningSecondaryCollapsed=="boolean"&&os(m.planningSecondaryCollapsed),$s(!!m.planningFavoritesSectionCollapsed),Hi(!!m.planningInitiativesSectionCollapsed),_c(!!m.planningWorkstreamsSectionCollapsed),(m.planningNavigatorSort==="default"||m.planningNavigatorSort==="title"||m.planningNavigatorSort==="owner"||m.planningNavigatorSort==="progress")&&al(m.planningNavigatorSort),Zr(OJ(m.planningTaskArrangeMode)),ja(Array.isArray(m.planningFavorites)?m.planningFavorites:[]),Array.isArray(m.planningExpandedInitiativeIds)&&O(new Set(m.planningExpandedInitiativeIds)),m.planningDrawerDetail!==void 0&&xt(m.planningDrawerDetail),(typeof m.planningNestedWorkstreamDetailId=="string"||m.planningNestedWorkstreamDetailId===null)&&At(m.planningNestedWorkstreamDetailId);const A=m.annotatedTarget&&typeof m.annotatedTarget=="object"?m.annotatedTarget:null,B=A&&typeof m.annotatedSessionId=="string"?m.annotatedSessionId:null;FU({currentTarget:$o.current,currentSessionId:ti.current,lastHydratedIdentity:Pc.current})&&($o.current=A,ti.current=B,Pc.current=KC(A,B),Bo(A),Vi(B)),Vu(m.annotatedViewportByContextKey&&typeof m.annotatedViewportByContextKey=="object"?m.annotatedViewportByContextKey:{})},[]),Qu=o.useMemo(()=>({scheduleShowWeekends:Ba,scheduleShowBacklog:Ss,scheduleOnlyExpired:Bt,scheduleSidebarOpen:$n,scheduleSelectedDate:Sa,scheduleCalendarMonth:As,scheduleScrollLeft:No,showFilters:pa,documentTypeFilters:Du,documentAttachmentFilters:Lu,documentSortField:Ou,documentSortOrder:Bu,documentPinnedDocIds:Wu,documentSearchQuery:$u,documentSelectedDocId:Uu,documentScrollByDocId:zu,documentListScrollTop:cl,documentTrayOpen:qs,imageTrayOpen:Aa,agentTrayOpen:Cs,taskforceAgentRosterTrayOpen:Zs,taskforceAgentDrawerOpen:Us,taskforceAgentPanelCollapsed:ai,planningDrawerOpen:Kn,planningTreeCollapsed:Ea,planningPrimaryCollapsed:Na,planningSecondaryCollapsed:ss,planningFavoritesSectionCollapsed:Lo,planningInitiativesSectionCollapsed:Ac,planningWorkstreamsSectionCollapsed:Cc,planningNavigatorSort:Ic,planningTaskArrangeMode:_a,planningFavorites:sl,planningExpandedInitiativeIds:Array.from(ol),planningDrawerDetail:j,planningNestedWorkstreamDetailId:Et,annotatedTarget:xs,annotatedSessionId:wd,annotatedViewportByContextKey:gd}),[Ba,Ss,Bt,$n,Sa,As,No,pa,Du,Lu,Ou,Bu,Wu,$u,Uu,zu,cl,qs,Aa,Cs,Zs,Us,ai,Kn,Ea,Na,ss,Lo,Ac,Cc,Ic,_a,sl,ol,j,Et,xs,wd,gd]);o.useEffect(()=>{ja([])},[Ts]);const{ready:_d}=Qq({currentWorkspaceId:at,loadKey:Ts,enabled:Ut!=="cloud"||ft,headers:Ai,remotePlanningFavoritesAuthoritative:!!xn&&xn!=="anonymous",useCloudProxy:Ut==="local"&&!!xn&&xn!=="anonymous",snapshot:Qu,onApplyState:Ju});o.useEffect(()=>{h==="schedule"&&sn(!0)},[h]);const{showArchive:qi,setShowArchive:fl,fetchArchive:Tg,filteredArchive:Xu}=e,ml=o.useMemo(()=>Xu.map(m=>({...m,isArchived:!0})),[Xu]),cs=o.useMemo(()=>e.archivedTasks.map(m=>({...m,isArchived:!0})),[e.archivedTasks]),si=o.useMemo(()=>[...e.searchAgnosticTasks,...cs],[cs,e.searchAgnosticTasks]),xg=o.useCallback(m=>{const A=String(m||"").trim();if(!A)return"";const B=si.find(Se=>Se.id===A);return hs(B)||""},[si]),Rg=o.useCallback(m=>{const A=String(m||"").trim();if(!A)return"";const B=String(bi[A]||"").trim();if(B)return B;for(const Se of si)for(const Oe of Se.attachments||[]){if(!Oe||typeof Oe!="object"||String(Oe.assetId||"").trim()!==A)continue;const jt=Nf({referenceNumber:typeof Oe.referenceNumber=="number"?Oe.referenceNumber:null,referenceLabel:String(Oe.referenceLabel||"").trim()||null});if(jt)return jt}return""},[si,bi]);o.useEffect(()=>{const m=A=>{const B=A,Se=Zb(B.detail,si);if(Se){if(B.preventDefault(),!Ec){dt(Zu,"error");return}bo(()=>{$o.current=Se;const Oe=String(Se.sessionId||"").trim()||null;ti.current=Oe,Bo(Se),Vi(Oe),yd(jt=>jt+1),bd(Se.taskId),v("annotate")})}};return window.addEventListener("taskforce:open-annotated-attachment",m),()=>{window.removeEventListener("taskforce:open-annotated-attachment",m)}},[si,Ec,Zu,bo,dt,bd,v]),o.useEffect(()=>{if(!xs)return;const m=Zb(xs,si);m&&(m.taskReferenceLabel===xs.taskReferenceLabel&&m.imageReferenceLabel===xs.imageReferenceLabel||Bo(m))},[si,xs]),o.useEffect(()=>{const m=$o.current,A=String(m?.assetId||"").trim();if(!A)return;const B=String(bi[A]||"").trim();B&&B!==String(m?.imageReferenceLabel||"").trim()&&Bo(Se=>!Se||String(Se.assetId||"").trim()!==A?Se:{...Se,imageReferenceLabel:B})},[bi,xs]),o.useEffect(()=>{if(!Gu)return;const A=String(xs?.assetId||"").trim();if(!A||kd.current.has(A)||String(bi[A]||"").trim())return;let B=!1;kd.current.add(A);const Se=String(at||"default").trim()||"default",Oe=new URLSearchParams({workspaceId:Se});return(async()=>{try{const Ir=await fetch(`/api/taskforce/annotated-attachments/images/${encodeURIComponent(A)}?${Oe.toString()}`,{method:"GET",credentials:"include",headers:Ai});if(!Ir.ok)return;const Or=await Ir.json().catch(()=>({})),Ma=String(Or?.target?.imageReferenceLabel||"").trim();if(!Ma||B)return;Qf(fn=>fn[A]===Ma?fn:{...fn,[A]:Ma})}catch{}finally{kd.current.delete(A)}})(),()=>{B=!0}},[Gu,bi,at,xs,Ai]);const Uo=o.useMemo(()=>e.deletedTasks.map(m=>({...m.taskSnapshot,isDeleted:!0,deletedRecordId:m.id,deletedAt:m.deletedAt,deletedExpiresAt:BC(m.deletedAt)})),[e.deletedTasks]),Ii=o.useMemo(()=>{const m=new Map;return e.deletedTasks.forEach(A=>{m.set(A.taskSnapshot.id,A)}),m},[e.deletedTasks]),Id=o.useMemo(()=>{const m=Uo,A=bg(st),B={categories:g,types:ge,priorities:_e,assigneeOptions:e.assigneeOptions,taxonomies:qe},Se=g.every(fn=>Lt.includes(fn.value)),Oe=ge.every(fn=>Ee.includes(fn.value)),jt=new Set(lt.map(fn=>String(fn))),Ir=_e.every(fn=>jt.has(String(fn.value))),Or=new Set(M.map(fn=>String(fn))),Ma=Ui.every(fn=>Or.has(String(fn.value)));return m.filter(fn=>{const Vc=Vh(fn,A,B),nu=Se||Lt.includes(fn.category),au=Oe||Ee.includes(fn.type||po),Bm=Ir||jt.has(String(fn.priority)),Wm=Ma||Or.has(String(fn.status)),$m=nt.length===0||nt.includes(fn.assignee||"unassigned");return Vc&&nu&&au&&Bm&&Wm&&$m})},[g,ge,Uo,nt,Lt,lt,M,Ee,_e,st]),Td=o.useMemo(()=>[...e.tasks,...cs,...Uo],[cs,Uo,e.tasks]),ep=o.useMemo(()=>{const m=g.filter(B=>!B.disabled).map(B=>({value:B.value,label:B.label})),A=g.filter(B=>B.disabled&&Td.some(Se=>Se.category===B.value)).map(B=>({value:B.value,label:`${B.label} (Legacy)`}));return[...m,...A]},[g,Td]),tp=o.useMemo(()=>{const m=ge.filter(B=>B.status!=="retired").map(B=>({value:B.value,label:B.label})),A=ge.filter(B=>B.status==="retired"&&Td.some(Se=>(Se.type||po)===B.value)).map(B=>({value:B.value,label:`${B.label} (Retired)`}));return[...m,...A]},[ge,Td]),rp=o.useCallback(m=>is?m.filter(A=>rq(A,is,xn,dn)):m,[xn,is,dn]),Yi=o.useMemo(()=>rp(e.filteredTasks),[rp,e.filteredTasks]),Nc=o.useMemo(()=>It==="archived"?ml:It==="deleted"?Id:qi?[...Yi,...ml]:Yi,[ml,Id,Yi,qi,It]),xd=o.useMemo(()=>It==="open"?is?Yi:e.tasks.filter(m=>!m.isArchived):Nc,[Nc,e.tasks,Yi,is,It]),np=o.useMemo(()=>new Set(Nc.map(m=>m.id)),[Nc]),ap=o.useMemo(()=>It==="archived"?cs:It==="deleted"?Uo:qi?[...e.tasks,...cs]:e.tasks,[cs,Uo,e.tasks,qi,It]),Zi=o.useMemo(()=>{const m=new Map;for(const A of cs)m.set(A.id,A);for(const A of Uo)m.set(A.id,A);for(const A of e.tasks)m.set(A.id,A);return Array.from(m.values())},[cs,Uo,e.tasks]),Ji=o.useMemo(()=>{const m=new Map;return Zi.forEach(A=>m.set(A.id,A)),m},[Zi]),Rd=o.useMemo(()=>{const m=new Map;Dt.forEach(Se=>{m.set(String(Se.value),Se.label)});const A=String(Dr||"").trim(),B=String(bn||en||"").trim();return A&&B&&m.set(A,B),m},[Dt,bn,en,Dr]),Ot=o.useMemo(()=>{const m=new Map;e.workspaceTaskRelationships.forEach(pt=>{if(pt.deletedAt||pt.kind!=="dependency")return;const jr=m.get(pt.sourceTaskId)||[];jr.push(pt.targetTaskId),m.set(pt.sourceTaskId,jr)});const A=jq(e.tasks,cs),B=new Map(A.map(pt=>[pt.id,pt])),Se=pt=>{const jr=m.get(pt)||[];if(jr.length===0)return"ready";let Pn=!1;for(const Ni of jr){const ji=B.get(Ni);if(!ji||_o(ji.status).value==="cancelled"){Pn=!0;continue}if(_o(ji.status).value!=="done")return"blocked"}return Pn?"invalid":"ready"},Oe=A,jt=A,Ir=(pt,jr)=>({progressPercent:pt>0?Math.round(jr/pt*100):0,taskCount:pt,completedTaskCount:jr}),Or=pt=>{const jr={task:0,"on-hold":0,"in-progress":0,review:0,done:0,cancelled:0};return pt.forEach(Pn=>{jr[_o(Pn.status).value]+=1}),jr},Ma=pt=>{const jr=Or([]);return pt.forEach(Pn=>{Object.entries(Pn.statusCounts||{}).forEach(([Ni,ji])=>{jr[Ni]+=Number(ji)||0})}),jr},fn=kQ({taskScope:It,summaryCount:e.planningBootstrapTaskSummaries.length,loadingTasks:e.loadingTasks,activeTaskCount:e.tasks.length,archiveHydrated:e.archiveHydratedWorkspaceId===at}),Vc=new Map,nu=new Map,au=new Map;fn?e.planningBootstrapTaskSummaries.forEach(pt=>{const jr=(pt.tasks||[]).map(Pn=>({...Pn,prerequisiteTaskIds:m.get(Pn.id)||[],dependencyState:Se(Pn.id)}));Vc.set(pt.workstreamId,{...pt,tasks:jr}),nu.set(pt.workstreamId,jr),au.set(pt.workstreamId,Or(jr))}):(Oe.forEach(pt=>{const jr=String(pt.workstreamId||"").trim();if(!jr)return;const Pn=Vc.get(jr)||{workstreamId:jr,taskCount:0,completedTaskCount:0,tasks:[]};Pn.taskCount+=1,(pt.status==="done"||pt.status==="cancelled")&&(Pn.completedTaskCount+=1);const Ni=au.get(jr)||Or([]);Ni[_o(pt.status).value]+=1,au.set(jr,Ni),Vc.set(jr,Pn)}),jt.forEach(pt=>{const jr=String(pt.workstreamId||"").trim();if(!jr)return;const Pn=nu.get(jr)||[];Pn.push({id:pt.id,referenceNumber:pt.referenceNumber??null,localReferenceNumber:pt.localReferenceNumber??null,referenceLabel:pt.referenceLabel,title:pt.title,createdAt:pt.createdAt,status:pt.status||null,priority:Number(pt.priority)||0,workstreamOrder:pt.workstreamOrder??null,prerequisiteTaskIds:m.get(pt.id)||[],dependencyState:Se(pt.id),assignee:pt.assignee||null,attachmentCount:Array.isArray(pt.attachments)?pt.attachments.length:0,isArchived:!!pt.isArchived}),nu.set(jr,Pn)}));const Bm=new Map,Wm=new Map,$m=new Map,Iy=new Map,aT=pt=>{const jr=Vc.get(pt.id),Pn=nu.get(pt.id)||jr?.tasks||[],Ni=Ir(jr?.taskCount||0,jr?.completedTaskCount||0),ji=Mq({isArchived:!!pt.isArchived,tasks:Pn,dataReady:!fn}),Fm={id:pt.id,referenceNumber:pt.referenceNumber??null,title:pt.title,description:String(pt.description||"").trim()||void 0,ownerId:pt.ownerId?String(pt.ownerId):null,ownerLabel:pt.ownerId?Rd.get(String(pt.ownerId))||String(pt.ownerId):null,...Ni,statusCounts:au.get(pt.id)||Or([]),initiativeId:pt.initiativeId||null,commentCount:Array.isArray(pt.comments)?pt.comments.length:0,comments:Array.isArray(pt.comments)?pt.comments:[],activity:Array.isArray(pt.activity)?pt.activity:[],entityEvents:Array.isArray(pt.entityEvents)?pt.entityEvents:[],attachmentCount:Array.isArray(pt.attachments)?pt.attachments.length:0,attachments:Array.isArray(pt.attachments)?pt.attachments:[],isArchived:!!pt.isArchived,archiveReady:ji.archiveReady,archiveActiveTaskCount:ji.activeTaskCount,tasks:Pn};if(Bm.set(pt.id,Pn.map(Gc=>Gc.id)),pt.initiativeId){Wm.set(pt.id,pt.initiativeId);const Gc=Iy.get(pt.initiativeId)||[];Gc.push(Fm),Iy.set(pt.initiativeId,Gc)}return Fm},Ty=e.workstreams.map(aT),sT=Ty.filter(pt=>tg(It,!!pt.isArchived)),xy=e.initiatives.map(pt=>{const jr=Iy.get(pt.id)||[],Pn=jr.filter(Up=>tg(It,!!Up.isArchived)),Ni=jr.reduce((Up,Ry)=>Up+Ry.taskCount,0),ji=jr.reduce((Up,Ry)=>Up+Ry.completedTaskCount,0),Fm=Ir(Ni,ji),Gc=Dq({isArchived:!!pt.isArchived,workstreams:jr,dataReady:!fn});return{id:pt.id,referenceNumber:pt.referenceNumber??null,title:pt.title,description:String(pt.description||"").trim()||void 0,ownerId:pt.ownerId?String(pt.ownerId):null,ownerLabel:pt.ownerId?Rd.get(String(pt.ownerId))||String(pt.ownerId):null,...Fm,statusCounts:Ma(jr),workstreamCount:Pn.length,workstreams:Pn,allWorkstreams:jr,commentCount:Array.isArray(pt.comments)?pt.comments.length:0,comments:Array.isArray(pt.comments)?pt.comments:[],activity:Array.isArray(pt.activity)?pt.activity:[],entityEvents:Array.isArray(pt.entityEvents)?pt.entityEvents:[],attachmentCount:Array.isArray(pt.attachments)?pt.attachments.length:0,attachments:Array.isArray(pt.attachments)?pt.attachments:[],isArchived:!!pt.isArchived,archiveReady:Gc.archiveReady,archiveActiveTaskCount:Gc.activeTaskCount,archiveActiveWorkstreamCount:Gc.activeWorkstreamCount}}),{initiatives:Ow,standaloneWorkstreams:oT,initiativeById:iT,workstreamById:cT}=nq(xy,sT,It),lT=Ty.filter(pt=>!pt.initiativeId);return Ow.forEach(pt=>{$m.set(pt.id,pt.workstreams.flatMap(jr=>(jr.tasks||[]).map(Pn=>Pn.id)))}),{initiatives:Ow,standaloneWorkstreams:oT,allInitiatives:xy,allStandaloneWorkstreams:lT,allInitiativeById:new Map(xy.map(pt=>[pt.id,pt])),allWorkstreamById:new Map(Ty.map(pt=>[pt.id,pt])),workstreamTaskIds:Bm,workstreamInitiativeIds:Wm,initiativeTaskIds:$m,workstreamById:cT,initiativeById:iT}},[cs,at,e.archiveHydratedWorkspaceId,Rd,e.initiatives,e.loadingTasks,e.planningBootstrapTaskSummaries,e.workspaceTaskRelationships,e.tasks,e.workstreams,It]),tm=o.useMemo(()=>Ot.initiatives.map(m=>{const A=fs(m);return{value:m.id,label:A||m.title}}),[Ot.initiatives]),sp=o.useMemo(()=>{const m=(Oe,jt)=>Oe.title.localeCompare(jt.title,void 0,{sensitivity:"base"}),A=Array.from(Ot.allInitiativeById.values()).filter(Oe=>!Oe.isArchived).map(Oe=>({id:Oe.id,referenceLabel:fs(Oe)||Oe.id,title:Oe.title,meta:`${Oe.workstreamCount||0} workstream${Oe.workstreamCount===1?"":"s"}`})).sort(m),B=Array.from(Ot.allWorkstreamById.values()).filter(Oe=>!Oe.isArchived).map(Oe=>({id:Oe.id,referenceLabel:Io(Oe)||Oe.id,title:Oe.title,meta:Oe.initiativeId?`In ${Ot.allInitiativeById.get(Oe.initiativeId)?.title||"another initiative"}`:"Standalone workstream"})).sort(m),Se=Zi.filter(Oe=>!Oe.isArchived&&!Oe.isDeleted).map(Oe=>({id:Oe.id,referenceLabel:hs(Oe)||Oe.id,title:Oe.title,meta:Oe.workstreamId?`In ${Ot.allWorkstreamById.get(Oe.workstreamId)?.title||"another workstream"}`:"Unassigned to a workstream"})).sort(m);return{initiatives:A,workstreams:B,tasks:Se}},[Zi,Ot.allInitiativeById,Ot.allWorkstreamById]),rm=o.useMemo(()=>{const A=(Kr?Ot.initiativeById.get(Kr)?.workstreams||[]:Ot.initiatives.flatMap(Se=>Se.workstreams)).map(Se=>{const Oe=Io(Se);return{value:Se.id,label:Oe||Se.title}}),B=Kr?[]:Ot.standaloneWorkstreams.map(Se=>{const Oe=Io(Se);return{value:Se.id,label:Oe||Se.title}});return[...A,...B]},[Ot.initiativeById,Ot.initiatives,Ot.standaloneWorkstreams,Kr]),Pd=o.useMemo(()=>fa?new Set(Ot.workstreamTaskIds.get(fa)||[]):Kr?new Set(Ot.initiativeTaskIds.get(Kr)||[]):null,[Ot.initiativeTaskIds,Ot.workstreamTaskIds,Kr,fa]),nm=o.useMemo(()=>{if(!j)return null;if(j.type==="initiative"){const A=Ot.allInitiativeById.get(j.id);return A?{type:"initiative",item:A}:null}const m=Ot.allWorkstreamById.get(j.id);return m?{type:"workstream",item:m}:null},[j,Ot.allInitiativeById,Ot.allWorkstreamById]),Ed=o.useMemo(()=>{if(!Et)return null;const m=Ot.allWorkstreamById.get(Et);return m?{type:"workstream",item:m}:null},[Et,Ot.allWorkstreamById]),am=o.useMemo(()=>Oo?.mode==="create"?{kind:"editor",editor:Oo}:Ed?{kind:"detail",detail:Ed}:null,[Ed,Oo]),Pg=j?De[`${j.type}:${j.id}`]:void 0,Eg=Et?De[`workstream:${Et}`]:void 0,Ng=sI(Ea,!!(nm||er),Na,!!am,ss),[jg,op]=o.useState(Ng),sm=o.useMemo(()=>{if(!Qo.trim())return null;const m=Ot.allInitiativeById.get(Qo);return m||Mk(Ot.allInitiatives,Qo)},[Qo,Ot.allInitiativeById,Ot.allInitiatives]);o.useEffect(()=>{Kr&&!Ot.initiativeById.has(Kr)&&Ua(""),fa&&!Ot.workstreamById.has(fa)&&Jo("")},[Ot.initiativeById,Ot.workstreamById,Kr,fa]);const Qs=o.useMemo(()=>h==="schedule"?xd:Nc,[h,Nc,xd]),hl=o.useMemo(()=>h!=="schedule"||!Bt?Qs:Qs.filter(m=>{if(m.status==="done"||m.status==="cancelled")return!1;const B=!!m.scheduledDate&&m.scheduledDate<dn,Se=!!m.dueDate&&m.dueDate<dn;return B||Se}),[h,Bt,Qs,dn]),om=o.useMemo(()=>pS(hl,Pd),[hl,Pd]),Rs=$C(e.deletedTasks,om.map(m=>m.id),It==="deleted"),im=o.useMemo(()=>pS(ap,Pd),[ap,Pd]),Nd=o.useMemo(()=>Array.from(np),[np]),ip=o.useCallback(m=>{ns(m);const A=uf(m);A&&Ks(`${A.getFullYear()}-${String(A.getMonth()+1).padStart(2,"0")}`)},[]),jd=o.useCallback(m=>{h==="schedule"&&jo(m)},[h]),gl=o.useCallback(m=>{if(It==="deleted"){const A=Ii.get(m);if(!A)return;rt(A.id,A.taskId);return}kt(m)},[Ii,rt,kt,It]),cp=o.useCallback(m=>{if(It==="deleted"){const A=Ii.get(m);if(!A||!window.confirm("Permanently delete this task? This cannot be undone."))return;lr(A.id);return}wt(m)},[Ii,wt,lr,It]),Qi=o.useMemo(()=>h!=="schedule"?[]:Qs.filter(m=>{if(m.status==="done"||m.status==="cancelled")return!1;const B=!!m.scheduledDate&&m.scheduledDate<dn,Se=!!m.dueDate&&m.dueDate<dn;return B||Se}),[h,Qs,dn]),jc=o.useMemo(()=>h!=="schedule"?0:Qs.filter(m=>m.status==="done"||m.status==="cancelled"?!1:!!m.scheduledDate&&m.scheduledDate<dn).length,[h,Qs,dn]),yl=o.useMemo(()=>h!=="schedule"?0:Qs.filter(m=>m.status==="done"||m.status==="cancelled"?!1:!!m.dueDate&&m.dueDate<dn).length,[h,Qs,dn]),Mc=o.useMemo(()=>!xn||xn==="anonymous"?0:P.filter(m=>m.status==="done"||m.status==="cancelled"?!1:String(m.assignee||"").trim()===xn).length,[xn,P]),kl=o.useMemo(()=>!xn||xn==="anonymous"?0:P.filter(m=>m.status==="done"||m.status==="cancelled"||String(m.assignee||"").trim()!==xn?!1:!!m.dueDate&&m.dueDate<dn).length,[xn,P,dn]),lp=o.useMemo(()=>h!=="schedule"?[]:Qs.filter(m=>m.status==="done"||m.status==="cancelled"?!1:!!m.scheduledDate&&m.scheduledDate<dn),[h,Qs,dn]),vl=Qi,[wl,Md]=o.useState(!1),cm=()=>{wn(()=>{Ws()||(f==="add"&&un.length>0&&bs(),$a(!1),f==="add"&&I(),p("tasks"))})};o.useEffect(()=>{f!=="add"&&$a(!1)},[f]);const bl=o.useCallback(async(m,A,B)=>{m.status===A&&!B?.allowSameStatus||await K(m,A)},[K]),dp=o.useCallback(async(m,A)=>{const B=Ji.get(m);if(!B){dt("Task details are still loading.","info");return}await bl(B,A),await e.fetchPlanningEntities()},[bl,Ji,e.fetchPlanningEntities,dt]),Dd=o.useCallback(async(m,A)=>{await E(m,{assignee:A})!==!1&&await e.fetchPlanningEntities()},[E,e.fetchPlanningEntities]),Dc=o.useCallback(async m=>{const A=Ji.get(m);return A?A.isArchived?!0:A.status!=="done"&&A.status!=="cancelled"?(dt("Only completed or cancelled tasks can be archived from Planning.","error"),!1):Ue(A):(dt("Task details are still loading.","info"),!1)},[Ue,Ji,dt]),Mg=o.useCallback(async m=>{const A=await Dc(m);return A&&(await e.fetchPlanningEntities(),dt("Task archived","success")),A},[Dc,e.fetchPlanningEntities,dt]),up=o.useCallback(async m=>{const A=Ot.allWorkstreamById.get(m);if(!A?.archiveReady)return dt("This workstream is no longer ready to archive.","error"),!1;try{return await F_({workstream:A,archiveTask:Dc,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(B){return dt(B instanceof Error?`Workstream archive stopped safely: ${B.message}`:"Workstream archive stopped safely. Retry to archive the remaining items.","error"),!1}},[Dc,Ot.allWorkstreamById,e.archiveWorkstream,dt]),pp=o.useCallback(async m=>{const A=Ot.allInitiativeById.get(m);if(!A?.archiveReady)return dt("This initiative is no longer ready to archive.","error"),!1;try{return await Lq({initiativeId:A.id,workstreams:A.allWorkstreams||A.workstreams,archiveTask:Dc,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(B){return dt(B instanceof Error?`Initiative archive stopped safely: ${B.message}`:"Initiative archive stopped safely. Retry to archive the remaining items.","error"),!1}},[Dc,Ot.allInitiativeById,e.archiveInitiative,e.archiveWorkstream,dt]),lm=o.useCallback(async(m,A)=>{const B=m==="initiative"?Ot.allInitiativeById.get(A):Ot.allWorkstreamById.get(A);if(!B)return dt(`${m==="initiative"?"Initiative":"Workstream"} not found.`,"error"),!1;const Se=U_({entityType:m,isArchived:B.isArchived,taskCount:B.taskCount,completedTaskCount:B.completedTaskCount,archiveReady:B.archiveReady,activeWorkstreamCount:B.archiveActiveWorkstreamCount});if(Se.mode==="archived")return!0;if(Se.mode==="ready")return m==="initiative"?pp(A):up(A);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(A):await e.archiveWorkstream(A),dt(`${m==="initiative"?"Initiative":"Workstream"} archived`,"success"),!0}catch(Oe){return dt(Oe instanceof Error?Oe.message:`Failed to archive ${m}.`,"error"),!1}},[pp,up,Ot.allInitiativeById,Ot.allWorkstreamById,e.archiveInitiative,e.archiveWorkstream,dt]),dm=o.useCallback(async(m,A)=>{try{return m==="initiative"?await e.unarchiveInitiative(A):await e.unarchiveWorkstream(A),dt(`${m==="initiative"?"Initiative":"Workstream"} unarchived`,"success"),!0}catch(B){return dt(B instanceof Error?B.message:`Failed to unarchive ${m}.`,"error"),!1}},[e.unarchiveInitiative,e.unarchiveWorkstream,dt]),fp=o.useCallback((m,A)=>{I();const B=eq(m,A,{categories:g});B.category&&ue(B.category),B.type&&Pe(B.type),typeof B.priority=="number"&&se(B.priority),typeof B.complexity=="number"&&W(B.complexity),B.assignee&&Y(B.assignee),B.status&&fe(B.status),B.scheduledDate&&q(B.scheduledDate),p("add")},[I,g,ue,Pe,se,W,fe,Y,q,p]);Q.useEffect(()=>{M&&!M.includes("done")&&R(m=>[...m,"done"])},[]);const[Dg,Xi]=o.useState(!1),[Ti,So]=o.useState(!1),[oi,ls]=o.useState(!1),Lc=o.useRef(!1),[mp,Ps]=o.useState(!1),[Sl,um]=o.useState(!1),[Al,ec]=o.useState(""),[Lg,hp]=o.useState(!1),[xi,pm]=o.useState(!1),[fm,Ld]=o.useState("members"),[Cl,Od]=o.useState(null),[mm,Bd]=o.useState("unknown"),[Og,gp]=o.useState(!1),[Bg,_l]=o.useState(null),[Wg,Xs]=o.useState(null),[$g,hm]=o.useState(!1),[yp,Fg]=o.useState([]),[Ug,gm]=o.useState(null),[kp,vp]=o.useState(""),[Wd,$d]=o.useState("member"),[eo,ia]=o.useState("read-write"),[ym,km]=o.useState(!1),[zg,Oc]=o.useState(null),[Bc,Hg]=o.useState(0),[Vg,vm]=o.useState(!1),[Gg,Kg]=o.useState([]),[qg,wm]=o.useState(!1),[ha,Wc]=o.useState(1),[Zn,to]=o.useState(null),[$c,tc]=o.useState(!1),[Fc,Il]=o.useState(null),[Fd,ii]=o.useState(!1),[ci,za]=o.useState(null),[Ud,li]=o.useState(!1),[bm,wp]=o.useState(null),[di,bp]=o.useState("month"),[zd,Sm]=o.useState(""),[Sp,zs]=o.useState(""),[Ia,rc]=o.useState(null),[Ap,Am]=o.useState(!1),[Cm,Hd]=o.useState(!1),[Cp,ro]=o.useState(null),[_p,no]=o.useState(null),_m=25,Ip=o.useRef(null),Uc=o.useRef(null),Vd=o.useRef({billing:!1,teamManagement:!1}),zc=o.useRef(null);o.useEffect(()=>{zc.current=Zn},[Zn]),o.useEffect(()=>{if(!Ti)return;const m=A=>{Ip.current?.contains(A.target)||So(!1)};return document.addEventListener("mousedown",m),()=>document.removeEventListener("mousedown",m)},[Ti]);const Im=Ut==="cloud"&&fr&&Vt,nc=Vt&&(Ut==="cloud"||$t),Tm=Ut==="local"&&Vt,xm=cr?.phase==="ready"&&cr.snapshot?.state.ownershipMode==="server"?cr.snapshot.workspace?.runner?.checkpoint?.checkpoint.syncEnabled:null,Tl=typeof xm=="boolean"?xm:or,{showSyncStatusModal:xl,showSyncEnableWarning:Rm,workspaceSyncError:Yg,syncControlBusy:Zg,openSyncStatusModal:Tp,closeSyncStatusModal:Rl,handleWorkspaceSyncToggle:ac,cancelSyncEnableWarning:xp,confirmSyncEnableWarning:Jg}=JQ({canManageWorkspaceSync:Tm,workspaceCloudSyncEnabled:Tl,saveWorkspaceCloudSyncSettings:on}),Rp=o.useMemo(()=>{const m=Lr.find(Se=>Se.id===at),A=String(m?.name||"").trim();if(A)return A;if(Ut==="local"){const Se=String(mr||"").trim();if(Se)return Se}return String(at||"").trim()||"Workspace"},[Lr,at,mr,Ut]),Gd=iI(nc,Cl),Pl=GQ(nc,Cl,mm),El=String(bn||"").trim(),ao=String(tn||"").trim(),sc=String(en||"").trim(),oc=El||sc,Qg=oc.length>0,Xg=sc.length>0,ey=o.useMemo(()=>OG({workspaceName:Rp,workspaceId:at,accountLabel:oc||sc,runtimeMode:Ut}),[sc,oc,at,Rp,Ut]),Kd=(oc||sc||"").trim(),Yd=Vt&&ft&&Kd.length>0?Kd.charAt(0).toUpperCase():"",Zd=ao,Pp=Vt&&ft&&Zd.length>0,Nl=String(Sp||ao).trim(),jl=String(Zn?.planName||Zn?.planId||"").trim(),Ep=jl.length>0,Ri=String(Zn?.workspaceId||Ye||at||"").trim(),ty=Ut==="cloud"?"CLOUD":"LOCAL",Pm=e.config?.apiBaseUrl||"",ry=o.useMemo(()=>iX(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]),Em=$t&&!ft;o.useEffect(()=>{oi&&!Lc.current&&(Sm(El),zs(ao),rc(null),ro(null),no(null)),Lc.current=oi},[ao,El,oi]);const Pi=o.useCallback(async m=>{const A=String(m||"").trim();if(!(!A||!$t))try{await fetch(Kt("/api/taskforce/auth/profile/avatar/discard"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({draftId:A})})}catch{}},[$t,Kt]),ny=o.useCallback(()=>{const m=Ia;ls(!1),Ps(!1),ro(null),no(null),rc(null),zs(ao),m&&Pi(m)},[ao,Pi,Ia]),ay=o.useCallback(async m=>{if(!m||!$t)return!1;if(!m.type.startsWith("image/"))return ro("Profile photo must be an image file."),no(null),!1;Am(!0),ro(null),no(null);try{const A=await Nq(m,{maxBytes:sX});if(A.exceededLimit){const fn=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(fn)}const B=A.file,Se=await fetch(Kt("/api/taskforce/auth/profile/avatar/init"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({originalName:B.name,mimeType:B.type,size:B.size})}),Oe=await Se.json().catch(()=>({}));if(!Se.ok||!Oe?.success||typeof Oe?.draftId!="string"||typeof Oe?.relativePath!="string")throw new Error(Oe?.error||"Failed to start avatar upload.");if(!(await fetch(Kt("/api/taskforce/auth/profile/avatar/upload"),{method:"POST",headers:{"Content-Type":B.type||"application/octet-stream","x-taskforce-avatar-draft-id":Oe.draftId},credentials:"include",body:B})).ok)throw new Error("Failed to upload avatar.");const Ir=await fetch(Kt("/api/taskforce/auth/profile/avatar/finalize"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({draftId:Oe.draftId,relativePath:Oe.relativePath})}),Or=await Ir.json().catch(()=>({}));if(!Ir.ok||!Or?.success||typeof Or?.draftId!="string")throw new Error(Or?.error||"Failed to finalize avatar upload.");const Ma=Ia;return rc(Or.draftId),zs(typeof Or?.avatarUrl=="string"?Or.avatarUrl:""),no(null),Ma&&Ma!==Or.draftId&&Pi(Ma),!0}catch(A){return ro(A instanceof Error?A.message:"Failed to upload profile photo."),!1}finally{Am(!1)}},[$t,Pi,Ia,Kt]),sy=o.useCallback(()=>{if(!Ia)return;const m=Ia;rc(null),zs(ao),no(null),ro(null),Pi(m)},[ao,Pi,Ia]),Nm=o.useCallback(()=>{const m=Ia;rc(null),zs(""),no(ao?"Profile photo will be removed when you save.":null),ro(null),m&&Pi(m)},[ao,Pi,Ia]),oy=o.useCallback(async()=>{const m=zd.trim();if(!m){ro("Display name is required."),no(null);return}Hd(!0),ro(null),no(null);const A=await Rr({displayName:m,avatarDraftId:Ia,clearAvatar:!Ia&&!Sp&&!!ao});if(!A.success){ro(A.error||"Failed to update profile."),Hd(!1);return}no("Profile updated."),rc(null),zs(""),Hd(!1),Ps(!1)},[ao,Ia,Sp,zd,Rr]),Hs=o.useCallback(()=>{const m={},A=String(Ri||"").trim();A&&(m["x-taskforce-workspace-id"]=A);const B=Cl||Ft;return(B==="owner"||B==="admin"||B==="member"||B==="read-only")&&(m["x-taskforce-workspace-role"]=B),m},[Ft,Ri,Cl]),jm=o.useCallback(m=>{const A=Vt,B=m==="account_menu"&&nc;Uc.current=tf(),Vd.current={billing:A,teamManagement:B},hr("account_surface_opened",{surface:m,expectsBilling:A,expectsTeamManagement:B}),!A&&!B&&(hr("account_surface_ready",{surface:m,durationMs:0,teamManagementVisible:!1,billingPlanId:null}),Uc.current=null)},[nc,Vt]),Ml=o.useCallback(m=>{const A=Vd.current;if(A[m]=!1,A.billing||A.teamManagement)return;const B=Uc.current;B!==null&&(hr("account_surface_ready",{surface:oi?"account_settings":Ti?"account_menu":"closed",durationMs:Math.round(tf()-B),teamManagementVisible:Pl,billingPlanId:String(Zn?.planId||"").trim()||null}),Uc.current=null)},[Zn?.planId,Pl,Ti,oi]),ui=o.useCallback(async m=>{const A=Kt(gS);if(!Vt)return to(null),Il(null),Od(null),Bd("unknown"),gp(!1),_l(null),yS(A,{identityKey:Dr}),Ml("billing"),Ml("teamManagement"),null;const B=tf();tc(!0),Il(null),gp(nc),_l(null);try{const Se=await vq(A,{identityKey:Dr,force:m?.force===!0}),Oe=Se?.workspaceRole==="owner"||Se?.workspaceRole==="admin"||Se?.workspaceRole==="member"||Se?.workspaceRole==="read-only"?Se.workspaceRole:null,jt=Se?.teamPlanMode==="team"||Se?.teamPlanMode==="personal"?Se.teamPlanMode:"unknown";return to(Se),Od(Oe),Bd(jt),_l(null),hr("account_profile_summary_resolved",{durationMs:Math.round(tf()-B),planId:String(Se?.planId||"").trim()||null,gate:String(Se?.gate||"").trim()||null,teamManagementAllowed:Se?.teamManagementAllowed===!0}),Se}catch(Se){const Oe=Se instanceof Error?Se.message:"Failed to load account summary.",jt=!!zc.current;return Il(Oe),jt?_l(null):(Od(null),Bd("unknown"),_l(Oe)),hr("account_profile_summary_failed",{durationMs:Math.round(tf()-B),error:Oe,preservedSummary:jt}),zc.current}finally{tc(!1),gp(!1),Ml("billing"),Ml("teamManagement")}},[Dr,nc,Vt,Ml,Kt]),iy=o.useCallback(m=>{to(m);const A=m?.workspaceRole==="owner"||m?.workspaceRole==="admin"||m?.workspaceRole==="member"||m?.workspaceRole==="read-only"?m.workspaceRole:null,B=m?.teamPlanMode==="team"||m?.teamPlanMode==="personal"?m.teamPlanMode:"unknown";Od(A),Bd(B)},[]),Np=o.useMemo(()=>Uk(Zn).allowReturnToApp,[Zn]),cy=o.useCallback(async()=>{const m=new URLSearchParams;m.set("screen","plans"),m.set("interval",di);const A=String(Zn?.planId||"").trim(),B=String(Zn?.planVersionId||"").trim();A&&m.set("planId",A),B&&m.set("planVersionId",B),a(`/?${m.toString()}`)},[Zn?.planId,Zn?.planVersionId,di,a]),Mm=o.useCallback(async()=>{za(null),wp(null),ii(!0);try{const m=await fetch(Kt("/api/taskforce/billing/portal-session"),{method:"POST",credentials:"include"}),A=await m.json().catch(()=>({}));if(!m.ok){za(String(A?.error||"Failed to create portal session."));return}const B=String(A?.url||"").trim();if(!B){za("Portal session did not return a redirect URL.");return}window.location.assign(B)}catch{za("Failed to open billing portal.")}finally{ii(!1)}},[Kt]),ly=o.useCallback(async()=>{za(null),wp(null),ii(!0);try{const m=String(Zn?.planVersionId||"").trim();if(!m){za("No active plan version is linked to this account.");return}const A=await fetch(Kt("/api/taskforce/billing/subscription"),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({planVersionId:m,interval:di})}),B=await A.json().catch(()=>({}));if(!A.ok){za(String(B?.error||"Failed to update subscription interval."));return}wp("Subscription updated."),yS(Kt(gS),{identityKey:Dr}),await ui()}catch{za("Failed to update subscription interval.")}finally{ii(!1)}},[Zn?.planVersionId,Dr,di,ui,Kt]);o.useEffect(()=>{!Vt||!ft||ui()},[ft,Vt,ui]),o.useEffect(()=>{!oi&&!Ti||ui()},[ui,Ti,oi]);const Dl=o.useCallback(async()=>{if(Gd){hm(!0),Xs(null);try{const m=await fetch("/api/taskforce/admin/users",{method:"GET",credentials:"include",headers:Hs()}),A=await m.json().catch(()=>({}));if(!m.ok){Xs(A?.error||"Failed to load workspace users.");return}const B=Array.isArray(A?.users)?A.users:[],Se={owner:0,admin:1,member:2,"read-only":3},Oe=B.map(jt=>({userId:String(jt?.userId||""),email:String(jt?.email||""),displayName:typeof jt?.displayName=="string"?jt.displayName:null,role:jt?.role==="owner"||jt?.role==="admin"||jt?.role==="member"||jt?.role==="read-only"?jt.role:"member",permissionMode:jt?.permissionMode==="read-only"?"read-only":"read-write",status:String(jt?.status||"active"),disabled:jt?.disabled===!0}));Oe.sort((jt,Ir)=>{const Or=(Se[jt.role]??99)-(Se[Ir.role]??99);return Or!==0?Or:(jt.displayName||jt.email).localeCompare(Ir.displayName||Ir.email,void 0,{sensitivity:"base"})}),Fg(Oe)}catch{Xs("Failed to load workspace users.")}finally{hm(!1)}}},[Gd,Hs]),ic=o.useCallback(async m=>{if(!Gd)return;const A=Math.max(0,Math.floor(m));vm(!0),Xs(null);try{const B=A*_m,Se=await fetch(`/api/taskforce/admin/workspace-audit-logs?limit=${_m}&offset=${B}`,{method:"GET",credentials:"include",headers:Hs()}),Oe=await Se.json().catch(()=>({}));if(!Se.ok){Xs(Oe?.error||"Failed to load workspace audit log.");return}const jt=Array.isArray(Oe?.events)?Oe.events:[];Kg(jt.map(Or=>({id:String(Or?.id||""),action:String(Or?.action||""),actorUserId:String(Or?.actorUserId||""),actorRole:String(Or?.actorRole||""),createdAt:String(Or?.createdAt||Or?.ts||"")}))),Hg(A);const Ir=Math.max(1,Number(Oe?.pages||1));Wc(Ir),wm(A+1<Ir)}catch{Xs("Failed to load workspace audit log.")}finally{vm(!1)}},[Gd,Hs]),jp=o.useCallback(async()=>{await Promise.all([Dl(),ic(Bc)])},[Dl,ic,Bc]),T=o.useCallback((m="login")=>{const A=`${s.pathname}${s.search}${s.hash}`,B=!A||A==="/login"||!A.startsWith("/")?"/":A;So(!1),ls(!1),Rl(),a(`/login?mode=${m}&next=${encodeURIComponent(B)}`)},[Rl,s.hash,s.pathname,s.search,a]),te=o.useCallback(m=>{So(!1),hp(!1);const A=new URLSearchParams({step:"workspace"});m?.intent==="create-workspace"&&A.set("intent","create-workspace"),a(`/setup?${A.toString()}`,{replace:!0})},[a]),ne=o.useCallback(async()=>{if(Ud)return;if(li(!0),!Vt){try{d()}finally{li(!1)}return}const m=zc.current;if(m&&!Uk(m).allowReturnToApp){li(!1);return}d(),(async()=>{try{const A=await e.continueAfterCommercialOnboarding();if(!A.success){dt(A.error||"Unable to finish onboarding.","error"),A.destination==="login"&&a("/login",{replace:!0});return}A.destination==="setup"&&te()}finally{li(!1)}})()},[zc,d,Vt,a,te,Ud,e,dt]),ee=o.useCallback(()=>{if(l){ne();return}wn(()=>{ri(),v("tasks"),Mo(!1),xt(null),At(null),Yn(null),$a(!1),f==="add"&&I(),p("tasks"),(s.pathname!=="/"||s.search)&&a("/")})},[f,ri,wn,ne,l,s.pathname,s.search,a,I,p,v]),Ke=o.useCallback(m=>{Ff(m),Qt("open"),fl(!1),v("tasks"),l&&d()},[d,l,v,fl,Qt,Ff]),et=o.useCallback(async m=>{if(!(!m||Sl)){if(Fa&&!Fn.current){oa(()=>()=>{et(m)});return}ec(""),um(!0);try{const A=await Nr(m);if(!A.success){if(A.code==="WORKSPACE_NOT_FOUND"||A.code==="WORKSPACE_ID_REQUIRED"){te();return}ec(A.error||"Failed to switch workspace.");return}await wr(!0),So(!1)}finally{um(!1)}}},[Nr,Sl,wr,te,Fa]),tt=o.useCallback(async()=>{So(!1),pm(!0),Ld("members"),((await ui())?.teamManagementAllowed??Pl)&&(await Dl(),await ic(0))},[Pl,ui,ic,Dl]),Wt=o.useCallback(async(m,A)=>{Xs(null),gm(m);try{const B=await A(),Se=await B.json().catch(()=>({}));if(!B.ok){Xs(Se?.error||"Team management action failed.");return}await jp()}catch{Xs("Team management action failed.")}finally{gm(null)}},[jp]),tr=o.useCallback(async()=>{const m=kp.trim();if(m){km(!0),Xs(null),Oc(null);try{const A=await fetch("/api/taskforce/admin/users/invite",{method:"POST",headers:{"Content-Type":"application/json",...Hs()},credentials:"include",body:JSON.stringify({workspaceId:Ri,email:m,role:Wd,permissionMode:Wd==="member"?eo:"read-write"})}),B=await A.json().catch(()=>({}));if(!A.ok){Xs(B?.error||"Failed to send invite.");return}vp(""),B?.inviteEmailSent===!1?Oc(`Invite created, but email delivery failed${B?.inviteEmailError?`: ${String(B.inviteEmailError)}`:"."}`):Oc("Invite sent."),await jp()}catch{Xs("Failed to send invite.")}finally{km(!1)}}},[at,jp,Hs,kp,eo,Wd]),Pr=o.useMemo(()=>st.trim().length>0,[st]),$r=o.useMemo(()=>yp.filter(m=>m.status==="invited"),[yp]),_r=o.useMemo(()=>{const m=Lt.length!==g.length,A=Ee.length!==ge.length,B=lt.length!==_e.length,Se=M.length!==Ui.length,Oe=nt.length!==Dt.length,jt=is!==null,Ir=Kr.length>0,Or=fa.length>0;return m||A||B||Se||Oe||jt||Ir||Or},[g.length,ge.length,Dt.length,nt.length,Lt.length,lt.length,M.length,Ee.length,_e.length,Kr,fa,is]),Rn=Sr,ca=o.useMemo(()=>_Q(Rn),[Rn]);o.useLayoutEffect(()=>{if(!Us&&f!=="add")return;const m=()=>{const Se=vo.current,Oe=Se?Math.ceil(Se.getBoundingClientRect().bottom):ck;ud(Math.max(ck,Oe))};m(),window.addEventListener("resize",m);const A=vo.current,B=typeof ResizeObserver<"u"?new ResizeObserver(m):null;return B&&A&&B.observe(A),()=>{window.removeEventListener("resize",m),B?.disconnect()}},[f,Us]),o.useEffect(()=>{pl||Gi(!1)},[pl]);const so=ca.moduleId==="tasks"&&_r,Es=Pr||_r,Mp=It==="archived"?cs.length:It==="deleted"?Uo.length:P.length,Dm=It==="archived"?ml.length:It==="deleted"?Id.length:Yi.length,Hc=Es?`${Dm}/${Mp}`:`${Mp}`,Lm=Es?`${It.charAt(0).toUpperCase()+It.slice(1)} tasks matching current filters`:It==="deleted"?"Trash tasks — automatically deleted after 90 days":`${It.charAt(0).toUpperCase()+It.slice(1)} tasks`,lI=Ut==="local"&&Vt,cc=o.useCallback(m=>{if(!m)return"Never";const A=new Date(m);return Number.isNaN(A.getTime())?"Never":A.toLocaleString()},[]),dI=o.useMemo(()=>cc(Tn),[cc,Tn]);o.useMemo(()=>cc(jn),[cc,jn]),o.useMemo(()=>cc(an),[cc,an]);const Zv=Yg||J||da||"None",lc=Xt(),Dp=cr?.snapshot?.permits.recoveryObligations||0,uI=o.useMemo(()=>LK({runtimeMode:Ut,isAuthenticated:Vt,workspaceSyncStatus:hn,workspaceCloudSyncEnabled:or,workspaceSyncSummary:ys,workspaceSyncRecommendedAction:Nn,workspaceSyncError:Zv,coordinatorRecoveryObligations:Dp,pushBlockedReason:lc.pushBlockedReason||null,pullBlockedReason:lc.pullBlockedReason||null,retryBlockedReason:lc.retryBlockedReason||null}),[Ut,Vt,hn,or,ys,Nn,Zv,Dp,lc.pushBlockedReason,lc.pullBlockedReason,lc.retryBlockedReason]),Ha=o.useMemo(()=>MK(cr),[cr]),Ei=Ha?.header||uI,dy=Ha?Ha.pendingLocalChanges:kr,pI=Ha?Ha.lastPullAt:jn,fI=Ha?Ha.lastPushAt:an,mI=Ha?Ha.lastSyncedAt:Tn,Jv=cc(pI),Qv=cc(fI),Xv=cc(mI),ew=Ha?Ha.busy:Sn,uy=cr?.snapshot?.state.ownershipMode||null,Lp=uy==="server"||uy==="browser-gateway"?uy:null,[py,tw]=o.useState(!1),hI=cr?.phase!=="ready"||!cr.snapshot||cr.snapshot.state.transitionState!=="idle"||cr.snapshot.permits.active>0||Dp>0,gI=o.useCallback(async()=>{if(!(!Lp||py)){tw(!0);try{const m=Lp==="server"?"browser-gateway":"server";await Wr(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{tw(!1)}}},[Lp,py,dt,Wr]),rw=Ei.lastError,[Op,nw]=o.useState(Ei.status),yI=o.useMemo(()=>Ha?.diagnostics||fq({...lc,coordinatorRecoveryObligations:Dp}),[Ha,lc,Dp]),{syncRecentEvents:Ll,syncRecentEventsLoading:aw,syncRecentEventsError:sw,syncEventsListRef:kI,loadRecentSyncEvents:vI}=KQ({isOpen:xl,workspaceId:at,refreshKeys:[an,jn,Ds,hn]}),ow=Ei.actionable&&hn==="syncing"&&xr==="active"&&dy===0;o.useEffect(()=>{if(!ow){nw(Ei.status);return}const m=window.setTimeout(()=>{nw(Ei.status)},1200);return()=>window.clearTimeout(m)},[Ei.status,ow]);const wI=o.useMemo(()=>mq({syncRecentEvents:Ll,syncRecentEventsError:sw,syncRecentEventsLoading:aw}),[Ll,sw,aw]),iw=o.useMemo(()=>hq(Ll),[Ll]),bI=o.useMemo(()=>gq(Ll),[Ll]),cw=o.useMemo(()=>L_(Op),[Op]),Bp=o.useMemo(()=>pq(Op,Tl),[Tl,Op]),{workspaceSyncRepairBusy:fy,workspaceSyncRepairQueued:SI,workspaceSyncCopied:AI,handleCopySyncDetails:CI,handleQueueOrRunRepairSync:_I}=ZQ({currentWorkspaceId:at,syncStatusLabel:cw.label,workspaceSyncSummary:Ei.summary,workspaceSyncRecommendedAction:Ei.recommendedAction,formattedLastSyncTime:Xv,formattedLastPullTime:Jv,formattedLastPushTime:Qv,workspaceSyncDiagnostics:lc,workspaceSyncPendingChanges:dy,syncLastError:rw,workspaceSyncPhase:xr,referenceMismatchCount:iw,syncRecentEvents:Ll,loadRecentSyncEvents:vI,pushNotice:dt,resetWorkspaceSyncCursorAndPull:St,workspaceSyncBusy:ew,durableRepairQueueAvailable:Lp==="server"}),II=Ha?Ha.repairBusy:fy,TI=o.useMemo(()=>Ha?.stage||O_(xr,fy,Sn),[Ha,Sn,xr,fy]),lw=o.useMemo(()=>uf(Sa)||new Date,[Sa]),Ol=o.useMemo(()=>Jk(lw,u),[lw,u]),dc=o.useMemo(()=>{const m={mon:"",tue:"",wed:"",thu:"",fri:"",sat:"",sun:""};return NS.forEach(A=>{const B=FQ(A,u);m[A]=Xl(oI(Ol,B))}),m},[Ol,u]),dw=o.useCallback(m=>{const A=uf(m);if(!A)return dc.mon;const B=A.getDay();return dc[B===1?"mon":B===2?"tue":B===3?"wed":B===4?"thu":B===5?"fri":B===6?Ba?"sat":"fri":Ba?"sun":"fri"]||dc.mon},[dc,Ba]),xI=o.useCallback(async()=>{if(!(wl||vl.length===0)){Md(!0);try{for(const m of vl){const A=m.scheduledDate||m.dueDate||dn,B=dw(A);await E(m.id,{scheduledDate:B,scheduledWeekKey:UQ(B),orderInDay:null})}await wr(!0)}finally{Md(!1)}}},[wl,vl,dn,dw,E,wr]),RI=o.useCallback(async()=>{if(!(wl||Qi.length===0)){Md(!0);try{for(const m of Qi)await E(m.id,{scheduledDate:null,scheduledWeekKey:null,orderInDay:null});await wr(!0)}finally{Md(!1)}}},[wl,Qi,E,wr]),PI=o.useMemo(()=>Xh(Ol,{month:"short",day:"numeric",year:"numeric"},Cn),[Ol,Cn]),uw=o.useMemo(()=>{const B=(Ba?u==="sunday"?["sun","mon","tue","wed","thu","fri","sat"]:NS:["mon","tue","wed","thu","fri"]).map(Oe=>{const jt=uf(dc[Oe])||Ol,Ir=dc[Oe],Or=Oe==="sat"||Oe==="sun";return{value:Oe,label:`${$Q[Oe]} ${Xh(jt,{month:"short",day:"numeric"},Cn)}`,color:Or?"#1e3a8a":"#3b82f6",icon:"Calendar",date:Ir,isPast:Ir<dn,isSelected:Ir===Sa,isWeekend:Or}}),Se=lp.length>0;return[...Ss?[{value:"backlog",label:"Backlog",color:"#64748b",icon:"Inbox"}]:[],...Se?[{value:"expired",label:"Expired",color:"#ef4444",icon:"AlertTriangle"}]:[],...B]},[Ba,Ss,dc,Ol,lp.length,dn,Sa,u,Cn]),pw=o.useMemo(()=>{switch(h){case"category":return g;case"type":return(ge||[]).map(m=>({...m,icon:m.icon||Hh[m.value]?.icon,color:m.color||Hh[m.value]?.color}));case"priority":return _e;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 Dt.map(m=>({value:m.value,label:m.label,icon:m.icon==="HelpCircle"?"Circle":m.icon,color:m.color}));case"status":return[...Ui.filter(m=>m.value!=="done"&&m.value!=="cancelled"),{value:"completed",label:"Completed",icon:_o("done").icon,color:_o("done").color}];case"schedule":return uw;default:return g}},[h,g,ge,_e,Dt,uw]),EI=n.jsxs("div",{className:Zt.accountMenuWrap,ref:Ip,children:[n.jsx("button",{className:`tf-control-icon ${Zt.avatarBtn}`,onClick:()=>{So(m=>{const A=!m;return A?jm("account_menu"):(Uc.current=null,Vd.current={billing:!1,teamManagement:!1}),A})},title:Vt?"Account":"Account (Not signed in)","aria-label":Vt?"Account":"Account (Not signed in)","aria-haspopup":"menu","aria-expanded":Ti,children:n.jsx("span",{className:Zt.avatarBadge,"aria-hidden":"true",children:Pp?n.jsx("img",{src:Zd,alt:"",className:Zt.avatarImage}):Yd||n.jsx(wu,{size:14,className:Zt.avatarIcon})})}),Ti&&n.jsxs("div",{className:Zt.accountMenu,role:"menu","aria-label":"Account menu",children:[n.jsxs("div",{className:Zt.accountMenuSection,children:[n.jsx("div",{className:Zt.accountMenuSectionLabel,children:"Account"}),n.jsx("div",{className:Zt.accountMenuHint,children:Em?"Checking sign-in status...":Vt?n.jsx(n.Fragment,{children:Qg?n.jsx(n.Fragment,{children:n.jsxs("span",{className:Zt.accountIdentityBlock,children:[n.jsx("span",{className:Zt.accountIdentityEmail,children:oc}),Xg&&El&&n.jsxs("span",{className:Zt.accountIdentityMetaLine,children:[n.jsx("span",{className:Zt.accountIdentityMetaLabel,children:"Email"}),n.jsx("span",{className:Zt.accountIdentityMetaValue,children:sc})]}),$c?n.jsxs("span",{className:Zt.accountIdentityMetaLine,children:[n.jsx("span",{className:Zt.accountIdentityMetaLabel,children:"Subscription"}),n.jsx("span",{className:Zt.accountIdentityMetaValue,children:"Loading…"})]}):Ep?n.jsxs("button",{"aria-label":`Subscription ${jl}`,className:`${Zt.accountIdentityMetaLine} ${Zt.accountIdentityMetaAction}`,onClick:()=>{So(!1),c()},type:"button",children:[n.jsx("span",{className:Zt.accountIdentityMetaLabel,children:"Subscription"}),n.jsx("span",{className:Zt.accountIdentityMetaValue,children:jl})]}):Fc?n.jsxs("span",{className:Zt.accountIdentityMetaLine,children:[n.jsx("span",{className:Zt.accountIdentityMetaLabel,children:"Subscription"}),n.jsx("span",{className:Zt.accountIdentityMetaValue,children:"Unavailable"})]}):null,n.jsxs("span",{className:Zt.accountIdentityMetaLine,children:[n.jsx("span",{className:Zt.accountIdentityMetaLabel,children:"Runtime"}),n.jsx("span",{className:Zt.accountIdentityMetaValue,children:ty})]}),n.jsxs("span",{className:Zt.accountIdentityMetaLine,children:[n.jsx("span",{className:Zt.accountIdentityMetaLabel,children:"Environment"}),n.jsx("span",{className:Zt.accountIdentityMetaValue,children:ry})]})]})}):"Signed in"}):"Not signed in"})]}),Im&&n.jsxs("div",{className:Zt.accountMenuSection,children:[n.jsx("div",{className:Zt.accountMenuSectionLabel,children:"Workspaces (Owned + Invited)"}),Lr.length===0&&n.jsx("div",{className:Zt.accountMenuHint,children:"No workspaces found for this account yet."}),Lr.map(m=>n.jsxs("button",{className:`${Zt.accountMenuItem} ${m.id===at?Zt.accountMenuItemActive:""}`,onClick:()=>et(m.id),role:"menuitem",disabled:Sl||m.id===at,title:m.description||m.name,children:[n.jsx(gc,{size:15}),n.jsxs("span",{style:{display:"flex",flexDirection:"column",gap:"2px"},children:[n.jsx("span",{children:m.name}),n.jsx("span",{className:Zt.accountMenuMeta,children:m.role})]})]},m.id)),n.jsxs("button",{className:Zt.accountMenuItem,onClick:()=>{ec(""),hp(!0),So(!1)},role:"menuitem",disabled:Sl,children:[n.jsx(Ko,{size:15}),"Create Workspace"]}),Al&&n.jsx("div",{className:Zt.accountMenuError,children:Al})]}),Og?n.jsx("div",{className:Zt.accountMenuHint,children:"Resolving team management access..."}):Pl?n.jsxs("button",{className:Zt.accountMenuItem,onClick:()=>{tt()},role:"menuitem",children:[n.jsx(Py,{size:15}),"Team Management"]}):Bg?n.jsx("div",{className:Zt.accountMenuHint,children:"Team Management unavailable right now."}):null,Vt&&n.jsxs("button",{className:Zt.accountMenuItem,onClick:()=>{So(!1),jm("account_settings"),ls(!0)},role:"menuitem",children:[n.jsx(Af,{size:15}),"Account Settings"]}),n.jsxs("button",{className:Zt.accountMenuItem,onClick:()=>{So(!1),Xi(!0)},role:"menuitem",children:[n.jsx(ad,{size:15}),"Help & Support"]}),Ut==="local"&&!Vt&&!Em&&n.jsxs("button",{className:Zt.accountMenuItem,onClick:()=>{T("login")},role:"menuitem",children:[n.jsx(wu,{size:15}),"Sign In / Register"]}),Vt&&n.jsxs("button",{className:Zt.accountMenuItem,onClick:async()=>{So(!1),await Bn(),Ut==="cloud"&&a("/login",{replace:!0})},role:"menuitem",children:[n.jsx(jT,{size:15}),"Sign Out"]})]})]}),fw=o.useCallback(()=>{S(m=>m==="show"?"collapse":m==="collapse"?"hide":"show")},[S]),mw=o.useCallback(()=>{I(),v("tasks"),p("add")},[I,p,v]),NI=o.useCallback(m=>{const A=e.workstreams.find(B=>B.id===m);I(),de(Io(A)||m),v("tasks"),p("add")},[e.workstreams,I,p,v,de]),hw=o.useCallback(m=>{Wo.current=!1,wi(!1),Yn(m),Ca(!1),ma(null),os(!1),gn(""),ki(""),vi("");const A=m.entityType==="workstream"&&Kr&&Ot.initiativeById.get(Kr)||null;Xo(A?fs(A):""),At(null)},[Ot.initiativeById,Kr]),gw=o.useCallback((m,A)=>{Wo.current=!1,wi(!1),ma(m),os(!1),gn(""),ki(""),vi("");const B=m.entityType==="workstream"&&((A?Ot.initiativeById.get(A):null)||Kr&&Ot.initiativeById.get(Kr))||null;Xo(B?fs(B):""),At(null)},[Ot.initiativeById,Kr]),my=o.useCallback(()=>{Wo.current=!1,wi(!1),Yn(null),gn(""),ki(""),vi(""),Xo("")},[]),hy=o.useCallback(()=>{Wo.current=!1,wi(!1),ma(null),gn(""),ki(""),vi(""),Xo("")},[]),jI=o.useCallback(async()=>{const m=Oo||er;if(!m||Wo.current)return;const A=Is.trim();if(!A)return;Wo.current=!0,wi(!0);const B=!!Oo,Se=Mu.trim()||null;try{if(m.entityType==="initiative")if(m.mode==="edit")await e.updateInitiative(m.targetId,{title:A,description:il.trim()||null}),xt({type:"initiative",id:m.targetId}),dt("Initiative updated","success");else{const Oe=await e.createInitiative({title:A,description:il.trim()||null,ownerId:Se});xt({type:"initiative",id:Oe.id}),At(null),dt("Initiative created","success")}else{const Oe=yQ(Ot.allInitiatives,m.mode==="create"?m.initiativeId:null,Qo);if(Oe.invalid){dt("Initiative not found by that reference.","error");return}const jt={title:A,description:il.trim()||null,initiativeId:Oe.initiativeId,...m.mode==="create"?{ownerId:Se}:{}};if(m.mode==="edit")await e.updateWorkstream(m.targetId,jt),B?At(m.targetId):(xt({type:"workstream",id:m.targetId}),At(null)),dt("Workstream updated","success");else{const Ir=await e.createWorkstream(jt);B?At(Ir.id):(xt({type:"workstream",id:Ir.id}),At(null)),dt("Workstream created","success")}}B?hy():my()}catch(Oe){dt(Oe instanceof Error?Oe.message:"Failed to save planning item.","error")}finally{Wo.current=!1,wi(!1)}},[my,hy,il,Qo,Mu,Is,er,Oo,Ot.allInitiatives,e,dt]),MI=o.useCallback(m=>{O(A=>{const B=new Set(A);return B.has(m)?B.delete(m):B.add(m),B})},[]),DI=o.useCallback(m=>{Ua(A=>A===m?"":m),Jo("")},[]),LI=o.useCallback((m,A)=>{Jo(B=>{const Se=B===m?"":m;return Ua(Se&&A||""),Se})},[]),Wp=o.useCallback(m=>{Yn(null),ma(null),Ca(!1),os(!1),xt(m?{type:"initiative",id:m}:null),At(null)},[]),$p=o.useCallback(m=>{Yn(null),ma(null),Ca(!1),os(!1),xt(m?{type:"workstream",id:m}:null),At(null)},[]),OI=o.useCallback(m=>{ma(null),os(!1),At(m)},[]),yw=o.useCallback(m=>{if(m.kind==="initiative"||m.kind==="workstream"){const Se=m.kind==="initiative"?e.initiatives.find(Oe=>Oe.referenceNumber===m.referenceNumber):e.workstreams.find(Oe=>Oe.referenceNumber===m.referenceNumber);if(!Se){dt(`${m.token} could not be found.`,"error");return}bo(()=>{v("planning"),Mo(!0),m.kind==="initiative"?Wp(Se.id):$p(Se.id)});return}const A=String(at||"default").trim()||"default",B=Se=>{Ef(Se,{ownerType:"task",ownerId:U,ownerReferenceLabel:hs(oe),workspaceId:A})};FC(m,{workspaceId:A,headers:Ai}).then(B).catch(()=>{dt(`${m.token} could not be opened.`,"error")})},[oe,at,U,bo,Wp,$p,e.initiatives,e.workstreams,dt,v,Ai]),kw=o.useMemo(()=>({...Dn,entityReferences:{resolve:oA,activate:yw}}),[yw,Dn]);o.useEffect(()=>{const m=String(i.get(fi.initiative)||"").trim(),A=String(i.get(fi.workstream)||"").trim(),B=String(i.get(fi.document)||"").trim(),Se=String(i.get(fi.image)||"").trim(),Oe=m?`initiative:${m}`:A?`workstream:${A}`:B?`document:${B}`:Se?`image:${Se}`:"";if(!Oe||Rc.current===Oe)return;if(m||A){const Or=m?e.initiatives.find(Ma=>Ma.id===m):e.workstreams.find(Ma=>Ma.id===A);if(!Or)return;Rc.current=Oe,bo(()=>{v("planning"),Mo(!0),m?Wp(Or.id):$p(Or.id)});return}if(B){if(!_i)return;Rc.current=Oe,bo(()=>{Tc(null),ei(B),v("docs")});return}if(!Ec)return;Rc.current=Oe;const jt=String(at||"default").trim()||"default",Ir=new URLSearchParams({workspaceId:jt});fetch(`/api/taskforce/annotated-attachments/images/${encodeURIComponent(Se)}?${Ir.toString()}`,{credentials:"include",headers:Ai}).then(async Or=>{if(!Or.ok)throw new Error("Image not found");const Ma=await Or.json();if(!Ma.target?.assetId||!Ma.target.path)throw new Error("Image target is unavailable");bo(()=>{const fn=Ma.target;$o.current=fn,ti.current=null,Bo(fn),Vi(null),yd(Vc=>Vc+1),v("annotate")})}).catch(()=>{dt(`Image ${Se} could not be opened.`,"error")})},[Ec,at,_i,bo,Wp,$p,e.initiatives,e.workstreams,dt,i,v,Ai]);const Jd=o.useCallback(async m=>{const A=`${m.type}:${m.id}`;Fs(B=>({...B,[A]:{status:"loading",error:null}}));try{await e.fetchPlanningEntityDetail(m.type,m.id),Fs(B=>({...B,[A]:{status:"ready",error:null}}))}catch(B){Fs(Se=>({...Se,[A]:{status:"error",error:B instanceof Error?B.message:"Failed to load the latest planning details."}}))}},[e.fetchPlanningEntityDetail]);o.useEffect(()=>{const m=new Map;if(j?.id&&m.set(`${j.type}:${j.id}`,j),Et&&m.set(`workstream:${Et}`,{type:"workstream",id:Et}),m.size!==0)for(const A of m.values())Jd(A)},[Jd,j?.id,j?.type,Et]);const gy=o.useCallback((m,A)=>{if(m==="workstream"&&A){gw({mode:"create",entityType:"workstream",initiativeId:A},A);return}if(hw({mode:"create",entityType:m}),m==="workstream"){const B=(A?Ot.initiativeById.get(A):null)||(Kr?Ot.initiativeById.get(Kr):null)||null;Xo(B?fs(B):"")}},[hw,gw,Ot.initiativeById,Kr]),vw=o.useCallback((m,A)=>{if(Wo.current=!1,wi(!1),m==="initiative"){const B=Ot.allInitiativeById.get(A);if(!B)return;ma(null),Yn({mode:"edit",entityType:"initiative",targetId:A}),gn(B.title),ki(B.description||""),vi(B.ownerId?String(B.ownerId):""),Xo("");return}else{const B=Ot.allWorkstreamById.get(A);if(!B)return;const Se=Et===A;Se?(Yn(null),ma({mode:"edit",entityType:"workstream",targetId:A})):(ma(null),Yn({mode:"edit",entityType:"workstream",targetId:A})),gn(B.title),ki(B.description||""),vi(B.ownerId?String(B.ownerId):"");const Oe=B.initiativeId&&Ot.allInitiativeById.get(B.initiativeId)||null;if(Xo(Oe?fs(Oe):""),Se)return}At(null)},[Et,Ot.allInitiativeById,Ot.allWorkstreamById]),yy=o.useCallback(async(m,A,B)=>{const Se=B.trim()||null;try{m==="initiative"?await e.updateInitiative(A,{ownerId:Se}):await e.updateWorkstream(A,{ownerId:Se}),dt(`${m==="initiative"?"Initiative":"Workstream"} owner updated`,"success")}catch(Oe){throw dt(Oe instanceof Error?Oe.message:"Failed to update owner.","error"),Oe}},[e,dt]),Qd=o.useCallback(async(m,A)=>{const B=e.workstreams.find(Ir=>Ir.id===m);if(!B)return dt("Workstream not found.","error"),!1;const Se=typeof A=="string"?A.trim():A===null?"":Qo.trim(),Oe=Se.length===0?null:Mk(Ot.allInitiatives,Se);if(Se.length>0&&!Oe)return dt("Initiative not found by that reference.","error"),!1;const jt=Oe?.id||null;if((B.initiativeId||null)===jt)return dt(jt?"Workstream already belongs to that initiative.":"Workstream is already standalone.","info"),!1;try{return await e.updateWorkstream(m,{initiativeId:jt}),Xo(Oe?fs(Oe):""),dt(jt?"Initiative set":"Initiative removed","success"),!0}catch{return dt("Failed to set initiative.","error"),!1}},[Qo,Ot.allInitiatives,e,dt]),Xd=o.useCallback(async(m,A)=>{const B=Ji.get(m);if(!B)return dt("Task not found.","error"),!1;const Se=A||null;if(Ot.initiativeById.has(m)||Ot.workstreamById.has(m))return dt("Only execution tasks can be moved into workstreams.","error"),!1;if(Se&&!Ot.workstreamById.has(Se))return dt("Workstream not found.","error"),!1;if((B.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}},[Ji,Ot.initiativeById,Ot.workstreamById,e,dt]),ky=o.useCallback(async(m,A)=>{const B=A.trim();if(!B)return dt("Enter a task reference.","error"),!1;const Se=fg(B),Oe=Zi.find(jt=>jt.id===B||hs(jt)===B||Se!==null&&jt.referenceNumber===Se);return Oe?Xd(Oe.id,m):(dt("Task not found by that reference.","error"),!1)},[Xd,Zi,dt]),vy=o.useCallback(async(m,A)=>{const B=A.trim();if(!B)return dt("Enter a workstream reference.","error"),!1;const Se=Ot.allInitiativeById.get(m);if(!Se)return dt("Initiative not found.","error"),!1;const Oe=_C(B),jt=e.workstreams.find(Ir=>Ir.id===B||Io(Ir)===B||Oe!==null&&Ir.referenceNumber===Oe);return jt?Qd(jt.id,fs(Se)):(dt("Workstream not found by that reference.","error"),!1)},[Qd,Ot.allInitiativeById,e.workstreams,dt]),eu=o.useCallback((m,A)=>{const B=`${m}:${A}`,Se=zf.current.get(B);if(Se)return Se;const Oe=m==="initiative"?e.initiatives.find(jt=>jt.id===A):e.workstreams.find(jt=>jt.id===A);return Array.isArray(Oe?.attachments)?Oe.attachments:[]},[e.initiatives,e.workstreams]),tu=o.useCallback((m,A,B)=>{const Se=`${m}:${A}`;zf.current.set(Se,B);const jt=(fd.current.get(Se)||Promise.resolve()).catch(()=>{}).then(()=>m==="initiative"?e.updateInitiative(A,{attachments:B}):e.updateWorkstream(A,{attachments:B}));fd.current.set(Se,jt),jt.catch(Ir=>{dt(Ir instanceof Error?Ir.message:"Failed to update planning context.","error")}).finally(()=>{fd.current.get(Se)===jt&&fd.current.delete(Se)})},[e,dt]),wy=o.useCallback((m,A,B)=>{const Se=eu(m,A);tu(m,A,[...Se,B])},[eu,tu]),by=o.useCallback((m,A,B)=>{const Se=eu(m,A);tu(m,A,Se.filter((Oe,jt)=>jt!==B))},[eu,tu]),Sy=o.useCallback((m,A,B,Se)=>{const jt=eu(m,A).map((Ir,Or)=>Or!==B?Ir:typeof Ir=="string"?{path:Ir,caption:Se,timestamp:new Date().toISOString()}:{...Ir,caption:Se});tu(m,A,jt)},[eu,tu]),ww=o.useCallback(m=>{Ua(m),Jo("")},[]),bw=o.useCallback(m=>{Jo(m),Ua(m&&Ot.workstreamInitiativeIds.get(m)||"")},[Ot.workstreamInitiativeIds]),Om=o.useCallback(m=>{const A=ES(m,ni);if(A!==m){const B=ni.find(Se=>Se.id===m)?.label||"That module";dt(`${B} is not available in this build yet.`,"error");return}if(Sr==="workflowManager"&&A!=="workflowManager"&&Fa&&!Fn.current){oa(()=>()=>Om(m));return}ri(),v(A)},[ri,dt,Sr,v,Fa,ni]),Sw=o.useCallback(()=>{if(Sr==="tasks"&&Kn){Mo(!1),xt(null),At(null),Yn(null);return}if(Sr!=="tasks"){v("tasks"),Mo(!0);return}Mo(m=>!m)},[Kn,Sr,v]),Aw=o.useCallback(()=>{if(Sr!=="docs"){v("docs"),Ys(!0);return}Ys(m=>!m)},[Sr,v]),Cw=o.useCallback(()=>{if(Sr!=="annotate"){v("annotate"),as(!0);return}as(m=>!m)},[Sr,v]),_w=o.useCallback(()=>{if(Sr!=="aiProfiles"){v("aiProfiles"),Do(!0);return}Do(m=>!m)},[Sr,v]),Iw=o.useCallback(()=>{if(Sr!=="taskforceAgents"){v("taskforceAgents"),_s(!0);return}_s(m=>!m)},[Sr,v]),Tw=o.useCallback(()=>{if(Sr!=="workflowManager"){v("workflowManager"),qn(!0);return}qn(m=>!m)},[Sr,v]),Fp=o.useCallback(()=>{Gi(!1),Ad(null),qu(null)},[]),Ay=o.useCallback(m=>{if(!Fo[ql]?.allowed){dt("Taskforce Agents are unavailable for this workspace.","error");return}const A=hs(m)||m.id;Ad({taskId:m.id,taskReference:A,taskTitle:m.title}),Ki(!1),Gi(!0),$a(!1)},[dt,Fo]),xw=o.useCallback(()=>{if(oe&&U){Ay(oe);return}if(!Fo[ql]?.allowed){dt("Taskforce Agents are unavailable for this workspace.","error");return}Ad(null),Ki(!1),Gi(!0)},[oe,U,Ay,dt,Fo]),BI=o.useCallback(m=>{const A=String(m||"").trim();A&&(ul({agentId:A,conversationId:Ar[A]||null}),Ad(null),Ki(!1),Gi(!0))},[ul,Ar]),WI=o.useCallback(m=>{Me(m),$a(!1)},[Me]),$I=o.useCallback(m=>{ri(),v("tasks"),Me(m)},[ri,Me,v]),FI=o.useCallback(m=>{ri(),v("tasks"),Me(m)},[ri,Me,v]),UI=o.useCallback((m,A)=>{const B=A?.sessionId??null;$o.current=m,ti.current=B,Bo(m),Vi(B),yd(Se=>Se+1),v("annotate")},[v]),zI=o.useCallback(({target:m,sessionId:A})=>{$o.current=m,ti.current=A,Bo(B=>!B&&!m||B&&m&&B.taskId===m.taskId&&B.taskReferenceLabel===m.taskReferenceLabel&&B.assetId===m.assetId&&B.imageReferenceLabel===m.imageReferenceLabel&&B.path===m.path&&B.displayName===m.displayName?B:m),Vi(B=>B===A?B:A)},[]),HI=o.useCallback((m,A)=>{const B=m.trim(),Se=Math.max(0,Math.round(A));B&&Zf(Oe=>Oe[B]===Se?Oe:DS(Oe,B,Se))},[]),VI=o.useCallback(m=>{const A=Math.max(0,Math.round(m));md(B=>B===A?B:A)},[]),GI=o.useCallback((m,A)=>{const B=m.trim();if(!B)return;const Se={zoomLevel:Math.min(4,Math.max(.25,A.zoomLevel)),scrollLeft:Math.max(0,Math.round(A.scrollLeft)),scrollTop:Math.max(0,Math.round(A.scrollTop))};Vu(Oe=>{const jt=Oe[B];return jt&&jt.zoomLevel===Se.zoomLevel&&jt.scrollLeft===Se.scrollLeft&&jt.scrollTop===Se.scrollTop?Oe:DS(Oe,B,Se)})},[]),Rw=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")},...RC(qe,[...e.searchAgnosticTasks,...cs])],[cs,e.searchAgnosticTasks,qe]),Pw=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")}],[]),Ew=o.useMemo(()=>ni.filter(m=>m.enabled),[ni]),Nw=o.useMemo(()=>[{key:"empty-columns",icon:C==="show"?n.jsx(Ww,{size:16}):C==="collapse"?n.jsx($w,{size:16}):n.jsx(KS,{size:16}),title:_t(C==="show"?"standalone.showEmptyColumns":C==="collapse"?"standalone.compressEmptyColumns":"standalone.hideEmptyColumns"),onClick:fw,active:C!=="show"},{key:"compressed-cards",icon:ir?n.jsx(MT,{size:16}):n.jsx(DT,{size:16}),title:_t(ir?"standalone.expandCards":"standalone.compressCards"),onClick:()=>dr(!ir),active:ir}],[ir,fw,C]),KI=o.useMemo(()=>ca.moduleId!=="tasks"?[]:[{key:"filter-toggle",icon:n.jsx(qS,{size:16}),title:_t("standalone.toggleFilters"),onClick:()=>Wa(!pa),active:pa,ariaExpanded:pa,ariaControls:"task-workspace-filters",className:so?x.filterGlow:""}],[so,Wa,pa,ca.moduleId]),qI=o.useMemo(()=>{const m=[];return pl&&m.push({key:"ask-agent",icon:n.jsx(Yl,{size:16}),title:Us?"Close Taskforce Agent":"Ask Taskforce Agent",onClick:Us?Fp:xw,active:Us}),m},[Fp,xw,Us,pl]),YI=o.useMemo(()=>n.jsx(nY,{id:"task-workspace-filters",categoryFilterOptions:ep,typeFilterOptions:tp,priorities:_e,taxonomyDisplayLabels:Be,filterCategories:Lt,setFilterCategories:Mt,filterTypes:Ee,setFilterTypes:ct,filterPriorities:lt,setFilterPriorities:Je,filterStatus:M,setFilterStatus:R,filterAssignees:nt,setFilterAssignees:Ct,assigneeOptions:Dt,initiativeFilterOptions:tm,selectedInitiativeId:Kr,setSelectedInitiativeId:ww,workstreamFilterOptions:rm,selectedWorkstreamId:fa,setSelectedWorkstreamId:bw,taskScope:It,setTaskScope:Qt,showArchive:qi,setShowArchive:fl,clearFiltersDisabled:!Pr&&!_r&&sr==="created"&&e.sortOrder==="desc",clearFilters:()=>{Jr(),Uf(),Ua(""),Jo("")}}),[Dt,ep,Jr,nt,Lt,lt,M,Ee,_r,Pr,ww,bw,tm,_e,e.sortOrder,Kr,fa,Ct,Mt,Je,R,ct,Ua,Jo,fl,Qt,sr,Uf,qi,It,Be,tp,rm]),ZI=o.useMemo(()=>[{key:"zen-toggle",icon:n.jsx(LT,{size:16,fill:w?"currentColor":"none"}),title:_t(w?"standalone.exitZenMode":"standalone.enterZenMode"),onClick:()=>_(),active:w}],[_,w]),JI=o.useMemo(()=>({search:n.jsx(Xq,{value:st,placeholder:_t("standalone.searchPlaceholder"),active:Pr,onChange:zt,onClear:()=>zt(""),clearTitle:_t("standalone.clearSearchTitle")}),sort:n.jsx(AS,{label:n.jsxs(n.Fragment,{children:[n.jsx(tv,{size:12})," ",_t("standalone.sortLabel")]}),value:sr,options:Rw,onChange:m=>pr(m),trailingAction:n.jsx("button",{className:`tf-control-icon ${x.sortDirectionBtn}`,onClick:()=>e.toggleSortOrder(),title:e.sortOrder==="desc"?_t("standalone.sortDirectionDescTitle"):_t("standalone.sortDirectionAscTitle"),children:e.sortOrder==="desc"?n.jsx(Xk,{size:14}):n.jsx(WS,{size:14})})}),"divider-primary":n.jsx(CS,{}),grouping:n.jsx(AS,{label:n.jsxs(n.Fragment,{children:[n.jsx(pk,{size:12})," ",_t("standalone.groupLabel")]}),value:h,options:Pw,onChange:m=>y(m)}),"divider-secondary":n.jsx(CS,{}),"task-display-actions":n.jsx(vh,{actions:Nw})}),[h,Pw,Om,Pr,e,st,y,zt,pr,sr,Rw,Nw,ca.moduleId]),QI=o.useMemo(()=>({"add-task":n.jsx(eY,{icon:n.jsx(Ko,{size:16}),label:_t("standalone.addTask"),onClick:mw}),"add-document":null}),[mw]),Bl=o.useMemo(()=>{const m=`${zr.workspaceToolButton} tf-control-icon tf-control-icon-quiet`,A=`${m} tf-control-icon-active`,B={tasks:n.jsx(FT,{size:18}),planning:n.jsx(pk,{size:18}),docs:n.jsx(Sf,{size:18}),annotate:n.jsx(US,{size:18}),workflowManager:n.jsx(Fw,{size:18}),taskforceAgents:n.jsx(Yl,{size:18}),aiProfiles:n.jsx(Py,{size:18})},Se=Sr==="planning"?n.jsx("span",{className:zr.workspaceToolButton,"aria-hidden":"true"}):Sr==="docs"?n.jsx("button",{type:"button",className:qs?A:m,onClick:Aw,title:qs?"Collapse document tray":"Document tray","aria-label":qs?"Collapse document tray":"Document tray",children:qs?n.jsx(lo,{size:18}):n.jsx(gc,{size:18})}):Sr==="annotate"?n.jsx("button",{type:"button",className:Aa?A:m,onClick:Cw,title:Aa?"Collapse image tray":"Image tray","aria-label":Aa?"Collapse image tray":"Image tray",children:Aa?n.jsx(lo,{size:18}):n.jsx(gc,{size:18})}):Sr==="aiProfiles"?n.jsx("button",{type:"button",className:Cs?A:m,onClick:_w,title:Cs?"Collapse AI Profile tray":"MCP settings tray","aria-label":Cs?"Collapse AI Profile tray":"MCP settings tray",children:Cs?n.jsx(lo,{size:18}):n.jsx(WT,{size:18})}):Sr==="taskforceAgents"?n.jsx("button",{type:"button",className:Zs?A:m,onClick:Iw,title:Zs?"Collapse builder library":"Builder library","aria-label":Zs?"Collapse builder library":"Builder library",children:Zs?n.jsx(lo,{size:18}):n.jsx(Py,{size:18})}):Sr==="workflowManager"?n.jsx("button",{type:"button",className:Js?A:m,onClick:Tw,title:Js?"Collapse workflow library":"Workflow library","aria-label":Js?"Collapse workflow library":"Workflow library",children:Js?n.jsx(lo,{size:18}):n.jsx(Fw,{size:18})}):n.jsx("button",{ref:yi,type:"button",className:Sr==="tasks"&&Kn?A:m,onClick:Sw,title:Sr==="tasks"&&Kn?"Collapse planning trays":"Planning","aria-label":Sr==="tasks"&&Kn?"Collapse planning trays":"Planning",children:Sr==="tasks"&&Kn?n.jsx(lo,{size:18}):n.jsx($T,{size:18})});return n.jsxs("aside",{className:`${zr.workspaceToolRail} ${zr.workspaceToolRailLeft}`,"aria-label":"Workspace tools",children:[n.jsxs("div",{className:zr.workspaceToolRailMain,children:[Se&&n.jsxs(n.Fragment,{children:[Se,n.jsx("div",{className:zr.workspaceToolRailDivider})]}),Ew.map(Oe=>n.jsx("button",{type:"button",className:Sr===Oe.id?A:m,onClick:()=>Om(Oe.id),title:Oe.label,"aria-label":Oe.label,children:B[Oe.id]},Oe.id))]}),n.jsxs("div",{className:zr.workspaceToolRailBottom,children:[n.jsx("div",{className:zr.workspaceToolRailDivider}),n.jsx("button",{type:"button",className:f==="settings"?A:m,onClick:()=>{if(Sr==="workflowManager"&&Fa&&!Fn.current){oa(()=>()=>{Tt("general"),p("settings")});return}Tt("general"),p("settings")},title:"Workspace Settings","aria-label":"Workspace Settings",children:n.jsx(Af,{size:18})})]})]})},[f,Cs,qs,_w,Aw,Cw,Om,Sw,Iw,Tw,Aa,Kn,Sr,Tt,p,Zs,Js,Fa,Ew]),[jw,XI]=o.useState(null),eT=o.useCallback(m=>{XI(m)},[]),Mw=o.useCallback((m,A)=>Jd({type:m,id:A}),[Jd]),Dw=o.useCallback(async(m,A)=>{const B=A.title.trim();if(!B)throw new Error(`${m==="initiative"?"Initiative":"Workstream"} title is required.`);try{if(m==="initiative"){const Oe=await e.createInitiative({title:B,description:A.description?.trim()||null,ownerId:A.ownerId?.trim()||null});return dt("Initiative created","success"),{id:Oe.id}}const Se=await e.createWorkstream({title:B,description:A.description?.trim()||null,ownerId:A.ownerId?.trim()||null,initiativeId:A.initiativeId?.trim()||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]),Lw=o.useCallback(async(m,A,B)=>{const Se=B.title.trim();if(!Se)throw new Error(`${m==="initiative"?"Initiative":"Workstream"} title is required.`);try{const Oe={title:Se,description:B.description?.trim()||null};if(m==="initiative"){await e.updateInitiative(A,Oe),dt("Initiative updated","success");return}await e.updateWorkstream(A,Oe),dt("Workstream updated","success")}catch(Oe){throw dt(Oe instanceof Error?Oe.message:"Failed to update planning item.","error"),Oe}},[e.updateInitiative,e.updateWorkstream,dt]),Cy=o.useCallback(async(m,A)=>{try{await e.reorderWorkstreamTasks(m,A)}catch(B){throw dt(B instanceof Error?B.message:"Failed to reorder workstream tasks.","error"),B}},[e.reorderWorkstreamTasks,dt]),ru=o.useMemo(()=>({initiatives:Ot.allInitiatives,standaloneWorkstreams:Ot.allStandaloneWorkstreams,assigneeOptions:Dt,currentOwnerId:xn==="anonymous"?null:xn,currentWorkspaceId:at,theme:ur,taskReferences:Dn,loadState:e.planningLoadState,hydrationStateByEntity:De,hydrateEntity:Mw,retry:()=>{e.fetchPlanningEntities()},openTask:Me,setTaskStatus:dp,setTaskAssignee:Dd,linkOptions:sp,assignWorkstreamToInitiative:Qd,assignTaskToWorkstream:Xd,attachWorkstreamToInitiative:vy,attachTaskToWorkstream:ky,archiveEntity:lm,unarchiveEntity:dm,changeOwner:yy,createEntity:Dw,updateEntity:Lw,addContextFile:wy,removeContextFile:by,updateContextCaption:Sy,showTaskCardStatusLabel:pe,taskArrangeMode:_a,setTaskArrangeMode:Zr,reorderWorkstreamTasks:Cy}),[at,ur,yy,Qd,Xd,ky,vy,lm,dm,Dw,wy,Me,by,dp,Dd,Sy,Mw,Dt,xn,Ot.allInitiatives,Ot.allStandaloneWorkstreams,sp,De,e.fetchPlanningEntities,e.planningLoadState,pe,_a,Cy,Dn,Lw]),tT=n.jsx(gQ,{open:Kn,leftOffset:56,returnFocusRef:yi,theme:ur,initiatives:ru.initiatives,standaloneWorkstreams:ru.standaloneWorkstreams,planningLoadState:ru.loadState,onRetryPlanning:ru.retry,taskScope:It,activeInitiativeId:Kr,activeWorkstreamId:fa,navigatorSort:Ic,navigatorSortReady:_d,onNavigatorSortChange:al,taskArrangeMode:_a,onTaskArrangeModeChange:Zr,onReorderWorkstreamTasks:Cy,planningFavorites:_d?sl:[],onTogglePlanningFavorite:m=>{ja(A=>Wq(A,m))},favoritesSectionCollapsed:Lo,initiativesSectionCollapsed:Ac,workstreamsSectionCollapsed:Cc,onToggleFavoritesSection:()=>$s(m=>!m),onToggleInitiativesSection:()=>Hi(m=>!m),onToggleWorkstreamsSection:()=>_c(m=>!m),expandedInitiativeIds:ol,detail:nm,editor:er,secondaryEditor:Oo,secondaryPane:am,primaryHydrationState:Pg,secondaryHydrationState:Eg,onRetryPrimaryHydration:j?()=>{Jd(j)}:void 0,onRetrySecondaryHydration:Et?()=>{Jd({type:"workstream",id:Et})}:void 0,onWidthChange:op,currentWorkspaceId:at,currentOwnerId:xn==="anonymous"?"":xn,linkOptions:sp,showTaskCardStatusLabel:pe,assigneeOptions:Dt.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:sm,draftTitle:Is,draftDescription:il,draftOwner:Mu,draftInitiativeId:Qo,onChangeDraftTitle:gn,onChangeDraftDescription:ki,onChangeDraftOwner:vi,onChangeDraftInitiativeId:Xo,onCollapseTreePane:()=>Sc(!0),onExpandTreePane:()=>Sc(!1),onCollapsePrimaryPane:()=>Ca(!0),onExpandPrimaryPane:()=>Ca(!1),onCollapseSecondaryPane:()=>os(!0),onExpandSecondaryPane:()=>os(!1),onBackFromSecondary:()=>{Wo.current=!1,wi(!1),ma(null),At(null)},treeCollapsed:Ea,primaryCollapsed:Na,secondaryCollapsed:ss,onCancelEditor:my,onCancelSecondaryEditor:hy,onSubmitEditor:jI,isSubmittingEditor:Ig,onCreateInitiative:()=>gy("initiative"),onCreateWorkstream:()=>gy("workstream"),onCreateTaskInWorkstream:NI,onCreateWorkstreamInInitiative:m=>gy("workstream",m),onAssignInitiativeToWorkstream:Qd,onOpenTaskById:ru.openTask,onSetTaskStatus:dp,onChangeTaskAssignee:Dd,onArchivePlanningTask:Mg,onArchiveResolvedWorkstream:up,onArchiveResolvedInitiative:pp,taskReferences:Dn,onAssignTaskToWorkstream:Xd,onAttachTaskToWorkstreamByReference:ky,onAttachWorkstreamToInitiativeByReference:vy,onAddPlanningContextFile:wy,onRemovePlanningContextFile:by,onUpdatePlanningContextCaption:Sy,onToggleInitiative:MI,onSelectInitiative:DI,onSelectWorkstream:LI,onOpenInitiativeDetails:Wp,onOpenWorkstreamDetails:$p,onOpenNestedWorkstreamDetails:OI,onEditInitiative:m=>vw("initiative",m),onEditWorkstream:m=>vw("workstream",m),onChangePlanningOwner:yy,onArchiveInitiative:m=>{e.archiveInitiative(m).then(()=>{dt("Initiative archived","success")}).catch(A=>{dt(A instanceof Error?A.message:"Failed to archive initiative.","error")})},onUnarchiveInitiative:m=>{e.unarchiveInitiative(m).then(()=>{dt("Initiative unarchived","success")}).catch(A=>{dt(A instanceof Error?A.message:"Failed to unarchive initiative.","error")})},onArchiveWorkstream:m=>{e.archiveWorkstream(m).then(()=>{dt("Workstream archived","success")}).catch(A=>{dt(A instanceof Error?A.message:"Failed to archive workstream.","error")})},onUnarchiveWorkstream:m=>{e.unarchiveWorkstream(m).then(()=>{dt("Workstream unarchived","success")}).catch(A=>{dt(A instanceof Error?A.message:"Failed to unarchive workstream.","error")})}}),rT=ca.headerSections.map(m=>{const A=JI[m];return A?n.jsx(Q.Fragment,{children:A},m):null}).filter(Boolean),nT=ca.primaryAction?QI[ca.primaryAction]:null,_y=Us?n.jsx("div",{className:`${x.taskforceAgentDrawerOverlay} ${ai?x.taskforceAgentDrawerOverlayCollapsed:""}`.trim(),style:{top:`${nl}px`},"data-theme":ur,"aria-label":"Taskforce Agent chat",children:n.jsx("aside",{className:ai?`${zr.workspaceToolRail} ${zr.workspaceToolRailRight}`:x.taskforceAgentDrawerPanel,children:ai?n.jsxs("div",{className:zr.workspaceToolRailMain,children:[n.jsx("button",{type:"button",className:`${zr.workspaceToolButton} tf-control-icon tf-control-icon-quiet tf-control-icon-active`,onClick:()=>Ki(!1),title:"Expand agent chat","aria-label":"Expand agent chat",children:n.jsx(Yl,{size:16})}),n.jsx("button",{type:"button",className:`${zr.workspaceToolButton} tf-control-icon tf-control-icon-quiet`,onClick:Fp,title:"Close agent chat","aria-label":"Close agent chat",children:n.jsx(fo,{size:16})})]}):n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:x.taskforceAgentDrawerHeader,children:[Cd||n.jsxs("div",{className:x.taskforceAgentDrawerHeaderFallback,children:[n.jsx("span",{className:x.taskforceAgentDrawerFallbackAvatar,"aria-hidden":"true",children:n.jsx(Yl,{size:16})}),n.jsx("strong",{children:"Loading agent..."})]}),n.jsxs("div",{className:x.taskforceAgentDrawerHeaderActions,children:[n.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>Ki(!0),title:"Collapse agent chat","aria-label":"Collapse agent chat",children:n.jsx(sd,{size:16})}),n.jsx("button",{type:"button",className:"tf-control-icon",onClick:Fp,title:"Close agent chat","aria-label":"Close agent chat",children:n.jsx(fo,{size:16})})]})]}),n.jsx(o.Suspense,{fallback:n.jsx("div",{className:x.taskforceAgentDrawerLoading,children:n.jsx(Ln,{size:18,className:x.spinner})}),children:n.jsx(MS,{workspaceId:at,launchContext:Xf,onClearLaunchContext:Fp,onOpenTaskContext:WI,taskReferences:Dn,surface:"taskDrawer",runtimeMode:Ut,cloudAuthConfigured:$t,authSessionResolved:ft,isAuthenticated:Vt,resolveCloudAuthUrl:Kt,theme:ur,rememberedAgentId:wa,rememberedConversationId:Xa,rememberedConversationByAgentId:Ar,rememberedSelectionReady:es,onRememberSelection:ul,onRenderDrawerHeader:em})})]})})}):null;return n.jsxs("div",{className:`${zr.standaloneWrapper} ${w?x.zenModeEnabled:""}`,"data-theme":ur,children:[n.jsx("div",{ref:vo,style:{flexShrink:0},children:n.jsx(Oq,{projectName:mr,currentWorkspaceId:at,runtimeMode:Ut,theme:ur,onBrandClick:ee,meta:n.jsxs(n.Fragment,{children:[n.jsx("span",{className:x.taskCountBadge,title:Lm,children:Hc}),xn&&xn!=="anonymous"&&n.jsxs(n.Fragment,{children:[n.jsxs("button",{type:"button",className:`${x.taskCountBadge} ${x.taskCountBadgeButton} ${is==="assigned-to-me"?x.taskCountBadgeActive:""}`.trim(),onClick:()=>Ke("assigned-to-me"),title:is==="assigned-to-me"?"Clear assigned-to-me quick filter":"Filter to my open tasks","aria-label":`${is==="assigned-to-me"?"Clear":"Apply"} assigned to me quick filter (${Mc} task${Mc===1?"":"s"})`,"aria-pressed":is==="assigned-to-me",children:[n.jsx(wu,{size:13,className:x.taskCountBadgeIcon,"aria-hidden":"true"}),Mc]}),n.jsxs("button",{type:"button",className:`${x.taskCountBadge} ${x.taskCountBadgeButton} ${kl>0?x.taskCountBadgeAlert:""} ${is==="overdue"?x.taskCountBadgeActive:""}`.trim(),onClick:()=>Ke("overdue"),title:is==="overdue"?"Clear my-overdue-tasks quick filter":"Filter to my overdue tasks","aria-label":`${is==="overdue"?"Clear":"Apply"} my overdue tasks quick filter (${kl} task${kl===1?"":"s"})`,"aria-pressed":is==="overdue",children:[n.jsx(OT,{size:13,className:x.taskCountBadgeIcon,"aria-hidden":"true"}),kl]})]}),lI&&n.jsx("button",{className:"tf-control-icon",onClick:Tp,title:`Sync manager: ${Bp.label} | Last success: ${dI}`,style:{marginLeft:"6px",height:"24px",width:"24px",padding:0,borderRadius:"999px",border:`1px solid ${Bp.border}`,background:Bp.background,color:Bp.color,display:"inline-flex",alignItems:"center",justifyContent:"center"},children:Bp.icon==="off"?n.jsx(BT,{size:16}):n.jsx(YS,{size:16})})]}),actions:n.jsxs(n.Fragment,{children:[l&&n.jsxs(n.Fragment,{children:[Vt&&Zn?.stripeCustomerId&&n.jsx("button",{className:"tf-control-icon",onClick:()=>{Mm()},title:"Manage billing",disabled:Fd,children:"Manage billing"}),n.jsx("button",{className:"tf-control-icon",onClick:()=>{if(Np){ne();return}d()},title:Np?"Continue to Taskforce":"Back",disabled:Ud,children:Np?"Take Me to Taskforce":"Back"})]}),!l&&n.jsxs(n.Fragment,{children:[rT,n.jsx(vh,{actions:KI}),nT]}),n.jsx(vh,{actions:ZI}),!l&&n.jsx(vh,{actions:qI}),EI]})})}),n.jsx(eg,{notice:f==="add"?null:rs,onDismiss:na}),n.jsx(__,{theme:ur}),Fr&&n.jsx("div",{className:Ze.authBlockedBanner,children:"Authentication required for this environment. Use the Account menu to sign in."}),n.jsx("div",{className:`${x.taskforceAssistantWorkspace} ${Us?x.taskforceAssistantWorkspaceOpen:""} ${ai?x.taskforceAssistantWorkspaceCollapsed:""}`.trim(),children:n.jsx("div",{className:x.taskforceAssistantWorkspaceContent,children:l?n.jsx("div",{className:`${zr.standalonePage} ${zr.standaloneContent} ${x.appScrollbar} tf-scrollbar`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflowY:"auto",overflowX:"hidden",scrollbarGutter:"stable",background:"var(--surface-page)"},children:n.jsx(o.Suspense,{fallback:n.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:n.jsx(Ln,{size:20,className:x.spinner})}),children:n.jsx(nX,{...e,currentTheme:ur,projectName:mr,currentWorkspaceId:at,authUserId:Dr,apiBaseUrl:Pm,connectedEnvironmentSource:e.config?.cloudAuthBaseUrl||e.config?.apiBaseUrl||"",resolveCloudAuthUrl:Kt,embedded:!0,shellOwnsScroll:!0,onAccountProfileSummaryChange:iy,onContinueToTaskforce:ne,continueBusy:Ud})})}):Sr==="planning"?n.jsxs("div",{className:`${zr.standalonePage} ${zr.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Bl,n.jsx(o.Suspense,{fallback:n.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:n.jsx(Ln,{size:20,className:x.spinner})}),children:n.jsx(rX,{model:ru})})]}):Sr==="docs"&&_i?n.jsxs("div",{className:`${zr.standalonePage} ${zr.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Bl,n.jsx(o.Suspense,{fallback:n.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:n.jsx(Ln,{size:20,className:x.spinner})}),children:n.jsx(XQ,{taskReferences:Dn,tasks:P,runtimeMode:Ut,workspaceId:at,apiBaseUrl:e.config?.apiBaseUrl||"",cloudAuthBaseUrl:e.config?.cloudAuthBaseUrl||"",typeFilters:Du,attachmentFilters:Lu,onTypeFiltersChange:Hf,onAttachmentFiltersChange:Vf,sortField:Ou,sortOrder:Bu,onSortFieldChange:Gf,onSortOrderChange:Kf,pinnedDocIds:Wu,onPinnedDocIdsChange:qf,searchQuery:$u,onSearchQueryChange:Fu,selectedDocId:Uu,onSelectedDocIdChange:Yf,selectionReady:_d,documentScrollByDocId:zu,onDocumentScrollChange:HI,documentListScrollTop:cl,onDocumentListScrollChange:VI,documentTrayOpen:qs,onCloseDocumentTray:()=>Ys(!1),requestedDocPath:Hu,requestedDocAssetId:ll,onRequestedDocHandled:()=>{Tc(null),ei(null)},onBackToTask:FI,enableTaskGeneration:!0})})]}):Sr==="annotate"&&Ec?n.jsxs("div",{className:`${zr.standalonePage} ${zr.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Bl,n.jsx(o.Suspense,{fallback:n.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:n.jsx(Ln,{size:20,className:x.spinner})}),children:n.jsx(QQ,{runtimeMode:Ut,apiBaseUrl:e.config?.apiBaseUrl||"",cloudAuthBaseUrl:e.config?.cloudAuthBaseUrl||"",workspaceId:at,sessionLoadReady:Gu,requestedTarget:xs,requestedSessionId:wd,requestedOpenVersion:Jf,imageTrayOpen:Aa,onCloseImageTray:()=>as(!1),resolveTaskReferenceLabel:xg,resolveImageReferenceLabel:Rg,onOpenTarget:UI,onContextChange:zI,viewportByContextKey:gd,onViewportChange:GI,onBackToTask:$I})})]}):Sr==="workflowManager"?n.jsxs("div",{className:`${zr.standalonePage} ${zr.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Bl,n.jsx(o.Suspense,{fallback:n.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:n.jsx(Ln,{size:20,className:x.spinner})}),children:n.jsx(eX,{workspaceId:at,libraryTrayOpen:Js,onCloseLibraryTray:()=>qn(!1),assigneeOptions:Dt,theme:ur,onUnsavedChangesChange:Gr})})]}):Sr==="taskforceAgents"?n.jsxs("div",{className:`${zr.standalonePage} ${zr.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Bl,n.jsx(o.Suspense,{fallback:n.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:n.jsx(Ln,{size:20,className:x.spinner})}),children:n.jsx(MS,{workspaceId:at,taskReferences:Dn,agentRosterTrayOpen:Zs,onCloseAgentRosterTray:()=>_s(!1),runtimeMode:Ut,cloudAuthConfigured:$t,authSessionResolved:ft,isAuthenticated:Vt,resolveCloudAuthUrl:Kt,theme:ur,rememberedAgentId:wa,rememberedConversationId:Xa,rememberedConversationByAgentId:Ar,rememberedSelectionReady:es,onRememberSelection:ul,onOpenConversation:BI})})]}):Sr==="aiProfiles"?n.jsxs("div",{className:`${zr.standalonePage} ${zr.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Bl,n.jsx(o.Suspense,{fallback:n.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:n.jsx(Ln,{size:20,className:x.spinner})}),children:n.jsx(tX,{workspaceId:at,runtimeMode:Ut,cloudAuthConfigured:$t,authSessionResolved:ft,isAuthenticated:Vt,cloudAiProfileSeatUsage:Zn?.aiProfileSeatUsage??null,agentTrayOpen:Cs,onCloseAgentTray:()=>Do(!1),resolveCloudAuthUrl:Kt,theme:ur,onNotice:dt,mcpSettingsNode:n.jsx(jS,{settingsModel:{...Tr,initialSection:"mcp",onOpenCloudAuth:T},renderMode:"mcp-only"})})})]}):n.jsxs("div",{className:`${zr.standalonePage} ${zr.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:[Bl,n.jsxs("div",{style:{position:"relative",width:"100%",minWidth:0,flex:1,minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden"},children:[pa&&YI,n.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:Kn?`${jg+6}px`:"6px",paddingRight:h==="schedule"&&$n?`${Qk}px`:0},children:[n.jsx("div",{ref:eT,style:{position:"absolute",top:0,right:0,bottom:0,left:"-56px",zIndex:35,pointerEvents:"none"}}),e.loadingTasks&&hl.length>0&&n.jsx("div",{className:x.boardRefreshIndicator,"aria-live":"polite","aria-label":"Refreshing tasks",children:n.jsx(Ln,{size:14,className:x.spinner})}),It==="deleted"&&n.jsx(C_,{theme:ur,selectedRecords:Rs.selectedRecords,matchingCount:Rs.matchingRecords.length,allMatchingSelected:Rs.allMatchingSelected,someMatchingSelected:Rs.someMatchingSelected,fullTrashCount:e.deletedTasks.length,onSelectAllMatching:Rs.selectAllMatching,onClearSelection:Rs.clear,onRestore:Ht,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.`)&&rr()}}),n.jsx(JK,{tasks:om,allTasks:im,columns:pw,groupBy:h,scheduleDates:dc,searchQuery:st,filterCategories:Lt,filterTypes:Ee,filterPriorities:lt,filterStatus:M,filterAssignees:nt,filtersReady:Rt,assigneeOptions:Dt,scheduleFilteredTaskIds:Nd,copiedId:Ge,taxonomies:qe,types:ge,priorities:_e,workspaceId:at,deletedTaskRecordByTaskId:Ii,selectedDeletedRecordIds:Rs.selectedIds,onDeletedSelectionChange:Rs.toggle,onUpdateTask:E,onTaskClick:b,taskReferences:kw,onCopyId:F,onToggleInProgress:Ne,onToggleReview:ut,onToggleComplete:Ce,onToggleCancel:mt,onSetStatus:bl,onArchiveTask:Ue,onAddTaskToColumn:fp,showTaskCardStatusLabel:pe,onScheduleDaySelected:ip,persistedScrollLeft:h==="schedule"?No:void 0,onScrollLeftChange:jd,emptyColumnMode:C,categories:g,compressed:ir,readOnlyMode:It==="deleted"?"deleted":It==="archived"?"archived":null,recentlyChangedTaskIds:e.recentlyChangedTaskIds,sortBy:sr,sortOrder:e.sortOrder,planningDropTargets:jw?yc.createPortal(tT,jw):null,onAssignTaskToWorkstream:Xd,onAssignWorkstreamToInitiative:Qd,workstreams:e.workstreams,initiatives:e.initiatives,onUnarchive:gl,onDelete:cp},`${h}-${pw.map(m=>String(m.value)).join("|")}-${dc.mon}`),h==="schedule"&&!$n&&n.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>{xt(null),sn(!0)},title:"Show Schedule Sidebar",style:{position:"absolute",top:"10px",right:"10px",zIndex:20},children:n.jsx(lo,{size:16})}),h==="schedule"&&n.jsx(zQ,{open:$n,onClose:()=>sn(!1),scheduleSelectedDate:Sa,setScheduleSelectedDate:ns,scheduleCalendarMonth:As,setScheduleCalendarMonth:Ks,scheduleShowWeekends:Ba,setScheduleShowWeekends:yo,scheduleShowBacklog:Ss,setScheduleShowBacklog:ko,scheduleOnlyExpired:Bt,setScheduleOnlyExpired:Gn,expiredScheduledCount:jc,overdueDueCount:yl,expiredLeafCandidates:vl,expiredRecoveryCandidates:Qi,onMoveExpiredToSelectedWeek:xI,onMoveExpiredToBacklog:RI,scheduleBulkBusy:wl,globalWeekStartsOn:u,resolvedLocale:Cn,todayDateOnly:dn,scheduleBaseTasks:xd,scheduleWeekStart:Ol,scheduleWeekLabel:PI})]})]})]})})}),_y&&typeof document<"u"?yc.createPortal(_y,document.body):_y,n.jsxs(Ro,{isOpen:f==="add",onClose:cm,title:U?oe?.isDeleted?"Deleted Task":"Edit Task":"New Task",size:Yr?"full":"xl",theme:ur,className:`${x.taskforceTaskModalOverlay} ${Us?x.taskforceModalWithAssistantPanel:""} ${ai?x.taskforceModalWithAssistantPanelCollapsed:""}`.trim(),overlayStyle:{"--taskforce-task-modal-backdrop-top":`${nl}px`,"--taskforce-task-modal-backdrop-left":"56px"},headerActions:n.jsxs(n.Fragment,{children:[U?null:n.jsxs("button",{type:"button",onClick:m=>$(m),disabled:L||!ie.trim(),className:x.primaryUpdateBtn,title:_t("actionHeader.addTaskTitle"),children:[L?n.jsx(Ln,{size:16,className:x.spinner}):n.jsx(Ko,{size:16}),_t("actionHeader.addTask")]}),n.jsx("button",{className:"tf-control-icon",onClick:()=>$a(m=>!m),title:Yr?"Exit full screen":"Enter full screen","aria-label":Yr?"Exit full screen":"Enter full screen",children:Yr?n.jsx($w,{size:18}):n.jsx(Ww,{size:18})})]}),draggable:!Yr,closeOnOverlayClick:!1,children:[n.jsxs("div",{className:x.taskNoticeAnchor,children:[n.jsx(A_,{editingTaskId:U,loading:L,autoSaveState:ua,title:ie,status:z,onStatusChange:fe,showCreateSubmit:!1,currentTask:oe,currentTaskWorkstream:yt,currentTaskInitiative:Yt,workstreams:e.workstreams,onWorkstreamInputChange:de,onSetWorkstreamForCurrentTask:it,handleSubmit:$,handleCopyId:F,copiedId:Ge,tasks:P,handleToggleInProgress:Ne,handleToggleReview:ut,handleToggleComplete:Ce,handleToggleCancel:mt,handleSetStatus:bl,handleArchiveTask:Ue,handleUnarchiveTask:m=>{if(oe?.isDeleted){const A=Ii.get(m);if(!A)return;rt(A.id,A.taskId);return}kt(m)},handleRestoreDeletedTask:oe?.deletedRecordId?m=>{const A=e.deletedTasks.find(B=>B.id===m);rt(m,A?.taskId)}:void 0,handlePermanentlyDeleteDeletedTask:oe?.deletedRecordId?m=>{window.confirm("Permanently delete this task? This cannot be undone.")&&(lr(m),I(),p("tasks"))}:void 0,onAskAgent:Ay}),n.jsx(eg,{notice:D?{message:D,tone:"error"}:rs,onDismiss:()=>{aa(),na()},placement:"task"})]}),n.jsx(S_,{editingTaskId:U,initialActivityEntryId:e.initialActivityEntryId,title:ie,description:Z,checklistItems:Re,category:ye,type:ve,priority:Le,complexity:V,manualComplexityEnabled:He,assignee:ke,scheduledDate:we,dueDate:le,formTaxonomies:xe,onTaxonomyChange:(m,A)=>N(B=>({...B,[m]:A})),taxonomies:qe,comments:X,newCommentText:Ae,contextFiles:he,currentWorkspaceId:at,currentActorId:Dr,apiBaseUrl:Pm,runtimeMode:Ut,showImageReviews:!0,descriptionFocused:Xe,showMarkdownHelp:G,checklistEnabled:ce,categories:g,types:ge,priorities:_e,taxonomyDisplayLabels:Be,assigneeOptions:Dt,workstreams:e.workstreams,initiatives:e.initiatives,copiedId:Ge,onTitleChange:H,onTitleDraftChange:be,onDescriptionChange:me,onDescriptionDraftChange:Ve,onChecklistItemsChange:je,onCategoryChange:ue,onTypeChange:Pe,onPriorityChange:se,onComplexityChange:W,onAssigneeChange:Y,onScheduledDateChange:q,onDueDateChange:$e,onNewCommentTextChange:Te,onDescriptionFocusedChange:ae,onShowMarkdownHelpChange:Ie,onOpenSettings:m=>{Tt(m),p("settings")},onSubmit:$,commentsEndRef:Hn,onAddComment:()=>Fe(Ae),taskReferences:kw,onAddContextFile:m=>{Si(A=>[...A,m])},onRemoveContextFile:async m=>{Si(A=>A.filter((B,Se)=>Se!==m))},onUpdateContextCaption:(m,A)=>{Si(B=>B.map((Se,Oe)=>Oe!==m?Se:typeof Se=="string"?{path:Se,caption:A,timestamp:new Date().toISOString()}:{...Se,caption:A}))},onOpenContextImage:m=>{Ef(m,{ownerType:"task",ownerId:U,ownerReferenceLabel:hs(oe),workspaceId:at})},onCopyId:F,onToggleInProgress:Ne,onToggleReview:ut,onToggleComplete:Ce,onToggleCancel:mt,onSetStatus:bl,onArchiveTask:Ue,onUnarchive:m=>{if(oe?.isDeleted){const A=Ii.get(m);if(!A)return;rt(A.id,A.taskId);return}kt(m)},currentTask:oe})]}),n.jsx(Ro,{isOpen:f==="settings",onClose:cm,title:"Settings",size:"xl",theme:ur,draggable:!0,isSettings:!0,closeOnOverlayClick:!1,children:n.jsx(o.Suspense,{fallback:n.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"2rem"},children:n.jsx(Ln,{size:20,className:x.spinner})}),children:n.jsx(jS,{settingsModel:{...Tr,onOpenCloudAuth:T},onSectionChange:Tt})})}),n.jsx(WG,{prompt:vr,theme:ur,onClose:sa,onConfirm:Ur}),n.jsx($G,{isOpen:Rm,theme:ur,onClose:xp,onConfirm:Jg}),n.jsx(BG,{isOpen:Dg,theme:ur,onClose:()=>Xi(!1),supportMailtoHref:ey,onOpenSettings:()=>{Xi(!1),p("settings"),Tt("general")}}),n.jsx(mG,{isOpen:oi,theme:ur,displayName:zd,email:sc,avatarDisplayUrl:Nl,accountBadgeInitial:Yd,profileSaveBusy:Cm,profileAvatarBusy:Ap,profileSaveError:Cp,profileSaveNotice:_p,cloudAuthEnabled:$t,availableAuthProviders:ea,billingLoading:$c,billingError:Fc,billingActionError:ci,billingNotice:bm,billingActionBusy:Fd,billingIntervalChoice:di,accountProfileSummary:Zn,onClose:ny,onSaveProfile:()=>{oy()},onDisplayNameChange:Sm,onOpenAvatarManager:()=>{ro(null),no(null),Ps(!0)},onFetchLoginMethods:Xn,onUnlinkLoginMethod:va,onAddPassword:Cr,onChangePassword:cn,onLinkProvider:m=>zn(m),onBillingIntervalChange:bp,onRefreshBilling:()=>{ui()},onUpdateInterval:()=>{ly()},onManageBilling:()=>{Mm()},onOpenPlans:()=>{ls(!1),cy()}}),n.jsx(LG,{isOpen:mp,theme:ur,title:"Edit Profile Photo",currentImageUrl:Nl,fallbackInitial:Yd,accept:aX,busy:Ap,hasPendingImage:!!Ia,canRemove:!!Nl,error:Cp,notice:_p,onClose:()=>Ps(!1),onApplyImage:ay,onRemoveImage:Nm,onDiscardPendingImage:sy}),n.jsx(BK,{isOpen:xi,theme:ur,teamPlanMode:mm,teamMgmtError:Wg,teamManagementTab:fm,teamUsersLoading:$g,teamUsers:yp,teamActionBusyUserId:Ug,teamInviteFeedback:zg,teamInviteEmail:kp,teamInviteRole:Wd,teamInvitePermissionMode:eo,teamInviteBusy:ym,pendingInvites:$r,teamAuditLoading:Vg,teamAuditEvents:Gg,teamAuditPage:Bc,teamAuditPages:ha,teamAuditHasMore:qg,onClose:()=>pm(!1),onOpenMembersTab:()=>{Ld("members"),Dl()},onOpenInvitesTab:()=>Ld("invites"),onOpenAuditTab:()=>{Ld("audit"),ic(Bc)},onMemberRoleChange:(m,A)=>{Wt(m,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(m)}/role`,{method:"PATCH",headers:{"Content-Type":"application/json",...Hs()},credentials:"include",body:JSON.stringify({workspaceId:Ri,role:A})}))},onMemberPermissionChange:(m,A)=>{Wt(m,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(m)}/permission-mode`,{method:"PATCH",headers:{"Content-Type":"application/json",...Hs()},credentials:"include",body:JSON.stringify({workspaceId:Ri,mode:A})}))},onToggleMemberDisabled:(m,A)=>{Wt(m,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(m)}/disable`,{method:"PATCH",headers:{"Content-Type":"application/json",...Hs()},credentials:"include",body:JSON.stringify({workspaceId:Ri,disabled:A})}))},onRevokeInvite:m=>{Wt(m,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(m)}/invite/revoke`,{method:"POST",headers:{"Content-Type":"application/json",...Hs()},credentials:"include",body:JSON.stringify({workspaceId:Ri})}))},onRemoveMember:m=>{Wt(m,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(m)}?workspaceId=${encodeURIComponent(Ri)}`,{method:"DELETE",headers:Hs(),credentials:"include"}))},onInviteEmailChange:vp,onInviteRoleChange:$d,onInvitePermissionModeChange:ia,onSubmitInvite:()=>{tr()},onLoadAuditPrevious:()=>{ic(Bc-1)},onLoadAuditNext:()=>{ic(Bc+1)}}),n.jsx(RV,{isOpen:Lg,theme:ur,onClose:()=>hp(!1),onConfirm:()=>te({intent:"create-workspace"})}),n.jsx(OK,{isOpen:xl,theme:ur,currentWorkspaceLabel:Rp,syncStatus:Op,syncStatusMeta:cw,workspaceCloudSyncEnabled:Tl,syncControlBusy:Zg,canManageWorkspaceSync:Tm,workspaceSyncSummary:Ei.summary,workspaceSyncRecommendedAction:Ei.recommendedAction,workspaceSyncRepairBusy:II,referenceMismatchCount:iw,syncStageLabel:TI,workspaceSyncPendingChanges:dy,incomingCloudChanges:Ha?.incomingCloudChanges||"Unknown",formattedLastSyncTime:Xv,formattedLastPullTime:Jv,formattedLastPushTime:Qv,syncLastError:rw,activeReferenceMismatchSummaries:bI,syncDiagnosticsSummary:yI,syncEventRows:wI,syncEventsListRef:kI,workspaceSyncRepairQueued:SI,workspaceSyncBusy:ew,workspaceSyncCopied:AI,coordinatorOwnershipMode:Lp,coordinatorOwnershipTransferBusy:py,coordinatorOwnershipTransferDisabled:hI,onClose:Rl,onToggleWorkspaceSync:m=>{ac(m)},onRepairSync:_I,onCopyReport:()=>{CI()},onRetrySync:()=>{Qe().catch(()=>{})},onTransferCoordinatorOwnership:()=>{gI()}}),n.jsx(UK,{isOpen:!!rl,onKeepEditing:()=>oa(null),onDiscard:()=>{const m=rl;oa(null),Fn.current=!0,m?.(),window.setTimeout(()=>{Fn.current=!1},0)},theme:ur}),Pa&&yc.createPortal(n.jsx("div",{className:`${Jt.overlay} ${Jt.unsavedOverlay}`,style:{zIndex:2e3},children:n.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${Jt.modal} ${Jt.unsavedModal}`,"data-theme":ur,children:[n.jsx("div",{className:`tf-modal-header ${Jt.unsavedHeader}`,children:n.jsxs("div",{className:`tf-modal-title ${Jt.unsavedTitle}`,children:[n.jsx(od,{size:20}),"Unsaved Changes"]})}),n.jsx("div",{className:`${Jt.form} ${Jt.unsavedContent}`,children:n.jsx("p",{className:Jt.unsavedText,children:"You have unsaved changes. Would you like to save them?"})}),n.jsxs("div",{className:`${Jt.formActions} ${Jt.unsavedActions}`,children:[n.jsx("button",{className:x.cancelBtn,onClick:()=>Gs(!1),title:"Close dialog and continue editing",children:"Keep Editing"}),n.jsx("button",{className:x.destructiveBtn,onClick:gi,title:"Discard unsaved changes and leave",children:"Discard"}),n.jsxs("button",{className:x.submitBtn,onClick:ba,disabled:L,title:"Save changes and leave",children:[L?n.jsx(Ln,{size:16,className:x.spinner}):n.jsx(zS,{size:16}),"Save"]})]})]})}),document.body),ks&&yc.createPortal(n.jsx("div",{className:In.overlay,children:n.jsxs("div",{className:In.browser,children:[n.jsxs("div",{className:In.header,children:[n.jsxs("div",{className:In.pathInfo,children:[n.jsx(gc,{size:14}),n.jsx("span",{children:Ra||"Project Root"})]}),n.jsxs("div",{className:In.actions,children:[Ra&&n.jsx("button",{className:x.helpLink,onClick:()=>{const m=Ra.split("/").filter(Boolean);m.pop(),vs(m.length?m.join("/")+"/":"")},children:"Back"}),n.jsx("button",{className:x.helpLink,onClick:()=>Eo(!1),children:"Close"})]})]}),n.jsxs("div",{className:In.list,children:[Qa&&typeof Qa=="object"&&n.jsxs("div",{className:`${In.item} ${In.itemFile} ${In.itemCurrent}`,onClick:()=>ln(Ra),children:[n.jsx(hi,{size:14})," Select Current: ./",Ra||"(root)"]}),xa.map(m=>n.jsxs("div",{className:In.item,onClick:()=>vs(Ra+m+"/"),children:[n.jsx(gc,{size:14})," ",m,"/"]},m)),Ja.map(m=>n.jsxs("div",{className:`${In.item} ${In.itemFile}`,onClick:()=>ln(Ra+m),children:[n.jsx(Sf,{size:14})," ",m]},m)),xa.length===0&&Ja.length===0&&n.jsx("div",{className:`${In.item} ${In.empty}`,children:"No items found"})]})]})}),document.body)]})}function lX(e){const t=e.setupState,r=e.runtimeMode,a=e.isAuthenticated,s=!!(t&&r==="cloud"&&a&&t.globalSetupState==="missing"),i=!!(t&&r==="local"&&t.globalSetupState==="missing"),l=!!(t&&r==="cloud"&&a&&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"),v=y||k;return{setupGateActive:d,needsGlobalSetup:g,needsWorkspaceSetup:h,hasSetupReadError:v,phase:v?"setup-read-error":g?"needs-global-setup":h?"needs-workspace-setup":"ready"}}const lk="/taskforce/assets/taskforce-BxLPokNB.png";function LS(e){return{categories:!!e?.categories?.length,types:!!e?.types?.length,priorities:!!e?.priorities?.length}}function dk(e){return(Array.isArray(e)?e:[]).map(t=>String(t.label||t.value||"").trim()).filter(Boolean).join(", ")}function uk(e={}){const t=new URLSearchParams;t.set("screen","plans");for(const[r,a]of Object.entries(e)){const s=String(a||"").trim();s&&t.set(r,s)}return`/?${t.toString()}`}function Vl(e,t){const r=String(t||"").trim();if(!r.startsWith("/")||r==="/")return e;try{const a=new URL(e,"https://taskforce.local");return a.searchParams.set("next",r),`${a.pathname}${a.search}${a.hash}`}catch{return e}}function OS({config:e={},initialTaskId:t,initialActivityEntryId:r,onTaskCountChange:a,onHeaderMouseDown:s,isDragging:i,onClose:l,mode:c="standalone"}){const d=rA(),f=o.useMemo(()=>new URLSearchParams(d.search),[d.search]),p=String(f.get(fi.workspaceId)||"").trim()||void 0,g=String(t||f.get(fi.task)||"").trim()||void 0,h=String(r||f.get(fi.activity)||f.get(fi.comment)||"").trim()||void 0,y=String(f.get("planId")||"").trim(),k=String(f.get("planVersionId")||"").trim(),v=String(f.get("interval")||"").trim(),C=d.pathname==="/pricing",S=d.pathname==="/plans",w=d.pathname==="/"&&String(f.get("screen")||"").trim().toLowerCase()==="plans",_=uk(),M=uk({gate:"plan_selection_required"}),R=tA(),[P,b]=o.useState(""),[$,I]=o.useState(""),[E,K]=o.useState(""),[U,L]=o.useState(""),[D,ie]=o.useState("login"),[H,be]=o.useState(""),[Z,me]=o.useState(!1),[Ve,Re]=o.useState(null),[je,ye]=o.useState(null),[ue,ve]=o.useState(null),[Pe,Le]=o.useState(!1),[se,V]=o.useState(""),[W,z]=o.useState(""),[fe,ke]=o.useState(null),[Y,we]=o.useState(null),[q,le]=o.useState("unknown"),[$e,re]=o.useState(!1),[de,He]=o.useState([]),[ce,pe]=o.useState(null),[xe,N]=o.useState(null),[X,Ae]=o.useState(null),[Te,he]=o.useState(!1),[ot,We]=o.useState(0),[Xe,ae]=o.useState(0),[G,Ie]=o.useState(()=>Date.now()),[Fe,it]=o.useState("core"),[Me,qe]=o.useState(!1),[ge,_e]=o.useState(null),[Be,Ge]=o.useState(null),[F,Ne]=o.useState(""),[Ce,ut]=o.useState(""),[mt,Ue]=o.useState("local"),[wt,kt]=o.useState("details"),[rt,Ht]=o.useState([]),[lr,rr]=o.useState(""),[wr,st]=o.useState(!1),[zt,Lt]=o.useState(null),[Mt,Ee]=o.useState(!1),[ct,lt]=o.useState(null),[Je,nt]=o.useState(!1),Ct=o.useRef(!1),Rt=o.useMemo(()=>TC(),[]),[Dt,It]=o.useState(Rt),[Qt,ir]=o.useState(()=>Rt.find(oe=>oe.isDefaultStarter)?.id||Rt[0]?.id||""),[dr,sr]=o.useState(()=>LS(Rt.find(oe=>oe.isDefaultStarter)||Rt[0]||null)),[pr,Jr]=o.useState(!1),[Tr,br]=o.useState(null),[ur,Qr]=o.useState(!1),[Hr,Gt]=o.useState(null),[bt,gr]=o.useState(!1),u=V1({config:e,initialTaskId:g,initialActivityEntryId:h,requestedWorkspaceId:p,onTaskCountChange:a,onClose:l}),{runtimeMode:ht,workspaceSwitchingEnabled:yr,currentWorkspaceId:Er,cloudAuthConfigured:mn,authRequiredForApi:qt,authBlocked:Vr,isAuthenticated:Tt,hasBetaAccess:Ut,authSessionResolved:fr,setupState:$t,runtimeCapabilities:Mr,refreshSetupContext:Fr,retryBootstrapChecks:Vt,createWorkspace:Dr,saveWorkspaceProfile:Ye,fetchWorkspaces:en,applyWorkspaceSyncStateSnapshot:bn,workspaceCloudSyncEnabled:tn,workspaceSyncPhase:ft,workspaceSyncSetupIntent:rn,workspaceSyncSummary:Nt,workspaceSyncRecommendedAction:or,workspaceSyncBusy:xr,workspaceLastErrorMessage:hn,retryWorkspaceCloudSync:ys,settingsModel:Nn,fetchTasks:Sn,bootstrapState:kr,loginWithCredentials:cr,beginOAuthLogin:Wr,availableAuthProviders:on,registerWithCredentials:dt,requestEmailVerification:Un,confirmEmailVerification:Tn,requestPasswordReset:jn,confirmPasswordReset:an,inspectInviteAcceptance:Ds,acceptInviteWithToken:da,joinInviteWithToken:J,authUserEmail:Qe,currentTheme:St,logout:Xt}=u,at=o.useCallback(async(oe,yt)=>{const Yt=await fetch("/api/taskforce/ui-state",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:oe,stateKey:"workspace-sync",patch:yt})}),vr=await Yt.json().catch(()=>({}));if(!Yt.ok||vr?.success===!1)throw new Error(vr?.error||`Failed to configure workspace sync (${Yt.status})`);return vr},[]),Ft=o.useMemo(()=>Dt.find(oe=>oe.id===Qt)||Dt.find(oe=>oe.isDefaultStarter)||Dt[0]||null,[Qt,Dt]);sA(St);const Lr=Kk,Nr=o.useMemo(()=>{const oe=String(e.cloudAuthBaseUrl||e.apiBaseUrl||"").trim();return oe?oe.replace(/\/+$/,""):""},[e.apiBaseUrl,e.cloudAuthBaseUrl]),Rr=ht==="cloud"||Mr?.runtimeMode==="cloud",Kt=!Rr&&mn&&!!Nr,Bn=typeof window<"u"&&/^app\./i.test(window.location.hostname),Xn=ht==="cloud"&&qt,va=ht==="cloud"&&Vr,Cr=d.pathname==="/login",cn=d.pathname==="/setup",kn=d.pathname==="/coming-soon",zn="/setup?step=workspace&source=cloud&postAuth=select-cloud-workspace",ea=!Rr&&mt==="cloud",La=ea&&Kt,mr=o.useMemo(()=>{if(ct)return ct;if(rn!=="attach-cloud-import")return null;const oe=String(Er||"").trim();if(!oe||oe.toLowerCase()==="default")return null;const yt=rt.find(Yt=>Yt.id===oe);return{workspaceId:oe,name:yt?.name||oe}},[rt,Er,ct,rn]),Zo=!!(mr&&Er===mr.workspaceId),Za=!!(mr&&Zo&&ft==="error"),ks=!!(mr&&Zo&&tn&&ft==="active"&&!xr),Eo=o.useMemo(()=>{if(!mr)return[];const oe=Me?"In progress":"Complete",yt=Za?"Needs attention":xr||ft==="attach-cloud"?"In progress":ft==="active"?"Complete":"Waiting",Yt=Je?"In progress":ks?"Ready":"Waiting";return[`Connect workspace: ${oe}`,`Import cloud data: ${yt}`,`Open local workspace: ${Yt}`]},[mr,Me,Za,xr,ft,Je,ks]),xa=Bn?(!Tt||Vr)&&!C&&!S&&!w:(Xn&&!Tt||va)&&!C&&!S&&!w,Ja=ht==="cloud"&&Tt&&!Ut&&!C&&!S&&!w,Ra=ht==="cloud"&&Tt&&fr&&Hr?.canAccessApp===!1&&Hr?.canAccessPlans!==!1&&!C&&!S&&!w,vs=ht==="cloud"&&Tt&&(!fr||!bt),Qa=mn,ws=o.useMemo(()=>{switch(D){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"}},[D]),ln=o.useMemo(()=>String(new URLSearchParams(d.search).get("step")||"").trim().toLowerCase(),[d.search]),Oa=o.useMemo(()=>String(new URLSearchParams(d.search).get("intent")||"").trim().toLowerCase(),[d.search]),yn=cn&&ln==="workspace"&&Oa==="create-workspace",Vs=c!=="widget"&&kr.authPending&&!Cr&&!cn&&!C&&!S&&!w&&(ht==="cloud"||Bn),Mn=o.useMemo(()=>lX({setupState:$t?{globalSetupState:$t.globalSetupState,workspaceSetupState:$t.workspaceSetupState,runtimeMode:$t.runtimeMode,workspaceId:$t.workspaceId,mode:$t.mode,forceSetup:$t.forceSetup,forceGlobalSetup:$t.forceGlobalSetup,forceWorkspaceSetup:$t.forceWorkspaceSetup}:null,runtimeMode:ht,isAuthenticated:Tt}),[$t,ht,Tt]),Ls=Mn.setupGateActive,vt=Mn.needsGlobalSetup,nr=Mn.needsWorkspaceSetup,nn=Mn.hasSetupReadError,vn=c!=="widget"&&kr.auth.resolved&&!xa&&!Ja&&!C&&!S&&!w&&!Cr&&kr.appPending&&(cn||ht==="cloud"||Bn),ta=ht==="cloud"&&Pe&&!w,ho=kr.subtitle,Os=yn||cn&&!!mr||cn&&Ls&&(nn||vt||nr),wa=o.useMemo(()=>Vs?"auth-bootstrap":ta||vn?"app-bootstrap":Cr?"login":xa&&!Cr?"login-redirect":kn&&Ja?"coming-soon":Os?"guided-setup":"app",[kn,Cr,Ja,xa,ta,Vs,vn,Os]),Bs=o.useCallback((oe,yt,Yt)=>{const vr=String(oe||"").trim().toLowerCase(),Ur=String(yt||"").trim().toLowerCase();return!!(!vr||vr==="system default workspace"||Ur&&vr===Ur)},[]);o.useEffect(()=>{const oe=$t?.mode==="operations"?"operations":"core";it(oe)},[$t?.mode]),o.useEffect(()=>{if(ht!=="cloud"||!Tt){Gt(null),gr(!1);return}if(!fr){Gt(null),gr(!1);return}Gt(null),gr(!1);let oe=!1;return(async()=>{try{const yt=await fetch("/api/taskforce/account/access-status",{method:"GET",credentials:"include"}),Yt=await yt.json().catch(()=>({}));if(oe)return;if(!yt.ok){Gt(null),gr(!0);return}const vr=String(Yt?.gate||"").trim().toLowerCase();if(vr!=="ok"&&vr!=="plan_selection_required"&&vr!=="checkout_pending"&&vr!=="misconfigured"&&vr!=="missing_entitlement"){Gt(null),gr(!0);return}Gt({gate:vr,canAccessApp:Yt?.canAccessApp===!0,canAccessPlans:Yt?.canAccessPlans!==!1,message:typeof Yt?.message=="string"?Yt.message:null}),gr(!0)}catch{oe||(Gt(null),gr(!0))}})(),()=>{oe=!0}},[fr,Tt,ht,d.pathname,d.search]),o.useEffect(()=>{if(yn){Ne(""),ut("");return}if(!$t)return;const oe=String($t.workspace?.name||"").trim(),yt=String($t.suggestedWorkspaceName||"").trim(),Yt=Bs(oe,$t.workspaceId,$t.workspace?.description)?yt:oe;Ne(Yt||yt||oe),ut(String($t.workspace?.description||""))},[$t?.workspace?.name,$t?.workspace?.description,$t?.suggestedWorkspaceName,$t?.workspaceId,yn,Bs]),o.useEffect(()=>{if(!cn||ln!=="workspace")return;if(kt("details"),mr&&Kt){Ue("cloud"),Ee(!1);return}if(String(new URLSearchParams(d.search).get("source")||"").trim().toLowerCase()==="cloud"&&Kt){Ue("cloud"),Ee(!1);return}Ue("local")},[mr,Kt,cn,d.search,ln]);const Xa=o.useCallback(async()=>{if(!Kt||!Tt){Ht([]),rr("");return}st(!0),Lt(null);try{const oe=await fetch(`${Nr}/api/taskforce/workspaces`,{method:"GET",credentials:"include"}),yt=await oe.json().catch(()=>({}));if(!oe.ok||yt?.success===!1){Ht([]),rr(""),Lt(yt?.error||`Failed to load cloud projects (${oe.status})`);return}const Yt=Array.isArray(yt?.workspaces)?yt.workspaces.map(vr=>({id:String(vr?.id||"").trim(),name:String(vr?.name||vr?.id||"").trim(),description:typeof vr?.description=="string"?vr.description:null})).filter(vr=>vr.id.length>0):[];Ht(Yt),rr(vr=>vr&&Yt.some(Ur=>Ur.id===vr)?vr:Yt[0]?.id||"")}catch{Ht([]),rr(""),Lt("Failed to load cloud projects.")}finally{st(!1)}},[Kt,Tt,Nr]);o.useEffect(()=>{mt==="cloud"&&Xa()},[Xa,mt]),o.useEffect(()=>{if(!cn||ln!=="workspace"||mt==="cloud")return;let oe=!1;return Jr(!0),br(null),fetch("/api/taskforce/taxonomy-library",{method:"GET",credentials:"include"}).then(async yt=>{if(!yt.ok)throw new Error(`Failed to load setup libraries (${yt.status})`);const Yt=await yt.json().catch(()=>({})),vr=Array.isArray(Yt?.packs)?Yt.packs:[];oe||vr.length===0||(It(vr),ir(Ur=>vr.some(sa=>sa.id===Ur)?Ur:vr.find(sa=>sa.isDefaultStarter)?.id||vr[0]?.id||""))}).catch(yt=>{oe||(It(Rt),br(yt instanceof Error?yt.message:"Failed to load setup libraries."))}).finally(()=>{oe||Jr(!1)}),()=>{oe=!0}},[Rt,cn,ln,mt]),o.useEffect(()=>{sr(LS(Ft))},[Qt,Ft]),o.useEffect(()=>{mt==="cloud"&&kt("details")},[mt]),o.useEffect(()=>{La||(lt(null),nt(!1),Ct.current=!1)},[La]),o.useEffect(()=>{!Za||!mr||(Ge(null),_e(hn||`Failed to import "${mr.name}" from cloud. Retry import to continue.`))},[mr,Za,hn]),o.useEffect(()=>{if(!ks||!mr||Ct.current)return;let oe=!1;return Ct.current=!0,nt(!0),_e(null),Ge(`Workspace import complete. Opening ${mr.name}...`),(async()=>{try{if(await Fr(),await Promise.all([en(),Sn(!0)]),oe)return;await at(mr.workspaceId,{setupIntent:null}),bn({enabled:tn,phase:ft,setupIntent:null}),lt(null),R("/",{replace:!0})}catch{if(oe)return;Ge(null),_e(`Imported "${mr.name}" but failed to finish opening it.`),nt(!1),Ct.current=!1}})(),()=>{oe=!0}},[mr,bn,Sn,en,ks,R,at,Fr]);const Xr=o.useMemo(()=>{const oe=new URLSearchParams(d.search).get("next")||"/";if(oe.startsWith("/"))return oe==="/login"?"/":oe;try{const yt=new URL(oe),Yt=yt.hostname.toLowerCase(),vr=Yt==="localhost"||Yt==="127.0.0.1"||Yt==="::1",Ur=Yt==="taskforcehq.ai"||Yt.endsWith(".taskforcehq.ai");if((yt.protocol==="http:"||yt.protocol==="https:")&&(vr||Ur))return yt.toString()}catch{return"/"}return"/"},[d.search]),Ar=o.useMemo(()=>Xr.startsWith("/")?Xr:"/",[Xr]),An=o.useCallback((oe,yt)=>{if(oe){if(oe.startsWith("/")){R(oe,{replace:yt?.replace===!0});return}typeof window<"u"&&(yt?.replace===!0?window.location.replace(oe):window.location.assign(oe))}},[R]),es=o.useMemo(()=>{try{const oe=new URL(Ar,"https://taskforce.local");return oe.pathname==="/setup"&&oe.searchParams.get("step")==="workspace"&&oe.searchParams.get("source")==="cloud"&&oe.searchParams.get("postAuth")==="select-cloud-workspace"}catch{return!1}},[Ar]),Wn=o.useCallback((oe=Xr)=>{const yt=es?zn:"/setup?step=workspace";return es?yt:Vl(yt,oe)},[Xr,es]),ra=v==="year"?"year":"month",ts=o.useCallback(oe=>!!(oe?.planSelectionRequired||oe?.checkoutPending||oe?.commercialState==="pending_plan_selection"||oe?.commercialState==="checkout_pending"),[]),rs=o.useCallback(oe=>oe?.planSelectionRequired||oe?.commercialState==="pending_plan_selection"?Vl(M,Xr):oe?.checkoutPending||oe?.commercialState==="checkout_pending"?Vl(uk({gate:"checkout_pending",checkout:k?"start":null,planId:y||null,planVersionId:k||null,interval:k?ra:null}),Xr):Xr,[Xr,M,ra,y,k]),na=o.useMemo(()=>{const oe=String(new URLSearchParams(d.search).get("mode")||"").trim().toLowerCase();return oe==="register"?Qa?"register":"login":oe==="verify"||oe==="forgot"||oe==="reset"||oe==="invite"?oe:"login"},[Qa,d.search]),aa=o.useMemo(()=>String(new URLSearchParams(d.search).get("token")||"").trim(),[d.search]),un=o.useCallback(oe=>{const yt=new URLSearchParams(d.search),Yt=oe==="register"&&!Qa?"login":oe;Yt==="login"?yt.delete("mode"):yt.set("mode",Yt);const vr=yt.toString();R(`/login${vr?`?${vr}`:""}`,{replace:!0})},[Qa,d.search,R]);o.useEffect(()=>{Cr&&(ie(na),na==="verify"&&aa&&be(aa),na==="reset"&&aa&&V(aa),na==="invite"&&aa&&z(aa))},[Cr,na,aa]),o.useEffect(()=>{D!=="verify"&&(Cr&&na==="verify"||(me(!1),Re(null),ye(null)))},[D,Cr,na]),o.useEffect(()=>{D!=="register"&&L("")},[D]),o.useEffect(()=>{if(!ue||!Tt||!ue.commercialOnboardingGate&&(!fr||vs))return;const oe=!ue.commercialOnboardingGate&&ue.workspaceSetupRequired?Wn():ue.path,yt=`${d.pathname}${d.search}${d.hash||""}`;if(oe.startsWith("/")){yt!==oe&&R(oe,{replace:!0});return}An(oe,{replace:!0})},[fr,vs,Tt,d.hash,d.pathname,d.search,R,An,ue,Wn]),o.useEffect(()=>{if(!Pe||!fr)return;if(!Tt){Le(!1),ve(null);return}if(bt&&Hr?.canAccessApp===!0){b(""),I(""),K(""),L(""),ve(null),Le(!1);return}const oe=ue?.commercialOnboardingGate?ue.path:M,yt=`${d.pathname}${d.search}${d.hash||""}`;if(oe.startsWith("/")){yt!==oe&&R(oe,{replace:!0});return}An(oe,{replace:!0})},[Hr?.canAccessApp,bt,fr,Pe,Tt,d.hash,d.pathname,d.search,R,An,ue,M]),o.useEffect(()=>{if(!ue||!Tt)return;const oe=!ue.commercialOnboardingGate&&ue.workspaceSetupRequired?Wn():ue.path;`${d.pathname}${d.search}${d.hash||""}`===oe&&(ue.commercialOnboardingGate||(b(""),I(""),K(""),L(""),ve(null)))},[d.hash,d.pathname,d.search,Tt,ue,Wn,ht]),o.useEffect(()=>{Cr&&(document.title=ws)},[ws,Cr]),o.useEffect(()=>{if(!Cr||D!=="invite"||!W.trim())return;let oe=!0;return(async()=>{const yt=await Ds(W);if(oe)if(yt.success){ke(yt.email||null),we(yt.workspaceId||null),re(yt.passwordRequired===!0);const Yt=(yt.availableMethods||[]).filter(sa=>sa==="google"||sa==="github"||sa==="apple");He(yt.inviteeState==="pending_setup"?Yt:[]);const vr=!!(Tt&&Qe&&yt.email&&Qe.trim().toLowerCase()===yt.email.trim().toLowerCase()),Ur=yt.passwordRequired===!0?"new_user":vr?"existing_user_ready":"existing_user_signed_out";le(Ur),pe(Ur==="new_user"?"Create your account password to join this workspace.":Ur==="existing_user_ready"?"Invite ready. Confirm to join this workspace.":"Sign in with the invited account to join this workspace."),N(null),Ae(null)}else ke(null),we(null),le("invalid"),re(!1),He([]),N(ua(yt)),Ae(yt.code||yt.state||null)})(),()=>{oe=!1}},[Cr,D,W,Ds,Tt,Qe]),o.useEffect(()=>{D==="invite"&&q==="existing_user_signed_out"&&fe&&b(oe=>oe.trim()?oe:fe)},[D,q,fe]),o.useEffect(()=>{if(!(ot>Date.now()||Xe>Date.now()))return;const yt=window.setInterval(()=>Ie(Date.now()),1e3);return()=>window.clearInterval(yt)},[ot,Xe]);const bs=Math.max(0,Math.ceil((ot-G)/1e3)),Ws=Math.max(0,Math.ceil((Xe-G)/1e3)),go=bs>0,pn=Ws>0,Hn=o.useMemo(()=>T_(),[]),ua=oe=>{const yt=oe.error||"Request failed.",Yt=oe.code||oe.state;return Yt?`[${Yt}] ${yt}`:yt},Pa=oe=>oe?.deliveryAttempted===!1?oe?.intro||"If that account exists and still needs verification, we sent an email.":oe?.emailSent===!1?`Verification email failed to send. ${oe?.emailError||"Try Resend Verification again."}`:"Verification email resent.",Gs=oe=>oe?.deliveryAttempted===!1?"If that account exists, we sent password reset instructions.":oe?.emailSent===!1?`Password reset email failed to send. ${oe?.emailError||"Try again in a minute."}`:"Password reset instructions sent.";o.useEffect(()=>{if(c==="widget"||Cr&&Te)return;const oe=`${d.pathname}${d.search}${d.hash||""}`,yt=cn?Xr:oe,Yt=ht==="cloud"&&Tt&&bt&&Hr?.canAccessApp===!1&&Hr?.canAccessPlans!==!1;if(kr.workspace.pending&&!Yt)return;if(Ja){kn||R("/coming-soon",{replace:!0});return}if(kn&&!Ja){R("/",{replace:!0});return}if(xa){if(!Cr){const Ur=`${d.pathname}${d.search}${d.hash}`;R(`/login?next=${encodeURIComponent(Ur||"/")}`,{replace:!0});return}return}else{const Ur=Cr&&D==="invite"&&W.trim().length>0;if(Cr&&Tt&&!Ur&&(!!ue||kr.workspace.pending||D==="register"||D==="verify"||!kr.config.loaded||vs))return;Cr&&Tt&&!Ur&&An(Xr,{replace:!0})}if(!(Cr&&!Tt||ue&&Tt||Cr&&Tt&&(D==="register"||D==="verify"||D==="invite"&&W.trim().length>0))&&!Pe&&!w){if(Ra){if(!w){const Ur=encodeURIComponent(String(Hr?.gate||"plan_selection_required"));R(Vl(`/?screen=plans&gate=${Ur}`,oe),{replace:!0})}return}if(mr){cn&&ln==="workspace"&&new URLSearchParams(d.search).get("source")==="cloud"||R(zn,{replace:!0});return}if(!(w&&vs)&&!(w&&ht==="cloud"&&bt&&Hr?.canAccessApp===!1&&Hr?.canAccessPlans!==!1)){if(Ls){if(nn){(!cn||ln!=="error")&&R(Vl("/setup?step=error",yt),{replace:!0});return}if(vt){(!cn||ln!=="global")&&R(Vl("/setup?step=global",yt),{replace:!0});return}if(nr){(!cn||ln!=="workspace")&&R(Wn(yt),{replace:!0});return}cn&&An(Xr,{replace:!0});return}cn&&$t&&!yn&&An(Xr,{replace:!0})}}},[c,xa,Ja,Ra,Cr,cn,kn,S,w,Hr,Hr?.gate,bt,D,Pe,vs,Ls,$t,nn,yn,mr,vt,nr,ln,kr,ht,Te,Tt,bt,W,d.pathname,d.search,d.hash,R,An,Ar,Xr,ue,zn]),o.useEffect(()=>{if(c==="widget"||ht!=="local"||!kr.config.loaded||Cr||cn)return;const oe=String(Er||"").trim().toLowerCase();if(!oe||oe==="default"){const yt=`${d.pathname}${d.search}${d.hash||""}`;R(Vl("/setup?step=workspace",yt),{replace:!0})}},[c,ht,kr.config.loaded,Cr,cn,Er,d.hash,d.pathname,d.search,R]);const Vn=o.useCallback(async()=>{Qr(!0);try{await Vt()}finally{Qr(!1)}},[Vt]),wn=o.useCallback(async()=>{await Xt(),R("/login",{replace:!0})},[Xt,R]);if(c==="widget")return n.jsx(eH,{...u,initialActivityEntryId:h,onHeaderMouseDown:s,isDragging:i,onClose:l});if(C){const oe=new URLSearchParams(d.search);return oe.set("screen","plans"),n.jsx(Hw,{to:`/?${oe.toString()}${d.hash||""}`,replace:!0})}if(S){const oe=new URLSearchParams(d.search);return oe.set("screen","plans"),n.jsx(Hw,{to:`/?${oe.toString()}${d.hash||""}`,replace:!0})}if(wa==="auth-bootstrap")return n.jsx("div",{className:zr.standaloneWrapper,"data-theme":St,children:n.jsx("div",{className:Ze.loginView,children:n.jsxs("div",{className:Ze.loginCard,children:[n.jsxs("div",{className:Ze.authBrandRow,children:[n.jsx("img",{src:Lr,alt:"Taskforce",className:Ze.loginLogo}),n.jsx("h1",{className:Ze.loginTitle,children:"Loading Taskforce"})]}),n.jsx("p",{className:Ze.loginSubtitle,children:"Checking your session..."})]})})});if(wa==="app-bootstrap")return n.jsx("div",{className:zr.standaloneWrapper,"data-theme":St,children:n.jsx("div",{className:Ze.loginView,children:n.jsxs("div",{className:Ze.loginCard,children:[n.jsxs("div",{className:Ze.authBrandRow,children:[n.jsx("img",{src:Lr,alt:"Taskforce",className:Ze.loginLogo}),n.jsx("h1",{className:Ze.loginTitle,children:"Loading Taskforce"})]}),n.jsx("p",{className:Ze.loginSubtitle,children:ho}),kr.stalled&&n.jsxs(n.Fragment,{children:[n.jsx("p",{className:Ze.loginError,children:kr.error||"Startup checks timed out."}),n.jsx("button",{className:x.submitBtn,disabled:ur,onClick:Vn,children:ur?"Retrying...":"Retry checks"}),Rr&&n.jsx("button",{className:x.cancelBtn,disabled:ur,onClick:wn,children:"Go to sign-in"})]})]})})});if(wa==="login")return n.jsx("div",{className:zr.standaloneWrapper,"data-theme":St,children:n.jsx("div",{className:Ze.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${lk})`},children:n.jsxs("div",{className:Ze.loginCard,children:[!Rr&&!xa&&n.jsx("button",{className:Ze.loginCloseBtn,"aria-label":"Close sign in","data-testid":"auth-close-button",onClick:()=>R(Ar,{replace:!0}),children:"×"}),n.jsxs("div",{className:Ze.authBrandRow,children:[n.jsx("img",{src:Lr,alt:"Taskforce",className:Ze.loginLogo}),n.jsxs("h1",{className:Ze.loginTitle,children:["TASKFORCE ",n.jsx("span",{className:Ze.loginTitleAccent,children:"HQ"})]})]}),n.jsxs("p",{className:Ze.loginSubtitle,children:[D==="login"&&"Sign in with your account credentials.",D==="register"&&"Create your Taskforce account.",D==="verify"&&"Enter your verification token.",D==="forgot"&&"Request a password reset link.",D==="reset"&&"Set a new password using your reset token.",D==="invite"&&(q==="existing_user_ready"?`You've been invited to join ${Y||"this workspace"}.`:q==="existing_user_signed_out"?"Sign in to join this workspace.":"Create your account to join this workspace.")]}),(D==="login"||D==="register"||D==="verify"||D==="forgot"||D==="invite"&&q==="existing_user_signed_out")&&n.jsxs("label",{className:Ze.loginField,children:[n.jsx("span",{className:Ze.loginFieldLabel,children:"Email"}),n.jsx("input",{className:`${x.input} ${Ze.loginInput}`,type:"email",value:P,placeholder:"Email",autoComplete:"email","data-testid":"auth-email-input",onChange:oe=>b(oe.target.value)})]}),D==="register"&&n.jsxs("label",{className:Ze.loginField,children:[n.jsx("span",{className:Ze.loginFieldLabel,children:"Display name"}),n.jsx("input",{className:`${x.input} ${Ze.loginInput}`,type:"text",value:$,placeholder:"Display name",autoComplete:"nickname","data-testid":"auth-display-name-input",onChange:oe=>I(oe.target.value)})]}),(D==="login"||D==="register"||D==="reset"||D==="invite"&&($e||q==="existing_user_signed_out"))&&n.jsxs("label",{className:Ze.loginField,children:[n.jsx("span",{className:Ze.loginFieldLabel,children:D==="reset"?"New password":D==="invite"&&$e?"Create password":"Password"}),n.jsx("input",{className:`${x.input} ${Ze.loginInput}`,type:"password",value:E,placeholder:D==="reset"?"New password":D==="invite"&&$e?"Create password":"Password",autoComplete:D==="register"||D==="reset"||D==="invite"&&$e?"new-password":"current-password","data-testid":"auth-password-input",onChange:oe=>K(oe.target.value)})]}),(D==="register"||D==="invite"&&$e)&&n.jsx(n.Fragment,{children:n.jsxs("label",{className:Ze.loginField,children:[n.jsx("span",{className:Ze.loginFieldLabel,children:"Confirm password"}),n.jsx("input",{className:`${x.input} ${Ze.loginInput}`,type:"password",value:U,placeholder:"Confirm password",autoComplete:"new-password","data-testid":"auth-confirm-password-input",onChange:oe=>L(oe.target.value)})]})}),(D==="register"||D==="invite"&&$e)&&n.jsx("p",{className:Ze.loginSubtitle,children:Hn.join(" ")}),D==="verify"&&n.jsxs("label",{className:Ze.loginField,children:[n.jsx("span",{className:Ze.loginFieldLabel,children:"Verification token"}),n.jsx("input",{className:`${x.input} ${Ze.loginInput}`,type:"text",value:H,placeholder:"Verification token",autoComplete:"one-time-code","data-testid":"auth-verification-token-input",onChange:oe=>be(oe.target.value)})]}),D==="reset"&&n.jsxs("label",{className:Ze.loginField,children:[n.jsx("span",{className:Ze.loginFieldLabel,children:"Reset token"}),n.jsx("input",{className:`${x.input} ${Ze.loginInput}`,type:"text",value:se,placeholder:"Reset token",autoComplete:"one-time-code","data-testid":"auth-reset-token-input",onChange:oe=>V(oe.target.value)})]}),D==="invite"&&n.jsxs(n.Fragment,{children:[n.jsxs("label",{className:Ze.loginField,children:[n.jsx("span",{className:Ze.loginFieldLabel,children:"Invite token"}),n.jsx("input",{className:`${x.input} ${Ze.loginInput}`,type:"text",value:W,placeholder:"Invite token","data-testid":"auth-invite-token-input",onChange:oe=>z(oe.target.value)})]}),fe&&n.jsxs("p",{className:Ze.loginSubtitle,children:["Invite for: ",n.jsx("strong",{children:fe}),Y?` · Workspace: ${Y}`:""]})]}),ce&&n.jsx("p",{className:Ze.loginSubtitle,children:ce}),xe&&n.jsx("p",{className:Ze.loginError,children:xe}),D==="login"&&X==="EMAIL_NOT_VERIFIED"&&P.trim()&&n.jsx("button",{className:Ze.authModeLink,disabled:Te||go,onClick:async()=>{he(!0),pe(null);const oe=await Un(P);oe.success?(We(Date.now()+3e4),un("verify"),oe.verificationToken&&be(oe.verificationToken),pe(Pa(oe)),N(null),Ae(null)):N(ua(oe)),he(!1)},children:go?`Resend in ${bs}s`:"Resend Verification Email"}),n.jsx("div",{className:Ze.authPrimaryActions,role:"group","aria-label":"Primary authentication action",children:n.jsx("button",{className:`${x.submitBtn} ${Ze.loginPrimaryBtn}`,disabled:Te||D==="forgot"&&pn,"data-testid":"auth-submit-button",onClick:async()=>{if(he(!0),pe(null),N(null),Ae(null),D==="register"&&!$.trim()){N("Display name is required."),he(!1);return}if(D==="register"){const yt=Vk(E,{email:P,displayName:$});if(!yt.ok){N(yt.message||"Password does not meet the password policy."),Ae(yt.code||null),he(!1);return}if(E!==U){N("Passwords do not match."),Ae("PASSWORD_CONFIRMATION_MISMATCH"),he(!1);return}}let oe={success:!1};if(D==="login"?oe=await cr(P,E):D==="register"?oe=await dt(P,E,{displayName:$,planId:y||void 0,planVersionId:k||void 0,interval:v||void 0}):D==="verify"?oe=await Tn(H):D==="forgot"?oe=await jn(P):D==="reset"?oe=await an(se,E):D==="invite"&&(q==="existing_user_signed_out"?oe=await cr(P,E):oe=$e?await da(W,E):await J(W)),oe.success)if(D==="register"){const yt=rs(oe),Yt=ts(oe);oe.verificationRequired?(me(!!oe.workspaceSetupRequired),Re(Yt?String(oe.commercialState||"").trim()||(oe.planSelectionRequired?"pending_plan_selection":"checkout_pending"):null),ye(yt),oe.verificationToken&&be(oe.verificationToken),We(Date.now()+3e4),un("verify"),pe(oe.emailSent===!1?`Account created, but verification email failed to send. ${oe.emailError||"Try Resend Verification again."}`:"Account created. Check your email for verification instructions.")):(Le(Yt),ve({path:yt,workspaceSetupRequired:!!oe.workspaceSetupRequired,commercialOnboardingGate:Yt}))}else if(D==="verify"){await Vt();const yt=Ve==="pending_plan_selection"||Ve==="checkout_pending";Le(yt),ve({path:je||Xr,workspaceSetupRequired:Z,commercialOnboardingGate:yt})}else if(D==="forgot"){const yt=oe.deliveryAttempted===!0&&oe.emailSent===!1;oe.resetToken&&V(oe.resetToken),pe(Gs(oe)),yt||(ae(Date.now()+3e4),un("reset"))}else if(D==="reset")un("login"),pe("Password updated. Sign in with your new password.");else if(D==="invite"){if(q==="existing_user_signed_out"){const yt=String(fe||"").trim().toLowerCase(),Yt=P.trim().toLowerCase();if(yt&&Yt===yt){ie("invite"),le("existing_user_ready"),K(""),L(""),pe("Signed in. Review the invite details to continue."),N(null),Ae(null),he(!1);return}yt&&b(fe||""),le("existing_user_signed_out"),K(""),L(""),pe(yt?`Signed in, but this invite is for ${fe}. Sign in with that account to continue.`:"Signed in, but this invite requires the invited account. Sign in with that account to continue."),N("Sign in with the invited account to join this workspace."),Ae("INVITE_ACCOUNT_MISMATCH"),he(!1);return}if(oe.workspaceSetupRequired){R(Wn(),{replace:!0}),he(!1);return}An(Xr,{replace:!0})}else if(D==="login"){if(W.trim()){ie("invite"),K(""),L(""),pe("Signed in. Review the invite details to continue."),he(!1);return}if(oe.workspaceSetupRequired){R(Wn(),{replace:!0}),he(!1);return}b(""),I(""),K(""),L(""),An(Xr,{replace:!0})}else b(""),I(""),K(""),L(""),An(Xr,{replace:!0});else{if(D==="register"&&(oe.code==="SIGNUP_PLAN_NOT_ENABLED"||oe.code==="SIGNUP_PLAN_VERSION_NOT_FOUND"||oe.code==="SIGNUP_PLAN_VERSION_REQUIRED")){R(M,{replace:!0}),he(!1);return}if(N(ua(oe)),Ae(oe.code||null),D==="login"&&(oe.code==="WORKSPACE_NOT_FOUND"||oe.code==="WORKSPACE_ID_REQUIRED")){R("/setup?step=workspace",{replace:!0}),he(!1);return}if(D==="login"&&oe.code==="EMAIL_NOT_VERIFIED"&&P.trim()){const yt=await Un(P);yt.success&&(We(Date.now()+3e4),un("verify"),yt.verificationToken&&be(yt.verificationToken),pe(Pa({...yt,intro:"If that account exists and still needs verification, we sent an email."})),N(null),Ae(null))}D==="register"&&oe.code==="EMAIL_ALREADY_EXISTS_UNVERIFIED"&&P.trim()&&(We(Date.now()+3e4),un("verify"),oe.verificationToken&&be(oe.verificationToken),pe(oe.emailSent===!1?`This email already has an unverified account, but verification email delivery failed. ${oe.emailError||"Try Resend Verification again."}`:"This email already has an unverified account. Check your email for verification instructions."),N(null),Ae(null))}he(!1)},children:Te?"Working...":D==="login"?"Sign In":D==="register"?"Create Account":D==="verify"?"Verify Email":D==="forgot"?pn?`Retry in ${Ws}s`:"Send Reset Link":D==="reset"?"Reset Password":q==="existing_user_signed_out"?"Sign In to Continue":$e?"Create Account and Join":"Join Workspace"})}),(D==="login"||D==="register")&&on.length>0&&n.jsxs("div",{className:Ze.oauthProviders,children:[n.jsx("div",{className:Ze.oauthDivider,children:n.jsx("span",{children:"or continue with"})}),n.jsxs("div",{className:Ze.oauthButtons,children:[on.includes("google")&&n.jsx("button",{type:"button",className:Ze.oauthButton,disabled:Te,onClick:()=>Wr("google",Xr),"aria-label":"Continue with Google",children:"Google"}),on.includes("github")&&n.jsx("button",{type:"button",className:Ze.oauthButton,disabled:Te,onClick:()=>Wr("github",Xr),"aria-label":"Continue with GitHub",children:"GitHub"}),on.includes("apple")&&n.jsx("button",{type:"button",className:Ze.oauthButton,disabled:Te,onClick:()=>Wr("apple",Xr),"aria-label":"Continue with Apple",children:"Apple"})]})]}),D==="invite"&&q==="new_user"&&de.length>0&&n.jsxs("div",{className:Ze.oauthProviders,children:[n.jsx("div",{className:Ze.oauthDivider,children:n.jsx("span",{children:"or join with"})}),n.jsxs("div",{className:Ze.oauthButtons,children:[de.includes("google")&&n.jsx("button",{type:"button",className:Ze.oauthButton,disabled:Te,onClick:()=>Wr("google","/",W),"aria-label":"Join with Google",children:"Google"}),de.includes("github")&&n.jsx("button",{type:"button",className:Ze.oauthButton,disabled:Te,onClick:()=>Wr("github","/",W),"aria-label":"Join with GitHub",children:"GitHub"}),de.includes("apple")&&n.jsx("button",{type:"button",className:Ze.oauthButton,disabled:Te,onClick:()=>Wr("apple","/",W),"aria-label":"Join with Apple",children:"Apple"})]})]}),D==="register"&&n.jsxs("p",{className:Ze.registerConsent,children:["By creating an account, you agree to the"," ",n.jsx("a",{className:Ze.registerConsentLink,href:"https://taskforcehq.ai/legal/terms/",target:"_blank",rel:"noopener noreferrer",children:"Terms of Service"})," ","and acknowledge the"," ",n.jsx("a",{className:Ze.registerConsentLink,href:"https://taskforcehq.ai/legal/privacy/",target:"_blank",rel:"noopener noreferrer",children:"Privacy Policy"}),"."]}),n.jsxs("div",{className:Ze.authSecondaryActions,role:"group","aria-label":"Authentication navigation",children:[Qa&&(D==="login"||D==="register")&&n.jsxs("p",{className:Ze.authModeSwitch,children:[D==="login"?"Need an account?":"Already have an account?"," ",n.jsx("button",{className:Ze.authModeSwitchLink,disabled:Te,"data-testid":"auth-switch-mode-button",onClick:()=>{N(null),Ae(null),pe(null),un(D==="login"?"register":"login")},children:D==="login"?"Register":"Sign In"})]}),n.jsxs("div",{className:Ze.authModeLinks,children:[(D==="login"||D==="register")&&n.jsxs(n.Fragment,{children:[n.jsx("button",{className:Ze.authModeLink,disabled:Te||pn,"data-testid":"auth-forgot-password-button",onClick:()=>{N(null),Ae(null),pe(null),un("forgot")},children:pn?`Forgot Password (${Ws}s)`:"Forgot Password"}),n.jsx("button",{className:Ze.authModeLink,disabled:Te||go,"data-testid":"auth-resend-verification-button",onClick:()=>{N(null),Ae(null),pe(null),un("verify")},children:go?`Resend Verification (${bs}s)`:"Resend Verification"}),n.jsx("button",{className:Ze.authModeLink,disabled:Te,"data-testid":"auth-accept-invite-button",onClick:()=>{N(null),Ae(null),pe(null),un("invite")},children:"Accept Invite"})]}),D!=="login"&&D!=="register"&&n.jsxs(n.Fragment,{children:[D==="verify"&&n.jsx("button",{className:Ze.authModeLink,disabled:Te||go||!P.trim(),"data-testid":"auth-resend-verification-button",onClick:async()=>{he(!0),pe(null),N(null),Ae(null);const oe=await Un(P);oe.success?(We(Date.now()+3e4),oe.verificationToken&&be(oe.verificationToken),pe(Pa(oe))):N(ua(oe)),he(!1)},children:go?`Resend Verification (${bs}s)`:"Resend Verification"}),n.jsx("button",{className:Ze.authModeLink,disabled:Te,"data-testid":"auth-return-sign-in-button",onClick:()=>{N(null),Ae(null),pe(null),un("login")},children:D==="verify"?"Back to Sign In":"Sign In"}),Qa&&D!=="verify"&&n.jsx("button",{className:Ze.authModeLink,disabled:Te,"data-testid":"auth-return-register-button",onClick:()=>{N(null),Ae(null),pe(null),un("register")},children:"Register"}),D==="reset"&&n.jsx("button",{className:Ze.authModeLink,disabled:Te||pn,"data-testid":"auth-return-forgot-password-button",onClick:()=>{N(null),Ae(null),pe(null),un("forgot")},children:pn?`Forgot Password (${Ws}s)`:"Forgot Password"})]})]})]})]})})});if(wa==="login-redirect")return n.jsx("div",{className:zr.standaloneWrapper,"data-theme":St,children:n.jsx("div",{className:Ze.loginView,children:n.jsxs("div",{className:Ze.loginCard,children:[n.jsxs("div",{className:Ze.authBrandRow,children:[n.jsx("img",{src:Lr,alt:"Taskforce",className:Ze.loginLogo}),n.jsx("h1",{className:Ze.loginTitle,children:"Loading Taskforce"})]}),n.jsx("p",{className:Ze.loginSubtitle,children:"Redirecting to sign in..."})]})})});if(wa==="coming-soon")return n.jsx("div",{className:zr.standaloneWrapper,"data-theme":St,children:n.jsx("div",{className:Ze.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${lk})`},children:n.jsxs("div",{className:Ze.loginCard,children:[n.jsxs("div",{className:Ze.authBrandRow,children:[n.jsx("img",{src:Lr,alt:"Taskforce",className:Ze.loginLogo}),n.jsx("h1",{className:Ze.loginTitle,children:"Beta Access"})]}),n.jsx("p",{className:Ze.loginSubtitle,children:"You are signed in, but your account does not have beta access yet."}),n.jsx("p",{className:Ze.loginSubtitle,children:"You will see the full app as soon as beta access is enabled."}),n.jsx("button",{className:x.cancelBtn,onClick:async()=>{await u.logout(),R("/login",{replace:!0})},children:"Sign Out"})]})})});if(wa==="guided-setup"){const oe=!yn&&(nn||ln==="error"),yt=!yn&&!oe&&(vt||ln==="global"),Yt=_t(oe?"setup.headingCheckFailed":yt?"setup.headingGlobalRequired":"setup.headingWorkspaceRequired"),vr=oe?_t("setup.subtitleUnreadable"):yt?_t("setup.subtitleGlobalRequired"):null,Ur="Workspace",sa=Rr||mt!=="cloud",Dn=sa&&wt==="details",Cn=sa&&wt==="library",gi=!Rr&&Kt&&Dn&&!mr,ba=Mr?.runtimeMode==="cloud"?YS:UT,Ba=Ft?dk(Ft.categories):"",yo=Ft?dk(Ft.types):"",Ss=Ft?dk(Ft.priorities):"",ko=Me?_t("setup.saving"):ea?mr?Za?"Retry Import":"Importing Workspace...":"Connect Workspace":Dn?"Continue":Cn?"Create Workspace":"Connect Workspace";return n.jsx("div",{className:zr.standaloneWrapper,"data-theme":St,children:n.jsx("div",{className:Ze.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${lk})`},children:n.jsxs("div",{className:Ze.loginCard,children:[n.jsxs("div",{className:Ze.setupHeaderRow,children:[n.jsxs("div",{className:Ze.authBrandRow,children:[n.jsx("img",{src:Lr,alt:"Taskforce",className:Ze.loginLogo}),n.jsxs("h1",{className:Ze.loginTitle,children:["TASKFORCE ",n.jsx("span",{className:Ze.loginTitleAccent,children:"HQ"})]})]}),Mr&&n.jsx("span",{className:Ze.runtimeIconBadge,title:Mr.runtimeMode==="cloud"?"Cloud runtime":"Local runtime","aria-label":Mr.runtimeMode==="cloud"?"Cloud runtime":"Local runtime",children:Q.createElement(ba,{size:16,"aria-hidden":!0})})]}),n.jsx("p",{className:Ze.loginSubtitle,children:n.jsx("strong",{children:Yt})}),vr?n.jsx("p",{className:Ze.loginSubtitle,children:vr}):null,Be&&n.jsx("p",{className:Ze.loginSubtitle,children:Be}),ge&&n.jsx("p",{className:Ze.loginError,children:ge}),yt&&n.jsxs("div",{className:Ze.optionGrid,children:[n.jsxs("label",{className:`${Ze.authModeLink} ${Ze.optionRow}`,children:[n.jsx("input",{type:"radio",name:"setup-mode",value:"core",checked:Fe==="core",onChange:()=>it("core"),disabled:Me}),n.jsx("span",{children:_t("setup.coreModeOption",{workspaceLabel:Ur})})]}),n.jsxs("label",{className:`${Ze.authModeLink} ${Ze.optionRow}`,children:[n.jsx("input",{type:"radio",name:"setup-mode",value:"operations",checked:Fe==="operations",onChange:()=>it("operations"),disabled:Me}),n.jsx("span",{children:_t("setup.operationsModeOption")})]})]}),!oe&&!yt&&n.jsxs("div",{className:Ze.optionGrid,children:[gi&&n.jsxs("div",{className:Ze.optionGroup,children:[n.jsxs("label",{className:`${Ze.authModeLink} ${Ze.optionRow}`,children:[n.jsx("input",{type:"radio",name:"workspace-setup-source",value:"local",checked:mt==="local",onChange:()=>Ue("local"),disabled:Me}),n.jsxs("span",{children:["Create new local ",Ur.toLowerCase()]})]}),n.jsxs("label",{className:`${Ze.authModeLink} ${Ze.optionRow}`,children:[n.jsx("input",{type:"radio",name:"workspace-setup-source",value:"cloud",checked:mt==="cloud",onChange:()=>Ue("cloud"),disabled:Me}),n.jsxs("span",{children:["Sync existing cloud ",Ur.toLowerCase()]})]})]}),ea?n.jsxs("div",{className:Ze.optionGroup,children:[!mr&&!Kt&&n.jsx("p",{className:Ze.loginError,children:"Cloud workspace sync is unavailable right now. Switch back to local setup or refresh runtime configuration."}),!mr&&Kt&&!Tt&&n.jsxs(n.Fragment,{children:[n.jsx("p",{className:Ze.inlineHint,children:"Sign in to choose one of your cloud projects."}),n.jsxs("div",{className:Ze.actionRowEnd,children:[n.jsx("button",{className:x.cancelBtn,disabled:Me,onClick:()=>{R(`/login?mode=login&next=${encodeURIComponent(zn)}`,{replace:!0})},children:"Sign In"}),Qa&&n.jsx("button",{className:x.submitBtn,disabled:Me,onClick:()=>{R(`/login?mode=register&next=${encodeURIComponent(zn)}`,{replace:!0})},children:"Register"})]})]}),!mr&&Kt&&Tt&&n.jsxs(n.Fragment,{children:[n.jsxs("select",{className:x.input,value:lr,onChange:Bt=>rr(Bt.target.value),disabled:Me||wr||rt.length===0,children:[rt.length===0&&n.jsx("option",{value:"",children:wr?"Loading cloud projects...":"No cloud projects found"}),rt.map(Bt=>n.jsxs("option",{value:Bt.id,children:[Bt.name," (",Bt.id,")"]},Bt.id))]}),n.jsx("div",{className:Ze.actionRowEnd,children:n.jsx("button",{className:x.cancelBtn,disabled:Me||wr,onClick:()=>{Xa()},children:"Refresh Cloud Projects"})}),zt&&n.jsx("p",{className:Ze.loginError,children:zt})]}),mr&&n.jsxs(n.Fragment,{children:[n.jsxs("p",{className:Ze.inlineHint,children:['Importing "',mr.name,'" from cloud into local.']}),n.jsx("div",{className:Ze.optionGroup,children:Eo.map(Bt=>n.jsx("p",{className:Ze.inlineHint,children:Bt},Bt))}),n.jsx("p",{className:Ze.inlineHint,children:Je?"Finishing setup and opening your workspace.":Nt||"Pulling tasks, taxonomies, and settings into local."}),!Je&&or&&n.jsx("p",{className:Ze.inlineHint,children:or})]})]}):n.jsxs(n.Fragment,{children:[Dn&&n.jsxs(n.Fragment,{children:[n.jsx("p",{className:Ze.loginSubtitle,children:"Workspace name"}),n.jsx("input",{className:x.input,type:"text",value:F,placeholder:"Workspace name",onChange:Bt=>Ne(Bt.target.value),disabled:Me}),n.jsx("p",{className:Ze.loginSubtitle,children:"Workspace description"}),n.jsx("textarea",{className:x.textarea,value:Ce,placeholder:"Workspace description (optional)",onChange:Bt=>ut(Bt.target.value),disabled:Me,rows:4})]}),Cn&&n.jsxs("div",{className:Ze.optionGroup,children:[n.jsx("p",{className:Ze.loginSubtitle,children:"What are you working on?"}),n.jsxs("select",{className:x.input,value:Qt,onChange:Bt=>ir(Bt.target.value),disabled:Me||pr||Dt.length===0,children:[Dt.length===0&&n.jsx("option",{value:"",children:pr?"Loading setup options...":"No setup options available"}),Dt.map(Bt=>n.jsx("option",{value:Bt.id,children:Bt.label},Bt.id))]}),Ft?n.jsx(n.Fragment,{children:Ft.description?n.jsx("p",{className:Ze.inlineHint,children:Ft.description}):null}):null,n.jsxs("div",{className:Ze.optionGroup,children:[n.jsx("p",{className:Ze.loginSubtitle,children:"Apply Setup Sections"}),n.jsxs("label",{className:`${Ze.authModeLink} ${Ze.optionRow}`,children:[n.jsx("input",{type:"checkbox",checked:dr.categories,onChange:()=>sr(Bt=>({...Bt,categories:!Bt.categories})),disabled:Me||!Ft?.categories.length}),n.jsx("span",{children:"Categories"})]}),Ba?n.jsx("p",{className:Ze.inlineHint,children:Ba}):null,n.jsxs("label",{className:`${Ze.authModeLink} ${Ze.optionRow}`,children:[n.jsx("input",{type:"checkbox",checked:dr.types,onChange:()=>sr(Bt=>({...Bt,types:!Bt.types})),disabled:Me||!Ft?.types.length}),n.jsx("span",{children:"Task Types"})]}),yo?n.jsx("p",{className:Ze.inlineHint,children:yo}):null,n.jsxs("label",{className:`${Ze.authModeLink} ${Ze.optionRow}`,children:[n.jsx("input",{type:"checkbox",checked:dr.priorities,onChange:()=>sr(Bt=>({...Bt,priorities:!Bt.priorities})),disabled:Me||!Ft?.priorities.length}),n.jsx("span",{children:"Priorities"})]}),Ss?n.jsx("p",{className:Ze.inlineHint,children:Ss}):null]}),pr?n.jsx("p",{className:Ze.inlineHint,children:"Loading setup options…"}):null,Tr?n.jsx("p",{className:Ze.loginError,children:Tr}):null]}),!Rr&&Kt&&Tt&&Dn&&n.jsxs("div",{className:Ze.optionGroup,children:[n.jsxs("label",{className:`${Ze.authModeLink} ${Ze.optionRow}`,children:[n.jsx("input",{type:"checkbox",checked:Mt,onChange:Bt=>Ee(Bt.target.checked),disabled:Me}),n.jsx("span",{children:"Sync to cloud after setup"})]}),n.jsx("p",{className:Ze.inlineHint,children:"When enabled, this project will connect to cloud sync as soon as setup finishes."})]})]})]}),n.jsxs("div",{className:Ze.authModeLinks,children:[Cn?n.jsx("button",{className:x.cancelBtn,onClick:()=>{_e(null),Ge(null),kt("details")},children:"Back"}):yn?n.jsx("button",{className:x.cancelBtn,onClick:()=>{_e(null),Ge(null),R("/",{replace:!0})},children:"Cancel"}):ht==="cloud"?n.jsx("button",{className:x.cancelBtn,onClick:async()=>{await u.logout(),R("/login",{replace:!0})},children:_t("setup.signOut")}):null,yt?n.jsx("button",{className:x.submitBtn,disabled:Me||La&&!!mr&&!Za,onClick:async()=>{qe(!0),Ge(null),_e(null);try{const Bt=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({setup:{mode:Fe}})}),Gn=await Bt.json().catch(()=>({}));!Bt.ok||Gn?.success===!1?_e(Gn?.error||_t("setup.saveFailedWithStatus",{status:Bt.status})):(Ge(_t("setup.globalSetupSaved")),await Fr())}catch{_e(_t("setup.saveFailed"))}finally{qe(!1)}},children:_t(Me?"setup.saving":"setup.saveGlobalSetup")}):oe?n.jsx("button",{className:x.submitBtn,disabled:Me,onClick:Fr,children:_t("setup.retrySetupCheck")}):n.jsx("button",{className:x.submitBtn,disabled:Me||La&&!mr&&!Tt,onClick:async()=>{if(La&&mr){if(!Za)return;qe(!0),Ge(`Retrying import for ${mr.name}...`),_e(null);try{await ys()}catch{Ge(null),_e(`Failed to retry import for "${mr.name}".`)}finally{qe(!1)}return}if(ea){if(!Kt){_e("Cloud workspace sync is unavailable right now."),qe(!1);return}if(!Tt){_e("Sign in is required before syncing a cloud project."),qe(!1);return}const Bt=rt.find(sn=>sn.id===lr);if(!Bt){_e("Select a cloud project to sync."),qe(!1);return}const Gn=await Ye({workspaceId:Bt.id,name:Bt.name||Bt.id,description:Bt.description||void 0});if(!Gn.success){_e(Gn.error||_t("setup.saveWorkspaceFailed")),qe(!1);return}const $n=String(Gn.workspaceId||Bt.id||"").trim();if(!$n){_e("Failed to resolve workspace id for sync setup."),qe(!1);return}try{await at($n,{version:2,enabled:!0,phase:"attach-cloud",setupIntent:"attach-cloud-import",pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null,lastErrorMessage:null})}catch(sn){_e(sn instanceof Error?sn.message:"Failed to configure workspace sync."),qe(!1);return}bn({enabled:!0,phase:"attach-cloud",setupIntent:"attach-cloud-import",pullCursor:null}),await Fr(),lt({workspaceId:$n,name:Bt.name||Bt.id}),nt(!1),Ge(`Importing ${Bt.name||Bt.id} from cloud...`),qe(!1);return}if(Dn){if(!F.trim()){_e("Workspace name is required before continuing.");return}_e(null),Ge(null),kt("library");return}qe(!0),Ge(null),_e(null);{const Bt=yn||$t?.workspaceSetupState==="missing",Gn=yn||yr&&Bt,$n=Gn?await Dr(F,Ce||void 0):null,sn=Gn?null:await Ye({workspaceId:Bt?void 0:$t?.workspaceId,name:F,description:Ce}),Sa=$n||sn;if(Sa?.success){const ns=String($n?.workspace?.id||sn?.workspaceId||$t?.workspaceId||"").trim();if(!ns){_e("Failed to resolve workspace id for setup."),qe(!1);return}if(!!Ft&&(dr.categories||dr.types||dr.priorities)&&Ft){const Wa=await Nn.onApplySystemTaxonomyPack({pack:Ft,sections:dr,remapExistingValuesToDefault:!0,workspaceIdOverride:ns});if(!Wa?.success){_e(Wa?.error||"Failed to apply setup library."),qe(!1);return}}const Ks=!!(!Rr&&Mt&&Kt&&Tt),jo=await fetch("/api/taskforce/ui-state",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:ns,stateKey:"workspace-sync",patch:{version:2,enabled:Ks,phase:Ks?"provision-local":"idle",setupIntent:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null}})}),pa=await jo.json().catch(()=>({}));if(!jo.ok||pa?.success===!1){_e(pa?.error||`Failed to configure workspace sync (${jo.status})`),qe(!1);return}bn({enabled:Ks,phase:Ks?"provision-local":"idle",setupIntent:null,pullCursor:null}),Ge(Ks?`${Ur} setup saved. Cloud sync enabled.`:_t("setup.workspaceSetupSaved",{workspaceLabel:Ur})),yn&&(await Fr(),await Sn(!0),An(Xr,{replace:!0}))}else{if(Sa?.code==="WORKSPACE_LIMIT_REACHED"){qe(!1),R(_,{replace:!0});return}_e(Sa?.error||_t("setup.saveWorkspaceFailed"))}}qe(!1)},children:ko})]})]})})})}return n.jsx(cX,{...u,initialActivityEntryId:h,onHeaderMouseDown:s,isDragging:i,onClose:l})}function dX(e){return ZT()?n.jsx(OS,{...e}):n.jsx(JT,{children:n.jsx(OS,{...e})})}const cI={},BS="STAGING_MARKER_2026_02_24";typeof window<"u"&&(window.__TASKFORCE_BUILD_MARKER=BS,console.info(`[Taskforce] Build marker: ${BS}`));function uX(){if(typeof window<"u"){const t=window.location.hostname.toLowerCase();if(t==="localhost"||t==="127.0.0.1"||t==="::1")return}return hv(cI).apiBaseUrl||void 0}function pX(e){const t=hv(cI),r=t.cloudAuthBaseUrl;if(r)if(typeof window<"u"){const a=window.location.hostname.toLowerCase(),s=a==="localhost"||a==="127.0.0.1"||a==="::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 fX(){const e=uX(),t=pX(e);return n.jsx(QT,{children:n.jsx(dX,{mode:"standalone",config:{apiEndpoint:"/api/taskforce/task",apiBaseUrl:e,cloudAuthBaseUrl:t}})})}dT.createRoot(document.getElementById("root")).render(n.jsx(Q.StrictMode,{children:n.jsx(fX,{})}));export{sC as $,RX as A,Ik as B,oC as C,bu as D,_X as E,iC as F,lC as G,sP as H,Ru as I,dC as J,iP as K,Tv as L,Ro as M,cP as N,Ck as O,xX as P,IX as Q,Fv as R,TX as S,qo as T,LV as U,gN as V,LG as W,Pz as X,h_ as Y,F7 as Z,jN as _,ug as a,GC as a$,Nq as a0,$7 as a1,DX as a2,LX as a3,OX as a4,BX as a5,WX as a6,vA as a7,Tf as a8,kA as a9,rI as aA,BJ as aB,rQ as aC,qv as aD,nd as aE,tI as aF,U_ as aG,Yk as aH,cJ as aI,lJ as aJ,dJ as aK,cG as aL,mv as aM,Uk as aN,gS as aO,yS as aP,vq as aQ,Oq as aR,XC as aS,Xh as aT,NX as aU,EX as aV,Zh as aW,ZC as aX,gf as aY,YC as aZ,Ef as a_,ju as aa,UK as ab,JA as ac,ZA as ad,CX as ae,Rz as af,uR as ag,bX as ah,MX as ai,Tz as aj,SX as ak,AX as al,nI as am,gg as an,Bf as ao,lQ as ap,qk as aq,Yv as ar,TS as as,sg as at,vu as au,Io as av,fs as aw,zJ as ax,YJ as ay,hs as az,po as b,VC as b0,WU as b1,W7 as b2,nP as b3,W0 as c,i0 as d,hr as e,ux as f,jX as g,Su as h,KU as i,HQ as j,VQ as k,TC as l,Gl as m,g4 as n,kN as o,PX as p,cf as q,Jn as r,qU as s,x as t,I9 as u,Sg as v,dx as w,Ak as x,qN as y,_k as z};