@taskforcehq/taskforce 0.3.326 → 0.3.328

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 (1382) hide show
  1. package/LICENSE.md +68 -0
  2. package/README.md +19 -0
  3. package/dist/Taskforce.module.css +2168 -585
  4. package/dist/TaskforceCore.d.ts +1 -0
  5. package/dist/TaskforceCore.js +65 -22
  6. package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.d.ts +1 -0
  7. package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.js +3 -2
  8. package/dist/annotatedAttachments/commandService.d.ts +68 -0
  9. package/dist/annotatedAttachments/commandService.js +348 -0
  10. package/dist/annotatedAttachments/service.d.ts +2 -0
  11. package/dist/annotatedAttachments/service.js +13 -12
  12. package/dist/cli.js +158 -9
  13. package/dist/cliOpenPort.d.ts +1 -0
  14. package/dist/cliOpenPort.js +4 -0
  15. package/dist/compat/taskforceAgentDefinitionCompat.d.ts +12 -0
  16. package/dist/compat/taskforceAgentDefinitionCompat.js +25 -0
  17. package/dist/compat/workspaceSyncCompat.js +6 -2
  18. package/dist/compat/workspaceSyncV3CombinedCoverageCompat.d.ts +6 -0
  19. package/dist/compat/workspaceSyncV3CombinedCoverageCompat.js +22 -0
  20. package/dist/compat/workspaceSyncV3OperationCompat.d.ts +7 -0
  21. package/dist/compat/workspaceSyncV3OperationCompat.js +30 -0
  22. package/dist/components/activity/EntityActivityTimeline.d.ts +10 -2
  23. package/dist/components/activity/EntityActivityTimeline.js +83 -35
  24. package/dist/components/context/AttachmentPreviewHost.d.ts +6 -0
  25. package/dist/components/context/AttachmentPreviewHost.js +222 -0
  26. package/dist/components/context/ContextAttachmentManager.d.ts +7 -0
  27. package/dist/components/context/ContextAttachmentManager.js +514 -208
  28. package/dist/components/features/AiProfilesModule.d.ts +24 -0
  29. package/dist/components/features/AiProfilesModule.js +744 -0
  30. package/dist/components/features/AnnotatedAttachmentWorkspace.d.ts +4 -1
  31. package/dist/components/features/AnnotatedAttachmentWorkspace.js +351 -79
  32. package/dist/components/features/DocumentGenerateModal.js +23 -5
  33. package/dist/components/features/DocumentIndex.d.ts +19 -1
  34. package/dist/components/features/DocumentIndex.js +104 -15
  35. package/dist/components/features/DocumentViewer.d.ts +9 -1
  36. package/dist/components/features/DocumentViewer.js +721 -100
  37. package/dist/components/features/DocumentWorkspace.d.ts +37 -2
  38. package/dist/components/features/DocumentWorkspace.js +21 -6
  39. package/dist/components/features/TaskSettings.d.ts +6 -27
  40. package/dist/components/features/TaskSettings.js +232 -143
  41. package/dist/components/features/TaskforceAgentsModule.d.ts +36 -0
  42. package/dist/components/features/TaskforceAgentsModule.js +1782 -0
  43. package/dist/components/features/agentBehavior/AgentBehaviorManagerShared.d.ts +94 -0
  44. package/dist/components/features/agentBehavior/AgentBehaviorManagerShared.js +70 -0
  45. package/dist/components/features/agentCapabilities/AgentCapabilitiesPrototype.d.ts +65 -0
  46. package/dist/components/features/agentCapabilities/AgentCapabilitiesPrototype.js +115 -0
  47. package/dist/components/features/agentRoles/RoleManagerPanel.d.ts +4 -0
  48. package/dist/components/features/agentRoles/RoleManagerPanel.js +382 -0
  49. package/dist/components/features/agentSkills/SkillManagerPanel.d.ts +5 -0
  50. package/dist/components/features/agentSkills/SkillManagerPanel.js +355 -0
  51. package/dist/components/features/documentWorkspaceModel.d.ts +16 -4
  52. package/dist/components/features/documentWorkspaceModel.js +30 -5
  53. package/dist/components/features/planning/PlanningArchiveConfirmation.d.ts +9 -0
  54. package/dist/components/features/planning/PlanningArchiveConfirmation.js +19 -0
  55. package/dist/components/features/planning/PlanningCardIdentity.d.ts +12 -0
  56. package/dist/components/features/planning/PlanningCardIdentity.js +44 -0
  57. package/dist/components/features/planning/PlanningEntityDetails.d.ts +36 -0
  58. package/dist/components/features/planning/PlanningEntityDetails.js +131 -0
  59. package/dist/components/features/planning/PlanningEntitySummary.d.ts +46 -0
  60. package/dist/components/features/planning/PlanningEntitySummary.js +98 -0
  61. package/dist/components/features/planning/PlanningLinkPicker.d.ts +11 -0
  62. package/dist/components/features/planning/PlanningLinkPicker.js +28 -0
  63. package/dist/components/features/planning/PlanningModule.d.ts +6 -0
  64. package/dist/components/features/planning/PlanningModule.js +588 -0
  65. package/dist/components/features/planning/PlanningOwnerDropdown.d.ts +27 -0
  66. package/dist/components/features/planning/PlanningOwnerDropdown.js +80 -0
  67. package/dist/components/features/planning/PlanningTaskArrangeControl.d.ts +5 -0
  68. package/dist/components/features/planning/PlanningTaskArrangeControl.js +11 -0
  69. package/dist/components/features/planning/PlanningTaskCard.d.ts +20 -0
  70. package/dist/components/features/planning/PlanningTaskCard.js +26 -0
  71. package/dist/components/features/planning/PlanningTaskOrderList.d.ts +10 -0
  72. package/dist/components/features/planning/PlanningTaskOrderList.js +52 -0
  73. package/dist/components/features/planning/PlanningUnlinkConfirmation.d.ts +15 -0
  74. package/dist/components/features/planning/PlanningUnlinkConfirmation.js +7 -0
  75. package/dist/components/features/planning/PlanningVisualIdentity.d.ts +14 -0
  76. package/dist/components/features/planning/PlanningVisualIdentity.js +106 -0
  77. package/dist/components/features/planning/planningCreateIntent.d.ts +10 -0
  78. package/dist/components/features/planning/planningCreateIntent.js +16 -0
  79. package/dist/components/features/planning/planningNavigator.d.ts +33 -0
  80. package/dist/components/features/planning/planningNavigator.js +96 -0
  81. package/dist/components/features/planning/planningTaskArrangement.d.ts +18 -0
  82. package/dist/components/features/planning/planningTaskArrangement.js +106 -0
  83. package/dist/components/features/planning/planningWorkspaceModel.d.ts +132 -0
  84. package/dist/components/features/planning/planningWorkspaceModel.js +5 -0
  85. package/dist/components/features/settings/CategoryManager.js +2 -2
  86. package/dist/components/features/settings/TaxonomyEditor.js +1 -1
  87. package/dist/components/features/settings/TaxonomyManager.js +1 -1
  88. package/dist/components/features/settings/TypeManager.js +1 -1
  89. package/dist/components/features/taskforceAgentAssignments/AgentBehaviorAssignments.d.ts +10 -0
  90. package/dist/components/features/taskforceAgentAssignments/AgentBehaviorAssignments.js +175 -0
  91. package/dist/components/features/taskforceAgentAssignments/agentBehaviorCatalogApi.d.ts +27 -0
  92. package/dist/components/features/taskforceAgentAssignments/agentBehaviorCatalogApi.js +24 -0
  93. package/dist/components/features/taskforceAgentEditorModel.d.ts +109 -0
  94. package/dist/components/features/taskforceAgentEditorModel.js +145 -0
  95. package/dist/components/features/useDocumentWorkspaceController.d.ts +20 -1
  96. package/dist/components/features/useDocumentWorkspaceController.js +106 -21
  97. package/dist/components/features/workflowManager/WorkflowManagerModule.d.ts +11 -0
  98. package/dist/components/features/workflowManager/WorkflowManagerModule.js +313 -0
  99. package/dist/components/features/workflowManager/WorkflowPublishDialog.d.ts +11 -0
  100. package/dist/components/features/workflowManager/WorkflowPublishDialog.js +8 -0
  101. package/dist/components/features/workflowManager/types.d.ts +74 -0
  102. package/dist/components/features/workflowManager/types.js +1 -0
  103. package/dist/components/features/workflowManager/useWorkflowManager.d.ts +30 -0
  104. package/dist/components/features/workflowManager/useWorkflowManager.js +213 -0
  105. package/dist/components/features/workflowManager/workflowManagerApi.d.ts +52 -0
  106. package/dist/components/features/workflowManager/workflowManagerApi.js +142 -0
  107. package/dist/components/task/TaskActionHeader.d.ts +7 -3
  108. package/dist/components/task/TaskActionHeader.js +46 -53
  109. package/dist/components/task/TaskCard.d.ts +10 -2
  110. package/dist/components/task/TaskCard.js +138 -56
  111. package/dist/components/task/TaskContextUpload.d.ts +4 -0
  112. package/dist/components/task/TaskContextUpload.js +3 -2
  113. package/dist/components/task/TaskForm.d.ts +16 -17
  114. package/dist/components/task/TaskForm.js +569 -199
  115. package/dist/components/task/TaskImageReviews.d.ts +8 -0
  116. package/dist/components/task/TaskImageReviews.js +47 -0
  117. package/dist/components/task/TaskKanban.d.ts +9 -10
  118. package/dist/components/task/TaskKanban.js +70 -18
  119. package/dist/components/task/TaskList.d.ts +9 -8
  120. package/dist/components/task/TaskList.js +46 -32
  121. package/dist/components/task/TaskReferenceBadge.d.ts +2 -1
  122. package/dist/components/task/TaskReferenceBadge.js +3 -2
  123. package/dist/components/task/TaskStatusActions.d.ts +3 -1
  124. package/dist/components/task/TaskStatusActions.js +27 -7
  125. package/dist/components/task/TaskWorkflowAssignmentField.d.ts +18 -0
  126. package/dist/components/task/TaskWorkflowAssignmentField.js +362 -0
  127. package/dist/components/task/TaskWorkstreamPicker.d.ts +8 -0
  128. package/dist/components/task/TaskWorkstreamPicker.js +25 -0
  129. package/dist/components/task/TrashRestoreControls.d.ts +18 -0
  130. package/dist/components/task/TrashRestoreControls.js +71 -0
  131. package/dist/components/ui/AiIdentityRosterCard.d.ts +20 -0
  132. package/dist/components/ui/AiIdentityRosterCard.js +5 -0
  133. package/dist/components/ui/AssetTraySortControl.d.ts +10 -0
  134. package/dist/components/ui/AssetTraySortControl.js +38 -0
  135. package/dist/components/ui/AssigneeIdentity.d.ts +12 -0
  136. package/dist/components/ui/AssigneeIdentity.js +41 -0
  137. package/dist/components/ui/DiscardChangesDialog.d.ts +10 -0
  138. package/dist/components/ui/DiscardChangesDialog.js +7 -0
  139. package/dist/components/ui/DisclosureSectionHeader.d.ts +4 -1
  140. package/dist/components/ui/DisclosureSectionHeader.js +2 -2
  141. package/dist/components/ui/DocumentTypeIcon.d.ts +7 -0
  142. package/dist/components/ui/DocumentTypeIcon.js +8 -0
  143. package/dist/components/ui/EditableAvatarButton.d.ts +6 -1
  144. package/dist/components/ui/EditableAvatarButton.js +6 -5
  145. package/dist/components/ui/HierarchyActionBadge.d.ts +2 -1
  146. package/dist/components/ui/HierarchyActionBadge.js +2 -2
  147. package/dist/components/ui/Markdown.d.ts +13 -3
  148. package/dist/components/ui/Markdown.fixture.d.ts +1 -0
  149. package/dist/components/ui/Markdown.fixture.js +23 -0
  150. package/dist/components/ui/Markdown.js +158 -68
  151. package/dist/components/ui/Modal.d.ts +3 -1
  152. package/dist/components/ui/Modal.js +85 -19
  153. package/dist/components/ui/MultiSelectFilter.d.ts +9 -2
  154. package/dist/components/ui/MultiSelectFilter.js +26 -5
  155. package/dist/components/ui/ReferenceBadgeButton.js +2 -3
  156. package/dist/components/ui/TaxonomyDropdown.d.ts +18 -1
  157. package/dist/components/ui/TaxonomyDropdown.js +177 -59
  158. package/dist/components/ui/TopNoticeLayer.d.ts +2 -1
  159. package/dist/components/ui/TopNoticeLayer.js +5 -2
  160. package/dist/components/ui/useFallbackImageUrl.d.ts +4 -0
  161. package/dist/components/ui/useFallbackImageUrl.js +20 -0
  162. package/dist/components/views/AppShellHeader.js +2 -2
  163. package/dist/components/views/StandaloneLayout.d.ts +1 -0
  164. package/dist/components/views/StandaloneLayout.js +1717 -600
  165. package/dist/components/views/WidgetView.d.ts +1 -0
  166. package/dist/components/views/WidgetView.js +99 -31
  167. package/dist/components/views/chrome/WorkspaceChromeSections.d.ts +4 -2
  168. package/dist/components/views/chrome/WorkspaceChromeSections.js +3 -6
  169. package/dist/components/views/chrome/workspaceChrome.d.ts +5 -8
  170. package/dist/components/views/chrome/workspaceChrome.js +62 -27
  171. package/dist/components/views/panels/FilterToolbar.d.ts +4 -3
  172. package/dist/components/views/panels/FilterToolbar.js +8 -5
  173. package/dist/components/views/panels/FilterToolbarControls.d.ts +11 -2
  174. package/dist/components/views/panels/FilterToolbarControls.js +35 -20
  175. package/dist/components/views/panels/PlanningDrawer.d.ts +66 -49
  176. package/dist/components/views/panels/PlanningDrawer.js +983 -314
  177. package/dist/components/views/planningScope.js +7 -1
  178. package/dist/components/views/standalone/modals/AccountSettingsModal.d.ts +62 -0
  179. package/dist/components/views/standalone/modals/AccountSettingsModal.js +197 -0
  180. package/dist/components/views/standalone/modals/AvatarImageManagerModal.d.ts +7 -2
  181. package/dist/components/views/standalone/modals/AvatarImageManagerModal.js +56 -9
  182. package/dist/components/views/standalone/modals/HelpModal.d.ts +1 -2
  183. package/dist/components/views/standalone/modals/HelpModal.js +3 -4
  184. package/dist/components/views/standalone/modals/SyncStatusModal.d.ts +8 -9
  185. package/dist/components/views/standalone/modals/SyncStatusModal.js +85 -25
  186. package/dist/components/views/standalone/modals/TeamManagementModal.js +1 -1
  187. package/dist/config/applicationBaseUrl.d.ts +2 -0
  188. package/dist/config/applicationBaseUrl.js +23 -0
  189. package/dist/config/envSchema.d.ts +1 -1
  190. package/dist/config/envSchema.js +167 -5
  191. package/dist/config/localServiceCloudTarget.d.ts +10 -0
  192. package/dist/config/localServiceCloudTarget.js +76 -0
  193. package/dist/core/AdminAuditRetentionService.d.ts +43 -0
  194. package/dist/core/AdminAuditRetentionService.js +126 -0
  195. package/dist/core/AiProfileService.d.ts +35 -0
  196. package/dist/core/AiProfileService.js +511 -251
  197. package/dist/core/AttachmentLinkService.d.ts +10 -2
  198. package/dist/core/AttachmentLinkService.js +50 -15
  199. package/dist/core/AuthIdentityService.d.ts +6 -0
  200. package/dist/core/AuthIdentityService.js +38 -0
  201. package/dist/core/AuthTokenService.d.ts +1 -0
  202. package/dist/core/AuthTokenService.js +13 -0
  203. package/dist/core/DeletedTaskLifecycleService.d.ts +8 -2
  204. package/dist/core/DeletedTaskLifecycleService.js +145 -38
  205. package/dist/core/GlobalSettingsService.d.ts +3 -1
  206. package/dist/core/GlobalSettingsService.js +30 -4
  207. package/dist/core/InitiativeDurableMutationService.d.ts +89 -0
  208. package/dist/core/InitiativeDurableMutationService.js +187 -0
  209. package/dist/core/McpTokenService.d.ts +5 -0
  210. package/dist/core/McpTokenService.js +91 -13
  211. package/dist/core/PlanningCommandPreparationService.d.ts +60 -0
  212. package/dist/core/PlanningCommandPreparationService.js +149 -0
  213. package/dist/core/ScheduleCommandService.d.ts +76 -0
  214. package/dist/core/ScheduleCommandService.js +165 -0
  215. package/dist/core/SyncReconciliationService.d.ts +29 -6
  216. package/dist/core/SyncReconciliationService.js +256 -84
  217. package/dist/core/TaskActivityService.d.ts +22 -2
  218. package/dist/core/TaskActivityService.js +177 -29
  219. package/dist/core/TaskAttachmentLinksDurableMutationService.d.ts +36 -0
  220. package/dist/core/TaskAttachmentLinksDurableMutationService.js +240 -0
  221. package/dist/core/TaskChecklistCommandService.d.ts +50 -0
  222. package/dist/core/TaskChecklistCommandService.js +111 -0
  223. package/dist/core/TaskDurableCreateMutationService.d.ts +38 -0
  224. package/dist/core/TaskDurableCreateMutationService.js +85 -0
  225. package/dist/core/TaskDurableDeleteMutationService.d.ts +47 -0
  226. package/dist/core/TaskDurableDeleteMutationService.js +54 -0
  227. package/dist/core/TaskDurableLifecycleMutationService.d.ts +38 -0
  228. package/dist/core/TaskDurableLifecycleMutationService.js +42 -0
  229. package/dist/core/TaskDurableRelationshipMutationService.d.ts +58 -0
  230. package/dist/core/TaskDurableRelationshipMutationService.js +66 -0
  231. package/dist/core/TaskDurableRestoreMutationService.d.ts +31 -0
  232. package/dist/core/TaskDurableRestoreMutationService.js +33 -0
  233. package/dist/core/TaskDurableStatusMutationService.d.ts +74 -0
  234. package/dist/core/TaskDurableStatusMutationService.js +247 -0
  235. package/dist/core/TaskDurableSyncMutationService.d.ts +34 -0
  236. package/dist/core/TaskDurableSyncMutationService.js +70 -0
  237. package/dist/core/TaskDurableWorkflowMutationService.d.ts +48 -0
  238. package/dist/core/TaskDurableWorkflowMutationService.js +59 -0
  239. package/dist/core/TaskLifecycleCommandService.d.ts +101 -0
  240. package/dist/core/TaskLifecycleCommandService.js +161 -0
  241. package/dist/core/TaskRootCommandPreparationService.d.ts +35 -0
  242. package/dist/core/TaskRootCommandPreparationService.js +103 -0
  243. package/dist/core/Taskforce.d.ts +542 -60
  244. package/dist/core/Taskforce.js +4220 -905
  245. package/dist/core/WorkflowAssignmentService.d.ts +40 -0
  246. package/dist/core/WorkflowAssignmentService.js +158 -0
  247. package/dist/core/WorkflowExecutionService.d.ts +69 -0
  248. package/dist/core/WorkflowExecutionService.js +342 -0
  249. package/dist/core/WorkflowTaskActivationService.d.ts +32 -0
  250. package/dist/core/WorkflowTaskActivationService.js +63 -0
  251. package/dist/core/WorkflowTemplateService.d.ts +64 -0
  252. package/dist/core/WorkflowTemplateService.js +223 -0
  253. package/dist/core/WorkspaceLifecycleService.d.ts +1 -0
  254. package/dist/core/WorkspaceLifecycleService.js +18 -0
  255. package/dist/core/WorkstreamDurableMutationService.d.ts +90 -0
  256. package/dist/core/WorkstreamDurableMutationService.js +184 -0
  257. package/dist/core/planningReferencePolicy.d.ts +14 -0
  258. package/dist/core/planningReferencePolicy.js +53 -0
  259. package/dist/core/taskReferencePolicy.js +24 -3
  260. package/dist/core/types.d.ts +12 -11
  261. package/dist/documentReviews/DocumentReviewCommentStore.d.ts +33 -2
  262. package/dist/documentReviews/DocumentReviewCommentStore.js +125 -8
  263. package/dist/documentReviews/commandService.d.ts +51 -0
  264. package/dist/documentReviews/commandService.js +63 -0
  265. package/dist/documentReviews/service.d.ts +24 -1
  266. package/dist/documentReviews/service.js +354 -49
  267. package/dist/documentReviews/types.d.ts +18 -1
  268. package/dist/hooks/sync/bootstrap.d.ts +3 -7
  269. package/dist/hooks/sync/bootstrap.js +6 -14
  270. package/dist/hooks/sync/browserSyncAuthority.d.ts +21 -0
  271. package/dist/hooks/sync/browserSyncAuthority.js +70 -0
  272. package/dist/hooks/sync/browserSyncRemoteServices.d.ts +29 -0
  273. package/dist/hooks/sync/browserSyncRemoteServices.js +58 -0
  274. package/dist/hooks/sync/controlPlane.d.ts +1 -37
  275. package/dist/hooks/sync/controlPlane.js +1 -78
  276. package/dist/hooks/sync/lifecyclePolicy.d.ts +1 -45
  277. package/dist/hooks/sync/lifecyclePolicy.js +1 -93
  278. package/dist/hooks/sync/orchestratorShared.d.ts +9 -3
  279. package/dist/hooks/sync/orchestratorShared.js +70 -96
  280. package/dist/hooks/sync/pullLifecycle.d.ts +1 -31
  281. package/dist/hooks/sync/pullLifecycle.js +1 -24
  282. package/dist/hooks/sync/realtime.d.ts +4 -1
  283. package/dist/hooks/sync/realtime.js +103 -3
  284. package/dist/hooks/sync/recovery.d.ts +1 -84
  285. package/dist/hooks/sync/recovery.js +1 -245
  286. package/dist/hooks/sync/transfers.d.ts +8 -129
  287. package/dist/hooks/sync/transfers.js +19 -581
  288. package/dist/hooks/sync/useDataVersionRefresh.d.ts +6 -1
  289. package/dist/hooks/sync/useDataVersionRefresh.js +127 -12
  290. package/dist/hooks/sync/useDurableLocalOutboxDrain.d.ts +14 -0
  291. package/dist/hooks/sync/useDurableLocalOutboxDrain.js +208 -0
  292. package/dist/hooks/sync/useDurableTaskCreateMutation.d.ts +15 -0
  293. package/dist/hooks/sync/useDurableTaskCreateMutation.js +152 -0
  294. package/dist/hooks/sync/useDurableTaskDeleteMutation.d.ts +11 -0
  295. package/dist/hooks/sync/useDurableTaskDeleteMutation.js +21 -0
  296. package/dist/hooks/sync/useDurableTaskLifecycleMutation.d.ts +12 -0
  297. package/dist/hooks/sync/useDurableTaskLifecycleMutation.js +22 -0
  298. package/dist/hooks/sync/useDurableTaskMetadataMutation.d.ts +14 -0
  299. package/dist/hooks/sync/useDurableTaskMetadataMutation.js +24 -0
  300. package/dist/hooks/sync/useDurableTaskRestoreMutation.d.ts +12 -0
  301. package/dist/hooks/sync/useDurableTaskRestoreMutation.js +24 -0
  302. package/dist/hooks/sync/useDurableTaskStatusMutation.d.ts +18 -0
  303. package/dist/hooks/sync/useDurableTaskStatusMutation.js +23 -0
  304. package/dist/hooks/sync/useLocalSyncCoordinatorSnapshot.d.ts +23 -0
  305. package/dist/hooks/sync/useLocalSyncCoordinatorSnapshot.js +414 -0
  306. package/dist/hooks/sync/useSyncStatusActions.d.ts +2 -1
  307. package/dist/hooks/sync/useSyncStatusActions.js +8 -3
  308. package/dist/hooks/tasks/taskHttpMutation.d.ts +25 -0
  309. package/dist/hooks/tasks/taskHttpMutation.js +134 -0
  310. package/dist/hooks/tasks/useCurrentTaskRelations.d.ts +6 -1
  311. package/dist/hooks/tasks/useCurrentTaskRelations.js +32 -6
  312. package/dist/hooks/tasks/useTaskEditorNavigation.d.ts +4 -3
  313. package/dist/hooks/tasks/useTaskEditorNavigation.js +9 -13
  314. package/dist/hooks/tasks/useTaskFormActions.d.ts +20 -2
  315. package/dist/hooks/tasks/useTaskFormActions.js +339 -59
  316. package/dist/hooks/tasks/useTaskReferenceContract.d.ts +5 -0
  317. package/dist/hooks/tasks/useTaskReferenceContract.js +17 -0
  318. package/dist/hooks/tasks/useTaskRelationships.d.ts +1 -3
  319. package/dist/hooks/tasks/useTaskRelationships.js +5 -25
  320. package/dist/hooks/tasks/useTrashSelection.d.ts +12 -0
  321. package/dist/hooks/tasks/useTrashSelection.js +49 -0
  322. package/dist/hooks/ui/useInitiativeTemplates.d.ts +24 -0
  323. package/dist/hooks/ui/useInitiativeTemplates.js +22 -0
  324. package/dist/hooks/ui/useSettingsModel.d.ts +5 -29
  325. package/dist/hooks/ui/useSettingsModel.js +31 -15
  326. package/dist/hooks/ui/useSettingsPersistence.d.ts +0 -1
  327. package/dist/hooks/ui/useSettingsPersistence.js +4 -8
  328. package/dist/hooks/ui/useSettingsTaxonomyManagement.js +31 -0
  329. package/dist/hooks/useFilterSort.d.ts +2 -2
  330. package/dist/hooks/useFilterSort.js +19 -15
  331. package/dist/hooks/useRealtimeSync.d.ts +10 -0
  332. package/dist/hooks/useRealtimeSync.js +57 -4
  333. package/dist/hooks/useSyncOrchestrator.d.ts +32 -1
  334. package/dist/hooks/useSyncOrchestrator.js +963 -287
  335. package/dist/hooks/useTaskData.d.ts +11 -2
  336. package/dist/hooks/useTaskData.js +59 -26
  337. package/dist/hooks/useTaskMutations.d.ts +42 -5
  338. package/dist/hooks/useTaskMutations.js +750 -125
  339. package/dist/hooks/useTaskforce.d.ts +79 -74
  340. package/dist/hooks/useTaskforce.js +1205 -450
  341. package/dist/hooks/useUiNotice.d.ts +5 -1
  342. package/dist/hooks/useUiNotice.js +13 -2
  343. package/dist/hooks/useWorkspaceSyncController.d.ts +9 -0
  344. package/dist/hooks/useWorkspaceSyncController.js +159 -17
  345. package/dist/hooks/workspace/usePersistedAppUiState.d.ts +74 -0
  346. package/dist/hooks/workspace/usePersistedAppUiState.js +325 -0
  347. package/dist/hooks/workspace/usePersistedLayoutUiState.d.ts +76 -0
  348. package/dist/hooks/workspace/usePersistedLayoutUiState.js +479 -0
  349. package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.d.ts +2 -7
  350. package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.js +42 -31
  351. package/dist/hooks/workspace/workspaceLocalState.d.ts +17 -6
  352. package/dist/hooks/workspace/workspaceLocalState.js +175 -5
  353. package/dist/hooks/workstreams/workstreamHttpMutation.d.ts +23 -0
  354. package/dist/hooks/workstreams/workstreamHttpMutation.js +134 -0
  355. package/dist/localization/locales/en-US.d.ts +3 -3
  356. package/dist/localization/locales/en-US.js +3 -3
  357. package/dist/localization/locales/es-419.js +3 -3
  358. package/dist/localization/locales/pt-BR.js +3 -3
  359. package/dist/mcp/adminWorkspaceRegistrar.js +2 -30
  360. package/dist/mcp/aiProfileBootstrap.d.ts +3 -0
  361. package/dist/mcp/aiProfileBootstrap.js +4 -0
  362. package/dist/mcp/canonicalAssetHelpers.d.ts +29 -4
  363. package/dist/mcp/canonicalAssetHelpers.js +138 -35
  364. package/dist/mcp/clientIntegrations.d.ts +4 -2
  365. package/dist/mcp/clientIntegrations.js +58 -57
  366. package/dist/mcp/clientRegistry.d.ts +30 -0
  367. package/dist/mcp/clientRegistry.js +134 -0
  368. package/dist/mcp/collaborationRegistrar.js +31 -15
  369. package/dist/mcp/documentAssetRegistrar.js +231 -56
  370. package/dist/mcp/documentContentCommand.d.ts +94 -0
  371. package/dist/mcp/documentContentCommand.js +226 -0
  372. package/dist/mcp/documentHelpers.d.ts +13 -65
  373. package/dist/mcp/documentHelpers.js +49 -62
  374. package/dist/mcp/durableTaskMutationRouter.d.ts +65 -0
  375. package/dist/mcp/durableTaskMutationRouter.js +217 -0
  376. package/dist/mcp/durableTaskRelationshipMutationRouter.d.ts +38 -0
  377. package/dist/mcp/durableTaskRelationshipMutationRouter.js +168 -0
  378. package/dist/mcp/durableTaskRootMutationRouter.d.ts +64 -0
  379. package/dist/mcp/durableTaskRootMutationRouter.js +226 -0
  380. package/dist/mcp/gitWorktreeRoots.d.ts +2 -0
  381. package/dist/mcp/gitWorktreeRoots.js +19 -0
  382. package/dist/mcp/legacyServer.d.ts +1 -0
  383. package/dist/mcp/legacyServer.js +42 -0
  384. package/dist/mcp/localCliHealth.d.ts +56 -0
  385. package/dist/mcp/localCliHealth.js +170 -0
  386. package/dist/mcp/localServiceProxy.d.ts +23 -0
  387. package/dist/mcp/localServiceProxy.js +258 -0
  388. package/dist/mcp/mcpInputValidator.d.ts +17 -0
  389. package/dist/mcp/mcpInputValidator.js +58 -0
  390. package/dist/mcp/planningAttachmentCommandAdapter.d.ts +127 -0
  391. package/dist/mcp/planningAttachmentCommandAdapter.js +188 -0
  392. package/dist/mcp/programScaffoldCommandAdapter.d.ts +6 -0
  393. package/dist/mcp/programScaffoldCommandAdapter.js +39 -0
  394. package/dist/mcp/proxyServer.d.ts +1 -0
  395. package/dist/mcp/proxyServer.js +2 -0
  396. package/dist/mcp/runtime.d.ts +98 -1
  397. package/dist/mcp/runtime.js +4682 -1927
  398. package/dist/mcp/server.js +29 -2
  399. package/dist/mcp/sharedLocalServiceGateD.d.ts +115 -0
  400. package/dist/mcp/sharedLocalServiceGateD.js +344 -0
  401. package/dist/mcp/stdioLifecycle.d.ts +22 -0
  402. package/dist/mcp/stdioLifecycle.js +54 -0
  403. package/dist/mcp/taskAttachmentCommandAdapter.d.ts +192 -0
  404. package/dist/mcp/taskAttachmentCommandAdapter.js +470 -0
  405. package/dist/mcp/taskAttachmentHelpers.d.ts +8 -6
  406. package/dist/mcp/taskAttachmentHelpers.js +74 -2
  407. package/dist/mcp/taskAttachmentTypes.d.ts +26 -5
  408. package/dist/mcp/taskPlanCommand.d.ts +64 -0
  409. package/dist/mcp/taskPlanCommand.js +98 -0
  410. package/dist/mcp/taskPlanningRegistrar.js +240 -44
  411. package/dist/mcp/toolCallCompatibility.d.ts +6 -0
  412. package/dist/mcp/toolCallCompatibility.js +16 -0
  413. package/dist/mcp/toolCatalog.d.ts +3 -1
  414. package/dist/mcp/toolProfiles.d.ts +12 -1
  415. package/dist/mcp/toolProfiles.js +43 -0
  416. package/dist/mcp/toolRegistry.d.ts +17 -2
  417. package/dist/mcp/toolRegistry.js +26 -11
  418. package/dist/mcp/workflowExecutionRegistrar.d.ts +2 -0
  419. package/dist/mcp/workflowExecutionRegistrar.js +51 -0
  420. package/dist/migrations/taskSchemaMigrations.d.ts +35 -0
  421. package/dist/migrations/taskSchemaMigrations.js +1892 -64
  422. package/dist/migrations/taskUpdatedAtSyncDriftMigration.d.ts +20 -0
  423. package/dist/migrations/taskUpdatedAtSyncDriftMigration.js +153 -0
  424. package/dist/migrations/taskforceAgentDefinitionMigration.d.ts +26 -0
  425. package/dist/migrations/taskforceAgentDefinitionMigration.js +116 -0
  426. package/dist/plugins/vite.js +48 -17
  427. package/dist/public/Taskforce_Van.webp +0 -0
  428. package/dist/runtime/appGateDefinitions.d.ts +16 -10
  429. package/dist/runtime/appGateDefinitions.js +16 -10
  430. package/dist/runtime/appGates.d.ts +5 -4
  431. package/dist/runtime/appGates.js +4 -3
  432. package/dist/server/aiProfileAvatarAssets.d.ts +11 -8
  433. package/dist/server/aiProfileAvatarAssets.js +159 -70
  434. package/dist/server/appAccess.d.ts +12 -0
  435. package/dist/server/appAccess.js +21 -0
  436. package/dist/server/auth.js +15 -1
  437. package/dist/server/authorizedWorkspaceAccess.d.ts +12 -0
  438. package/dist/server/authorizedWorkspaceAccess.js +40 -0
  439. package/dist/server/cloudCollectionRead.d.ts +25 -0
  440. package/dist/server/cloudCollectionRead.js +120 -0
  441. package/dist/server/cloudCollectionReadPool.d.ts +52 -0
  442. package/dist/server/cloudCollectionReadPool.js +140 -0
  443. package/dist/server/cloudCollectionReadWorker.d.ts +1 -0
  444. package/dist/server/cloudCollectionReadWorker.js +36 -0
  445. package/dist/server/cors.d.ts +2 -1
  446. package/dist/server/cors.js +45 -8
  447. package/dist/server/email.d.ts +3 -1
  448. package/dist/server/email.js +46 -8
  449. package/dist/server/index.d.ts +27 -12
  450. package/dist/server/index.js +395 -86
  451. package/dist/server/localDataOwnerPermit.d.ts +18 -0
  452. package/dist/server/localDataOwnerPermit.js +58 -0
  453. package/dist/server/localDatabaseIdentity.d.ts +14 -0
  454. package/dist/server/localDatabaseIdentity.js +69 -0
  455. package/dist/server/localRealtimeFileInvalidation.d.ts +1 -0
  456. package/dist/server/localRealtimeFileInvalidation.js +7 -0
  457. package/dist/server/localServiceLease.d.ts +65 -0
  458. package/dist/server/localServiceLease.js +485 -0
  459. package/dist/server/localServiceOwnershipBootstrap.d.ts +19 -0
  460. package/dist/server/localServiceOwnershipBootstrap.js +84 -0
  461. package/dist/server/localServiceSessions.d.ts +87 -0
  462. package/dist/server/localServiceSessions.js +309 -0
  463. package/dist/server/localServiceWindowsAcl.d.ts +8 -0
  464. package/dist/server/localServiceWindowsAcl.js +60 -0
  465. package/dist/server/localSyncProcessLockBootstrap.d.ts +3 -0
  466. package/dist/server/localSyncProcessLockBootstrap.js +16 -0
  467. package/dist/server/localWorkspaceSyncServerComposition.d.ts +59 -0
  468. package/dist/server/localWorkspaceSyncServerComposition.js +91 -0
  469. package/dist/server/localWorkspaceSyncServerRuntime.d.ts +119 -0
  470. package/dist/server/localWorkspaceSyncServerRuntime.js +1163 -0
  471. package/dist/server/rateLimit.d.ts +1 -0
  472. package/dist/server/rateLimit.js +16 -0
  473. package/dist/server/routes/admin.d.ts +2 -4
  474. package/dist/server/routes/admin.js +199 -337
  475. package/dist/server/routes/agentRoles.d.ts +13 -0
  476. package/dist/server/routes/agentRoles.js +273 -0
  477. package/dist/server/routes/agentSkills.d.ts +16 -0
  478. package/dist/server/routes/agentSkills.js +291 -0
  479. package/dist/server/routes/agents.d.ts +49 -0
  480. package/dist/server/routes/agents.js +1455 -0
  481. package/dist/server/routes/annotatedAttachments.js +46 -9
  482. package/dist/server/routes/assetAccess.d.ts +36 -0
  483. package/dist/server/routes/assetAccess.js +93 -0
  484. package/dist/server/routes/auth.d.ts +4 -3
  485. package/dist/server/routes/auth.js +236 -21
  486. package/dist/server/routes/authSupport.d.ts +3 -1
  487. package/dist/server/routes/authSupport.js +22 -8
  488. package/dist/server/routes/documentReviews.d.ts +2 -0
  489. package/dist/server/routes/documentReviews.js +155 -15
  490. package/dist/server/routes/documents.d.ts +6 -2
  491. package/dist/server/routes/documents.js +492 -151
  492. package/dist/server/routes/durableTaskHttpRouters.d.ts +167 -0
  493. package/dist/server/routes/durableTaskHttpRouters.js +89 -0
  494. package/dist/server/routes/localMcpHealth.d.ts +11 -0
  495. package/dist/server/routes/localMcpHealth.js +29 -0
  496. package/dist/server/routes/localService.d.ts +13 -0
  497. package/dist/server/routes/localService.js +446 -0
  498. package/dist/server/routes/localUpdate.d.ts +11 -0
  499. package/dist/server/routes/localUpdate.js +154 -0
  500. package/dist/server/routes/primitives.d.ts +29 -0
  501. package/dist/server/routes/primitives.js +18 -0
  502. package/dist/server/routes/resources.d.ts +1 -10
  503. package/dist/server/routes/resources.js +1 -153
  504. package/dist/server/routes/shared.d.ts +55 -2
  505. package/dist/server/routes/shared.js +506 -16
  506. package/dist/server/routes/sync.d.ts +2 -0
  507. package/dist/server/routes/sync.js +206 -272
  508. package/dist/server/routes/syncAuxRoutes.d.ts +3 -1
  509. package/dist/server/routes/syncAuxRoutes.js +9 -4
  510. package/dist/server/routes/syncCoordinatorLocalRoutes.d.ts +6 -0
  511. package/dist/server/routes/syncCoordinatorLocalRoutes.js +867 -0
  512. package/dist/server/routes/syncPullApplyRoutes.d.ts +29 -1
  513. package/dist/server/routes/syncPullApplyRoutes.js +520 -17
  514. package/dist/server/routes/syncPushRoutes.d.ts +33 -4
  515. package/dist/server/routes/syncPushRoutes.js +251 -62
  516. package/dist/server/routes/syncRouteTypes.d.ts +1 -1
  517. package/dist/server/routes/syncSnapshotRoutes.d.ts +15 -7
  518. package/dist/server/routes/syncSnapshotRoutes.js +95 -17
  519. package/dist/server/routes/syncV3DiagnosticsRoutes.d.ts +14 -0
  520. package/dist/server/routes/syncV3DiagnosticsRoutes.js +72 -0
  521. package/dist/server/routes/syncV3FeedRoutes.d.ts +20 -0
  522. package/dist/server/routes/syncV3FeedRoutes.js +464 -0
  523. package/dist/server/routes/syncV3LocalCaptureRoutes.d.ts +37 -0
  524. package/dist/server/routes/syncV3LocalCaptureRoutes.js +915 -0
  525. package/dist/server/routes/syncV3LocalDispatchRoutes.d.ts +17 -0
  526. package/dist/server/routes/syncV3LocalDispatchRoutes.js +280 -0
  527. package/dist/server/routes/syncV3LocalFeedApplyRoutes.d.ts +17 -0
  528. package/dist/server/routes/syncV3LocalFeedApplyRoutes.js +493 -0
  529. package/dist/server/routes/syncV3LocalOwnershipRoutes.d.ts +10 -0
  530. package/dist/server/routes/syncV3LocalOwnershipRoutes.js +51 -0
  531. package/dist/server/routes/syncV3LocalRecoveryRoutes.d.ts +12 -0
  532. package/dist/server/routes/syncV3LocalRecoveryRoutes.js +78 -0
  533. package/dist/server/routes/syncV3OperationRoutes.d.ts +35 -0
  534. package/dist/server/routes/syncV3OperationRoutes.js +1151 -0
  535. package/dist/server/routes/tasks.d.ts +0 -2
  536. package/dist/server/routes/tasks.js +1083 -236
  537. package/dist/server/routes/workflows.d.ts +26 -0
  538. package/dist/server/routes/workflows.js +500 -0
  539. package/dist/server/routes.d.ts +1 -6
  540. package/dist/server/routes.js +179 -342
  541. package/dist/server/smtpTransport.d.ts +11 -3
  542. package/dist/server/smtpTransport.js +9 -2
  543. package/dist/server/start.js +42 -10
  544. package/dist/service/localServiceCli.d.ts +33 -0
  545. package/dist/service/localServiceCli.js +376 -0
  546. package/dist/service/localServiceClientLifecycle.d.ts +25 -0
  547. package/dist/service/localServiceClientLifecycle.js +189 -0
  548. package/dist/service/localServiceOpen.d.ts +17 -0
  549. package/dist/service/localServiceOpen.js +27 -0
  550. package/dist/services/agentRoleResolver.d.ts +4 -0
  551. package/dist/services/agentRoleResolver.js +7 -0
  552. package/dist/services/aiProfileAvatarGenerationService.d.ts +41 -0
  553. package/dist/services/aiProfileAvatarGenerationService.js +158 -0
  554. package/dist/services/avatarImageProvider.d.ts +33 -0
  555. package/dist/services/avatarImageProvider.js +140 -0
  556. package/dist/services/bedrockAnthropicMessagesModelGateway.d.ts +24 -0
  557. package/dist/services/bedrockAnthropicMessagesModelGateway.js +95 -0
  558. package/dist/services/bedrockMantleModelGateway.d.ts +43 -0
  559. package/dist/services/bedrockMantleModelGateway.js +81 -0
  560. package/dist/services/bedrockModelGateway.d.ts +26 -0
  561. package/dist/services/bedrockModelGateway.js +94 -0
  562. package/dist/services/modelGateway.d.ts +82 -0
  563. package/dist/services/modelGateway.js +61 -0
  564. package/dist/services/taskforceAgentAvatarImageProvider.d.ts +8 -0
  565. package/dist/services/taskforceAgentAvatarImageProvider.js +24 -0
  566. package/dist/services/taskforceAgentMcpBridge.d.ts +77 -0
  567. package/dist/services/taskforceAgentMcpBridge.js +527 -0
  568. package/dist/shared/agentRoleDefinition.d.ts +34 -0
  569. package/dist/shared/agentRoleDefinition.js +207 -0
  570. package/dist/shared/aiProfileAvatarEligibility.d.ts +10 -0
  571. package/dist/shared/aiProfileAvatarEligibility.js +27 -0
  572. package/dist/shared/aiProfileColors.d.ts +7 -0
  573. package/dist/shared/aiProfileColors.js +33 -0
  574. package/dist/shared/colorPalette.d.ts +3 -0
  575. package/dist/shared/colorPalette.js +20 -0
  576. package/dist/shared/commentProvenance.d.ts +4 -0
  577. package/dist/shared/commentProvenance.js +6 -0
  578. package/dist/shared/deletedTaskRetention.d.ts +2 -0
  579. package/dist/shared/deletedTaskRetention.js +7 -0
  580. package/dist/shared/passwordPolicy.d.ts +2 -1
  581. package/dist/shared/passwordPolicy.js +9 -0
  582. package/dist/shared/planningIdentity.d.ts +20 -0
  583. package/dist/shared/planningIdentity.js +79 -0
  584. package/dist/shared/taskDeepLinks.d.ts +28 -0
  585. package/dist/shared/taskDeepLinks.js +48 -0
  586. package/dist/shared/taskRestoreDestination.d.ts +2 -0
  587. package/dist/shared/taskRestoreDestination.js +5 -0
  588. package/dist/shared/taskforceAgentDefinition.d.ts +88 -0
  589. package/dist/shared/taskforceAgentDefinition.js +434 -0
  590. package/dist/shared/taskforceAgentExecutionSnapshot.d.ts +50 -0
  591. package/dist/shared/taskforceAgentExecutionSnapshot.js +68 -0
  592. package/dist/shared/taskforceAgentModels.d.ts +56 -0
  593. package/dist/shared/taskforceAgentModels.js +314 -0
  594. package/dist/shared/taskforceAgentRunContext.d.ts +23 -0
  595. package/dist/shared/taskforceAgentRunContext.js +21 -0
  596. package/dist/shared/taskforceAgentRuntimeResolution.d.ts +31 -0
  597. package/dist/shared/taskforceAgentRuntimeResolution.js +72 -0
  598. package/dist/shared/taskforceAgentSkill.d.ts +33 -0
  599. package/dist/shared/taskforceAgentSkill.js +149 -0
  600. package/dist/storage/agentRoleStore.d.ts +91 -0
  601. package/dist/storage/agentRoleStore.js +385 -0
  602. package/dist/storage/databaseAdapter.d.ts +1 -0
  603. package/dist/storage/databaseAdapter.js +7 -1
  604. package/dist/storage/documentIntegrity.d.ts +12 -3
  605. package/dist/storage/documentIntegrity.js +105 -27
  606. package/dist/storage/objectStorageClient.d.ts +10 -4
  607. package/dist/storage/objectStorageClient.js +73 -43
  608. package/dist/storage/postgresAdapter.d.ts +2 -1
  609. package/dist/storage/postgresAdapter.js +42 -6
  610. package/dist/storage/postgresRequestDiagnostics.d.ts +8 -0
  611. package/dist/storage/postgresRequestDiagnostics.js +24 -0
  612. package/dist/storage/postgresWorker.js +65 -1
  613. package/dist/storage/sqliteAdapter.d.ts +1 -1
  614. package/dist/storage/sqliteAdapter.js +7 -1
  615. package/dist/storage/sqliteWalHealth.d.ts +71 -0
  616. package/dist/storage/sqliteWalHealth.js +176 -0
  617. package/dist/storage/taskDataPath.d.ts +1 -0
  618. package/dist/storage/taskDataPath.js +20 -0
  619. package/dist/storage/taskforceAgentConversationStore.d.ts +66 -0
  620. package/dist/storage/taskforceAgentConversationStore.js +264 -0
  621. package/dist/storage/taskforceAgentSkillStore.d.ts +93 -0
  622. package/dist/storage/taskforceAgentSkillStore.js +355 -0
  623. package/dist/storage/taskforceAgentStore.d.ts +105 -0
  624. package/dist/storage/taskforceAgentStore.js +549 -0
  625. package/dist/storage/workflowStore.d.ts +223 -0
  626. package/dist/storage/workflowStore.js +1032 -0
  627. package/dist/storage/workspaceAssetStore.d.ts +102 -0
  628. package/dist/storage/workspaceAssetStore.js +488 -25
  629. package/dist/sync/aiProfileAvatarSyncPaths.d.ts +14 -0
  630. package/dist/sync/aiProfileAvatarSyncPaths.js +56 -0
  631. package/dist/sync/cloudSyncApi.d.ts +329 -0
  632. package/dist/sync/cloudSyncApi.js +574 -1
  633. package/dist/sync/collaborationSyncPayload.d.ts +5 -1
  634. package/dist/sync/collaborationSyncPayload.js +213 -1
  635. package/dist/sync/collaborationSyncState.d.ts +23 -3
  636. package/dist/sync/collaborationSyncState.js +92 -3
  637. package/dist/sync/contentSyncPayload.d.ts +9 -0
  638. package/dist/sync/contentSyncPayload.js +29 -0
  639. package/dist/sync/contentSyncState.d.ts +79 -4
  640. package/dist/sync/contentSyncState.js +1113 -313
  641. package/dist/sync/coordinator/localSyncBrowserApplyPermitContext.d.ts +39 -0
  642. package/dist/sync/coordinator/localSyncBrowserApplyPermitContext.js +234 -0
  643. package/dist/sync/coordinator/localSyncBrowserAuthorityCapability.d.ts +7 -0
  644. package/dist/sync/coordinator/localSyncBrowserAuthorityCapability.js +10 -0
  645. package/dist/sync/coordinator/localSyncCommittedApplyPolicy.d.ts +7 -0
  646. package/dist/sync/coordinator/localSyncCommittedApplyPolicy.js +41 -0
  647. package/dist/sync/coordinator/localSyncCoordinatorBrowserClient.d.ts +178 -0
  648. package/dist/sync/coordinator/localSyncCoordinatorBrowserClient.js +131 -0
  649. package/dist/sync/coordinator/localSyncCoordinatorCommandLifecycle.d.ts +25 -0
  650. package/dist/sync/coordinator/localSyncCoordinatorCommandLifecycle.js +200 -0
  651. package/dist/sync/coordinator/localSyncCoordinatorHost.d.ts +84 -0
  652. package/dist/sync/coordinator/localSyncCoordinatorHost.js +435 -0
  653. package/dist/sync/coordinator/localSyncCoordinatorRouteServices.d.ts +33 -0
  654. package/dist/sync/coordinator/localSyncCoordinatorRouteServices.js +1 -0
  655. package/dist/sync/coordinator/localSyncCoordinatorStore.d.ts +122 -0
  656. package/dist/sync/coordinator/localSyncCoordinatorStore.js +1039 -0
  657. package/dist/sync/coordinator/localSyncCoordinatorTypes.d.ts +82 -0
  658. package/dist/sync/coordinator/localSyncCoordinatorTypes.js +9 -0
  659. package/dist/sync/coordinator/localSyncDispatchTracker.d.ts +15 -0
  660. package/dist/sync/coordinator/localSyncDispatchTracker.js +68 -0
  661. package/dist/sync/coordinator/localSyncExecutionPermitStore.d.ts +216 -0
  662. package/dist/sync/coordinator/localSyncExecutionPermitStore.js +1436 -0
  663. package/dist/sync/coordinator/localSyncExecutionPermitTypes.d.ts +52 -0
  664. package/dist/sync/coordinator/localSyncExecutionPermitTypes.js +8 -0
  665. package/dist/sync/coordinator/localSyncOwnershipDrainBarrier.d.ts +33 -0
  666. package/dist/sync/coordinator/localSyncOwnershipDrainBarrier.js +83 -0
  667. package/dist/sync/coordinator/localSyncPermitTransactionHooks.d.ts +9 -0
  668. package/dist/sync/coordinator/localSyncPermitTransactionHooks.js +27 -0
  669. package/dist/sync/coordinator/localSyncProcessLock.d.ts +12 -0
  670. package/dist/sync/coordinator/localSyncProcessLock.js +212 -0
  671. package/dist/sync/coordinator/localSyncV3DispatchRecoveryReconciler.d.ts +17 -0
  672. package/dist/sync/coordinator/localSyncV3DispatchRecoveryReconciler.js +82 -0
  673. package/dist/sync/coordinator/localWorkspaceSyncRunner.d.ts +134 -0
  674. package/dist/sync/coordinator/localWorkspaceSyncRunner.js +981 -0
  675. package/dist/sync/coordinator/localWorkspaceSyncRunnerState.d.ts +189 -0
  676. package/dist/sync/coordinator/localWorkspaceSyncRunnerState.js +961 -0
  677. package/dist/sync/coordinator/workspaceSyncCloudCredentialValidator.d.ts +19 -0
  678. package/dist/sync/coordinator/workspaceSyncCloudCredentialValidator.js +83 -0
  679. package/dist/sync/coordinator/workspaceSyncCredentialBroker.d.ts +117 -0
  680. package/dist/sync/coordinator/workspaceSyncCredentialBroker.js +323 -0
  681. package/dist/sync/coordinator/workspaceSyncLocalAccessBootstrap.d.ts +11 -0
  682. package/dist/sync/coordinator/workspaceSyncLocalAccessBootstrap.js +51 -0
  683. package/dist/sync/coordinator/workspaceSyncTransportGateway.d.ts +139 -0
  684. package/dist/sync/coordinator/workspaceSyncTransportGateway.js +740 -0
  685. package/dist/sync/engine/localWorkspaceContentManifestService.d.ts +21 -0
  686. package/dist/sync/engine/localWorkspaceContentManifestService.js +44 -0
  687. package/dist/sync/engine/workspaceSyncAtomicLocalPublisher.d.ts +36 -0
  688. package/dist/sync/engine/workspaceSyncAtomicLocalPublisher.js +203 -0
  689. package/dist/sync/engine/workspaceSyncContentLifecycleAdapter.d.ts +21 -0
  690. package/dist/sync/engine/workspaceSyncContentLifecycleAdapter.js +13 -0
  691. package/dist/sync/engine/workspaceSyncContentPullObligationStore.d.ts +65 -0
  692. package/dist/sync/engine/workspaceSyncContentPullObligationStore.js +160 -0
  693. package/dist/sync/engine/workspaceSyncContentVersionStore.d.ts +216 -0
  694. package/dist/sync/engine/workspaceSyncContentVersionStore.js +1068 -0
  695. package/dist/sync/engine/workspaceSyncEngineBrowserGatewayRemoteServices.d.ts +28 -0
  696. package/dist/sync/engine/workspaceSyncEngineBrowserGatewayRemoteServices.js +543 -0
  697. package/dist/sync/engine/workspaceSyncEngineContracts.d.ts +78 -0
  698. package/dist/sync/engine/workspaceSyncEngineContracts.js +1 -0
  699. package/dist/sync/engine/workspaceSyncEngineControlPlane.d.ts +37 -0
  700. package/dist/sync/engine/workspaceSyncEngineControlPlane.js +79 -0
  701. package/dist/sync/engine/workspaceSyncEngineIdentity.d.ts +1 -0
  702. package/dist/sync/engine/workspaceSyncEngineIdentity.js +4 -0
  703. package/dist/sync/engine/workspaceSyncEngineLifecyclePolicy.d.ts +68 -0
  704. package/dist/sync/engine/workspaceSyncEngineLifecyclePolicy.js +180 -0
  705. package/dist/sync/engine/workspaceSyncEngineLocalApply.d.ts +72 -0
  706. package/dist/sync/engine/workspaceSyncEngineLocalApply.js +132 -0
  707. package/dist/sync/engine/workspaceSyncEngineLocalServices.d.ts +70 -0
  708. package/dist/sync/engine/workspaceSyncEngineLocalServices.js +25 -0
  709. package/dist/sync/engine/workspaceSyncEngineParity.d.ts +8 -0
  710. package/dist/sync/engine/workspaceSyncEngineParity.js +7 -0
  711. package/dist/sync/engine/workspaceSyncEnginePullPolicy.d.ts +32 -0
  712. package/dist/sync/engine/workspaceSyncEnginePullPolicy.js +27 -0
  713. package/dist/sync/engine/workspaceSyncEnginePushCompletion.d.ts +20 -0
  714. package/dist/sync/engine/workspaceSyncEnginePushCompletion.js +87 -0
  715. package/dist/sync/engine/workspaceSyncEngineRecovery.d.ts +56 -0
  716. package/dist/sync/engine/workspaceSyncEngineRecovery.js +288 -0
  717. package/dist/sync/engine/workspaceSyncEngineRemoteServices.d.ts +109 -0
  718. package/dist/sync/engine/workspaceSyncEngineRemoteServices.js +21 -0
  719. package/dist/sync/engine/workspaceSyncEngineRuntime.d.ts +61 -0
  720. package/dist/sync/engine/workspaceSyncEngineRuntime.js +59 -0
  721. package/dist/sync/engine/workspaceSyncEngineServerApplyBoundary.d.ts +28 -0
  722. package/dist/sync/engine/workspaceSyncEngineServerApplyBoundary.js +86 -0
  723. package/dist/sync/engine/workspaceSyncEngineServerLocalServices.d.ts +73 -0
  724. package/dist/sync/engine/workspaceSyncEngineServerLocalServices.js +452 -0
  725. package/dist/sync/engine/workspaceSyncEngineServerRemoteServices.d.ts +23 -0
  726. package/dist/sync/engine/workspaceSyncEngineServerRemoteServices.js +466 -0
  727. package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.d.ts +125 -0
  728. package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.js +1147 -0
  729. package/dist/sync/engine/workspaceSyncEngineServerSnapshotReader.d.ts +63 -0
  730. package/dist/sync/engine/workspaceSyncEngineServerSnapshotReader.js +276 -0
  731. package/dist/sync/engine/workspaceSyncEngineTransferCompletion.d.ts +20 -0
  732. package/dist/sync/engine/workspaceSyncEngineTransferCompletion.js +37 -0
  733. package/dist/sync/engine/workspaceSyncEngineTransferTypes.d.ts +7 -0
  734. package/dist/sync/engine/workspaceSyncEngineTransferTypes.js +1 -0
  735. package/dist/sync/engine/workspaceSyncEngineTransfers.d.ts +240 -0
  736. package/dist/sync/engine/workspaceSyncEngineTransfers.js +1184 -0
  737. package/dist/sync/engine/workspaceSyncEngineV3LocalFeedApply.d.ts +39 -0
  738. package/dist/sync/engine/workspaceSyncEngineV3LocalFeedApply.js +39 -0
  739. package/dist/sync/engine/workspaceSyncImmutableContentGcRunner.d.ts +25 -0
  740. package/dist/sync/engine/workspaceSyncImmutableContentGcRunner.js +83 -0
  741. package/dist/sync/engine/workspaceSyncImmutableContentProvider.d.ts +71 -0
  742. package/dist/sync/engine/workspaceSyncImmutableContentProvider.js +209 -0
  743. package/dist/sync/engine/workspaceSyncImmutableContentStager.d.ts +32 -0
  744. package/dist/sync/engine/workspaceSyncImmutableContentStager.js +202 -0
  745. package/dist/sync/engine/workspaceSyncPublishedContentResolver.d.ts +43 -0
  746. package/dist/sync/engine/workspaceSyncPublishedContentResolver.js +142 -0
  747. package/dist/sync/engine/workspaceSyncServerContentRuntime.d.ts +26 -0
  748. package/dist/sync/engine/workspaceSyncServerContentRuntime.js +41 -0
  749. package/dist/sync/engine/workspaceSyncServerDataServices.d.ts +44 -0
  750. package/dist/sync/engine/workspaceSyncServerDataServices.js +143 -0
  751. package/dist/sync/engine/workspaceSyncTransferEvidence.d.ts +39 -0
  752. package/dist/sync/engine/workspaceSyncTransferEvidence.js +45 -0
  753. package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.d.ts +44 -0
  754. package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.js +992 -0
  755. package/dist/sync/engine/workspaceSyncV2PreparedContent.d.ts +82 -0
  756. package/dist/sync/engine/workspaceSyncV2PreparedContent.js +219 -0
  757. package/dist/sync/planningCanonicalFields.d.ts +41 -0
  758. package/dist/sync/planningCanonicalFields.js +211 -0
  759. package/dist/sync/planningSyncPayload.d.ts +5 -1
  760. package/dist/sync/planningSyncPayload.js +88 -4
  761. package/dist/sync/syncApplyHandlers.d.ts +100 -8
  762. package/dist/sync/syncApplyHandlers.js +845 -78
  763. package/dist/sync/syncResourceAdapters.d.ts +10 -0
  764. package/dist/sync/syncResourceAdapters.js +21 -1
  765. package/dist/sync/syncService.d.ts +57 -1
  766. package/dist/sync/syncService.js +1094 -138
  767. package/dist/sync/taskNestedContent.d.ts +2 -0
  768. package/dist/sync/taskNestedContent.js +8 -0
  769. package/dist/sync/taskSyncChangeKey.js +0 -1
  770. package/dist/sync/taskSyncPayload.d.ts +1 -1
  771. package/dist/sync/taskSyncPayload.js +20 -3
  772. package/dist/sync/v3/canonicalWorkspaceSyncJson.d.ts +2 -0
  773. package/dist/sync/v3/canonicalWorkspaceSyncJson.js +26 -0
  774. package/dist/sync/v3/combinedFeedCapability.d.ts +21 -0
  775. package/dist/sync/v3/combinedFeedCapability.js +80 -0
  776. package/dist/sync/v3/combinedFeedPrerequisites.d.ts +18 -0
  777. package/dist/sync/v3/combinedFeedPrerequisites.js +184 -0
  778. package/dist/sync/v3/durableInitiativeMutationRouter.d.ts +61 -0
  779. package/dist/sync/v3/durableInitiativeMutationRouter.js +287 -0
  780. package/dist/sync/v3/durableOperationReplay.d.ts +36 -0
  781. package/dist/sync/v3/durableOperationReplay.js +103 -0
  782. package/dist/sync/v3/durableTaskAttachmentLinksMutationRouter.d.ts +50 -0
  783. package/dist/sync/v3/durableTaskAttachmentLinksMutationRouter.js +216 -0
  784. package/dist/sync/v3/durableTaskChecklistMutationRouter.d.ts +47 -0
  785. package/dist/sync/v3/durableTaskChecklistMutationRouter.js +182 -0
  786. package/dist/sync/v3/durableTaskCommentMutationRouter.d.ts +47 -0
  787. package/dist/sync/v3/durableTaskCommentMutationRouter.js +191 -0
  788. package/dist/sync/v3/durableTaskHttpBulkMutationRouter.d.ts +60 -0
  789. package/dist/sync/v3/durableTaskHttpBulkMutationRouter.js +333 -0
  790. package/dist/sync/v3/durableTaskHttpRootMutationRouter.d.ts +40 -0
  791. package/dist/sync/v3/durableTaskHttpRootMutationRouter.js +518 -0
  792. package/dist/sync/v3/durableTaxonomyMutationRouter.d.ts +63 -0
  793. package/dist/sync/v3/durableTaxonomyMutationRouter.js +289 -0
  794. package/dist/sync/v3/durableWorkflowRuntimeMutationRouter.d.ts +77 -0
  795. package/dist/sync/v3/durableWorkflowRuntimeMutationRouter.js +361 -0
  796. package/dist/sync/v3/durableWorkstreamMutationRouter.d.ts +61 -0
  797. package/dist/sync/v3/durableWorkstreamMutationRouter.js +287 -0
  798. package/dist/sync/v3/durableWorkstreamTaskOrderMutationRouter.d.ts +42 -0
  799. package/dist/sync/v3/durableWorkstreamTaskOrderMutationRouter.js +122 -0
  800. package/dist/sync/v3/entityEventLegacyAdoptionContract.d.ts +6 -0
  801. package/dist/sync/v3/entityEventLegacyAdoptionContract.js +6 -0
  802. package/dist/sync/v3/entityEventLegacyAdoptionService.d.ts +62 -0
  803. package/dist/sync/v3/entityEventLegacyAdoptionService.js +180 -0
  804. package/dist/sync/v3/initiativeActivityAuthoritativeRevision.d.ts +11 -0
  805. package/dist/sync/v3/initiativeActivityAuthoritativeRevision.js +23 -0
  806. package/dist/sync/v3/initiativeActivityIdentity.d.ts +8 -0
  807. package/dist/sync/v3/initiativeActivityIdentity.js +14 -0
  808. package/dist/sync/v3/initiativeCoexistence.d.ts +26 -0
  809. package/dist/sync/v3/initiativeCoexistence.js +148 -0
  810. package/dist/sync/v3/initiativeFeedActivationCapability.d.ts +6 -0
  811. package/dist/sync/v3/initiativeFeedActivationCapability.js +16 -0
  812. package/dist/sync/v3/initiativeMutationPayload.d.ts +26 -0
  813. package/dist/sync/v3/initiativeMutationPayload.js +144 -0
  814. package/dist/sync/v3/initiativeMutationService.d.ts +62 -0
  815. package/dist/sync/v3/initiativeMutationService.js +206 -0
  816. package/dist/sync/v3/localEntityEventLegacyAdoption.d.ts +31 -0
  817. package/dist/sync/v3/localEntityEventLegacyAdoption.js +607 -0
  818. package/dist/sync/v3/localInitiativeOutboxHandler.d.ts +8 -0
  819. package/dist/sync/v3/localInitiativeOutboxHandler.js +88 -0
  820. package/dist/sync/v3/localInitiativeOutboxService.d.ts +50 -0
  821. package/dist/sync/v3/localInitiativeOutboxService.js +497 -0
  822. package/dist/sync/v3/localOperationIdentityStore.d.ts +81 -0
  823. package/dist/sync/v3/localOperationIdentityStore.js +388 -0
  824. package/dist/sync/v3/localOutboxDispatchCapability.d.ts +7 -0
  825. package/dist/sync/v3/localOutboxDispatchCapability.js +13 -0
  826. package/dist/sync/v3/localOutboxDispatchRuntime.d.ts +16 -0
  827. package/dist/sync/v3/localOutboxDispatchRuntime.js +269 -0
  828. package/dist/sync/v3/localOutboxDispatcher.d.ts +53 -0
  829. package/dist/sync/v3/localOutboxDispatcher.js +366 -0
  830. package/dist/sync/v3/localOutboxDrainClient.d.ts +50 -0
  831. package/dist/sync/v3/localOutboxDrainClient.js +250 -0
  832. package/dist/sync/v3/localOutboxOperationHandler.d.ts +31 -0
  833. package/dist/sync/v3/localOutboxOperationHandler.js +10 -0
  834. package/dist/sync/v3/localOutboxRecoveryClient.d.ts +14 -0
  835. package/dist/sync/v3/localOutboxRecoveryClient.js +45 -0
  836. package/dist/sync/v3/localOutboxRecoveryPreparationService.d.ts +12 -0
  837. package/dist/sync/v3/localOutboxRecoveryPreparationService.js +151 -0
  838. package/dist/sync/v3/localSyncIdentityStore.d.ts +9 -0
  839. package/dist/sync/v3/localSyncIdentityStore.js +43 -0
  840. package/dist/sync/v3/localTaskAttachmentLinksOutboxHandler.d.ts +10 -0
  841. package/dist/sync/v3/localTaskAttachmentLinksOutboxHandler.js +80 -0
  842. package/dist/sync/v3/localTaskAttachmentLinksOutboxService.d.ts +46 -0
  843. package/dist/sync/v3/localTaskAttachmentLinksOutboxService.js +303 -0
  844. package/dist/sync/v3/localTaskChecklistOutboxHandler.d.ts +10 -0
  845. package/dist/sync/v3/localTaskChecklistOutboxHandler.js +54 -0
  846. package/dist/sync/v3/localTaskChecklistOutboxService.d.ts +47 -0
  847. package/dist/sync/v3/localTaskChecklistOutboxService.js +221 -0
  848. package/dist/sync/v3/localTaskCommentOutboxHandler.d.ts +10 -0
  849. package/dist/sync/v3/localTaskCommentOutboxHandler.js +94 -0
  850. package/dist/sync/v3/localTaskCommentOutboxService.d.ts +75 -0
  851. package/dist/sync/v3/localTaskCommentOutboxService.js +391 -0
  852. package/dist/sync/v3/localTaskCreateClient.d.ts +27 -0
  853. package/dist/sync/v3/localTaskCreateClient.js +209 -0
  854. package/dist/sync/v3/localTaskCreateOutboxHandler.d.ts +8 -0
  855. package/dist/sync/v3/localTaskCreateOutboxHandler.js +147 -0
  856. package/dist/sync/v3/localTaskCreateOutboxService.d.ts +77 -0
  857. package/dist/sync/v3/localTaskCreateOutboxService.js +397 -0
  858. package/dist/sync/v3/localTaskDeleteClient.d.ts +10 -0
  859. package/dist/sync/v3/localTaskDeleteClient.js +23 -0
  860. package/dist/sync/v3/localTaskDeleteOutboxHandler.d.ts +8 -0
  861. package/dist/sync/v3/localTaskDeleteOutboxHandler.js +54 -0
  862. package/dist/sync/v3/localTaskDeleteOutboxService.d.ts +38 -0
  863. package/dist/sync/v3/localTaskDeleteOutboxService.js +235 -0
  864. package/dist/sync/v3/localTaskLegacyRootAdoption.d.ts +28 -0
  865. package/dist/sync/v3/localTaskLegacyRootAdoption.js +219 -0
  866. package/dist/sync/v3/localTaskLifecycleClient.d.ts +49 -0
  867. package/dist/sync/v3/localTaskLifecycleClient.js +57 -0
  868. package/dist/sync/v3/localTaskLifecycleOutboxHandler.d.ts +8 -0
  869. package/dist/sync/v3/localTaskLifecycleOutboxHandler.js +94 -0
  870. package/dist/sync/v3/localTaskLifecycleOutboxService.d.ts +60 -0
  871. package/dist/sync/v3/localTaskLifecycleOutboxService.js +304 -0
  872. package/dist/sync/v3/localTaskMetadataClient.d.ts +13 -0
  873. package/dist/sync/v3/localTaskMetadataClient.js +30 -0
  874. package/dist/sync/v3/localTaskMetadataOutboxHandler.d.ts +8 -0
  875. package/dist/sync/v3/localTaskMetadataOutboxHandler.js +70 -0
  876. package/dist/sync/v3/localTaskMetadataOutboxService.d.ts +48 -0
  877. package/dist/sync/v3/localTaskMetadataOutboxService.js +229 -0
  878. package/dist/sync/v3/localTaskOperationClient.d.ts +72 -0
  879. package/dist/sync/v3/localTaskOperationClient.js +195 -0
  880. package/dist/sync/v3/localTaskRelationshipOutboxHandler.d.ts +8 -0
  881. package/dist/sync/v3/localTaskRelationshipOutboxHandler.js +114 -0
  882. package/dist/sync/v3/localTaskRelationshipOutboxService.d.ts +45 -0
  883. package/dist/sync/v3/localTaskRelationshipOutboxService.js +192 -0
  884. package/dist/sync/v3/localTaskRestoreClient.d.ts +13 -0
  885. package/dist/sync/v3/localTaskRestoreClient.js +32 -0
  886. package/dist/sync/v3/localTaskRestoreOutboxHandler.d.ts +8 -0
  887. package/dist/sync/v3/localTaskRestoreOutboxHandler.js +41 -0
  888. package/dist/sync/v3/localTaskRestoreOutboxService.d.ts +56 -0
  889. package/dist/sync/v3/localTaskRestoreOutboxService.js +323 -0
  890. package/dist/sync/v3/localTaskStatusClient.d.ts +17 -0
  891. package/dist/sync/v3/localTaskStatusClient.js +35 -0
  892. package/dist/sync/v3/localTaskStatusOutboxHandler.d.ts +8 -0
  893. package/dist/sync/v3/localTaskStatusOutboxHandler.js +75 -0
  894. package/dist/sync/v3/localTaskStatusOutboxService.d.ts +53 -0
  895. package/dist/sync/v3/localTaskStatusOutboxService.js +422 -0
  896. package/dist/sync/v3/localTaxonomyCompositeOutboxService.d.ts +34 -0
  897. package/dist/sync/v3/localTaxonomyCompositeOutboxService.js +290 -0
  898. package/dist/sync/v3/localTaxonomyOutboxHandler.d.ts +9 -0
  899. package/dist/sync/v3/localTaxonomyOutboxHandler.js +106 -0
  900. package/dist/sync/v3/localTaxonomyOutboxService.d.ts +30 -0
  901. package/dist/sync/v3/localTaxonomyOutboxService.js +181 -0
  902. package/dist/sync/v3/localWorkflowRuntimeOutboxHandler.d.ts +8 -0
  903. package/dist/sync/v3/localWorkflowRuntimeOutboxHandler.js +113 -0
  904. package/dist/sync/v3/localWorkflowRuntimeOutboxService.d.ts +37 -0
  905. package/dist/sync/v3/localWorkflowRuntimeOutboxService.js +330 -0
  906. package/dist/sync/v3/localWorkspaceSyncServerOutboxDispatcher.d.ts +63 -0
  907. package/dist/sync/v3/localWorkspaceSyncServerOutboxDispatcher.js +264 -0
  908. package/dist/sync/v3/localWorkstreamOutboxHandler.d.ts +8 -0
  909. package/dist/sync/v3/localWorkstreamOutboxHandler.js +102 -0
  910. package/dist/sync/v3/localWorkstreamOutboxService.d.ts +52 -0
  911. package/dist/sync/v3/localWorkstreamOutboxService.js +581 -0
  912. package/dist/sync/v3/localWorkstreamTaskOrderOutboxHandler.d.ts +10 -0
  913. package/dist/sync/v3/localWorkstreamTaskOrderOutboxHandler.js +57 -0
  914. package/dist/sync/v3/localWorkstreamTaskOrderOutboxService.d.ts +30 -0
  915. package/dist/sync/v3/localWorkstreamTaskOrderOutboxService.js +128 -0
  916. package/dist/sync/v3/planningActivation.d.ts +13 -0
  917. package/dist/sync/v3/planningActivation.js +33 -0
  918. package/dist/sync/v3/planningAttachmentActivityValidation.d.ts +9 -0
  919. package/dist/sync/v3/planningAttachmentActivityValidation.js +87 -0
  920. package/dist/sync/v3/programScaffoldService.d.ts +143 -0
  921. package/dist/sync/v3/programScaffoldService.js +478 -0
  922. package/dist/sync/v3/syncDurabilityStore.d.ts +781 -0
  923. package/dist/sync/v3/syncDurabilityStore.js +4773 -0
  924. package/dist/sync/v3/taskActivityAuthoritativeRevision.d.ts +16 -0
  925. package/dist/sync/v3/taskActivityAuthoritativeRevision.js +67 -0
  926. package/dist/sync/v3/taskActivityJournal.d.ts +20 -0
  927. package/dist/sync/v3/taskActivityJournal.js +195 -0
  928. package/dist/sync/v3/taskAttachmentLinksActivityIdentity.d.ts +6 -0
  929. package/dist/sync/v3/taskAttachmentLinksActivityIdentity.js +14 -0
  930. package/dist/sync/v3/taskAttachmentLinksMutationService.d.ts +112 -0
  931. package/dist/sync/v3/taskAttachmentLinksMutationService.js +218 -0
  932. package/dist/sync/v3/taskChecklistActivityIdentity.d.ts +6 -0
  933. package/dist/sync/v3/taskChecklistActivityIdentity.js +14 -0
  934. package/dist/sync/v3/taskChecklistMutationService.d.ts +92 -0
  935. package/dist/sync/v3/taskChecklistMutationService.js +156 -0
  936. package/dist/sync/v3/taskCommentActivityIdentity.d.ts +7 -0
  937. package/dist/sync/v3/taskCommentActivityIdentity.js +15 -0
  938. package/dist/sync/v3/taskCommentMutationService.d.ts +150 -0
  939. package/dist/sync/v3/taskCommentMutationService.js +392 -0
  940. package/dist/sync/v3/taskCommentReconcileProvenance.d.ts +58 -0
  941. package/dist/sync/v3/taskCommentReconcileProvenance.js +170 -0
  942. package/dist/sync/v3/taskCreateActivation.d.ts +19 -0
  943. package/dist/sync/v3/taskCreateActivation.js +84 -0
  944. package/dist/sync/v3/taskCreateActivityIdentity.d.ts +7 -0
  945. package/dist/sync/v3/taskCreateActivityIdentity.js +18 -0
  946. package/dist/sync/v3/taskCreateMutationService.d.ts +103 -0
  947. package/dist/sync/v3/taskCreateMutationService.js +283 -0
  948. package/dist/sync/v3/taskDeleteActivation.d.ts +7 -0
  949. package/dist/sync/v3/taskDeleteActivation.js +14 -0
  950. package/dist/sync/v3/taskDeleteMutationService.d.ts +35 -0
  951. package/dist/sync/v3/taskDeleteMutationService.js +133 -0
  952. package/dist/sync/v3/taskLegacyRootAdoptionService.d.ts +78 -0
  953. package/dist/sync/v3/taskLegacyRootAdoptionService.js +175 -0
  954. package/dist/sync/v3/taskLifecycleActivityIdentity.d.ts +9 -0
  955. package/dist/sync/v3/taskLifecycleActivityIdentity.js +18 -0
  956. package/dist/sync/v3/taskLifecycleMutationPayload.d.ts +5 -0
  957. package/dist/sync/v3/taskLifecycleMutationPayload.js +28 -0
  958. package/dist/sync/v3/taskLifecycleMutationService.d.ts +66 -0
  959. package/dist/sync/v3/taskLifecycleMutationService.js +92 -0
  960. package/dist/sync/v3/taskMetadataActivation.d.ts +12 -0
  961. package/dist/sync/v3/taskMetadataActivation.js +38 -0
  962. package/dist/sync/v3/taskMetadataActivityIdentity.d.ts +7 -0
  963. package/dist/sync/v3/taskMetadataActivityIdentity.js +18 -0
  964. package/dist/sync/v3/taskMetadataCoexistence.d.ts +37 -0
  965. package/dist/sync/v3/taskMetadataCoexistence.js +138 -0
  966. package/dist/sync/v3/taskMetadataMutationService.d.ts +71 -0
  967. package/dist/sync/v3/taskMetadataMutationService.js +199 -0
  968. package/dist/sync/v3/taskRelationshipLegacyAdoptionService.d.ts +48 -0
  969. package/dist/sync/v3/taskRelationshipLegacyAdoptionService.js +164 -0
  970. package/dist/sync/v3/taskRelationshipMutationService.d.ts +50 -0
  971. package/dist/sync/v3/taskRelationshipMutationService.js +148 -0
  972. package/dist/sync/v3/taskRestoreMutationService.d.ts +90 -0
  973. package/dist/sync/v3/taskRestoreMutationService.js +179 -0
  974. package/dist/sync/v3/taskStatusActivation.d.ts +7 -0
  975. package/dist/sync/v3/taskStatusActivation.js +15 -0
  976. package/dist/sync/v3/taskStatusMutationService.d.ts +76 -0
  977. package/dist/sync/v3/taskStatusMutationService.js +308 -0
  978. package/dist/sync/v3/taskWorkflowMutationPayload.d.ts +4 -0
  979. package/dist/sync/v3/taskWorkflowMutationPayload.js +22 -0
  980. package/dist/sync/v3/taskWorkflowMutationService.d.ts +64 -0
  981. package/dist/sync/v3/taskWorkflowMutationService.js +102 -0
  982. package/dist/sync/v3/taxonomyCoexistence.d.ts +10 -0
  983. package/dist/sync/v3/taxonomyCoexistence.js +19 -0
  984. package/dist/sync/v3/taxonomyCompositeMutationService.d.ts +110 -0
  985. package/dist/sync/v3/taxonomyCompositeMutationService.js +304 -0
  986. package/dist/sync/v3/taxonomyMutationService.d.ts +57 -0
  987. package/dist/sync/v3/taxonomyMutationService.js +106 -0
  988. package/dist/sync/v3/taxonomyStateMutation.d.ts +22 -0
  989. package/dist/sync/v3/taxonomyStateMutation.js +49 -0
  990. package/dist/sync/v3/taxonomySyncPayload.d.ts +9 -0
  991. package/dist/sync/v3/taxonomySyncPayload.js +199 -0
  992. package/dist/sync/v3/workflowAssignmentSync.d.ts +22 -0
  993. package/dist/sync/v3/workflowAssignmentSync.js +213 -0
  994. package/dist/sync/v3/workflowRuntimeMutationService.d.ts +89 -0
  995. package/dist/sync/v3/workflowRuntimeMutationService.js +359 -0
  996. package/dist/sync/v3/workflowRuntimeOperationIdentity.d.ts +13 -0
  997. package/dist/sync/v3/workflowRuntimeOperationIdentity.js +35 -0
  998. package/dist/sync/v3/workflowRuntimeSync.d.ts +141 -0
  999. package/dist/sync/v3/workflowRuntimeSync.js +485 -0
  1000. package/dist/sync/v3/workspaceSyncJournalReader.d.ts +43 -0
  1001. package/dist/sync/v3/workspaceSyncJournalReader.js +45 -0
  1002. package/dist/sync/v3/workspaceSyncLocalOwnershipSnapshot.d.ts +28 -0
  1003. package/dist/sync/v3/workspaceSyncLocalOwnershipSnapshot.js +81 -0
  1004. package/dist/sync/v3/workspaceSyncPayloadFingerprint.d.ts +1 -0
  1005. package/dist/sync/v3/workspaceSyncPayloadFingerprint.js +5 -0
  1006. package/dist/sync/v3/workspaceSyncV2ProjectionExclusions.d.ts +16 -0
  1007. package/dist/sync/v3/workspaceSyncV2ProjectionExclusions.js +153 -0
  1008. package/dist/sync/v3/workspaceSyncV3AttachmentApplyObligationStore.d.ts +83 -0
  1009. package/dist/sync/v3/workspaceSyncV3AttachmentApplyObligationStore.js +161 -0
  1010. package/dist/sync/v3/workspaceSyncV3AttachmentAssetHydration.d.ts +16 -0
  1011. package/dist/sync/v3/workspaceSyncV3AttachmentAssetHydration.js +90 -0
  1012. package/dist/sync/v3/workspaceSyncV3CloudOperationHandler.d.ts +65 -0
  1013. package/dist/sync/v3/workspaceSyncV3CloudOperationHandler.js +357 -0
  1014. package/dist/sync/v3/workspaceSyncV3CombinedCoverage.d.ts +51 -0
  1015. package/dist/sync/v3/workspaceSyncV3CombinedCoverage.js +171 -0
  1016. package/dist/sync/v3/workspaceSyncV3CombinedFeedOrchestrator.d.ts +43 -0
  1017. package/dist/sync/v3/workspaceSyncV3CombinedFeedOrchestrator.js +541 -0
  1018. package/dist/sync/v3/workspaceSyncV3CombinedLocalApply.d.ts +50 -0
  1019. package/dist/sync/v3/workspaceSyncV3CombinedLocalApply.js +1161 -0
  1020. package/dist/sync/v3/workspaceSyncV3CombinedProjectionState.d.ts +96 -0
  1021. package/dist/sync/v3/workspaceSyncV3CombinedProjectionState.js +672 -0
  1022. package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.d.ts +46 -0
  1023. package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.js +621 -0
  1024. package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.d.ts +66 -0
  1025. package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.js +527 -0
  1026. package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.d.ts +78 -0
  1027. package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.js +566 -0
  1028. package/dist/sync/v3/workspaceSyncV3CombinedWireContract.d.ts +45 -0
  1029. package/dist/sync/v3/workspaceSyncV3CombinedWireContract.js +125 -0
  1030. package/dist/sync/v3/workspaceSyncV3CoverageRegistry.d.ts +13 -0
  1031. package/dist/sync/v3/workspaceSyncV3CoverageRegistry.js +34 -0
  1032. package/dist/sync/v3/workspaceSyncV3CursorEncoding.d.ts +1 -0
  1033. package/dist/sync/v3/workspaceSyncV3CursorEncoding.js +6 -0
  1034. package/dist/sync/v3/workspaceSyncV3DomainAdmission.d.ts +43 -0
  1035. package/dist/sync/v3/workspaceSyncV3DomainAdmission.js +118 -0
  1036. package/dist/sync/v3/workspaceSyncV3Feed.d.ts +95 -0
  1037. package/dist/sync/v3/workspaceSyncV3Feed.js +243 -0
  1038. package/dist/sync/v3/workspaceSyncV3FeedApply.d.ts +13 -0
  1039. package/dist/sync/v3/workspaceSyncV3FeedApply.js +67 -0
  1040. package/dist/sync/v3/workspaceSyncV3FeedClientContract.d.ts +3 -0
  1041. package/dist/sync/v3/workspaceSyncV3FeedClientContract.js +46 -0
  1042. package/dist/sync/v3/workspaceSyncV3FeedCursorKeys.d.ts +10 -0
  1043. package/dist/sync/v3/workspaceSyncV3FeedCursorKeys.js +58 -0
  1044. package/dist/sync/v3/workspaceSyncV3FeedOrchestrator.d.ts +31 -0
  1045. package/dist/sync/v3/workspaceSyncV3FeedOrchestrator.js +228 -0
  1046. package/dist/sync/v3/workspaceSyncV3FeedProfile.d.ts +32 -0
  1047. package/dist/sync/v3/workspaceSyncV3FeedProfile.js +21 -0
  1048. package/dist/sync/v3/workspaceSyncV3InitiativeLocalApply.d.ts +36 -0
  1049. package/dist/sync/v3/workspaceSyncV3InitiativeLocalApply.js +163 -0
  1050. package/dist/sync/v3/workspaceSyncV3InitiativeRepair.d.ts +33 -0
  1051. package/dist/sync/v3/workspaceSyncV3InitiativeRepair.js +118 -0
  1052. package/dist/sync/v3/workspaceSyncV3LegacyBoundaryAttestation.d.ts +10 -0
  1053. package/dist/sync/v3/workspaceSyncV3LegacyBoundaryAttestation.js +45 -0
  1054. package/dist/sync/v3/workspaceSyncV3LocalOutboxStatus.d.ts +27 -0
  1055. package/dist/sync/v3/workspaceSyncV3LocalOutboxStatus.js +83 -0
  1056. package/dist/sync/v3/workspaceSyncV3NestedCoverage.d.ts +10 -0
  1057. package/dist/sync/v3/workspaceSyncV3NestedCoverage.js +40 -0
  1058. package/dist/sync/v3/workspaceSyncV3NestedTaskApply.d.ts +83 -0
  1059. package/dist/sync/v3/workspaceSyncV3NestedTaskApply.js +325 -0
  1060. package/dist/sync/v3/workspaceSyncV3NestedTaskCodecs.d.ts +59 -0
  1061. package/dist/sync/v3/workspaceSyncV3NestedTaskCodecs.js +302 -0
  1062. package/dist/sync/v3/workspaceSyncV3NestedTaskProjection.d.ts +47 -0
  1063. package/dist/sync/v3/workspaceSyncV3NestedTaskProjection.js +329 -0
  1064. package/dist/sync/v3/workspaceSyncV3NestedTaskRepairSnapshot.d.ts +19 -0
  1065. package/dist/sync/v3/workspaceSyncV3NestedTaskRepairSnapshot.js +41 -0
  1066. package/dist/sync/v3/workspaceSyncV3NestedWireContract.d.ts +6 -0
  1067. package/dist/sync/v3/workspaceSyncV3NestedWireContract.js +16 -0
  1068. package/dist/sync/v3/workspaceSyncV3OperationProjection.d.ts +8 -0
  1069. package/dist/sync/v3/workspaceSyncV3OperationProjection.js +52 -0
  1070. package/dist/sync/v3/workspaceSyncV3OperationProtocol.d.ts +230 -0
  1071. package/dist/sync/v3/workspaceSyncV3OperationProtocol.js +1 -0
  1072. package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.d.ts +165 -0
  1073. package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.js +414 -0
  1074. package/dist/sync/v3/workspaceSyncV3OriginActor.d.ts +36 -0
  1075. package/dist/sync/v3/workspaceSyncV3OriginActor.js +61 -0
  1076. package/dist/sync/v3/workspaceSyncV3OriginAssertion.d.ts +46 -0
  1077. package/dist/sync/v3/workspaceSyncV3OriginAssertion.js +121 -0
  1078. package/dist/sync/v3/workspaceSyncV3OriginAssertionHeader.d.ts +1 -0
  1079. package/dist/sync/v3/workspaceSyncV3OriginAssertionHeader.js +1 -0
  1080. package/dist/sync/v3/workspaceSyncV3PlanningOrderCoverage.d.ts +10 -0
  1081. package/dist/sync/v3/workspaceSyncV3PlanningOrderCoverage.js +34 -0
  1082. package/dist/sync/v3/workspaceSyncV3PlanningOrderWireContract.d.ts +6 -0
  1083. package/dist/sync/v3/workspaceSyncV3PlanningOrderWireContract.js +10 -0
  1084. package/dist/sync/v3/workspaceSyncV3ProjectionState.d.ts +105 -0
  1085. package/dist/sync/v3/workspaceSyncV3ProjectionState.js +467 -0
  1086. package/dist/sync/v3/workspaceSyncV3RepairSqlBatching.d.ts +2 -0
  1087. package/dist/sync/v3/workspaceSyncV3RepairSqlBatching.js +10 -0
  1088. package/dist/sync/v3/workspaceSyncV3TaskCommentAudit.d.ts +56 -0
  1089. package/dist/sync/v3/workspaceSyncV3TaskCommentAudit.js +250 -0
  1090. package/dist/sync/v3/workspaceSyncV3TaskRelationshipProjection.d.ts +30 -0
  1091. package/dist/sync/v3/workspaceSyncV3TaskRelationshipProjection.js +142 -0
  1092. package/dist/sync/v3/workspaceSyncV3TaskRootProjection.d.ts +40 -0
  1093. package/dist/sync/v3/workspaceSyncV3TaskRootProjection.js +246 -0
  1094. package/dist/sync/v3/workspaceSyncV3TaxonomyFeedProjection.d.ts +39 -0
  1095. package/dist/sync/v3/workspaceSyncV3TaxonomyFeedProjection.js +185 -0
  1096. package/dist/sync/v3/workspaceSyncV3WorkflowCoverage.d.ts +10 -0
  1097. package/dist/sync/v3/workspaceSyncV3WorkflowCoverage.js +36 -0
  1098. package/dist/sync/v3/workspaceSyncV3WorkflowRuntimeApply.d.ts +17 -0
  1099. package/dist/sync/v3/workspaceSyncV3WorkflowRuntimeApply.js +143 -0
  1100. package/dist/sync/v3/workspaceSyncV3WorkflowRuntimeProjection.d.ts +9 -0
  1101. package/dist/sync/v3/workspaceSyncV3WorkflowRuntimeProjection.js +195 -0
  1102. package/dist/sync/v3/workspaceSyncV3WorkflowWireContract.d.ts +11 -0
  1103. package/dist/sync/v3/workspaceSyncV3WorkflowWireContract.js +12 -0
  1104. package/dist/sync/v3/workspaceSyncV3WorkstreamProjection.d.ts +4 -0
  1105. package/dist/sync/v3/workspaceSyncV3WorkstreamProjection.js +98 -0
  1106. package/dist/sync/v3/workspaceSyncV3WorkstreamTaskOrderProjection.d.ts +9 -0
  1107. package/dist/sync/v3/workspaceSyncV3WorkstreamTaskOrderProjection.js +72 -0
  1108. package/dist/sync/v3/workstreamActivityAuthoritativeRevision.d.ts +11 -0
  1109. package/dist/sync/v3/workstreamActivityAuthoritativeRevision.js +23 -0
  1110. package/dist/sync/v3/workstreamActivityIdentity.d.ts +8 -0
  1111. package/dist/sync/v3/workstreamActivityIdentity.js +14 -0
  1112. package/dist/sync/v3/workstreamCoexistence.d.ts +19 -0
  1113. package/dist/sync/v3/workstreamCoexistence.js +64 -0
  1114. package/dist/sync/v3/workstreamMutationPayload.d.ts +27 -0
  1115. package/dist/sync/v3/workstreamMutationPayload.js +147 -0
  1116. package/dist/sync/v3/workstreamMutationService.d.ts +72 -0
  1117. package/dist/sync/v3/workstreamMutationService.js +256 -0
  1118. package/dist/sync/v3/workstreamTaskOrderMutationService.d.ts +55 -0
  1119. package/dist/sync/v3/workstreamTaskOrderMutationService.js +110 -0
  1120. package/dist/sync/v3/workstreamTaskOrderSync.d.ts +14 -0
  1121. package/dist/sync/v3/workstreamTaskOrderSync.js +25 -0
  1122. package/dist/sync/workspaceContentManifest.d.ts +86 -0
  1123. package/dist/sync/workspaceContentManifest.js +123 -0
  1124. package/dist/sync/workspacePullFeed.d.ts +191 -2
  1125. package/dist/sync/workspacePullFeed.js +523 -135
  1126. package/dist/sync/workspacePushPreparedPlan.d.ts +21 -0
  1127. package/dist/sync/workspacePushPreparedPlan.js +1 -0
  1128. package/dist/sync/workspaceRepair.d.ts +17 -25
  1129. package/dist/sync/workspaceRepair.js +348 -25
  1130. package/dist/sync/workspaceSyncContentDecryption.d.ts +6 -0
  1131. package/dist/sync/workspaceSyncContentDecryption.js +11 -0
  1132. package/dist/sync/workspaceSyncModel.d.ts +227 -5
  1133. package/dist/sync/workspaceSyncModel.js +398 -37
  1134. package/dist/sync/workspaceSyncSnapshotProjection.d.ts +11 -0
  1135. package/dist/sync/workspaceSyncSnapshotProjection.js +101 -0
  1136. package/dist/sync/workspaceSyncState.d.ts +13 -0
  1137. package/dist/sync/workspaceSyncState.js +36 -0
  1138. package/dist/sync/workspaceSyncV2SnapshotBuilder.d.ts +106 -0
  1139. package/dist/sync/workspaceSyncV2SnapshotBuilder.js +193 -0
  1140. package/dist/types.d.ts +31 -15
  1141. package/dist/types.js +1 -3
  1142. package/dist/ui/ai-profile-clients/amazon-nova.svg +1 -0
  1143. package/dist/ui/ai-profile-clients/antigravity.png +0 -0
  1144. package/dist/ui/ai-profile-clients/chatgpt.svg +10 -0
  1145. package/dist/ui/ai-profile-clients/claude-chat.svg +1 -0
  1146. package/dist/ui/ai-profile-clients/claude-code.svg +15 -0
  1147. package/dist/ui/ai-profile-clients/cline-app-icon-light.png +0 -0
  1148. package/dist/ui/ai-profile-clients/cline.svg +16 -0
  1149. package/dist/ui/ai-profile-clients/codex.svg +1 -0
  1150. package/dist/ui/ai-profile-clients/copilot.png +0 -0
  1151. package/dist/ui/ai-profile-clients/cursor.svg +1 -0
  1152. package/dist/ui/ai-profile-clients/deepseek.svg +1 -0
  1153. package/dist/ui/ai-profile-clients/gemini-cli-icon.png +0 -0
  1154. package/dist/ui/ai-profile-clients/gemini.svg +10 -0
  1155. package/dist/ui/ai-profile-clients/grok.svg +31 -0
  1156. package/dist/ui/ai-profile-clients/kiro.svg +11 -0
  1157. package/dist/ui/ai-profile-clients/llama.svg +1 -0
  1158. package/dist/ui/ai-profile-clients/mistral.svg +1 -0
  1159. package/dist/ui/ai-profile-clients/ms_copilot.jpeg +0 -0
  1160. package/dist/ui/ai-profile-clients/openclaw.png +0 -0
  1161. package/dist/ui/ai-profile-clients/perplexity.svg +1 -0
  1162. package/dist/ui/ai-profile-clients/vscode.svg +41 -0
  1163. package/dist/ui/ai-profile-clients/windsurf.svg +11 -0
  1164. package/dist/ui/assets/AiIdentityRosterCard-MZs7lVED.js +1 -0
  1165. package/dist/ui/assets/AiProfilesModule-C3i0LOxe.js +1 -0
  1166. package/dist/ui/assets/AnnotatedAttachmentWorkspace-CBRZ8rca.css +1 -0
  1167. package/dist/ui/assets/AnnotatedAttachmentWorkspace-DVZk5Tln.js +3 -0
  1168. package/dist/ui/assets/AssetTraySortControl-B9k5caQW.css +1 -0
  1169. package/dist/ui/assets/AssetTraySortControl-Kf1pelSy.js +1 -0
  1170. package/dist/ui/assets/ContextAttachmentManager-B8boOs6Q.js +3 -0
  1171. package/dist/ui/assets/DocumentWorkspace-BIBGBfd7.css +1 -0
  1172. package/dist/ui/assets/DocumentWorkspace-DXH4XUsB.js +261 -0
  1173. package/dist/ui/assets/EntityActivityTimeline-BfJbZRdl.css +1 -0
  1174. package/dist/ui/assets/EntityActivityTimeline-BtSTq0ON.js +1 -0
  1175. package/dist/ui/assets/PlanningModule-BPVyEa-f.js +1 -0
  1176. package/dist/ui/assets/PlanningModule-CoIR9hbV.css +1 -0
  1177. package/dist/ui/assets/PlansPage-C2nkK2Bp.css +1 -0
  1178. package/dist/ui/assets/PlansPage-ChqgxALc.js +1 -0
  1179. package/dist/ui/assets/TaskContextUpload-CB3ol0sN.js +1 -0
  1180. package/dist/ui/assets/TaskContextUpload-qmBeUw3u.css +1 -0
  1181. package/dist/ui/assets/TaskSettings-g4ECKNOz.js +12 -0
  1182. package/dist/ui/assets/TaskforceAgentsModule-BazdUwxZ.js +21 -0
  1183. package/dist/ui/assets/TaskforceAgentsModule-D6IC0S7Q.css +1 -0
  1184. package/dist/ui/assets/WorkflowManagerModule-DF10XENz.css +1 -0
  1185. package/dist/ui/assets/WorkflowManagerModule-DWFspC-o.js +1 -0
  1186. package/dist/ui/assets/antigravity-DRKQga2U.png +0 -0
  1187. package/dist/ui/assets/cursor-BM_3k4Y4.svg +1 -0
  1188. package/dist/ui/assets/gemini-cli-icon-dBAVjCcn.png +0 -0
  1189. package/dist/ui/assets/grok-BuodbWaG.svg +31 -0
  1190. package/dist/ui/assets/index-BUplSsv_.js +7 -0
  1191. package/dist/ui/assets/index-gz2EXuoK.css +1 -0
  1192. package/dist/ui/assets/{vendor-dnd-DRzYolkg.js → vendor-dnd-CJ-AjP-Y.js} +1 -1
  1193. package/dist/ui/assets/{vendor-icons-CLnehDTw.js → vendor-icons-BkFLXavV.js} +1 -1
  1194. package/dist/ui/assets/{vendor-markdown-BUxTU7dS.js → vendor-markdown-_lhNCyq-.js} +9 -9
  1195. package/dist/ui/assets/vendor-router-AqJMU8Lz.js +3 -0
  1196. package/dist/ui/assets/vscode-C_7wk1WI.svg +41 -0
  1197. package/dist/ui/branding/logos/logo_dark_bg.png +0 -0
  1198. package/dist/ui/branding/logos/logo_favicon_dark.png +0 -0
  1199. package/dist/ui/branding/logos/logo_favicon_dark.svg +56 -0
  1200. package/dist/ui/branding/logos/logo_favicon_light.png +0 -0
  1201. package/dist/ui/branding/logos/logo_light_bg.png +0 -0
  1202. package/dist/ui/images/Taskforce_Van.webp +0 -0
  1203. package/dist/ui/index.html +6 -6
  1204. package/dist/update/uiUpdateService.d.ts +43 -0
  1205. package/dist/update/uiUpdateService.js +149 -0
  1206. package/dist/update/updateCli.d.ts +15 -0
  1207. package/dist/update/updateCli.js +76 -0
  1208. package/dist/update/updateExecutor.d.ts +40 -0
  1209. package/dist/update/updateExecutor.js +474 -0
  1210. package/dist/update/updateStatus.d.ts +83 -0
  1211. package/dist/update/updateStatus.js +703 -0
  1212. package/dist/utils/aiProfileAvatarPaths.d.ts +14 -0
  1213. package/dist/utils/aiProfileAvatarPaths.js +52 -0
  1214. package/dist/utils/aiProfileDefaultLogo.d.ts +7 -0
  1215. package/dist/utils/aiProfileDefaultLogo.js +84 -0
  1216. package/dist/utils/aiProfileEvents.d.ts +9 -1
  1217. package/dist/utils/annotatedAttachments.d.ts +8 -0
  1218. package/dist/utils/annotatedAttachments.js +17 -1
  1219. package/dist/utils/assetTraySorting.d.ts +25 -0
  1220. package/dist/utils/assetTraySorting.js +83 -0
  1221. package/dist/utils/assignees.d.ts +5 -0
  1222. package/dist/utils/assignees.js +14 -9
  1223. package/dist/utils/authLogin.d.ts +10 -0
  1224. package/dist/utils/authLogin.js +8 -0
  1225. package/dist/utils/authSessionEvents.d.ts +2 -0
  1226. package/dist/utils/authSessionEvents.js +6 -0
  1227. package/dist/utils/avatarUpload.js +5 -5
  1228. package/dist/utils/canonicalReferenceAttachments.d.ts +12 -0
  1229. package/dist/utils/canonicalReferenceAttachments.js +42 -0
  1230. package/dist/utils/cloudAssetDisplay.d.ts +2 -0
  1231. package/dist/utils/cloudAssetDisplay.js +8 -0
  1232. package/dist/utils/constants.d.ts +4 -11
  1233. package/dist/utils/constants.js +6 -65
  1234. package/dist/utils/contextAttachmentPreview.d.ts +11 -0
  1235. package/dist/utils/contextAttachmentPreview.js +8 -0
  1236. package/dist/utils/contextAttachmentUpload.d.ts +10 -0
  1237. package/dist/utils/contextAttachmentUpload.js +151 -0
  1238. package/dist/utils/contextFiles.d.ts +1 -1
  1239. package/dist/utils/contextFiles.js +4 -4
  1240. package/dist/utils/documentNames.js +6 -4
  1241. package/dist/utils/entityReferences.d.ts +14 -0
  1242. package/dist/utils/entityReferences.js +21 -0
  1243. package/dist/utils/httpSetCookie.d.ts +3 -0
  1244. package/dist/utils/httpSetCookie.js +22 -0
  1245. package/dist/utils/imageNoteStoragePaths.d.ts +3 -0
  1246. package/dist/utils/imageNoteStoragePaths.js +19 -0
  1247. package/dist/utils/imageReferences.d.ts +6 -0
  1248. package/dist/utils/imageReferences.js +1 -0
  1249. package/dist/utils/planningArchiveOrchestrator.d.ts +23 -0
  1250. package/dist/utils/planningArchiveOrchestrator.js +37 -0
  1251. package/dist/utils/planningArchivePresentation.d.ts +20 -0
  1252. package/dist/utils/planningArchivePresentation.js +23 -0
  1253. package/dist/utils/planningArchiveReadiness.d.ts +26 -0
  1254. package/dist/utils/planningArchiveReadiness.js +30 -0
  1255. package/dist/utils/planningFavorites.d.ts +7 -0
  1256. package/dist/utils/planningFavorites.js +34 -0
  1257. package/dist/utils/syncEventPresentation.js +53 -0
  1258. package/dist/utils/syncStatusPresentation.d.ts +25 -0
  1259. package/dist/utils/syncStatusPresentation.js +86 -5
  1260. package/dist/utils/taskActivity.d.ts +9 -2
  1261. package/dist/utils/taskActivity.js +61 -0
  1262. package/dist/utils/taskDraftDefaults.d.ts +0 -8
  1263. package/dist/utils/taskDraftDefaults.js +0 -4
  1264. package/dist/utils/taskEvents.d.ts +11 -0
  1265. package/dist/utils/taskEvents.js +6 -0
  1266. package/dist/utils/taskHeaderQuickFilter.d.ts +14 -0
  1267. package/dist/utils/taskHeaderQuickFilter.js +32 -0
  1268. package/dist/utils/taskInvalidation.d.ts +23 -0
  1269. package/dist/utils/taskInvalidation.js +67 -0
  1270. package/dist/utils/taskNormalization.d.ts +2 -1
  1271. package/dist/utils/taskNormalization.js +44 -18
  1272. package/dist/utils/taskReferences.d.ts +16 -0
  1273. package/dist/utils/taskReferences.js +63 -0
  1274. package/dist/utils/taskforceAgentEvents.d.ts +8 -0
  1275. package/dist/utils/taskforceAgentEvents.js +6 -0
  1276. package/dist/utils/taskforceAgentSkillEvents.d.ts +7 -0
  1277. package/dist/utils/taskforceAgentSkillEvents.js +8 -0
  1278. package/dist/utils/uiNotice.d.ts +3 -0
  1279. package/dist/utils/uiNotice.js +1 -1
  1280. package/dist/utils/workspaceResourceEvents.d.ts +7 -0
  1281. package/dist/utils/workspaceResourceEvents.js +6 -0
  1282. package/dist/utils/workspaceSyncPresentation.d.ts +24 -0
  1283. package/dist/utils/workspaceSyncPresentation.js +243 -6
  1284. package/package.json +74 -21
  1285. package/dist/components/features/AgentsModule.d.ts +0 -18
  1286. package/dist/components/features/AgentsModule.js +0 -479
  1287. package/dist/components/features/InitiativesModule.d.ts +0 -22
  1288. package/dist/components/features/InitiativesModule.js +0 -33
  1289. package/dist/components/features/WorkflowsModule.d.ts +0 -27
  1290. package/dist/components/features/WorkflowsModule.js +0 -21
  1291. package/dist/components/features/settings/WorkflowEditor.d.ts +0 -15
  1292. package/dist/components/features/settings/WorkflowEditor.js +0 -245
  1293. package/dist/components/views/panels/DocumentFilterToolbar.d.ts +0 -10
  1294. package/dist/components/views/panels/DocumentFilterToolbar.js +0 -7
  1295. package/dist/components/views/standalone/modals/AccountHubModal.d.ts +0 -61
  1296. package/dist/components/views/standalone/modals/AccountHubModal.js +0 -108
  1297. package/dist/components/views/standalone/modals/EditProfileModal.d.ts +0 -19
  1298. package/dist/components/views/standalone/modals/EditProfileModal.js +0 -11
  1299. package/dist/hooks/ui/useResourceExport.d.ts +0 -21
  1300. package/dist/hooks/ui/useResourceExport.js +0 -87
  1301. package/dist/hooks/ui/useWorkflowTemplates.d.ts +0 -37
  1302. package/dist/hooks/ui/useWorkflowTemplates.js +0 -116
  1303. package/dist/mcp/clientProfileDefaults.d.ts +0 -12
  1304. package/dist/mcp/clientProfileDefaults.js +0 -41
  1305. package/dist/resources/templates/WORKFLOW_V2_POLICY.md +0 -55
  1306. package/dist/resources/templates/environments/aider.yaml +0 -14
  1307. package/dist/resources/templates/environments/antigravity.yaml +0 -10
  1308. package/dist/resources/templates/environments/claude.yaml +0 -10
  1309. package/dist/resources/templates/environments/cline.yaml +0 -10
  1310. package/dist/resources/templates/environments/codex.yaml +0 -13
  1311. package/dist/resources/templates/environments/copilot.yaml +0 -10
  1312. package/dist/resources/templates/environments/cursor.yaml +0 -9
  1313. package/dist/resources/templates/environments/gemini.yaml +0 -9
  1314. package/dist/resources/templates/environments/windsurf.yaml +0 -10
  1315. package/dist/resources/templates/workflow-sources/README.md +0 -9
  1316. package/dist/resources/templates/workflow-sources/workflowDocs.mjs +0 -530
  1317. package/dist/resources/templates/workflow-sources/workflowEditorOverrides.json +0 -1
  1318. package/dist/resources/templates/workflows/collaborate.yaml +0 -109
  1319. package/dist/resources/templates/workflows/do.yaml +0 -87
  1320. package/dist/resources/templates/workflows/evaluate.yaml +0 -116
  1321. package/dist/resources/templates/workflows/execute.yaml +0 -156
  1322. package/dist/resources/templates/workflows/plan.yaml +0 -118
  1323. package/dist/resources/templates/workflows/review.yaml +0 -114
  1324. package/dist/services/formatTransformers.d.ts +0 -29
  1325. package/dist/services/formatTransformers.js +0 -56
  1326. package/dist/services/templateEngine.d.ts +0 -46
  1327. package/dist/services/templateEngine.js +0 -148
  1328. package/dist/shared/workflowDefaults.d.ts +0 -9
  1329. package/dist/shared/workflowDefaults.js +0 -11
  1330. package/dist/ui/agent-logos/Gemini CLI.jpeg +0 -0
  1331. package/dist/ui/agent-logos/antigravity.jpeg +0 -0
  1332. package/dist/ui/agent-logos/chatgpt.png +0 -0
  1333. package/dist/ui/agent-logos/claude-code.jpeg +0 -0
  1334. package/dist/ui/agent-logos/codex.jpeg +0 -0
  1335. package/dist/ui/agent-logos/cursor.png +0 -0
  1336. package/dist/ui/agent-logos/openclaw.jpeg +0 -0
  1337. package/dist/ui/agent-logos/windsurf.png +0 -0
  1338. package/dist/ui/assets/AgentsModule-C4LcqhcZ.js +0 -1
  1339. package/dist/ui/assets/AnnotatedAttachmentWorkspace-B-Dq22d2.js +0 -3
  1340. package/dist/ui/assets/AnnotatedAttachmentWorkspace-BVKew-mH.css +0 -1
  1341. package/dist/ui/assets/ContextAttachmentManager-DsXPTvi-.js +0 -3
  1342. package/dist/ui/assets/DocumentWorkspace-CxA1wO3U.js +0 -252
  1343. package/dist/ui/assets/DocumentWorkspace-D4rJKXzd.css +0 -1
  1344. package/dist/ui/assets/EntityActivityTimeline-B8nSe8l3.js +0 -1
  1345. package/dist/ui/assets/EntityActivityTimeline-DyqvvhuF.css +0 -1
  1346. package/dist/ui/assets/InitiativesModule-VY95v38E.js +0 -1
  1347. package/dist/ui/assets/PlansPage-CQbKDv1a.js +0 -1
  1348. package/dist/ui/assets/PlansPage-DeAzWYTb.css +0 -1
  1349. package/dist/ui/assets/TaskContextUpload-DvDlNpHC.js +0 -1
  1350. package/dist/ui/assets/TaskSettings-CUWbYYtP.js +0 -12
  1351. package/dist/ui/assets/WorkflowsModule-CgM3Jako.js +0 -5
  1352. package/dist/ui/assets/documentReferences-Do9YjrS3.js +0 -1
  1353. package/dist/ui/assets/index--mh3pktj.js +0 -5
  1354. package/dist/ui/assets/index-BawaaEXS.css +0 -1
  1355. package/dist/ui/assets/vendor-router-BbWMxlnO.js +0 -3
  1356. package/dist/ui/branding/logos/logo_black_01.png +0 -0
  1357. package/dist/ui/branding/logos/logo_black_02.png +0 -0
  1358. package/dist/ui/branding/logos/logo_white_01.png +0 -0
  1359. package/dist/ui/branding/logos/logo_white_02.png +0 -0
  1360. package/scripts/generate-workflow-templates.mjs +0 -134
  1361. package/src/resources/templates/WORKFLOW_V2_POLICY.md +0 -55
  1362. package/src/resources/templates/environments/aider.yaml +0 -14
  1363. package/src/resources/templates/environments/antigravity.yaml +0 -10
  1364. package/src/resources/templates/environments/claude.yaml +0 -10
  1365. package/src/resources/templates/environments/cline.yaml +0 -10
  1366. package/src/resources/templates/environments/codex.yaml +0 -13
  1367. package/src/resources/templates/environments/copilot.yaml +0 -10
  1368. package/src/resources/templates/environments/cursor.yaml +0 -9
  1369. package/src/resources/templates/environments/gemini.yaml +0 -9
  1370. package/src/resources/templates/environments/windsurf.yaml +0 -10
  1371. package/src/resources/templates/workflow-sources/README.md +0 -9
  1372. package/src/resources/templates/workflow-sources/workflowDocs.mjs +0 -530
  1373. package/src/resources/templates/workflow-sources/workflowEditorOverrides.json +0 -1
  1374. package/src/resources/templates/workflows/collaborate.yaml +0 -109
  1375. package/src/resources/templates/workflows/do.yaml +0 -87
  1376. package/src/resources/templates/workflows/evaluate.yaml +0 -116
  1377. package/src/resources/templates/workflows/execute.yaml +0 -156
  1378. package/src/resources/templates/workflows/plan.yaml +0 -118
  1379. package/src/resources/templates/workflows/review.yaml +0 -114
  1380. /package/dist/ui/branding/logos/{logo_dark.svg → logo_dark_no_bg.svg} +0 -0
  1381. /package/dist/ui/branding/logos/{logo_favicon.svg → logo_favicon_light.svg} +0 -0
  1382. /package/dist/ui/branding/logos/{logo_light.svg → logo_light_no_bg.svg} +0 -0
@@ -1,11 +1,93 @@
1
1
  import { useState, useCallback, useEffect, useRef } from 'react';
2
2
  import { normalizeTaskFromApi } from '../utils/taskNormalization.js';
3
- export function useTaskMutations({ tasks, archivedTasks, editingTaskId, setTasks, setArchivedTasks, setDeletedTasks, setError, resetForm, setActiveTab, fetchTasks, fetchArchive, fetchDeletedTasks, mergeTaskFromServer, pushNotice, cloudAuthConfigured, runtimeMode, isAuthenticated, workspaceCloudSyncEnabled, buildWorkspaceSyncSignature, pushWorkspaceChangesToCloud, workspacePendingSignatureRef, workspaceDeletedTaskIdsRef, workspaceDeletedTaskWatermarksRef, }) {
3
+ import { DURABLE_TASK_METADATA_FIELDS, selectDurableTaskMetadataPatch, } from '../core/TaskDurableSyncMutationService.js';
4
+ import { createCloudTaskHttpMutationClient, fetchTaskHttpMutation, isConclusiveTaskHttpResponse, } from './tasks/taskHttpMutation.js';
5
+ import { TASKFORCE_TASKS_MUTATED_EVENT, } from '../utils/taskEvents.js';
6
+ import { canonicalWorkspaceSyncJson } from '../sync/v3/canonicalWorkspaceSyncJson.js';
7
+ const DURABLE_TASK_METADATA_FIELD_NAMES = DURABLE_TASK_METADATA_FIELDS;
8
+ const TASK_STATUS_CONTROL_FIELDS = new Set([
9
+ 'status', 'assignee', 'canceledReason', 'completedAt',
10
+ 'completed', 'inProgress', 'readyForReview', 'cancelled',
11
+ ]);
12
+ function taskFieldValuesEqual(left, right) {
13
+ if (left === undefined || right === undefined)
14
+ return left === right;
15
+ return canonicalWorkspaceSyncJson(left) === canonicalWorkspaceSyncJson(right);
16
+ }
17
+ function rollbackTargetTaskPatch(currentTasks, previousTask, taskId, patch) {
18
+ if (!previousTask)
19
+ return currentTasks;
20
+ return currentTasks.map((task) => {
21
+ if (task.id !== taskId)
22
+ return task;
23
+ const restored = { ...task };
24
+ for (const key of Object.keys(patch)) {
25
+ if (Object.prototype.hasOwnProperty.call(previousTask, key)) {
26
+ restored[key] = previousTask[key];
27
+ }
28
+ else {
29
+ delete restored[key];
30
+ }
31
+ }
32
+ return restored;
33
+ });
34
+ }
35
+ function taskHttpObservedPrecondition(task, taskId) {
36
+ return {
37
+ taskId,
38
+ updatedAt: task?.updatedAt ?? null,
39
+ status: task?.status ?? null,
40
+ isArchived: task?.isArchived === true,
41
+ };
42
+ }
43
+ export function useTaskMutations({ tasks, archivedTasks, editingTaskId, setTasks, setArchivedTasks, setDeletedTasks, setError, resetForm, setActiveTab, fetchTasks, fetchArchive, fetchDeletedTasks, mergeTaskFromServer, pushNotice, cloudAuthConfigured, runtimeMode, isAuthenticated, workspaceCloudSyncEnabled, buildWorkspaceSyncSignature, pushWorkspaceChangesToCloud, workspacePendingSignatureRef, workspaceDeletedTaskIdsRef, workspaceDeletedTaskWatermarksRef, mutateTaskMetadata, mutateTaskStatus, mutateTaskLifecycle, mutateTaskDelete, mutateTaskRestore, durableTaskMetadataActivationEnabled = false, durableTaskStatusActivationEnabled = false, durableTaskDeleteActivationEnabled = false, durableTaskHttpRootActivationEnabled = false, workspaceId = 'default', taskHttpMutationClient, }) {
44
+ const authoritativeTaskSnapshotsRef = useRef(new Map());
45
+ useEffect(() => {
46
+ if (typeof window === 'undefined')
47
+ return;
48
+ const handleAuthoritativeTask = (event) => {
49
+ const detail = event.detail;
50
+ const authoritativeTask = detail?.authoritativeTask;
51
+ const eventWorkspaceId = String(detail?.workspaceId || '').trim() || 'default';
52
+ if (!authoritativeTask || eventWorkspaceId !== workspaceId)
53
+ return;
54
+ authoritativeTaskSnapshotsRef.current.set(authoritativeTask.id, authoritativeTask);
55
+ mergeTaskFromServer(authoritativeTask);
56
+ };
57
+ window.addEventListener(TASKFORCE_TASKS_MUTATED_EVENT, handleAuthoritativeTask);
58
+ return () => window.removeEventListener(TASKFORCE_TASKS_MUTATED_EVENT, handleAuthoritativeTask);
59
+ }, [mergeTaskFromServer, workspaceId]);
4
60
  // Copy ID state + timer ref
5
61
  const [copiedId, setCopiedId] = useState(null);
6
62
  const copiedIdTimerRef = useRef(null);
7
63
  const workspaceSyncTimerRef = useRef(null);
8
64
  const workspaceSyncTargetAtRef = useRef(null);
65
+ const taskHttpMutationClientRef = useRef(null);
66
+ const fetchCloudTaskMutation = useCallback(async (url, requestInit, body, observedPrecondition, validateSuccess) => {
67
+ const carriesDurableNestedTaskState = ['checklistItems', 'attachments', 'comments']
68
+ .some((key) => Object.prototype.hasOwnProperty.call(body, key));
69
+ if (!durableTaskHttpRootActivationEnabled && !carriesDurableNestedTaskState) {
70
+ return fetch(url, requestInit);
71
+ }
72
+ if (!taskHttpMutationClientRef.current) {
73
+ taskHttpMutationClientRef.current = taskHttpMutationClient || createCloudTaskHttpMutationClient();
74
+ }
75
+ const attempt = await taskHttpMutationClientRef.current.prepareUpdate(workspaceId, url, body, observedPrecondition);
76
+ const response = await fetchTaskHttpMutation(url, requestInit, attempt.operationId);
77
+ if (response.ok) {
78
+ const payload = await response.clone().json().catch(() => null);
79
+ if (!validateSuccess(payload)) {
80
+ throw new Error('Durable cloud task mutation returned an invalid authoritative response.');
81
+ }
82
+ await taskHttpMutationClientRef.current.confirmUpdate(attempt.fingerprint, attempt.operationId);
83
+ }
84
+ else if (await isConclusiveTaskHttpResponse(response)) {
85
+ await taskHttpMutationClientRef.current.confirmUpdate(attempt.fingerprint, attempt.operationId);
86
+ }
87
+ return response;
88
+ }, [durableTaskHttpRootActivationEnabled, taskHttpMutationClient, workspaceId]);
89
+ const fetchCloudTaskRootPatch = useCallback((url, requestInit, body, expectedTaskId, observedPrecondition) => fetchCloudTaskMutation(url, requestInit, body, observedPrecondition, (payload) => (!!payload && typeof payload === 'object'
90
+ && String(payload.id || '') === expectedTaskId)), [fetchCloudTaskMutation]);
9
91
  useEffect(() => () => {
10
92
  if (typeof window === 'undefined')
11
93
  return;
@@ -62,15 +144,53 @@ export function useTaskMutations({ tasks, archivedTasks, editingTaskId, setTasks
62
144
  return false;
63
145
  const isArchivedTask = archive || archivedTasks.some((task) => task.id === id);
64
146
  try {
65
- const res = await fetch(`/api/taskforce/task/${id}`, { method: 'DELETE' });
66
- if (!res.ok) {
67
- const data = await res.json().catch(() => ({}));
68
- const message = data.error || 'Failed to delete task.';
69
- setError(message);
70
- pushNotice(message, 'error');
71
- return false;
147
+ let durableDeletedRecord = null;
148
+ if (durableTaskDeleteActivationEnabled) {
149
+ const durableResult = await mutateTaskDelete?.(id);
150
+ if (!durableResult) {
151
+ const message = 'Task was not deleted because durable capture was unavailable.';
152
+ setError(message);
153
+ pushNotice(message, 'error');
154
+ return false;
155
+ }
156
+ if (durableResult.state !== 'disabled') {
157
+ if (durableResult.state === 'rejected'
158
+ || durableResult.state === 'failed'
159
+ || durableResult.state === 'ambiguous') {
160
+ const message = durableResult.state === 'ambiguous'
161
+ ? 'Task delete confirmation was interrupted. Retry the same delete to confirm it safely.'
162
+ : `Task was not deleted because durable capture rejected it${durableResult.errorCode ? ` (${durableResult.errorCode})` : ''}.`;
163
+ setError(message);
164
+ pushNotice(message, 'error');
165
+ return false;
166
+ }
167
+ durableDeletedRecord = durableResult.deleted || null;
168
+ if (!durableDeletedRecord) {
169
+ const message = 'Task delete was captured, but its Trash record was unavailable.';
170
+ setError(message);
171
+ pushNotice(message, 'error');
172
+ return false;
173
+ }
174
+ }
175
+ }
176
+ let data = durableDeletedRecord ? { deleted: durableDeletedRecord } : {};
177
+ if (!durableDeletedRecord) {
178
+ const url = `/api/taskforce/task/${id}`;
179
+ const observed = tasks.find((task) => task.id === id) || archivedTasks.find((task) => task.id === id);
180
+ const res = await fetchCloudTaskMutation(url, { method: 'DELETE' }, {}, taskHttpObservedPrecondition(observed, id), (payload) => (!!payload && typeof payload === 'object'
181
+ && payload.success === true
182
+ && !!payload.deleted
183
+ && typeof payload.deleted === 'object'
184
+ && String((payload.deleted).taskId || '') === id));
185
+ if (!res.ok) {
186
+ const responseData = await res.json().catch(() => ({}));
187
+ const message = responseData.error || 'Failed to delete task.';
188
+ setError(message);
189
+ pushNotice(message, 'error');
190
+ return false;
191
+ }
192
+ data = await res.json().catch(() => ({}));
72
193
  }
73
- const data = await res.json().catch(() => ({}));
74
194
  const deletedRecord = data?.deleted && typeof data.deleted === 'object' && data.deleted.taskSnapshot
75
195
  ? {
76
196
  ...data.deleted,
@@ -100,7 +220,7 @@ export function useTaskMutations({ tasks, archivedTasks, editingTaskId, setTasks
100
220
  workspaceDeletedTaskWatermarksRef.current.set(id, new Date().toISOString());
101
221
  }
102
222
  workspaceDeletedTaskIdsRef.current.add(id);
103
- if (cloudAuthConfigured && runtimeMode === 'local' && isAuthenticated && workspaceCloudSyncEnabled) {
223
+ if (!durableDeletedRecord && cloudAuthConfigured && runtimeMode === 'local' && isAuthenticated && workspaceCloudSyncEnabled) {
104
224
  const signature = buildWorkspaceSyncSignature();
105
225
  workspacePendingSignatureRef.current = signature;
106
226
  void pushWorkspaceChangesToCloud(signature);
@@ -120,14 +240,59 @@ export function useTaskMutations({ tasks, archivedTasks, editingTaskId, setTasks
120
240
  return false;
121
241
  }
122
242
  };
123
- const handleRestoreDeletedTask = useCallback(async (id) => {
243
+ const handleRestoreDeletedTask = useCallback(async (id, expectedTaskId, options = {}) => {
124
244
  try {
125
- const res = await requestDeletedEndpoint(`/${id}/restore`, { method: 'POST' });
245
+ const url = `/api/taskforce/deleted/${id}/restore`;
246
+ const observedTaskId = String(expectedTaskId || '').trim();
247
+ if (durableTaskDeleteActivationEnabled) {
248
+ if (!observedTaskId || !mutateTaskRestore) {
249
+ throw new Error('Durable local task restore requires the expected task identity and capture client.');
250
+ }
251
+ const durableResult = await mutateTaskRestore(id, observedTaskId, options.restoreDestination || 'previous');
252
+ if (!durableResult || durableResult.state === 'failed' || durableResult.state === 'ambiguous'
253
+ || durableResult.state === 'rejected' || durableResult.state === 'disabled') {
254
+ const message = 'Failed to capture task restore durably.';
255
+ setError(message);
256
+ if (!options.silent)
257
+ pushNotice(message, 'error');
258
+ return null;
259
+ }
260
+ const restoredTask = durableResult.task;
261
+ if (!restoredTask || restoredTask.id !== observedTaskId) {
262
+ throw new Error('Durable local task restore did not return the restored task.');
263
+ }
264
+ mergeTaskFromServer(restoredTask);
265
+ setDeletedTasks((prev) => prev.filter((entry) => entry.id !== id && entry.taskId !== observedTaskId));
266
+ workspaceDeletedTaskIdsRef.current.delete(id);
267
+ workspaceDeletedTaskIdsRef.current.delete(observedTaskId);
268
+ workspaceDeletedTaskWatermarksRef.current.delete(id);
269
+ workspaceDeletedTaskWatermarksRef.current.delete(observedTaskId);
270
+ setError('');
271
+ if (!options.silent) {
272
+ pushNotice(durableResult.state === 'accepted' ? 'Task restored from Trash.' : 'Task restored locally; cloud sync is pending.', 'info');
273
+ }
274
+ return normalizeTaskFromApi(restoredTask);
275
+ }
276
+ if (durableTaskHttpRootActivationEnabled && !observedTaskId) {
277
+ throw new Error('Durable cloud task restore requires the expected task identity.');
278
+ }
279
+ const deletedAt = workspaceDeletedTaskWatermarksRef.current.get(observedTaskId)
280
+ || workspaceDeletedTaskWatermarksRef.current.get(id)
281
+ || null;
282
+ const res = durableTaskHttpRootActivationEnabled
283
+ ? await fetchCloudTaskMutation(url, { method: 'POST' }, {}, { taskId: observedTaskId, updatedAt: deletedAt, status: 'deleted', isArchived: false }, (payload) => {
284
+ if (!payload || typeof payload !== 'object')
285
+ return false;
286
+ const restoredId = String(payload.id || '').trim();
287
+ return restoredId === observedTaskId;
288
+ })
289
+ : await requestDeletedEndpoint(`/${id}/restore`, { method: 'POST' });
126
290
  if (!res.ok) {
127
291
  const data = await res.json().catch(() => ({}));
128
292
  const message = data.error || 'Failed to restore deleted task.';
129
293
  setError(message);
130
- pushNotice(message, 'error');
294
+ if (!options.silent)
295
+ pushNotice(message, 'error');
131
296
  return null;
132
297
  }
133
298
  const restoredTask = await res.json().catch(() => null);
@@ -137,8 +302,10 @@ export function useTaskMutations({ tasks, archivedTasks, editingTaskId, setTasks
137
302
  else {
138
303
  await fetchTasks(true);
139
304
  }
140
- setDeletedTasks((prev) => prev.filter((entry) => entry.id !== id && entry.taskId !== id));
141
305
  const restoredTaskId = String(restoredTask?.id || '').trim();
306
+ setDeletedTasks((prev) => prev.filter((entry) => (entry.id !== id
307
+ && entry.taskId !== observedTaskId
308
+ && entry.taskId !== restoredTaskId)));
142
309
  workspaceDeletedTaskIdsRef.current.delete(id);
143
310
  workspaceDeletedTaskWatermarksRef.current.delete(id);
144
311
  if (restoredTaskId) {
@@ -147,18 +314,27 @@ export function useTaskMutations({ tasks, archivedTasks, editingTaskId, setTasks
147
314
  }
148
315
  queueWorkspaceSyncFromAuthoritativeTaskState();
149
316
  setError('');
150
- pushNotice('Task restored from Trash.', 'info');
317
+ if (!options.silent) {
318
+ pushNotice(restoredTask?.isArchived === true
319
+ ? 'Task restored to Archived.'
320
+ : 'Task restored to Active.', 'info');
321
+ }
151
322
  return restoredTask ? normalizeTaskFromApi(restoredTask) : null;
152
323
  }
153
324
  catch (err) {
154
325
  console.error('Failed to restore deleted task:', err);
155
326
  setError('Failed to restore deleted task.');
156
- pushNotice('Failed to restore deleted task.', 'error');
327
+ if (!options.silent)
328
+ pushNotice('Failed to restore deleted task.', 'error');
157
329
  return null;
158
330
  }
159
331
  }, [
332
+ durableTaskHttpRootActivationEnabled,
333
+ durableTaskDeleteActivationEnabled,
334
+ fetchCloudTaskMutation,
160
335
  fetchTasks,
161
336
  mergeTaskFromServer,
337
+ mutateTaskRestore,
162
338
  pushNotice,
163
339
  queueWorkspaceSyncFromAuthoritativeTaskState,
164
340
  requestDeletedEndpoint,
@@ -225,63 +401,127 @@ export function useTaskMutations({ tasks, archivedTasks, editingTaskId, setTasks
225
401
  setDeletedTasks,
226
402
  setError
227
403
  ]);
228
- const handleUpdateTask = useCallback(async (id, updates) => {
404
+ const finishDurableTaskMutation = useCallback((result, taskId, optimisticPatch, previousTasks, previousArchivedTasks) => {
405
+ if (result.state === 'disabled')
406
+ return false;
407
+ if (result.state === 'rejected' || result.state === 'failed') {
408
+ const previousTask = previousTasks.find((task) => task.id === taskId)
409
+ || previousArchivedTasks.find((task) => task.id === taskId);
410
+ setTasks((current) => rollbackTargetTaskPatch(current, previousTask, taskId, optimisticPatch));
411
+ setArchivedTasks((current) => rollbackTargetTaskPatch(current, previousTask, taskId, optimisticPatch));
412
+ const message = result.state === 'failed'
413
+ ? 'Task was not saved because durable local preparation failed. Retry the edit.'
414
+ : result.retryable
415
+ ? 'Task was not saved because durable capture is busy. Retry the edit shortly.'
416
+ : `Task was not saved because durable capture rejected it${result.errorCode ? ` (${result.errorCode})` : ''}.`;
417
+ setError(message);
418
+ pushNotice(message, 'error');
419
+ return true;
420
+ }
421
+ if ('task' in result && result.task)
422
+ mergeTaskFromServer(result.task);
423
+ if (result.state === 'accepted') {
424
+ setError('');
425
+ }
426
+ else if (result.state === 'pending') {
427
+ setError('');
428
+ if (result.pendingReason !== 'queued') {
429
+ pushNotice(result.pendingReason === 'auth'
430
+ ? 'Task saved locally. Sign in to finish cloud sync.'
431
+ : result.pendingReason === 'sync-disabled'
432
+ ? 'Task saved locally. Turn on sync to send it to cloud.'
433
+ : 'Task saved locally. Cloud sync will retry automatically.', 'info');
434
+ }
435
+ }
436
+ else {
437
+ const message = result.state === 'blocked'
438
+ ? `Task saved locally, but cloud sync is blocked${result.errorCode ? ` (${result.errorCode})` : ''}.`
439
+ : 'Task save confirmation was interrupted. Retry the same edit to confirm it safely.';
440
+ setError(message);
441
+ pushNotice(message, 'error');
442
+ }
443
+ return true;
444
+ }, [mergeTaskFromServer, pushNotice, setArchivedTasks, setError, setTasks]);
445
+ const handleSetStatus = useCallback(async (task, status, updates = {}) => {
446
+ const containsDurableMetadata = Object.keys(updates)
447
+ .some((key) => DURABLE_TASK_METADATA_FIELD_NAMES.has(key));
448
+ const unsupportedFields = Object.keys(updates).filter((key) => (!TASK_STATUS_CONTROL_FIELDS.has(key) && !DURABLE_TASK_METADATA_FIELD_NAMES.has(key)));
449
+ if (durableTaskStatusActivationEnabled && unsupportedFields.length > 0) {
450
+ const message = `Task status was not saved because the combined update contains unsupported fields: ${unsupportedFields.sort().join(', ')}.`;
451
+ setError(message);
452
+ pushNotice(message, 'error');
453
+ return;
454
+ }
455
+ const now = new Date().toISOString();
456
+ const optimisticPatch = {
457
+ ...updates,
458
+ status,
459
+ completedAt: status === 'done' || status === 'cancelled' ? (updates.completedAt || now) : null,
460
+ completed: status === 'done',
461
+ inProgress: status === 'in-progress',
462
+ readyForReview: status === 'review',
463
+ cancelled: status === 'cancelled',
464
+ };
229
465
  const previousTasks = tasks;
230
466
  const previousArchivedTasks = archivedTasks;
231
- setTasks(prev => prev.map(t => t.id === id ? { ...t, ...updates } : t));
232
- setArchivedTasks(prev => prev.map(t => t.id === id ? { ...t, ...updates } : t));
233
- try {
234
- const res = await fetch(`/api/taskforce/task/${id}`, {
235
- method: 'PATCH',
236
- headers: { 'Content-Type': 'application/json' },
237
- body: JSON.stringify(updates),
238
- });
239
- if (!res.ok) {
240
- const data = await res.json().catch(() => ({}));
241
- const message = data.error || `Failed to update task ${id}.`;
467
+ setTasks((current) => current.map((item) => item.id === task.id ? { ...item, ...optimisticPatch } : item));
468
+ setArchivedTasks((current) => current.map((item) => item.id === task.id ? { ...item, ...optimisticPatch } : item));
469
+ if (mutateTaskStatus) {
470
+ try {
471
+ const assigneeIntent = Object.prototype.hasOwnProperty.call(updates, 'assignee')
472
+ ? { kind: 'set', value: updates.assignee ?? null }
473
+ : { kind: 'preserve' };
474
+ const metadataPatch = selectDurableTaskMetadataPatch(updates);
475
+ delete metadataPatch.assignee;
476
+ const durableResult = await mutateTaskStatus(task.id, {
477
+ status,
478
+ assigneeIntent,
479
+ canceledReason: status === 'cancelled' ? (updates.canceledReason ?? null) : null,
480
+ metadataPatch,
481
+ });
482
+ if (durableResult && finishDurableTaskMutation(durableResult, task.id, optimisticPatch, previousTasks, previousArchivedTasks))
483
+ return;
484
+ if (!durableResult && durableTaskStatusActivationEnabled) {
485
+ const previousTask = previousTasks.find((item) => item.id === task.id)
486
+ || previousArchivedTasks.find((item) => item.id === task.id);
487
+ setTasks((current) => rollbackTargetTaskPatch(current, previousTask, task.id, optimisticPatch));
488
+ setArchivedTasks((current) => rollbackTargetTaskPatch(current, previousTask, task.id, optimisticPatch));
489
+ const message = 'Task status was not saved because durable capture was unavailable.';
490
+ setError(message);
491
+ pushNotice(message, 'error');
492
+ return;
493
+ }
494
+ }
495
+ catch (error) {
496
+ console.error('Durable task status update failed before a conclusive result.', error);
497
+ const previousTask = previousTasks.find((item) => item.id === task.id)
498
+ || previousArchivedTasks.find((item) => item.id === task.id);
499
+ setTasks((current) => rollbackTargetTaskPatch(current, previousTask, task.id, optimisticPatch));
500
+ setArchivedTasks((current) => rollbackTargetTaskPatch(current, previousTask, task.id, optimisticPatch));
501
+ const message = 'Task save confirmation was interrupted. Retry the same edit to confirm it safely.';
242
502
  setError(message);
243
503
  pushNotice(message, 'error');
244
- setTasks(previousTasks);
245
- setArchivedTasks(previousArchivedTasks);
246
504
  return;
247
505
  }
248
- const updatedTask = await res.json().catch(() => null);
249
- mergeTaskFromServer(updatedTask);
250
- // Attachment saves also depend on the canonical asset snapshot refresh. Give that
251
- // snapshot a brief head start so the next push includes both task metadata and bytes.
252
- queueWorkspaceSyncFromAuthoritativeTaskState(updates.attachments !== undefined ? 150 : 0);
253
- setError('');
254
506
  }
255
- catch (err) {
256
- console.error("Failed to update task", err);
257
- const message = `Failed to update task ${id}.`;
507
+ if (durableTaskMetadataActivationEnabled && containsDurableMetadata) {
508
+ const previousTask = previousTasks.find((item) => item.id === task.id)
509
+ || previousArchivedTasks.find((item) => item.id === task.id);
510
+ setTasks((current) => rollbackTargetTaskPatch(current, previousTask, task.id, optimisticPatch));
511
+ setArchivedTasks((current) => rollbackTargetTaskPatch(current, previousTask, task.id, optimisticPatch));
512
+ const message = 'Task was not saved because durable status capture is required for this combined metadata update.';
258
513
  setError(message);
259
514
  pushNotice(message, 'error');
260
- setTasks(previousTasks);
261
- setArchivedTasks(previousArchivedTasks);
515
+ return;
262
516
  }
263
- }, [tasks, archivedTasks, pushNotice, mergeTaskFromServer, queueWorkspaceSyncFromAuthoritativeTaskState]);
264
- const handleToggleComplete = async (task) => {
265
- const newStatus = task.status === 'done' ? 'task' : 'done';
266
- const completedAt = newStatus === 'done' ? new Date().toISOString() : undefined;
267
- const optimisticUpdates = {
268
- status: newStatus,
269
- completedAt,
270
- completed: newStatus === 'done',
271
- inProgress: false,
272
- readyForReview: false,
273
- cancelled: false
274
- };
275
- const previousTasks = tasks;
276
- const previousArchivedTasks = archivedTasks;
277
- setTasks(prev => prev.map(t => t.id === task.id ? { ...t, ...optimisticUpdates } : t));
278
- setArchivedTasks(prev => prev.map(t => t.id === task.id ? { ...t, ...optimisticUpdates } : t));
279
517
  try {
280
- const res = await fetch(`/api/taskforce/task/${task.id}`, {
518
+ const legacyPatch = { ...updates, status, completedAt: optimisticPatch.completedAt };
519
+ const requestInit = {
281
520
  method: 'PATCH',
282
521
  headers: { 'Content-Type': 'application/json' },
283
- body: JSON.stringify({ status: newStatus, completedAt }),
284
- });
522
+ body: JSON.stringify(legacyPatch),
523
+ };
524
+ const res = await fetchCloudTaskRootPatch(`/api/taskforce/task/${task.id}`, requestInit, legacyPatch, task.id, taskHttpObservedPrecondition(task, task.id));
285
525
  if (!res.ok) {
286
526
  const data = await res.json().catch(() => ({}));
287
527
  const message = data.error || 'Failed to update task status.';
@@ -292,105 +532,273 @@ export function useTaskMutations({ tasks, archivedTasks, editingTaskId, setTasks
292
532
  return;
293
533
  }
294
534
  const updatedTask = await res.json().catch(() => null);
295
- if (updatedTask) {
535
+ if (updatedTask)
296
536
  mergeTaskFromServer(updatedTask);
297
- queueWorkspaceSyncFromAuthoritativeTaskState();
298
- }
299
- else {
537
+ else
300
538
  await fetchTasks(true);
301
- queueWorkspaceSyncFromAuthoritativeTaskState();
302
- }
539
+ queueWorkspaceSyncFromAuthoritativeTaskState();
303
540
  setError('');
304
541
  }
305
- catch (err) {
306
- console.error("Failed to toggle complete", err);
542
+ catch (error) {
543
+ console.error('Failed to update task status.', error);
307
544
  setError('Failed to update task status.');
308
545
  pushNotice('Failed to update task status.', 'error');
309
546
  setTasks(previousTasks);
310
547
  setArchivedTasks(previousArchivedTasks);
311
548
  }
312
- };
313
- const handleToggleCancel = async (task) => {
314
- const newStatus = task.status === 'cancelled' ? 'task' : 'cancelled';
315
- try {
316
- const res = await fetch(`/api/taskforce/task/${task.id}`, {
317
- method: 'PATCH',
318
- headers: { 'Content-Type': 'application/json' },
319
- body: JSON.stringify({ status: newStatus }),
320
- });
321
- if (!res.ok) {
322
- const data = await res.json().catch(() => ({}));
323
- const message = data.error || 'Failed to update task status.';
549
+ }, [
550
+ archivedTasks,
551
+ durableTaskMetadataActivationEnabled,
552
+ durableTaskHttpRootActivationEnabled,
553
+ durableTaskStatusActivationEnabled,
554
+ fetchTasks,
555
+ fetchCloudTaskRootPatch,
556
+ finishDurableTaskMutation,
557
+ mergeTaskFromServer,
558
+ mutateTaskStatus,
559
+ pushNotice,
560
+ queueWorkspaceSyncFromAuthoritativeTaskState,
561
+ setArchivedTasks,
562
+ setError,
563
+ setTasks,
564
+ tasks,
565
+ ]);
566
+ const handleUpdateTask = useCallback(async (id, updates) => {
567
+ const saveSource = updates.saveSource;
568
+ updates = Object.fromEntries(Object.entries(updates).filter(([key]) => key !== 'saveSource'));
569
+ if (Object.keys(updates).length === 0)
570
+ return true;
571
+ const authoritativeTask = authoritativeTaskSnapshotsRef.current.get(id);
572
+ const collectionTask = tasks.find((task) => task.id === id)
573
+ || archivedTasks.find((task) => task.id === id);
574
+ const authoritativeUpdatedAt = Date.parse(String(authoritativeTask?.updatedAt || ''));
575
+ const collectionUpdatedAt = Date.parse(String(collectionTask?.updatedAt || ''));
576
+ const observedTask = authoritativeTask && (!collectionTask
577
+ || (Number.isFinite(authoritativeUpdatedAt)
578
+ && (!Number.isFinite(collectionUpdatedAt) || authoritativeUpdatedAt >= collectionUpdatedAt)))
579
+ ? authoritativeTask
580
+ : collectionTask;
581
+ if (collectionTask && observedTask === collectionTask && authoritativeTask) {
582
+ authoritativeTaskSnapshotsRef.current.delete(id);
583
+ }
584
+ if (observedTask) {
585
+ updates = Object.fromEntries(Object.entries(updates).filter(([key, value]) => (!taskFieldValuesEqual(observedTask[key], value))));
586
+ if (Object.keys(updates).length === 0)
587
+ return true;
588
+ }
589
+ if (updates.status) {
590
+ const target = tasks.find((task) => task.id === id) || archivedTasks.find((task) => task.id === id);
591
+ if (target) {
592
+ await handleSetStatus(target, updates.status, updates);
593
+ return;
594
+ }
595
+ if (durableTaskStatusActivationEnabled) {
596
+ const message = 'Task status was not saved because the current task could not be resolved safely.';
324
597
  setError(message);
325
598
  pushNotice(message, 'error');
326
- await fetchTasks(true);
327
599
  return;
328
600
  }
329
- const updatedTask = await res.json().catch(() => null);
330
- if (updatedTask) {
331
- mergeTaskFromServer(updatedTask);
332
- queueWorkspaceSyncFromAuthoritativeTaskState();
601
+ }
602
+ const previousTasks = tasks;
603
+ const previousArchivedTasks = archivedTasks;
604
+ setTasks(prev => prev.map(t => t.id === id ? { ...t, ...updates } : t));
605
+ setArchivedTasks(prev => prev.map(t => t.id === id ? { ...t, ...updates } : t));
606
+ const durableMetadataPatch = Object.fromEntries(Object.entries(updates).filter(([key]) => DURABLE_TASK_METADATA_FIELD_NAMES.has(key)));
607
+ let legacyCarrierPatch = Object.fromEntries(Object.entries(updates).filter(([key]) => !DURABLE_TASK_METADATA_FIELD_NAMES.has(key)));
608
+ const hasDurableMetadata = Object.keys(durableMetadataPatch).length > 0;
609
+ let hasLegacyCarriers = Object.keys(legacyCarrierPatch).length > 0;
610
+ let durableMetadataHandled = false;
611
+ if (hasDurableMetadata && mutateTaskMetadata) {
612
+ try {
613
+ const durableResult = saveSource
614
+ ? await mutateTaskMetadata(id, durableMetadataPatch, { saveSource })
615
+ : await mutateTaskMetadata(id, durableMetadataPatch);
616
+ if (durableResult && durableResult.state !== 'disabled') {
617
+ if (durableResult.state === 'rejected' || durableResult.state === 'failed') {
618
+ const previousTask = previousTasks.find((task) => task.id === id)
619
+ || previousArchivedTasks.find((task) => task.id === id);
620
+ setTasks((currentTasks) => rollbackTargetTaskPatch(currentTasks, previousTask, id, updates));
621
+ setArchivedTasks((currentTasks) => rollbackTargetTaskPatch(currentTasks, previousTask, id, updates));
622
+ const message = durableResult.state === 'failed'
623
+ ? 'Task was not saved because durable local preparation failed. Retry the edit.'
624
+ : durableResult.retryable
625
+ ? 'Task was not saved because durable capture is busy. Retry the edit shortly.'
626
+ : `Task was not saved because durable capture rejected it${durableResult.errorCode ? ` (${durableResult.errorCode})` : ''}.`;
627
+ setError(message);
628
+ pushNotice(message, 'error');
629
+ return false;
630
+ }
631
+ durableMetadataHandled = true;
632
+ if ('task' in durableResult && durableResult.task)
633
+ mergeTaskFromServer(durableResult.task);
634
+ if (durableResult.state === 'accepted') {
635
+ setError('');
636
+ }
637
+ else if (durableResult.state === 'pending') {
638
+ setError('');
639
+ if (durableResult.pendingReason !== 'queued') {
640
+ pushNotice(durableResult.pendingReason === 'auth'
641
+ ? 'Task saved locally. Sign in to finish cloud sync.'
642
+ : durableResult.pendingReason === 'sync-disabled'
643
+ ? 'Task saved locally. Turn on sync to send it to cloud.'
644
+ : 'Task saved locally. Cloud sync will retry automatically.', 'info');
645
+ }
646
+ }
647
+ else {
648
+ const message = durableResult.state === 'blocked'
649
+ ? `Task saved locally, but cloud sync is blocked${durableResult.errorCode ? ` (${durableResult.errorCode})` : ''}.`
650
+ : 'Task save confirmation was interrupted. Retry the same edit to confirm it safely.';
651
+ setError(message);
652
+ pushNotice(message, 'error');
653
+ }
654
+ if (durableResult.state === 'ambiguous') {
655
+ if (hasLegacyCarriers) {
656
+ const previousTask = previousTasks.find((task) => task.id === id)
657
+ || previousArchivedTasks.find((task) => task.id === id);
658
+ setTasks((currentTasks) => rollbackTargetTaskPatch(currentTasks, previousTask, id, legacyCarrierPatch));
659
+ setArchivedTasks((currentTasks) => rollbackTargetTaskPatch(currentTasks, previousTask, id, legacyCarrierPatch));
660
+ }
661
+ return false;
662
+ }
663
+ if (!hasLegacyCarriers)
664
+ return true;
665
+ }
666
+ else if (durableTaskMetadataActivationEnabled) {
667
+ const previousTask = previousTasks.find((task) => task.id === id)
668
+ || previousArchivedTasks.find((task) => task.id === id);
669
+ setTasks((currentTasks) => rollbackTargetTaskPatch(currentTasks, previousTask, id, updates));
670
+ setArchivedTasks((currentTasks) => rollbackTargetTaskPatch(currentTasks, previousTask, id, updates));
671
+ const message = 'Task was not saved because durable metadata capture was unavailable.';
672
+ setError(message);
673
+ pushNotice(message, 'error');
674
+ return false;
675
+ }
333
676
  }
334
- else {
335
- await fetchTasks(true);
336
- queueWorkspaceSyncFromAuthoritativeTaskState();
677
+ catch (error) {
678
+ console.error('Durable task metadata update failed before a conclusive result.', error);
679
+ if (hasLegacyCarriers) {
680
+ const previousTask = previousTasks.find((task) => task.id === id)
681
+ || previousArchivedTasks.find((task) => task.id === id);
682
+ setTasks((currentTasks) => rollbackTargetTaskPatch(currentTasks, previousTask, id, legacyCarrierPatch));
683
+ setArchivedTasks((currentTasks) => rollbackTargetTaskPatch(currentTasks, previousTask, id, legacyCarrierPatch));
684
+ }
685
+ const message = 'Task save confirmation was interrupted. Retry the same edit to confirm it safely.';
686
+ setError(message);
687
+ pushNotice(message, 'error');
688
+ return false;
337
689
  }
338
- setError('');
339
690
  }
340
- catch (err) {
341
- console.error("Failed to toggle cancel", err);
342
- setError('Failed to update task status.');
343
- pushNotice('Failed to update task status.', 'error');
344
- fetchTasks();
691
+ else if (hasDurableMetadata && durableTaskMetadataActivationEnabled) {
692
+ const previousTask = previousTasks.find((task) => task.id === id)
693
+ || previousArchivedTasks.find((task) => task.id === id);
694
+ setTasks((currentTasks) => rollbackTargetTaskPatch(currentTasks, previousTask, id, updates));
695
+ setArchivedTasks((currentTasks) => rollbackTargetTaskPatch(currentTasks, previousTask, id, updates));
696
+ const message = 'Task was not saved because durable metadata capture was unavailable.';
697
+ setError(message);
698
+ pushNotice(message, 'error');
699
+ return false;
345
700
  }
346
- };
347
- const handleToggleInProgress = async (task) => {
348
- const newStatus = task.status === 'in-progress' ? 'task' : 'in-progress';
349
- setTasks(prev => prev.map(t => t.id === task.id ? { ...t, status: newStatus } : t));
701
+ if (hasDurableMetadata && !durableMetadataHandled) {
702
+ legacyCarrierPatch = { ...durableMetadataPatch, ...legacyCarrierPatch };
703
+ hasLegacyCarriers = true;
704
+ }
705
+ if (!hasLegacyCarriers)
706
+ return true;
350
707
  try {
351
- const res = await fetch(`/api/taskforce/task/${task.id}`, {
708
+ const legacyRequestPatch = {
709
+ ...legacyCarrierPatch,
710
+ ...(saveSource ? { saveSource } : {}),
711
+ };
712
+ const requestInit = {
352
713
  method: 'PATCH',
353
714
  headers: { 'Content-Type': 'application/json' },
354
- body: JSON.stringify({ status: newStatus }),
355
- });
715
+ body: JSON.stringify(legacyRequestPatch),
716
+ };
717
+ const res = await fetchCloudTaskRootPatch(`/api/taskforce/task/${id}`, requestInit, legacyRequestPatch, id, taskHttpObservedPrecondition(previousTasks.find((task) => task.id === id)
718
+ || previousArchivedTasks.find((task) => task.id === id), id));
356
719
  if (!res.ok) {
357
- await fetchTasks(true);
358
- return;
720
+ const data = await res.json().catch(() => ({}));
721
+ const message = data.error || `Failed to update task ${id}.`;
722
+ setError(message);
723
+ pushNotice(message, 'error');
724
+ const previousTask = previousTasks.find((task) => task.id === id)
725
+ || previousArchivedTasks.find((task) => task.id === id);
726
+ setTasks((currentTasks) => rollbackTargetTaskPatch(currentTasks, previousTask, id, legacyCarrierPatch));
727
+ setArchivedTasks((currentTasks) => rollbackTargetTaskPatch(currentTasks, previousTask, id, legacyCarrierPatch));
728
+ return false;
359
729
  }
360
730
  const updatedTask = await res.json().catch(() => null);
361
731
  mergeTaskFromServer(updatedTask);
362
- queueWorkspaceSyncFromAuthoritativeTaskState();
732
+ // Attachment saves also depend on the canonical asset snapshot refresh. Give that
733
+ // snapshot a brief head start so the next push includes both task metadata and bytes.
734
+ queueWorkspaceSyncFromAuthoritativeTaskState(updates.attachments !== undefined ? 150 : 0);
735
+ setError('');
736
+ return true;
363
737
  }
364
738
  catch (err) {
365
- fetchTasks();
739
+ console.error("Failed to update task", err);
740
+ const message = `Failed to update task ${id}.`;
741
+ setError(message);
742
+ pushNotice(message, 'error');
743
+ const previousTask = previousTasks.find((task) => task.id === id)
744
+ || previousArchivedTasks.find((task) => task.id === id);
745
+ setTasks((currentTasks) => rollbackTargetTaskPatch(currentTasks, previousTask, id, legacyCarrierPatch));
746
+ setArchivedTasks((currentTasks) => rollbackTargetTaskPatch(currentTasks, previousTask, id, legacyCarrierPatch));
747
+ return false;
366
748
  }
749
+ }, [tasks, archivedTasks, pushNotice, mergeTaskFromServer, mutateTaskMetadata, queueWorkspaceSyncFromAuthoritativeTaskState, handleSetStatus, durableTaskMetadataActivationEnabled, durableTaskStatusActivationEnabled, fetchCloudTaskRootPatch]);
750
+ const handleToggleComplete = async (task) => {
751
+ const newStatus = task.status === 'done' ? 'task' : 'done';
752
+ await handleSetStatus(task, newStatus);
753
+ };
754
+ const handleToggleCancel = async (task) => {
755
+ const newStatus = task.status === 'cancelled' ? 'task' : 'cancelled';
756
+ await handleSetStatus(task, newStatus);
757
+ };
758
+ const handleToggleInProgress = async (task) => {
759
+ const newStatus = task.status === 'in-progress' ? 'task' : 'in-progress';
760
+ await handleSetStatus(task, newStatus);
367
761
  };
368
762
  const handleToggleReview = async (task) => {
369
763
  const newStatus = task.status === 'review' ? 'task' : 'review';
370
- setTasks(prev => prev.map(t => t.id === task.id ? { ...t, status: newStatus } : t));
371
- try {
372
- const res = await fetch(`/api/taskforce/task/${task.id}`, {
373
- method: 'PATCH',
374
- headers: { 'Content-Type': 'application/json' },
375
- body: JSON.stringify({ status: newStatus }),
376
- });
377
- if (!res.ok) {
378
- await fetchTasks(true);
379
- return;
380
- }
381
- const updatedTask = await res.json().catch(() => null);
382
- mergeTaskFromServer(updatedTask);
383
- queueWorkspaceSyncFromAuthoritativeTaskState();
384
- }
385
- catch (err) {
386
- fetchTasks();
387
- }
764
+ await handleSetStatus(task, newStatus);
388
765
  };
389
766
  const handleArchiveTask = async (task) => {
767
+ if (mutateTaskLifecycle) {
768
+ try {
769
+ const durableResult = await mutateTaskLifecycle(task.id, {
770
+ mutationKind: 'archive',
771
+ cancellation: task.status === 'cancelled',
772
+ reason: task.status === 'cancelled' ? (task.canceledReason ?? null) : null,
773
+ });
774
+ if (durableResult && finishDurableTaskMutation(durableResult, task.id, {}, tasks, archivedTasks)) {
775
+ const archivedConclusively = durableResult.state !== 'rejected'
776
+ && durableResult.state !== 'failed'
777
+ && durableResult.state !== 'ambiguous';
778
+ if (editingTaskId === task.id && archivedConclusively) {
779
+ resetForm();
780
+ setActiveTab('tasks');
781
+ }
782
+ return archivedConclusively;
783
+ }
784
+ if (!durableResult && durableTaskStatusActivationEnabled) {
785
+ throw new Error('Durable task archive activation returned no result.');
786
+ }
787
+ }
788
+ catch (error) {
789
+ console.error('Durable task archive failed before a conclusive result.', error);
790
+ const message = 'Task archive confirmation was interrupted. Retry the same action to confirm it safely.';
791
+ setError(message);
792
+ pushNotice(message, 'error');
793
+ return false;
794
+ }
795
+ }
390
796
  try {
391
797
  const isCancelled = task.status === 'cancelled';
392
798
  const endpoint = isCancelled ? 'cancel' : 'complete';
393
- const res = await fetch(`/api/taskforce/task/${task.id}/${endpoint}`, { method: 'POST' });
799
+ const url = `/api/taskforce/task/${task.id}/${endpoint}`;
800
+ const res = await fetchCloudTaskMutation(url, { method: 'POST' }, {}, taskHttpObservedPrecondition(task, task.id), (payload) => (!!payload && typeof payload === 'object'
801
+ && String(payload.id || '') === task.id));
394
802
  if (res.ok) {
395
803
  const archivedTask = await res.json().catch(() => null);
396
804
  const archivedResults = [];
@@ -413,18 +821,21 @@ export function useTaskMutations({ tasks, archivedTasks, editingTaskId, setTasks
413
821
  resetForm();
414
822
  setActiveTab('tasks');
415
823
  }
824
+ return true;
416
825
  }
417
826
  else {
418
827
  const data = await res.json().catch(() => ({}));
419
828
  const message = data.error || 'Failed to archive task.';
420
829
  setError(message);
421
830
  pushNotice(message, 'error');
831
+ return false;
422
832
  }
423
833
  }
424
834
  catch (err) {
425
835
  console.error("Failed to archive", err);
426
836
  setError('Failed to archive task.');
427
837
  pushNotice('Failed to archive task.', 'error');
838
+ return false;
428
839
  }
429
840
  };
430
841
  const handleBulkArchive = async () => {
@@ -433,6 +844,45 @@ export function useTaskMutations({ tasks, archivedTasks, editingTaskId, setTasks
433
844
  return;
434
845
  if (!confirm(`Archive ${completedOrCancelled.length} completed/cancelled tasks?`))
435
846
  return;
847
+ if (mutateTaskLifecycle) {
848
+ let durableStarted = false;
849
+ let durableCount = 0;
850
+ for (const task of completedOrCancelled) {
851
+ try {
852
+ const result = await mutateTaskLifecycle(task.id, {
853
+ mutationKind: 'archive',
854
+ cancellation: task.status === 'cancelled',
855
+ reason: task.status === 'cancelled' ? (task.canceledReason ?? null) : null,
856
+ });
857
+ if (!result || result.state === 'disabled') {
858
+ if (!durableStarted && (!durableTaskStatusActivationEnabled || result?.state === 'disabled'))
859
+ break;
860
+ const message = 'Bulk archive stopped safely because durable capture became unavailable.';
861
+ setError(message);
862
+ pushNotice(message, 'error');
863
+ return;
864
+ }
865
+ durableStarted = true;
866
+ if (finishDurableTaskMutation(result, task.id, {}, tasks, archivedTasks)) {
867
+ if (result.state === 'rejected' || result.state === 'failed')
868
+ return;
869
+ durableCount += 1;
870
+ }
871
+ }
872
+ catch (error) {
873
+ console.error('Durable bulk archive confirmation was interrupted.', error);
874
+ const message = 'Bulk archive stopped safely. Retry to confirm the remaining tasks.';
875
+ setError(message);
876
+ pushNotice(message, 'error');
877
+ return;
878
+ }
879
+ }
880
+ if (durableStarted) {
881
+ pushNotice(`${durableCount} tasks archived`, 'info');
882
+ setError('');
883
+ return;
884
+ }
885
+ }
436
886
  try {
437
887
  const res = await fetch('/api/taskforce/bulk-archive', {
438
888
  method: 'POST',
@@ -469,8 +919,32 @@ export function useTaskMutations({ tasks, archivedTasks, editingTaskId, setTasks
469
919
  }
470
920
  };
471
921
  const handleUnarchive = async (id) => {
922
+ if (mutateTaskLifecycle) {
923
+ try {
924
+ const durableResult = await mutateTaskLifecycle(id, { mutationKind: 'unarchive' });
925
+ if (durableResult && finishDurableTaskMutation(durableResult, id, {}, tasks, archivedTasks)) {
926
+ if (durableResult.state !== 'rejected' && durableResult.state !== 'failed') {
927
+ pushNotice('Task restored from archive.', 'info');
928
+ }
929
+ return;
930
+ }
931
+ if (!durableResult && durableTaskStatusActivationEnabled) {
932
+ throw new Error('Durable task unarchive activation returned no result.');
933
+ }
934
+ }
935
+ catch (error) {
936
+ console.error('Durable task unarchive failed before a conclusive result.', error);
937
+ const message = 'Task restore confirmation was interrupted. Retry the same action to confirm it safely.';
938
+ setError(message);
939
+ pushNotice(message, 'error');
940
+ return;
941
+ }
942
+ }
472
943
  try {
473
- const res = await fetch(`/api/taskforce/task/${id}/unarchive`, { method: 'POST' });
944
+ const url = `/api/taskforce/task/${id}/unarchive`;
945
+ const observed = archivedTasks.find((task) => task.id === id) || tasks.find((task) => task.id === id);
946
+ const res = await fetchCloudTaskMutation(url, { method: 'POST' }, {}, taskHttpObservedPrecondition(observed, id), (payload) => (!!payload && typeof payload === 'object'
947
+ && String(payload.id || '') === id));
474
948
  if (res.ok) {
475
949
  const restoredTask = await res.json().catch(() => null);
476
950
  if (restoredTask) {
@@ -492,6 +966,155 @@ export function useTaskMutations({ tasks, archivedTasks, editingTaskId, setTasks
492
966
  pushNotice('Failed to unarchive task.', 'error');
493
967
  }
494
968
  };
969
+ const handleRestoreSelectedDeletedTasks = useCallback(async (records, restoreDestination = 'previous', onProgress) => {
970
+ const uniqueRecords = Array.from(new Map(records.map((record) => [record.id, record])).values());
971
+ const result = {
972
+ requested: uniqueRecords.length,
973
+ completed: 0,
974
+ succeeded: [],
975
+ failed: [],
976
+ };
977
+ const publish = () => onProgress?.({
978
+ ...result,
979
+ succeeded: [...result.succeeded],
980
+ failed: [...result.failed],
981
+ });
982
+ const recordFailure = (record, message, code) => {
983
+ result.failed.push({
984
+ deletedRecordId: record.id,
985
+ taskId: record.taskId,
986
+ title: record.taskSnapshot.title,
987
+ message,
988
+ ...(code ? { code } : {}),
989
+ });
990
+ result.completed += 1;
991
+ publish();
992
+ };
993
+ const recordSuccess = (record, task) => {
994
+ mergeTaskFromServer(task);
995
+ setDeletedTasks((prev) => prev.filter((entry) => (entry.id !== record.id && entry.taskId !== task.id)));
996
+ workspaceDeletedTaskIdsRef.current.delete(record.id);
997
+ workspaceDeletedTaskIdsRef.current.delete(record.taskId);
998
+ workspaceDeletedTaskWatermarksRef.current.delete(record.id);
999
+ workspaceDeletedTaskWatermarksRef.current.delete(record.taskId);
1000
+ result.succeeded.push(record);
1001
+ result.completed += 1;
1002
+ publish();
1003
+ };
1004
+ if (durableTaskDeleteActivationEnabled) {
1005
+ for (const record of uniqueRecords) {
1006
+ const task = await handleRestoreDeletedTask(record.id, record.taskId, {
1007
+ silent: true,
1008
+ restoreDestination,
1009
+ });
1010
+ if (task)
1011
+ recordSuccess(record, task);
1012
+ else
1013
+ recordFailure(record, 'Failed to capture or confirm the durable restore.');
1014
+ }
1015
+ }
1016
+ else {
1017
+ for (let offset = 0; offset < uniqueRecords.length; offset += 50) {
1018
+ const chunk = uniqueRecords.slice(offset, offset + 50);
1019
+ const ids = chunk.map((record) => record.id);
1020
+ const body = restoreDestination === 'archive'
1021
+ ? { ids, restoreDestination }
1022
+ : { ids };
1023
+ try {
1024
+ let response;
1025
+ let prepared = null;
1026
+ if (durableTaskHttpRootActivationEnabled) {
1027
+ if (!taskHttpMutationClientRef.current) {
1028
+ taskHttpMutationClientRef.current = taskHttpMutationClient || createCloudTaskHttpMutationClient();
1029
+ }
1030
+ prepared = await taskHttpMutationClientRef.current.prepareUpdate(workspaceId, '/api/taskforce/deleted/restore-batch', body, restoreDestination === 'archive'
1031
+ ? { deletedRecordIds: ids, restoreDestination }
1032
+ : { deletedRecordIds: ids });
1033
+ response = await fetchTaskHttpMutation('/api/taskforce/deleted/restore-batch', {
1034
+ method: 'POST',
1035
+ headers: { 'Content-Type': 'application/json' },
1036
+ body: JSON.stringify(body),
1037
+ }, prepared.operationId);
1038
+ }
1039
+ else {
1040
+ response = await requestDeletedEndpoint('/restore-batch', {
1041
+ method: 'POST',
1042
+ headers: { 'Content-Type': 'application/json' },
1043
+ body: JSON.stringify(body),
1044
+ });
1045
+ }
1046
+ const payload = await response.json().catch(() => ({}));
1047
+ if (prepared && (response.ok || await isConclusiveTaskHttpResponse(response))) {
1048
+ await taskHttpMutationClientRef.current?.confirmUpdate(prepared.fingerprint, prepared.operationId);
1049
+ }
1050
+ if (!response.ok) {
1051
+ const message = String(payload.error || 'Failed to restore the selected Trash records.');
1052
+ chunk.forEach((record) => recordFailure(record, message));
1053
+ continue;
1054
+ }
1055
+ const recordsById = new Map(chunk.map((record) => [record.id, record]));
1056
+ const completedIds = new Set();
1057
+ for (const item of payload.results || []) {
1058
+ const deletedRecordId = String(item.deletedRecordId || '').trim();
1059
+ const record = recordsById.get(deletedRecordId);
1060
+ if (!record || !item.task)
1061
+ continue;
1062
+ const task = normalizeTaskFromApi(item.task);
1063
+ if (task.id !== record.taskId)
1064
+ continue;
1065
+ completedIds.add(deletedRecordId);
1066
+ recordSuccess(record, task);
1067
+ }
1068
+ for (const error of payload.errors || []) {
1069
+ const deletedRecordId = String(error.id || '').trim();
1070
+ const record = recordsById.get(deletedRecordId);
1071
+ if (!record || completedIds.has(deletedRecordId))
1072
+ continue;
1073
+ completedIds.add(deletedRecordId);
1074
+ recordFailure(record, String(error.message || 'Failed to restore the deleted task.'), error.code ? String(error.code) : undefined);
1075
+ }
1076
+ for (const record of chunk) {
1077
+ if (!completedIds.has(record.id)) {
1078
+ recordFailure(record, 'The restore response did not include this deleted record.');
1079
+ }
1080
+ }
1081
+ }
1082
+ catch (error) {
1083
+ const message = error instanceof Error
1084
+ ? error.message
1085
+ : 'The restore request was interrupted.';
1086
+ chunk.forEach((record) => recordFailure(record, message));
1087
+ }
1088
+ }
1089
+ queueWorkspaceSyncFromAuthoritativeTaskState();
1090
+ }
1091
+ if (result.failed.length > 0) {
1092
+ const message = `${result.succeeded.length} restored; ${result.failed.length} failed and remain selected.`;
1093
+ setError(message);
1094
+ pushNotice(message, 'error');
1095
+ }
1096
+ else if (result.succeeded.length > 0) {
1097
+ setError('');
1098
+ pushNotice(restoreDestination === 'archive'
1099
+ ? `${result.succeeded.length} task${result.succeeded.length === 1 ? '' : 's'} restored to Archive.`
1100
+ : `${result.succeeded.length} task${result.succeeded.length === 1 ? '' : 's'} restored from Trash.`, 'info');
1101
+ }
1102
+ return result;
1103
+ }, [
1104
+ durableTaskDeleteActivationEnabled,
1105
+ durableTaskHttpRootActivationEnabled,
1106
+ handleRestoreDeletedTask,
1107
+ mergeTaskFromServer,
1108
+ pushNotice,
1109
+ queueWorkspaceSyncFromAuthoritativeTaskState,
1110
+ requestDeletedEndpoint,
1111
+ setDeletedTasks,
1112
+ setError,
1113
+ taskHttpMutationClient,
1114
+ workspaceDeletedTaskIdsRef,
1115
+ workspaceDeletedTaskWatermarksRef,
1116
+ workspaceId,
1117
+ ]);
495
1118
  const handleCopyId = (e, id) => {
496
1119
  e.stopPropagation();
497
1120
  navigator.clipboard.writeText(id);
@@ -506,6 +1129,7 @@ export function useTaskMutations({ tasks, archivedTasks, editingTaskId, setTasks
506
1129
  // Handlers
507
1130
  handleDelete,
508
1131
  handleUpdateTask,
1132
+ handleSetStatus,
509
1133
  handleToggleComplete,
510
1134
  handleToggleCancel,
511
1135
  handleToggleInProgress,
@@ -514,6 +1138,7 @@ export function useTaskMutations({ tasks, archivedTasks, editingTaskId, setTasks
514
1138
  handleBulkArchive,
515
1139
  handleUnarchive,
516
1140
  handleRestoreDeletedTask,
1141
+ handleRestoreSelectedDeletedTasks,
517
1142
  handlePermanentlyDeleteDeletedTask,
518
1143
  handleEmptyDeletedTasks,
519
1144
  handleCopyId,