@taskforcehq/taskforce 0.3.326 → 0.3.327

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 (1358) hide show
  1. package/LICENSE.md +68 -0
  2. package/README.md +19 -0
  3. package/dist/Taskforce.module.css +2173 -561
  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 +73 -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 +4 -0
  27. package/dist/components/context/ContextAttachmentManager.js +418 -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 +44 -0
  60. package/dist/components/features/planning/PlanningEntitySummary.js +97 -0
  61. package/dist/components/features/planning/PlanningLinkPicker.d.ts +9 -0
  62. package/dist/components/features/planning/PlanningLinkPicker.js +26 -0
  63. package/dist/components/features/planning/PlanningModule.d.ts +6 -0
  64. package/dist/components/features/planning/PlanningModule.js +571 -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/planningCreateIntent.d.ts +10 -0
  76. package/dist/components/features/planning/planningCreateIntent.js +16 -0
  77. package/dist/components/features/planning/planningNavigator.d.ts +33 -0
  78. package/dist/components/features/planning/planningNavigator.js +96 -0
  79. package/dist/components/features/planning/planningTaskArrangement.d.ts +18 -0
  80. package/dist/components/features/planning/planningTaskArrangement.js +106 -0
  81. package/dist/components/features/planning/planningWorkspaceModel.d.ts +121 -0
  82. package/dist/components/features/planning/planningWorkspaceModel.js +5 -0
  83. package/dist/components/features/settings/CategoryManager.js +2 -2
  84. package/dist/components/features/settings/TaxonomyEditor.js +1 -1
  85. package/dist/components/features/settings/TaxonomyManager.js +1 -1
  86. package/dist/components/features/settings/TypeManager.js +1 -1
  87. package/dist/components/features/taskforceAgentAssignments/AgentBehaviorAssignments.d.ts +10 -0
  88. package/dist/components/features/taskforceAgentAssignments/AgentBehaviorAssignments.js +175 -0
  89. package/dist/components/features/taskforceAgentAssignments/agentBehaviorCatalogApi.d.ts +27 -0
  90. package/dist/components/features/taskforceAgentAssignments/agentBehaviorCatalogApi.js +24 -0
  91. package/dist/components/features/taskforceAgentEditorModel.d.ts +109 -0
  92. package/dist/components/features/taskforceAgentEditorModel.js +145 -0
  93. package/dist/components/features/useDocumentWorkspaceController.d.ts +20 -1
  94. package/dist/components/features/useDocumentWorkspaceController.js +106 -21
  95. package/dist/components/features/workflowManager/WorkflowManagerModule.d.ts +11 -0
  96. package/dist/components/features/workflowManager/WorkflowManagerModule.js +313 -0
  97. package/dist/components/features/workflowManager/WorkflowPublishDialog.d.ts +11 -0
  98. package/dist/components/features/workflowManager/WorkflowPublishDialog.js +8 -0
  99. package/dist/components/features/workflowManager/types.d.ts +74 -0
  100. package/dist/components/features/workflowManager/types.js +1 -0
  101. package/dist/components/features/workflowManager/useWorkflowManager.d.ts +30 -0
  102. package/dist/components/features/workflowManager/useWorkflowManager.js +213 -0
  103. package/dist/components/features/workflowManager/workflowManagerApi.d.ts +52 -0
  104. package/dist/components/features/workflowManager/workflowManagerApi.js +142 -0
  105. package/dist/components/task/TaskActionHeader.d.ts +6 -3
  106. package/dist/components/task/TaskActionHeader.js +46 -53
  107. package/dist/components/task/TaskCard.d.ts +10 -2
  108. package/dist/components/task/TaskCard.js +103 -54
  109. package/dist/components/task/TaskContextUpload.d.ts +1 -0
  110. package/dist/components/task/TaskContextUpload.js +3 -2
  111. package/dist/components/task/TaskForm.d.ts +12 -17
  112. package/dist/components/task/TaskForm.js +544 -199
  113. package/dist/components/task/TaskImageReviews.d.ts +8 -0
  114. package/dist/components/task/TaskImageReviews.js +47 -0
  115. package/dist/components/task/TaskKanban.d.ts +9 -10
  116. package/dist/components/task/TaskKanban.js +70 -18
  117. package/dist/components/task/TaskList.d.ts +9 -8
  118. package/dist/components/task/TaskList.js +46 -32
  119. package/dist/components/task/TaskReferenceBadge.d.ts +2 -1
  120. package/dist/components/task/TaskReferenceBadge.js +3 -2
  121. package/dist/components/task/TaskStatusActions.d.ts +3 -1
  122. package/dist/components/task/TaskStatusActions.js +17 -6
  123. package/dist/components/task/TaskWorkflowAssignmentField.d.ts +18 -0
  124. package/dist/components/task/TaskWorkflowAssignmentField.js +362 -0
  125. package/dist/components/task/TaskWorkstreamPicker.d.ts +8 -0
  126. package/dist/components/task/TaskWorkstreamPicker.js +24 -0
  127. package/dist/components/task/TrashRestoreControls.d.ts +18 -0
  128. package/dist/components/task/TrashRestoreControls.js +71 -0
  129. package/dist/components/ui/AiIdentityRosterCard.d.ts +20 -0
  130. package/dist/components/ui/AiIdentityRosterCard.js +5 -0
  131. package/dist/components/ui/AssetTraySortControl.d.ts +10 -0
  132. package/dist/components/ui/AssetTraySortControl.js +38 -0
  133. package/dist/components/ui/AssigneeIdentity.d.ts +12 -0
  134. package/dist/components/ui/AssigneeIdentity.js +41 -0
  135. package/dist/components/ui/DiscardChangesDialog.d.ts +10 -0
  136. package/dist/components/ui/DiscardChangesDialog.js +7 -0
  137. package/dist/components/ui/DisclosureSectionHeader.d.ts +4 -1
  138. package/dist/components/ui/DisclosureSectionHeader.js +2 -2
  139. package/dist/components/ui/EditableAvatarButton.d.ts +6 -1
  140. package/dist/components/ui/EditableAvatarButton.js +6 -5
  141. package/dist/components/ui/HierarchyActionBadge.d.ts +2 -1
  142. package/dist/components/ui/HierarchyActionBadge.js +2 -2
  143. package/dist/components/ui/Markdown.d.ts +13 -3
  144. package/dist/components/ui/Markdown.fixture.d.ts +1 -0
  145. package/dist/components/ui/Markdown.fixture.js +23 -0
  146. package/dist/components/ui/Markdown.js +158 -68
  147. package/dist/components/ui/Modal.d.ts +3 -1
  148. package/dist/components/ui/Modal.js +85 -19
  149. package/dist/components/ui/MultiSelectFilter.d.ts +9 -2
  150. package/dist/components/ui/MultiSelectFilter.js +26 -5
  151. package/dist/components/ui/ReferenceBadgeButton.js +2 -3
  152. package/dist/components/ui/TaxonomyDropdown.d.ts +10 -1
  153. package/dist/components/ui/TaxonomyDropdown.js +149 -58
  154. package/dist/components/ui/TopNoticeLayer.d.ts +2 -1
  155. package/dist/components/ui/TopNoticeLayer.js +5 -2
  156. package/dist/components/ui/useFallbackImageUrl.d.ts +4 -0
  157. package/dist/components/ui/useFallbackImageUrl.js +20 -0
  158. package/dist/components/views/AppShellHeader.js +2 -2
  159. package/dist/components/views/StandaloneLayout.d.ts +1 -0
  160. package/dist/components/views/StandaloneLayout.js +1662 -598
  161. package/dist/components/views/WidgetView.d.ts +1 -0
  162. package/dist/components/views/WidgetView.js +95 -30
  163. package/dist/components/views/chrome/WorkspaceChromeSections.d.ts +4 -2
  164. package/dist/components/views/chrome/WorkspaceChromeSections.js +3 -6
  165. package/dist/components/views/chrome/workspaceChrome.d.ts +5 -8
  166. package/dist/components/views/chrome/workspaceChrome.js +62 -27
  167. package/dist/components/views/panels/FilterToolbar.d.ts +4 -3
  168. package/dist/components/views/panels/FilterToolbar.js +8 -5
  169. package/dist/components/views/panels/FilterToolbarControls.d.ts +11 -2
  170. package/dist/components/views/panels/FilterToolbarControls.js +35 -20
  171. package/dist/components/views/panels/PlanningDrawer.d.ts +60 -49
  172. package/dist/components/views/panels/PlanningDrawer.js +978 -313
  173. package/dist/components/views/planningScope.js +7 -1
  174. package/dist/components/views/standalone/modals/AccountSettingsModal.d.ts +62 -0
  175. package/dist/components/views/standalone/modals/AccountSettingsModal.js +197 -0
  176. package/dist/components/views/standalone/modals/AvatarImageManagerModal.d.ts +7 -2
  177. package/dist/components/views/standalone/modals/AvatarImageManagerModal.js +56 -9
  178. package/dist/components/views/standalone/modals/HelpModal.d.ts +1 -2
  179. package/dist/components/views/standalone/modals/HelpModal.js +3 -4
  180. package/dist/components/views/standalone/modals/SyncStatusModal.d.ts +8 -9
  181. package/dist/components/views/standalone/modals/SyncStatusModal.js +85 -25
  182. package/dist/components/views/standalone/modals/TeamManagementModal.js +1 -1
  183. package/dist/config/applicationBaseUrl.d.ts +2 -0
  184. package/dist/config/applicationBaseUrl.js +23 -0
  185. package/dist/config/envSchema.d.ts +1 -1
  186. package/dist/config/envSchema.js +166 -5
  187. package/dist/core/AdminAuditRetentionService.d.ts +43 -0
  188. package/dist/core/AdminAuditRetentionService.js +126 -0
  189. package/dist/core/AiProfileService.d.ts +34 -0
  190. package/dist/core/AiProfileService.js +510 -251
  191. package/dist/core/AttachmentLinkService.d.ts +10 -2
  192. package/dist/core/AttachmentLinkService.js +44 -12
  193. package/dist/core/AuthIdentityService.d.ts +6 -0
  194. package/dist/core/AuthIdentityService.js +38 -0
  195. package/dist/core/AuthTokenService.d.ts +1 -0
  196. package/dist/core/AuthTokenService.js +13 -0
  197. package/dist/core/DeletedTaskLifecycleService.d.ts +4 -2
  198. package/dist/core/DeletedTaskLifecycleService.js +124 -38
  199. package/dist/core/GlobalSettingsService.d.ts +3 -1
  200. package/dist/core/GlobalSettingsService.js +30 -4
  201. package/dist/core/InitiativeDurableMutationService.d.ts +89 -0
  202. package/dist/core/InitiativeDurableMutationService.js +187 -0
  203. package/dist/core/McpTokenService.d.ts +1 -0
  204. package/dist/core/McpTokenService.js +39 -13
  205. package/dist/core/PlanningCommandPreparationService.d.ts +60 -0
  206. package/dist/core/PlanningCommandPreparationService.js +149 -0
  207. package/dist/core/ScheduleCommandService.d.ts +76 -0
  208. package/dist/core/ScheduleCommandService.js +165 -0
  209. package/dist/core/SyncReconciliationService.d.ts +29 -6
  210. package/dist/core/SyncReconciliationService.js +256 -84
  211. package/dist/core/TaskActivityService.d.ts +22 -2
  212. package/dist/core/TaskActivityService.js +177 -29
  213. package/dist/core/TaskAttachmentLinksDurableMutationService.d.ts +31 -0
  214. package/dist/core/TaskAttachmentLinksDurableMutationService.js +231 -0
  215. package/dist/core/TaskChecklistCommandService.d.ts +50 -0
  216. package/dist/core/TaskChecklistCommandService.js +111 -0
  217. package/dist/core/TaskDurableCreateMutationService.d.ts +38 -0
  218. package/dist/core/TaskDurableCreateMutationService.js +85 -0
  219. package/dist/core/TaskDurableDeleteMutationService.d.ts +47 -0
  220. package/dist/core/TaskDurableDeleteMutationService.js +54 -0
  221. package/dist/core/TaskDurableLifecycleMutationService.d.ts +38 -0
  222. package/dist/core/TaskDurableLifecycleMutationService.js +42 -0
  223. package/dist/core/TaskDurableRelationshipMutationService.d.ts +58 -0
  224. package/dist/core/TaskDurableRelationshipMutationService.js +66 -0
  225. package/dist/core/TaskDurableRestoreMutationService.d.ts +31 -0
  226. package/dist/core/TaskDurableRestoreMutationService.js +33 -0
  227. package/dist/core/TaskDurableStatusMutationService.d.ts +74 -0
  228. package/dist/core/TaskDurableStatusMutationService.js +247 -0
  229. package/dist/core/TaskDurableSyncMutationService.d.ts +34 -0
  230. package/dist/core/TaskDurableSyncMutationService.js +70 -0
  231. package/dist/core/TaskDurableWorkflowMutationService.d.ts +48 -0
  232. package/dist/core/TaskDurableWorkflowMutationService.js +59 -0
  233. package/dist/core/TaskLifecycleCommandService.d.ts +101 -0
  234. package/dist/core/TaskLifecycleCommandService.js +161 -0
  235. package/dist/core/TaskRootCommandPreparationService.d.ts +35 -0
  236. package/dist/core/TaskRootCommandPreparationService.js +103 -0
  237. package/dist/core/Taskforce.d.ts +479 -59
  238. package/dist/core/Taskforce.js +3671 -841
  239. package/dist/core/WorkflowAssignmentService.d.ts +40 -0
  240. package/dist/core/WorkflowAssignmentService.js +158 -0
  241. package/dist/core/WorkflowExecutionService.d.ts +69 -0
  242. package/dist/core/WorkflowExecutionService.js +342 -0
  243. package/dist/core/WorkflowTaskActivationService.d.ts +32 -0
  244. package/dist/core/WorkflowTaskActivationService.js +63 -0
  245. package/dist/core/WorkflowTemplateService.d.ts +64 -0
  246. package/dist/core/WorkflowTemplateService.js +223 -0
  247. package/dist/core/WorkspaceLifecycleService.d.ts +1 -0
  248. package/dist/core/WorkspaceLifecycleService.js +18 -0
  249. package/dist/core/WorkstreamDurableMutationService.d.ts +90 -0
  250. package/dist/core/WorkstreamDurableMutationService.js +184 -0
  251. package/dist/core/planningReferencePolicy.d.ts +14 -0
  252. package/dist/core/planningReferencePolicy.js +53 -0
  253. package/dist/core/taskReferencePolicy.js +24 -3
  254. package/dist/core/types.d.ts +10 -10
  255. package/dist/documentReviews/DocumentReviewCommentStore.d.ts +22 -2
  256. package/dist/documentReviews/DocumentReviewCommentStore.js +92 -8
  257. package/dist/documentReviews/commandService.d.ts +51 -0
  258. package/dist/documentReviews/commandService.js +63 -0
  259. package/dist/documentReviews/service.d.ts +20 -1
  260. package/dist/documentReviews/service.js +234 -24
  261. package/dist/documentReviews/types.d.ts +18 -1
  262. package/dist/hooks/sync/bootstrap.d.ts +3 -7
  263. package/dist/hooks/sync/bootstrap.js +6 -14
  264. package/dist/hooks/sync/browserSyncAuthority.d.ts +21 -0
  265. package/dist/hooks/sync/browserSyncAuthority.js +70 -0
  266. package/dist/hooks/sync/browserSyncRemoteServices.d.ts +29 -0
  267. package/dist/hooks/sync/browserSyncRemoteServices.js +58 -0
  268. package/dist/hooks/sync/controlPlane.d.ts +1 -37
  269. package/dist/hooks/sync/controlPlane.js +1 -78
  270. package/dist/hooks/sync/lifecyclePolicy.d.ts +1 -45
  271. package/dist/hooks/sync/lifecyclePolicy.js +1 -93
  272. package/dist/hooks/sync/orchestratorShared.d.ts +9 -3
  273. package/dist/hooks/sync/orchestratorShared.js +70 -96
  274. package/dist/hooks/sync/pullLifecycle.d.ts +1 -31
  275. package/dist/hooks/sync/pullLifecycle.js +1 -24
  276. package/dist/hooks/sync/realtime.d.ts +4 -1
  277. package/dist/hooks/sync/realtime.js +103 -3
  278. package/dist/hooks/sync/recovery.d.ts +1 -84
  279. package/dist/hooks/sync/recovery.js +1 -245
  280. package/dist/hooks/sync/transfers.d.ts +8 -129
  281. package/dist/hooks/sync/transfers.js +19 -581
  282. package/dist/hooks/sync/useDataVersionRefresh.d.ts +6 -1
  283. package/dist/hooks/sync/useDataVersionRefresh.js +127 -12
  284. package/dist/hooks/sync/useDurableLocalOutboxDrain.d.ts +14 -0
  285. package/dist/hooks/sync/useDurableLocalOutboxDrain.js +208 -0
  286. package/dist/hooks/sync/useDurableTaskCreateMutation.d.ts +15 -0
  287. package/dist/hooks/sync/useDurableTaskCreateMutation.js +152 -0
  288. package/dist/hooks/sync/useDurableTaskDeleteMutation.d.ts +11 -0
  289. package/dist/hooks/sync/useDurableTaskDeleteMutation.js +21 -0
  290. package/dist/hooks/sync/useDurableTaskLifecycleMutation.d.ts +12 -0
  291. package/dist/hooks/sync/useDurableTaskLifecycleMutation.js +22 -0
  292. package/dist/hooks/sync/useDurableTaskMetadataMutation.d.ts +14 -0
  293. package/dist/hooks/sync/useDurableTaskMetadataMutation.js +24 -0
  294. package/dist/hooks/sync/useDurableTaskRestoreMutation.d.ts +12 -0
  295. package/dist/hooks/sync/useDurableTaskRestoreMutation.js +24 -0
  296. package/dist/hooks/sync/useDurableTaskStatusMutation.d.ts +18 -0
  297. package/dist/hooks/sync/useDurableTaskStatusMutation.js +23 -0
  298. package/dist/hooks/sync/useLocalSyncCoordinatorSnapshot.d.ts +23 -0
  299. package/dist/hooks/sync/useLocalSyncCoordinatorSnapshot.js +414 -0
  300. package/dist/hooks/sync/useSyncStatusActions.d.ts +2 -1
  301. package/dist/hooks/sync/useSyncStatusActions.js +8 -3
  302. package/dist/hooks/tasks/taskHttpMutation.d.ts +25 -0
  303. package/dist/hooks/tasks/taskHttpMutation.js +134 -0
  304. package/dist/hooks/tasks/useCurrentTaskRelations.d.ts +6 -1
  305. package/dist/hooks/tasks/useCurrentTaskRelations.js +32 -6
  306. package/dist/hooks/tasks/useTaskEditorNavigation.d.ts +4 -3
  307. package/dist/hooks/tasks/useTaskEditorNavigation.js +9 -13
  308. package/dist/hooks/tasks/useTaskFormActions.d.ts +17 -2
  309. package/dist/hooks/tasks/useTaskFormActions.js +309 -55
  310. package/dist/hooks/tasks/useTaskReferenceContract.d.ts +5 -0
  311. package/dist/hooks/tasks/useTaskReferenceContract.js +17 -0
  312. package/dist/hooks/tasks/useTaskRelationships.d.ts +1 -3
  313. package/dist/hooks/tasks/useTaskRelationships.js +5 -25
  314. package/dist/hooks/tasks/useTrashSelection.d.ts +12 -0
  315. package/dist/hooks/tasks/useTrashSelection.js +49 -0
  316. package/dist/hooks/ui/useInitiativeTemplates.d.ts +24 -0
  317. package/dist/hooks/ui/useInitiativeTemplates.js +22 -0
  318. package/dist/hooks/ui/useSettingsModel.d.ts +5 -29
  319. package/dist/hooks/ui/useSettingsModel.js +31 -15
  320. package/dist/hooks/ui/useSettingsPersistence.d.ts +0 -1
  321. package/dist/hooks/ui/useSettingsPersistence.js +4 -8
  322. package/dist/hooks/ui/useSettingsTaxonomyManagement.js +31 -0
  323. package/dist/hooks/useFilterSort.d.ts +2 -2
  324. package/dist/hooks/useFilterSort.js +19 -15
  325. package/dist/hooks/useRealtimeSync.d.ts +10 -0
  326. package/dist/hooks/useRealtimeSync.js +57 -4
  327. package/dist/hooks/useSyncOrchestrator.d.ts +32 -1
  328. package/dist/hooks/useSyncOrchestrator.js +963 -287
  329. package/dist/hooks/useTaskData.d.ts +11 -2
  330. package/dist/hooks/useTaskData.js +59 -26
  331. package/dist/hooks/useTaskMutations.d.ts +42 -5
  332. package/dist/hooks/useTaskMutations.js +750 -125
  333. package/dist/hooks/useTaskforce.d.ts +114 -118
  334. package/dist/hooks/useTaskforce.js +1102 -449
  335. package/dist/hooks/useUiNotice.d.ts +5 -1
  336. package/dist/hooks/useUiNotice.js +13 -2
  337. package/dist/hooks/useWorkspaceSyncController.d.ts +9 -0
  338. package/dist/hooks/useWorkspaceSyncController.js +159 -17
  339. package/dist/hooks/workspace/usePersistedAppUiState.d.ts +74 -0
  340. package/dist/hooks/workspace/usePersistedAppUiState.js +325 -0
  341. package/dist/hooks/workspace/usePersistedLayoutUiState.d.ts +76 -0
  342. package/dist/hooks/workspace/usePersistedLayoutUiState.js +479 -0
  343. package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.d.ts +2 -7
  344. package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.js +42 -31
  345. package/dist/hooks/workspace/workspaceLocalState.d.ts +17 -6
  346. package/dist/hooks/workspace/workspaceLocalState.js +175 -5
  347. package/dist/hooks/workstreams/workstreamHttpMutation.d.ts +23 -0
  348. package/dist/hooks/workstreams/workstreamHttpMutation.js +134 -0
  349. package/dist/localization/locales/en-US.d.ts +3 -3
  350. package/dist/localization/locales/en-US.js +3 -3
  351. package/dist/localization/locales/es-419.js +3 -3
  352. package/dist/localization/locales/pt-BR.js +3 -3
  353. package/dist/mcp/adminWorkspaceRegistrar.js +2 -30
  354. package/dist/mcp/aiProfileBootstrap.d.ts +3 -0
  355. package/dist/mcp/aiProfileBootstrap.js +4 -0
  356. package/dist/mcp/canonicalAssetHelpers.d.ts +16 -4
  357. package/dist/mcp/canonicalAssetHelpers.js +104 -35
  358. package/dist/mcp/clientIntegrations.d.ts +4 -2
  359. package/dist/mcp/clientIntegrations.js +58 -57
  360. package/dist/mcp/clientRegistry.d.ts +30 -0
  361. package/dist/mcp/clientRegistry.js +134 -0
  362. package/dist/mcp/collaborationRegistrar.js +20 -6
  363. package/dist/mcp/documentAssetRegistrar.js +220 -52
  364. package/dist/mcp/documentContentCommand.d.ts +94 -0
  365. package/dist/mcp/documentContentCommand.js +226 -0
  366. package/dist/mcp/documentHelpers.d.ts +13 -65
  367. package/dist/mcp/documentHelpers.js +49 -62
  368. package/dist/mcp/durableTaskMutationRouter.d.ts +65 -0
  369. package/dist/mcp/durableTaskMutationRouter.js +217 -0
  370. package/dist/mcp/durableTaskRelationshipMutationRouter.d.ts +38 -0
  371. package/dist/mcp/durableTaskRelationshipMutationRouter.js +168 -0
  372. package/dist/mcp/durableTaskRootMutationRouter.d.ts +64 -0
  373. package/dist/mcp/durableTaskRootMutationRouter.js +226 -0
  374. package/dist/mcp/gitWorktreeRoots.d.ts +2 -0
  375. package/dist/mcp/gitWorktreeRoots.js +19 -0
  376. package/dist/mcp/legacyServer.d.ts +1 -0
  377. package/dist/mcp/legacyServer.js +42 -0
  378. package/dist/mcp/localCliHealth.d.ts +56 -0
  379. package/dist/mcp/localCliHealth.js +170 -0
  380. package/dist/mcp/localServiceProxy.d.ts +23 -0
  381. package/dist/mcp/localServiceProxy.js +255 -0
  382. package/dist/mcp/mcpInputValidator.d.ts +17 -0
  383. package/dist/mcp/mcpInputValidator.js +58 -0
  384. package/dist/mcp/planningAttachmentCommandAdapter.d.ts +127 -0
  385. package/dist/mcp/planningAttachmentCommandAdapter.js +188 -0
  386. package/dist/mcp/programScaffoldCommandAdapter.d.ts +6 -0
  387. package/dist/mcp/programScaffoldCommandAdapter.js +39 -0
  388. package/dist/mcp/proxyServer.d.ts +1 -0
  389. package/dist/mcp/proxyServer.js +2 -0
  390. package/dist/mcp/runtime.d.ts +82 -1
  391. package/dist/mcp/runtime.js +4285 -1925
  392. package/dist/mcp/server.js +29 -2
  393. package/dist/mcp/sharedLocalServiceGateD.d.ts +115 -0
  394. package/dist/mcp/sharedLocalServiceGateD.js +344 -0
  395. package/dist/mcp/stdioLifecycle.d.ts +22 -0
  396. package/dist/mcp/stdioLifecycle.js +54 -0
  397. package/dist/mcp/taskAttachmentCommandAdapter.d.ts +190 -0
  398. package/dist/mcp/taskAttachmentCommandAdapter.js +464 -0
  399. package/dist/mcp/taskAttachmentHelpers.d.ts +8 -6
  400. package/dist/mcp/taskAttachmentHelpers.js +74 -2
  401. package/dist/mcp/taskAttachmentTypes.d.ts +26 -5
  402. package/dist/mcp/taskPlanCommand.d.ts +64 -0
  403. package/dist/mcp/taskPlanCommand.js +98 -0
  404. package/dist/mcp/taskPlanningRegistrar.js +215 -27
  405. package/dist/mcp/toolCallCompatibility.d.ts +6 -0
  406. package/dist/mcp/toolCallCompatibility.js +16 -0
  407. package/dist/mcp/toolCatalog.d.ts +3 -1
  408. package/dist/mcp/toolProfiles.d.ts +12 -1
  409. package/dist/mcp/toolProfiles.js +43 -0
  410. package/dist/mcp/toolRegistry.d.ts +17 -2
  411. package/dist/mcp/toolRegistry.js +24 -9
  412. package/dist/mcp/workflowExecutionRegistrar.d.ts +2 -0
  413. package/dist/mcp/workflowExecutionRegistrar.js +51 -0
  414. package/dist/migrations/taskSchemaMigrations.d.ts +35 -0
  415. package/dist/migrations/taskSchemaMigrations.js +1797 -4
  416. package/dist/migrations/taskUpdatedAtSyncDriftMigration.d.ts +20 -0
  417. package/dist/migrations/taskUpdatedAtSyncDriftMigration.js +153 -0
  418. package/dist/migrations/taskforceAgentDefinitionMigration.d.ts +26 -0
  419. package/dist/migrations/taskforceAgentDefinitionMigration.js +116 -0
  420. package/dist/plugins/vite.js +48 -17
  421. package/dist/public/Taskforce_Van.webp +0 -0
  422. package/dist/runtime/appGateDefinitions.d.ts +16 -10
  423. package/dist/runtime/appGateDefinitions.js +16 -10
  424. package/dist/runtime/appGates.d.ts +5 -4
  425. package/dist/runtime/appGates.js +4 -3
  426. package/dist/server/aiProfileAvatarAssets.d.ts +11 -8
  427. package/dist/server/aiProfileAvatarAssets.js +159 -70
  428. package/dist/server/auth.js +15 -1
  429. package/dist/server/cors.d.ts +2 -1
  430. package/dist/server/cors.js +45 -8
  431. package/dist/server/email.d.ts +3 -1
  432. package/dist/server/email.js +46 -8
  433. package/dist/server/index.d.ts +24 -1
  434. package/dist/server/index.js +342 -46
  435. package/dist/server/localDataOwnerPermit.d.ts +18 -0
  436. package/dist/server/localDataOwnerPermit.js +58 -0
  437. package/dist/server/localDatabaseIdentity.d.ts +14 -0
  438. package/dist/server/localDatabaseIdentity.js +69 -0
  439. package/dist/server/localRealtimeFileInvalidation.d.ts +1 -0
  440. package/dist/server/localRealtimeFileInvalidation.js +7 -0
  441. package/dist/server/localServiceLease.d.ts +62 -0
  442. package/dist/server/localServiceLease.js +477 -0
  443. package/dist/server/localServiceOwnershipBootstrap.d.ts +19 -0
  444. package/dist/server/localServiceOwnershipBootstrap.js +84 -0
  445. package/dist/server/localServiceSessions.d.ts +87 -0
  446. package/dist/server/localServiceSessions.js +309 -0
  447. package/dist/server/localServiceWindowsAcl.d.ts +8 -0
  448. package/dist/server/localServiceWindowsAcl.js +60 -0
  449. package/dist/server/localSyncProcessLockBootstrap.d.ts +3 -0
  450. package/dist/server/localSyncProcessLockBootstrap.js +16 -0
  451. package/dist/server/localWorkspaceSyncServerComposition.d.ts +59 -0
  452. package/dist/server/localWorkspaceSyncServerComposition.js +91 -0
  453. package/dist/server/localWorkspaceSyncServerRuntime.d.ts +119 -0
  454. package/dist/server/localWorkspaceSyncServerRuntime.js +1163 -0
  455. package/dist/server/rateLimit.d.ts +1 -0
  456. package/dist/server/rateLimit.js +16 -0
  457. package/dist/server/routes/admin.d.ts +2 -4
  458. package/dist/server/routes/admin.js +199 -337
  459. package/dist/server/routes/agentRoles.d.ts +13 -0
  460. package/dist/server/routes/agentRoles.js +273 -0
  461. package/dist/server/routes/agentSkills.d.ts +16 -0
  462. package/dist/server/routes/agentSkills.js +291 -0
  463. package/dist/server/routes/agents.d.ts +49 -0
  464. package/dist/server/routes/agents.js +1455 -0
  465. package/dist/server/routes/annotatedAttachments.js +46 -9
  466. package/dist/server/routes/assetAccess.d.ts +36 -0
  467. package/dist/server/routes/assetAccess.js +93 -0
  468. package/dist/server/routes/auth.d.ts +4 -3
  469. package/dist/server/routes/auth.js +236 -21
  470. package/dist/server/routes/authSupport.d.ts +3 -1
  471. package/dist/server/routes/authSupport.js +22 -8
  472. package/dist/server/routes/documentReviews.d.ts +2 -0
  473. package/dist/server/routes/documentReviews.js +155 -15
  474. package/dist/server/routes/documents.d.ts +1 -0
  475. package/dist/server/routes/documents.js +335 -141
  476. package/dist/server/routes/durableTaskHttpRouters.d.ts +165 -0
  477. package/dist/server/routes/durableTaskHttpRouters.js +89 -0
  478. package/dist/server/routes/localMcpHealth.d.ts +11 -0
  479. package/dist/server/routes/localMcpHealth.js +29 -0
  480. package/dist/server/routes/localService.d.ts +13 -0
  481. package/dist/server/routes/localService.js +444 -0
  482. package/dist/server/routes/localUpdate.d.ts +11 -0
  483. package/dist/server/routes/localUpdate.js +154 -0
  484. package/dist/server/routes/primitives.d.ts +27 -0
  485. package/dist/server/routes/primitives.js +18 -0
  486. package/dist/server/routes/resources.d.ts +1 -10
  487. package/dist/server/routes/resources.js +1 -153
  488. package/dist/server/routes/shared.d.ts +31 -2
  489. package/dist/server/routes/shared.js +394 -0
  490. package/dist/server/routes/sync.d.ts +2 -0
  491. package/dist/server/routes/sync.js +184 -272
  492. package/dist/server/routes/syncAuxRoutes.d.ts +3 -1
  493. package/dist/server/routes/syncAuxRoutes.js +9 -4
  494. package/dist/server/routes/syncCoordinatorLocalRoutes.d.ts +6 -0
  495. package/dist/server/routes/syncCoordinatorLocalRoutes.js +867 -0
  496. package/dist/server/routes/syncPullApplyRoutes.d.ts +29 -1
  497. package/dist/server/routes/syncPullApplyRoutes.js +520 -17
  498. package/dist/server/routes/syncPushRoutes.d.ts +33 -4
  499. package/dist/server/routes/syncPushRoutes.js +251 -62
  500. package/dist/server/routes/syncRouteTypes.d.ts +1 -1
  501. package/dist/server/routes/syncSnapshotRoutes.d.ts +15 -7
  502. package/dist/server/routes/syncSnapshotRoutes.js +95 -17
  503. package/dist/server/routes/syncV3DiagnosticsRoutes.d.ts +14 -0
  504. package/dist/server/routes/syncV3DiagnosticsRoutes.js +72 -0
  505. package/dist/server/routes/syncV3FeedRoutes.d.ts +20 -0
  506. package/dist/server/routes/syncV3FeedRoutes.js +462 -0
  507. package/dist/server/routes/syncV3LocalCaptureRoutes.d.ts +37 -0
  508. package/dist/server/routes/syncV3LocalCaptureRoutes.js +897 -0
  509. package/dist/server/routes/syncV3LocalDispatchRoutes.d.ts +17 -0
  510. package/dist/server/routes/syncV3LocalDispatchRoutes.js +280 -0
  511. package/dist/server/routes/syncV3LocalFeedApplyRoutes.d.ts +17 -0
  512. package/dist/server/routes/syncV3LocalFeedApplyRoutes.js +493 -0
  513. package/dist/server/routes/syncV3LocalOwnershipRoutes.d.ts +10 -0
  514. package/dist/server/routes/syncV3LocalOwnershipRoutes.js +51 -0
  515. package/dist/server/routes/syncV3LocalRecoveryRoutes.d.ts +12 -0
  516. package/dist/server/routes/syncV3LocalRecoveryRoutes.js +78 -0
  517. package/dist/server/routes/syncV3OperationRoutes.d.ts +35 -0
  518. package/dist/server/routes/syncV3OperationRoutes.js +1136 -0
  519. package/dist/server/routes/tasks.d.ts +0 -2
  520. package/dist/server/routes/tasks.js +932 -195
  521. package/dist/server/routes/workflows.d.ts +26 -0
  522. package/dist/server/routes/workflows.js +500 -0
  523. package/dist/server/routes.d.ts +1 -6
  524. package/dist/server/routes.js +148 -339
  525. package/dist/server/smtpTransport.d.ts +11 -3
  526. package/dist/server/smtpTransport.js +9 -2
  527. package/dist/server/start.js +42 -10
  528. package/dist/service/localServiceCli.d.ts +33 -0
  529. package/dist/service/localServiceCli.js +365 -0
  530. package/dist/service/localServiceClientLifecycle.d.ts +25 -0
  531. package/dist/service/localServiceClientLifecycle.js +128 -0
  532. package/dist/service/localServiceOpen.d.ts +17 -0
  533. package/dist/service/localServiceOpen.js +27 -0
  534. package/dist/services/agentRoleResolver.d.ts +4 -0
  535. package/dist/services/agentRoleResolver.js +7 -0
  536. package/dist/services/aiProfileAvatarGenerationService.d.ts +41 -0
  537. package/dist/services/aiProfileAvatarGenerationService.js +158 -0
  538. package/dist/services/avatarImageProvider.d.ts +33 -0
  539. package/dist/services/avatarImageProvider.js +140 -0
  540. package/dist/services/bedrockAnthropicMessagesModelGateway.d.ts +24 -0
  541. package/dist/services/bedrockAnthropicMessagesModelGateway.js +95 -0
  542. package/dist/services/bedrockMantleModelGateway.d.ts +43 -0
  543. package/dist/services/bedrockMantleModelGateway.js +81 -0
  544. package/dist/services/bedrockModelGateway.d.ts +26 -0
  545. package/dist/services/bedrockModelGateway.js +94 -0
  546. package/dist/services/modelGateway.d.ts +82 -0
  547. package/dist/services/modelGateway.js +61 -0
  548. package/dist/services/taskforceAgentAvatarImageProvider.d.ts +8 -0
  549. package/dist/services/taskforceAgentAvatarImageProvider.js +24 -0
  550. package/dist/services/taskforceAgentMcpBridge.d.ts +77 -0
  551. package/dist/services/taskforceAgentMcpBridge.js +527 -0
  552. package/dist/shared/agentRoleDefinition.d.ts +34 -0
  553. package/dist/shared/agentRoleDefinition.js +207 -0
  554. package/dist/shared/aiProfileAvatarEligibility.d.ts +10 -0
  555. package/dist/shared/aiProfileAvatarEligibility.js +27 -0
  556. package/dist/shared/aiProfileColors.d.ts +7 -0
  557. package/dist/shared/aiProfileColors.js +33 -0
  558. package/dist/shared/colorPalette.d.ts +3 -0
  559. package/dist/shared/colorPalette.js +20 -0
  560. package/dist/shared/commentProvenance.d.ts +4 -0
  561. package/dist/shared/commentProvenance.js +6 -0
  562. package/dist/shared/deletedTaskRetention.d.ts +2 -0
  563. package/dist/shared/deletedTaskRetention.js +7 -0
  564. package/dist/shared/passwordPolicy.d.ts +2 -1
  565. package/dist/shared/passwordPolicy.js +9 -0
  566. package/dist/shared/taskDeepLinks.d.ts +28 -0
  567. package/dist/shared/taskDeepLinks.js +48 -0
  568. package/dist/shared/taskRestoreDestination.d.ts +2 -0
  569. package/dist/shared/taskRestoreDestination.js +5 -0
  570. package/dist/shared/taskforceAgentDefinition.d.ts +88 -0
  571. package/dist/shared/taskforceAgentDefinition.js +434 -0
  572. package/dist/shared/taskforceAgentExecutionSnapshot.d.ts +50 -0
  573. package/dist/shared/taskforceAgentExecutionSnapshot.js +68 -0
  574. package/dist/shared/taskforceAgentModels.d.ts +56 -0
  575. package/dist/shared/taskforceAgentModels.js +314 -0
  576. package/dist/shared/taskforceAgentRunContext.d.ts +23 -0
  577. package/dist/shared/taskforceAgentRunContext.js +21 -0
  578. package/dist/shared/taskforceAgentRuntimeResolution.d.ts +31 -0
  579. package/dist/shared/taskforceAgentRuntimeResolution.js +72 -0
  580. package/dist/shared/taskforceAgentSkill.d.ts +33 -0
  581. package/dist/shared/taskforceAgentSkill.js +149 -0
  582. package/dist/storage/agentRoleStore.d.ts +91 -0
  583. package/dist/storage/agentRoleStore.js +385 -0
  584. package/dist/storage/databaseAdapter.d.ts +1 -0
  585. package/dist/storage/databaseAdapter.js +7 -1
  586. package/dist/storage/documentIntegrity.d.ts +12 -3
  587. package/dist/storage/documentIntegrity.js +105 -27
  588. package/dist/storage/objectStorageClient.d.ts +10 -4
  589. package/dist/storage/objectStorageClient.js +73 -43
  590. package/dist/storage/postgresAdapter.d.ts +2 -1
  591. package/dist/storage/postgresAdapter.js +38 -6
  592. package/dist/storage/postgresWorker.js +65 -1
  593. package/dist/storage/sqliteAdapter.d.ts +1 -1
  594. package/dist/storage/sqliteAdapter.js +7 -1
  595. package/dist/storage/sqliteWalHealth.d.ts +71 -0
  596. package/dist/storage/sqliteWalHealth.js +176 -0
  597. package/dist/storage/taskDataPath.d.ts +1 -0
  598. package/dist/storage/taskDataPath.js +20 -0
  599. package/dist/storage/taskforceAgentConversationStore.d.ts +66 -0
  600. package/dist/storage/taskforceAgentConversationStore.js +264 -0
  601. package/dist/storage/taskforceAgentSkillStore.d.ts +93 -0
  602. package/dist/storage/taskforceAgentSkillStore.js +355 -0
  603. package/dist/storage/taskforceAgentStore.d.ts +105 -0
  604. package/dist/storage/taskforceAgentStore.js +549 -0
  605. package/dist/storage/workflowStore.d.ts +223 -0
  606. package/dist/storage/workflowStore.js +1032 -0
  607. package/dist/storage/workspaceAssetStore.d.ts +70 -0
  608. package/dist/storage/workspaceAssetStore.js +418 -25
  609. package/dist/sync/aiProfileAvatarSyncPaths.d.ts +14 -0
  610. package/dist/sync/aiProfileAvatarSyncPaths.js +56 -0
  611. package/dist/sync/cloudSyncApi.d.ts +329 -0
  612. package/dist/sync/cloudSyncApi.js +574 -1
  613. package/dist/sync/collaborationSyncPayload.d.ts +5 -1
  614. package/dist/sync/collaborationSyncPayload.js +213 -1
  615. package/dist/sync/collaborationSyncState.d.ts +23 -3
  616. package/dist/sync/collaborationSyncState.js +92 -3
  617. package/dist/sync/contentSyncPayload.d.ts +9 -0
  618. package/dist/sync/contentSyncPayload.js +29 -0
  619. package/dist/sync/contentSyncState.d.ts +79 -4
  620. package/dist/sync/contentSyncState.js +1113 -313
  621. package/dist/sync/coordinator/localSyncBrowserApplyPermitContext.d.ts +39 -0
  622. package/dist/sync/coordinator/localSyncBrowserApplyPermitContext.js +234 -0
  623. package/dist/sync/coordinator/localSyncBrowserAuthorityCapability.d.ts +7 -0
  624. package/dist/sync/coordinator/localSyncBrowserAuthorityCapability.js +10 -0
  625. package/dist/sync/coordinator/localSyncCommittedApplyPolicy.d.ts +7 -0
  626. package/dist/sync/coordinator/localSyncCommittedApplyPolicy.js +41 -0
  627. package/dist/sync/coordinator/localSyncCoordinatorBrowserClient.d.ts +178 -0
  628. package/dist/sync/coordinator/localSyncCoordinatorBrowserClient.js +131 -0
  629. package/dist/sync/coordinator/localSyncCoordinatorCommandLifecycle.d.ts +25 -0
  630. package/dist/sync/coordinator/localSyncCoordinatorCommandLifecycle.js +200 -0
  631. package/dist/sync/coordinator/localSyncCoordinatorHost.d.ts +84 -0
  632. package/dist/sync/coordinator/localSyncCoordinatorHost.js +435 -0
  633. package/dist/sync/coordinator/localSyncCoordinatorRouteServices.d.ts +33 -0
  634. package/dist/sync/coordinator/localSyncCoordinatorRouteServices.js +1 -0
  635. package/dist/sync/coordinator/localSyncCoordinatorStore.d.ts +122 -0
  636. package/dist/sync/coordinator/localSyncCoordinatorStore.js +1039 -0
  637. package/dist/sync/coordinator/localSyncCoordinatorTypes.d.ts +82 -0
  638. package/dist/sync/coordinator/localSyncCoordinatorTypes.js +9 -0
  639. package/dist/sync/coordinator/localSyncDispatchTracker.d.ts +15 -0
  640. package/dist/sync/coordinator/localSyncDispatchTracker.js +68 -0
  641. package/dist/sync/coordinator/localSyncExecutionPermitStore.d.ts +200 -0
  642. package/dist/sync/coordinator/localSyncExecutionPermitStore.js +1388 -0
  643. package/dist/sync/coordinator/localSyncExecutionPermitTypes.d.ts +52 -0
  644. package/dist/sync/coordinator/localSyncExecutionPermitTypes.js +8 -0
  645. package/dist/sync/coordinator/localSyncOwnershipDrainBarrier.d.ts +33 -0
  646. package/dist/sync/coordinator/localSyncOwnershipDrainBarrier.js +83 -0
  647. package/dist/sync/coordinator/localSyncPermitTransactionHooks.d.ts +9 -0
  648. package/dist/sync/coordinator/localSyncPermitTransactionHooks.js +27 -0
  649. package/dist/sync/coordinator/localSyncProcessLock.d.ts +12 -0
  650. package/dist/sync/coordinator/localSyncProcessLock.js +212 -0
  651. package/dist/sync/coordinator/localSyncV3DispatchRecoveryReconciler.d.ts +17 -0
  652. package/dist/sync/coordinator/localSyncV3DispatchRecoveryReconciler.js +82 -0
  653. package/dist/sync/coordinator/localWorkspaceSyncRunner.d.ts +134 -0
  654. package/dist/sync/coordinator/localWorkspaceSyncRunner.js +981 -0
  655. package/dist/sync/coordinator/localWorkspaceSyncRunnerState.d.ts +189 -0
  656. package/dist/sync/coordinator/localWorkspaceSyncRunnerState.js +961 -0
  657. package/dist/sync/coordinator/workspaceSyncCloudCredentialValidator.d.ts +19 -0
  658. package/dist/sync/coordinator/workspaceSyncCloudCredentialValidator.js +83 -0
  659. package/dist/sync/coordinator/workspaceSyncCredentialBroker.d.ts +117 -0
  660. package/dist/sync/coordinator/workspaceSyncCredentialBroker.js +323 -0
  661. package/dist/sync/coordinator/workspaceSyncLocalAccessBootstrap.d.ts +11 -0
  662. package/dist/sync/coordinator/workspaceSyncLocalAccessBootstrap.js +51 -0
  663. package/dist/sync/coordinator/workspaceSyncTransportGateway.d.ts +139 -0
  664. package/dist/sync/coordinator/workspaceSyncTransportGateway.js +738 -0
  665. package/dist/sync/engine/localWorkspaceContentManifestService.d.ts +21 -0
  666. package/dist/sync/engine/localWorkspaceContentManifestService.js +44 -0
  667. package/dist/sync/engine/workspaceSyncAtomicLocalPublisher.d.ts +36 -0
  668. package/dist/sync/engine/workspaceSyncAtomicLocalPublisher.js +203 -0
  669. package/dist/sync/engine/workspaceSyncContentLifecycleAdapter.d.ts +21 -0
  670. package/dist/sync/engine/workspaceSyncContentLifecycleAdapter.js +13 -0
  671. package/dist/sync/engine/workspaceSyncContentPullObligationStore.d.ts +65 -0
  672. package/dist/sync/engine/workspaceSyncContentPullObligationStore.js +160 -0
  673. package/dist/sync/engine/workspaceSyncContentVersionStore.d.ts +216 -0
  674. package/dist/sync/engine/workspaceSyncContentVersionStore.js +1068 -0
  675. package/dist/sync/engine/workspaceSyncEngineBrowserGatewayRemoteServices.d.ts +28 -0
  676. package/dist/sync/engine/workspaceSyncEngineBrowserGatewayRemoteServices.js +543 -0
  677. package/dist/sync/engine/workspaceSyncEngineContracts.d.ts +78 -0
  678. package/dist/sync/engine/workspaceSyncEngineContracts.js +1 -0
  679. package/dist/sync/engine/workspaceSyncEngineControlPlane.d.ts +37 -0
  680. package/dist/sync/engine/workspaceSyncEngineControlPlane.js +79 -0
  681. package/dist/sync/engine/workspaceSyncEngineIdentity.d.ts +1 -0
  682. package/dist/sync/engine/workspaceSyncEngineIdentity.js +4 -0
  683. package/dist/sync/engine/workspaceSyncEngineLifecyclePolicy.d.ts +68 -0
  684. package/dist/sync/engine/workspaceSyncEngineLifecyclePolicy.js +180 -0
  685. package/dist/sync/engine/workspaceSyncEngineLocalApply.d.ts +72 -0
  686. package/dist/sync/engine/workspaceSyncEngineLocalApply.js +132 -0
  687. package/dist/sync/engine/workspaceSyncEngineLocalServices.d.ts +70 -0
  688. package/dist/sync/engine/workspaceSyncEngineLocalServices.js +25 -0
  689. package/dist/sync/engine/workspaceSyncEngineParity.d.ts +8 -0
  690. package/dist/sync/engine/workspaceSyncEngineParity.js +7 -0
  691. package/dist/sync/engine/workspaceSyncEnginePullPolicy.d.ts +32 -0
  692. package/dist/sync/engine/workspaceSyncEnginePullPolicy.js +27 -0
  693. package/dist/sync/engine/workspaceSyncEnginePushCompletion.d.ts +20 -0
  694. package/dist/sync/engine/workspaceSyncEnginePushCompletion.js +87 -0
  695. package/dist/sync/engine/workspaceSyncEngineRecovery.d.ts +56 -0
  696. package/dist/sync/engine/workspaceSyncEngineRecovery.js +288 -0
  697. package/dist/sync/engine/workspaceSyncEngineRemoteServices.d.ts +104 -0
  698. package/dist/sync/engine/workspaceSyncEngineRemoteServices.js +21 -0
  699. package/dist/sync/engine/workspaceSyncEngineRuntime.d.ts +61 -0
  700. package/dist/sync/engine/workspaceSyncEngineRuntime.js +59 -0
  701. package/dist/sync/engine/workspaceSyncEngineServerApplyBoundary.d.ts +28 -0
  702. package/dist/sync/engine/workspaceSyncEngineServerApplyBoundary.js +86 -0
  703. package/dist/sync/engine/workspaceSyncEngineServerLocalServices.d.ts +73 -0
  704. package/dist/sync/engine/workspaceSyncEngineServerLocalServices.js +452 -0
  705. package/dist/sync/engine/workspaceSyncEngineServerRemoteServices.d.ts +23 -0
  706. package/dist/sync/engine/workspaceSyncEngineServerRemoteServices.js +451 -0
  707. package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.d.ts +125 -0
  708. package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.js +1124 -0
  709. package/dist/sync/engine/workspaceSyncEngineServerSnapshotReader.d.ts +63 -0
  710. package/dist/sync/engine/workspaceSyncEngineServerSnapshotReader.js +276 -0
  711. package/dist/sync/engine/workspaceSyncEngineTransferCompletion.d.ts +20 -0
  712. package/dist/sync/engine/workspaceSyncEngineTransferCompletion.js +37 -0
  713. package/dist/sync/engine/workspaceSyncEngineTransferTypes.d.ts +7 -0
  714. package/dist/sync/engine/workspaceSyncEngineTransferTypes.js +1 -0
  715. package/dist/sync/engine/workspaceSyncEngineTransfers.d.ts +240 -0
  716. package/dist/sync/engine/workspaceSyncEngineTransfers.js +1184 -0
  717. package/dist/sync/engine/workspaceSyncEngineV3LocalFeedApply.d.ts +39 -0
  718. package/dist/sync/engine/workspaceSyncEngineV3LocalFeedApply.js +39 -0
  719. package/dist/sync/engine/workspaceSyncImmutableContentGcRunner.d.ts +25 -0
  720. package/dist/sync/engine/workspaceSyncImmutableContentGcRunner.js +83 -0
  721. package/dist/sync/engine/workspaceSyncImmutableContentProvider.d.ts +71 -0
  722. package/dist/sync/engine/workspaceSyncImmutableContentProvider.js +209 -0
  723. package/dist/sync/engine/workspaceSyncImmutableContentStager.d.ts +32 -0
  724. package/dist/sync/engine/workspaceSyncImmutableContentStager.js +202 -0
  725. package/dist/sync/engine/workspaceSyncPublishedContentResolver.d.ts +43 -0
  726. package/dist/sync/engine/workspaceSyncPublishedContentResolver.js +142 -0
  727. package/dist/sync/engine/workspaceSyncServerContentRuntime.d.ts +26 -0
  728. package/dist/sync/engine/workspaceSyncServerContentRuntime.js +41 -0
  729. package/dist/sync/engine/workspaceSyncServerDataServices.d.ts +44 -0
  730. package/dist/sync/engine/workspaceSyncServerDataServices.js +143 -0
  731. package/dist/sync/engine/workspaceSyncTransferEvidence.d.ts +39 -0
  732. package/dist/sync/engine/workspaceSyncTransferEvidence.js +45 -0
  733. package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.d.ts +44 -0
  734. package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.js +990 -0
  735. package/dist/sync/engine/workspaceSyncV2PreparedContent.d.ts +82 -0
  736. package/dist/sync/engine/workspaceSyncV2PreparedContent.js +219 -0
  737. package/dist/sync/planningCanonicalFields.d.ts +41 -0
  738. package/dist/sync/planningCanonicalFields.js +211 -0
  739. package/dist/sync/planningSyncPayload.d.ts +5 -1
  740. package/dist/sync/planningSyncPayload.js +88 -4
  741. package/dist/sync/syncApplyHandlers.d.ts +98 -8
  742. package/dist/sync/syncApplyHandlers.js +816 -78
  743. package/dist/sync/syncResourceAdapters.d.ts +10 -0
  744. package/dist/sync/syncResourceAdapters.js +21 -1
  745. package/dist/sync/syncService.d.ts +57 -1
  746. package/dist/sync/syncService.js +1085 -138
  747. package/dist/sync/taskNestedContent.d.ts +2 -0
  748. package/dist/sync/taskNestedContent.js +8 -0
  749. package/dist/sync/taskSyncChangeKey.js +0 -1
  750. package/dist/sync/taskSyncPayload.d.ts +0 -1
  751. package/dist/sync/taskSyncPayload.js +14 -3
  752. package/dist/sync/v3/canonicalWorkspaceSyncJson.d.ts +2 -0
  753. package/dist/sync/v3/canonicalWorkspaceSyncJson.js +26 -0
  754. package/dist/sync/v3/combinedFeedCapability.d.ts +21 -0
  755. package/dist/sync/v3/combinedFeedCapability.js +80 -0
  756. package/dist/sync/v3/combinedFeedPrerequisites.d.ts +18 -0
  757. package/dist/sync/v3/combinedFeedPrerequisites.js +184 -0
  758. package/dist/sync/v3/durableInitiativeMutationRouter.d.ts +61 -0
  759. package/dist/sync/v3/durableInitiativeMutationRouter.js +287 -0
  760. package/dist/sync/v3/durableOperationReplay.d.ts +36 -0
  761. package/dist/sync/v3/durableOperationReplay.js +103 -0
  762. package/dist/sync/v3/durableTaskAttachmentLinksMutationRouter.d.ts +49 -0
  763. package/dist/sync/v3/durableTaskAttachmentLinksMutationRouter.js +198 -0
  764. package/dist/sync/v3/durableTaskChecklistMutationRouter.d.ts +47 -0
  765. package/dist/sync/v3/durableTaskChecklistMutationRouter.js +182 -0
  766. package/dist/sync/v3/durableTaskCommentMutationRouter.d.ts +47 -0
  767. package/dist/sync/v3/durableTaskCommentMutationRouter.js +191 -0
  768. package/dist/sync/v3/durableTaskHttpBulkMutationRouter.d.ts +60 -0
  769. package/dist/sync/v3/durableTaskHttpBulkMutationRouter.js +320 -0
  770. package/dist/sync/v3/durableTaskHttpRootMutationRouter.d.ts +40 -0
  771. package/dist/sync/v3/durableTaskHttpRootMutationRouter.js +518 -0
  772. package/dist/sync/v3/durableTaxonomyMutationRouter.d.ts +63 -0
  773. package/dist/sync/v3/durableTaxonomyMutationRouter.js +289 -0
  774. package/dist/sync/v3/durableWorkflowRuntimeMutationRouter.d.ts +77 -0
  775. package/dist/sync/v3/durableWorkflowRuntimeMutationRouter.js +361 -0
  776. package/dist/sync/v3/durableWorkstreamMutationRouter.d.ts +61 -0
  777. package/dist/sync/v3/durableWorkstreamMutationRouter.js +287 -0
  778. package/dist/sync/v3/durableWorkstreamTaskOrderMutationRouter.d.ts +42 -0
  779. package/dist/sync/v3/durableWorkstreamTaskOrderMutationRouter.js +122 -0
  780. package/dist/sync/v3/entityEventLegacyAdoptionContract.d.ts +6 -0
  781. package/dist/sync/v3/entityEventLegacyAdoptionContract.js +6 -0
  782. package/dist/sync/v3/entityEventLegacyAdoptionService.d.ts +62 -0
  783. package/dist/sync/v3/entityEventLegacyAdoptionService.js +180 -0
  784. package/dist/sync/v3/initiativeActivityAuthoritativeRevision.d.ts +11 -0
  785. package/dist/sync/v3/initiativeActivityAuthoritativeRevision.js +23 -0
  786. package/dist/sync/v3/initiativeActivityIdentity.d.ts +8 -0
  787. package/dist/sync/v3/initiativeActivityIdentity.js +14 -0
  788. package/dist/sync/v3/initiativeCoexistence.d.ts +26 -0
  789. package/dist/sync/v3/initiativeCoexistence.js +148 -0
  790. package/dist/sync/v3/initiativeFeedActivationCapability.d.ts +6 -0
  791. package/dist/sync/v3/initiativeFeedActivationCapability.js +16 -0
  792. package/dist/sync/v3/initiativeMutationPayload.d.ts +26 -0
  793. package/dist/sync/v3/initiativeMutationPayload.js +144 -0
  794. package/dist/sync/v3/initiativeMutationService.d.ts +62 -0
  795. package/dist/sync/v3/initiativeMutationService.js +206 -0
  796. package/dist/sync/v3/localEntityEventLegacyAdoption.d.ts +31 -0
  797. package/dist/sync/v3/localEntityEventLegacyAdoption.js +607 -0
  798. package/dist/sync/v3/localInitiativeOutboxHandler.d.ts +8 -0
  799. package/dist/sync/v3/localInitiativeOutboxHandler.js +88 -0
  800. package/dist/sync/v3/localInitiativeOutboxService.d.ts +50 -0
  801. package/dist/sync/v3/localInitiativeOutboxService.js +495 -0
  802. package/dist/sync/v3/localOperationIdentityStore.d.ts +81 -0
  803. package/dist/sync/v3/localOperationIdentityStore.js +388 -0
  804. package/dist/sync/v3/localOutboxDispatchCapability.d.ts +7 -0
  805. package/dist/sync/v3/localOutboxDispatchCapability.js +13 -0
  806. package/dist/sync/v3/localOutboxDispatchRuntime.d.ts +16 -0
  807. package/dist/sync/v3/localOutboxDispatchRuntime.js +269 -0
  808. package/dist/sync/v3/localOutboxDispatcher.d.ts +53 -0
  809. package/dist/sync/v3/localOutboxDispatcher.js +362 -0
  810. package/dist/sync/v3/localOutboxDrainClient.d.ts +50 -0
  811. package/dist/sync/v3/localOutboxDrainClient.js +250 -0
  812. package/dist/sync/v3/localOutboxOperationHandler.d.ts +31 -0
  813. package/dist/sync/v3/localOutboxOperationHandler.js +10 -0
  814. package/dist/sync/v3/localOutboxRecoveryClient.d.ts +14 -0
  815. package/dist/sync/v3/localOutboxRecoveryClient.js +45 -0
  816. package/dist/sync/v3/localOutboxRecoveryPreparationService.d.ts +12 -0
  817. package/dist/sync/v3/localOutboxRecoveryPreparationService.js +151 -0
  818. package/dist/sync/v3/localSyncIdentityStore.d.ts +9 -0
  819. package/dist/sync/v3/localSyncIdentityStore.js +43 -0
  820. package/dist/sync/v3/localTaskAttachmentLinksOutboxHandler.d.ts +10 -0
  821. package/dist/sync/v3/localTaskAttachmentLinksOutboxHandler.js +70 -0
  822. package/dist/sync/v3/localTaskAttachmentLinksOutboxService.d.ts +45 -0
  823. package/dist/sync/v3/localTaskAttachmentLinksOutboxService.js +291 -0
  824. package/dist/sync/v3/localTaskChecklistOutboxHandler.d.ts +10 -0
  825. package/dist/sync/v3/localTaskChecklistOutboxHandler.js +54 -0
  826. package/dist/sync/v3/localTaskChecklistOutboxService.d.ts +47 -0
  827. package/dist/sync/v3/localTaskChecklistOutboxService.js +221 -0
  828. package/dist/sync/v3/localTaskCommentOutboxHandler.d.ts +10 -0
  829. package/dist/sync/v3/localTaskCommentOutboxHandler.js +94 -0
  830. package/dist/sync/v3/localTaskCommentOutboxService.d.ts +75 -0
  831. package/dist/sync/v3/localTaskCommentOutboxService.js +391 -0
  832. package/dist/sync/v3/localTaskCreateClient.d.ts +27 -0
  833. package/dist/sync/v3/localTaskCreateClient.js +209 -0
  834. package/dist/sync/v3/localTaskCreateOutboxHandler.d.ts +8 -0
  835. package/dist/sync/v3/localTaskCreateOutboxHandler.js +147 -0
  836. package/dist/sync/v3/localTaskCreateOutboxService.d.ts +77 -0
  837. package/dist/sync/v3/localTaskCreateOutboxService.js +397 -0
  838. package/dist/sync/v3/localTaskDeleteClient.d.ts +10 -0
  839. package/dist/sync/v3/localTaskDeleteClient.js +23 -0
  840. package/dist/sync/v3/localTaskDeleteOutboxHandler.d.ts +8 -0
  841. package/dist/sync/v3/localTaskDeleteOutboxHandler.js +54 -0
  842. package/dist/sync/v3/localTaskDeleteOutboxService.d.ts +38 -0
  843. package/dist/sync/v3/localTaskDeleteOutboxService.js +235 -0
  844. package/dist/sync/v3/localTaskLegacyRootAdoption.d.ts +28 -0
  845. package/dist/sync/v3/localTaskLegacyRootAdoption.js +219 -0
  846. package/dist/sync/v3/localTaskLifecycleClient.d.ts +49 -0
  847. package/dist/sync/v3/localTaskLifecycleClient.js +57 -0
  848. package/dist/sync/v3/localTaskLifecycleOutboxHandler.d.ts +8 -0
  849. package/dist/sync/v3/localTaskLifecycleOutboxHandler.js +94 -0
  850. package/dist/sync/v3/localTaskLifecycleOutboxService.d.ts +60 -0
  851. package/dist/sync/v3/localTaskLifecycleOutboxService.js +304 -0
  852. package/dist/sync/v3/localTaskMetadataClient.d.ts +13 -0
  853. package/dist/sync/v3/localTaskMetadataClient.js +30 -0
  854. package/dist/sync/v3/localTaskMetadataOutboxHandler.d.ts +8 -0
  855. package/dist/sync/v3/localTaskMetadataOutboxHandler.js +70 -0
  856. package/dist/sync/v3/localTaskMetadataOutboxService.d.ts +48 -0
  857. package/dist/sync/v3/localTaskMetadataOutboxService.js +229 -0
  858. package/dist/sync/v3/localTaskOperationClient.d.ts +72 -0
  859. package/dist/sync/v3/localTaskOperationClient.js +195 -0
  860. package/dist/sync/v3/localTaskRelationshipOutboxHandler.d.ts +8 -0
  861. package/dist/sync/v3/localTaskRelationshipOutboxHandler.js +114 -0
  862. package/dist/sync/v3/localTaskRelationshipOutboxService.d.ts +45 -0
  863. package/dist/sync/v3/localTaskRelationshipOutboxService.js +192 -0
  864. package/dist/sync/v3/localTaskRestoreClient.d.ts +13 -0
  865. package/dist/sync/v3/localTaskRestoreClient.js +32 -0
  866. package/dist/sync/v3/localTaskRestoreOutboxHandler.d.ts +8 -0
  867. package/dist/sync/v3/localTaskRestoreOutboxHandler.js +41 -0
  868. package/dist/sync/v3/localTaskRestoreOutboxService.d.ts +56 -0
  869. package/dist/sync/v3/localTaskRestoreOutboxService.js +323 -0
  870. package/dist/sync/v3/localTaskStatusClient.d.ts +17 -0
  871. package/dist/sync/v3/localTaskStatusClient.js +35 -0
  872. package/dist/sync/v3/localTaskStatusOutboxHandler.d.ts +8 -0
  873. package/dist/sync/v3/localTaskStatusOutboxHandler.js +75 -0
  874. package/dist/sync/v3/localTaskStatusOutboxService.d.ts +53 -0
  875. package/dist/sync/v3/localTaskStatusOutboxService.js +422 -0
  876. package/dist/sync/v3/localTaxonomyCompositeOutboxService.d.ts +34 -0
  877. package/dist/sync/v3/localTaxonomyCompositeOutboxService.js +290 -0
  878. package/dist/sync/v3/localTaxonomyOutboxHandler.d.ts +9 -0
  879. package/dist/sync/v3/localTaxonomyOutboxHandler.js +106 -0
  880. package/dist/sync/v3/localTaxonomyOutboxService.d.ts +30 -0
  881. package/dist/sync/v3/localTaxonomyOutboxService.js +181 -0
  882. package/dist/sync/v3/localWorkflowRuntimeOutboxHandler.d.ts +8 -0
  883. package/dist/sync/v3/localWorkflowRuntimeOutboxHandler.js +113 -0
  884. package/dist/sync/v3/localWorkflowRuntimeOutboxService.d.ts +37 -0
  885. package/dist/sync/v3/localWorkflowRuntimeOutboxService.js +330 -0
  886. package/dist/sync/v3/localWorkspaceSyncServerOutboxDispatcher.d.ts +63 -0
  887. package/dist/sync/v3/localWorkspaceSyncServerOutboxDispatcher.js +264 -0
  888. package/dist/sync/v3/localWorkstreamOutboxHandler.d.ts +8 -0
  889. package/dist/sync/v3/localWorkstreamOutboxHandler.js +102 -0
  890. package/dist/sync/v3/localWorkstreamOutboxService.d.ts +52 -0
  891. package/dist/sync/v3/localWorkstreamOutboxService.js +579 -0
  892. package/dist/sync/v3/localWorkstreamTaskOrderOutboxHandler.d.ts +10 -0
  893. package/dist/sync/v3/localWorkstreamTaskOrderOutboxHandler.js +57 -0
  894. package/dist/sync/v3/localWorkstreamTaskOrderOutboxService.d.ts +30 -0
  895. package/dist/sync/v3/localWorkstreamTaskOrderOutboxService.js +128 -0
  896. package/dist/sync/v3/planningActivation.d.ts +13 -0
  897. package/dist/sync/v3/planningActivation.js +33 -0
  898. package/dist/sync/v3/planningAttachmentActivityValidation.d.ts +9 -0
  899. package/dist/sync/v3/planningAttachmentActivityValidation.js +87 -0
  900. package/dist/sync/v3/programScaffoldService.d.ts +143 -0
  901. package/dist/sync/v3/programScaffoldService.js +478 -0
  902. package/dist/sync/v3/syncDurabilityStore.d.ts +773 -0
  903. package/dist/sync/v3/syncDurabilityStore.js +4635 -0
  904. package/dist/sync/v3/taskActivityAuthoritativeRevision.d.ts +16 -0
  905. package/dist/sync/v3/taskActivityAuthoritativeRevision.js +67 -0
  906. package/dist/sync/v3/taskActivityJournal.d.ts +20 -0
  907. package/dist/sync/v3/taskActivityJournal.js +195 -0
  908. package/dist/sync/v3/taskAttachmentLinksActivityIdentity.d.ts +6 -0
  909. package/dist/sync/v3/taskAttachmentLinksActivityIdentity.js +14 -0
  910. package/dist/sync/v3/taskAttachmentLinksMutationService.d.ts +111 -0
  911. package/dist/sync/v3/taskAttachmentLinksMutationService.js +202 -0
  912. package/dist/sync/v3/taskChecklistActivityIdentity.d.ts +6 -0
  913. package/dist/sync/v3/taskChecklistActivityIdentity.js +14 -0
  914. package/dist/sync/v3/taskChecklistMutationService.d.ts +92 -0
  915. package/dist/sync/v3/taskChecklistMutationService.js +156 -0
  916. package/dist/sync/v3/taskCommentActivityIdentity.d.ts +7 -0
  917. package/dist/sync/v3/taskCommentActivityIdentity.js +15 -0
  918. package/dist/sync/v3/taskCommentMutationService.d.ts +150 -0
  919. package/dist/sync/v3/taskCommentMutationService.js +392 -0
  920. package/dist/sync/v3/taskCommentReconcileProvenance.d.ts +58 -0
  921. package/dist/sync/v3/taskCommentReconcileProvenance.js +170 -0
  922. package/dist/sync/v3/taskCreateActivation.d.ts +19 -0
  923. package/dist/sync/v3/taskCreateActivation.js +84 -0
  924. package/dist/sync/v3/taskCreateActivityIdentity.d.ts +7 -0
  925. package/dist/sync/v3/taskCreateActivityIdentity.js +18 -0
  926. package/dist/sync/v3/taskCreateMutationService.d.ts +103 -0
  927. package/dist/sync/v3/taskCreateMutationService.js +283 -0
  928. package/dist/sync/v3/taskDeleteActivation.d.ts +7 -0
  929. package/dist/sync/v3/taskDeleteActivation.js +14 -0
  930. package/dist/sync/v3/taskDeleteMutationService.d.ts +35 -0
  931. package/dist/sync/v3/taskDeleteMutationService.js +133 -0
  932. package/dist/sync/v3/taskLegacyRootAdoptionService.d.ts +78 -0
  933. package/dist/sync/v3/taskLegacyRootAdoptionService.js +175 -0
  934. package/dist/sync/v3/taskLifecycleActivityIdentity.d.ts +9 -0
  935. package/dist/sync/v3/taskLifecycleActivityIdentity.js +18 -0
  936. package/dist/sync/v3/taskLifecycleMutationPayload.d.ts +5 -0
  937. package/dist/sync/v3/taskLifecycleMutationPayload.js +28 -0
  938. package/dist/sync/v3/taskLifecycleMutationService.d.ts +66 -0
  939. package/dist/sync/v3/taskLifecycleMutationService.js +92 -0
  940. package/dist/sync/v3/taskMetadataActivation.d.ts +12 -0
  941. package/dist/sync/v3/taskMetadataActivation.js +38 -0
  942. package/dist/sync/v3/taskMetadataActivityIdentity.d.ts +7 -0
  943. package/dist/sync/v3/taskMetadataActivityIdentity.js +18 -0
  944. package/dist/sync/v3/taskMetadataCoexistence.d.ts +37 -0
  945. package/dist/sync/v3/taskMetadataCoexistence.js +134 -0
  946. package/dist/sync/v3/taskMetadataMutationService.d.ts +71 -0
  947. package/dist/sync/v3/taskMetadataMutationService.js +199 -0
  948. package/dist/sync/v3/taskRelationshipLegacyAdoptionService.d.ts +48 -0
  949. package/dist/sync/v3/taskRelationshipLegacyAdoptionService.js +164 -0
  950. package/dist/sync/v3/taskRelationshipMutationService.d.ts +50 -0
  951. package/dist/sync/v3/taskRelationshipMutationService.js +148 -0
  952. package/dist/sync/v3/taskRestoreMutationService.d.ts +90 -0
  953. package/dist/sync/v3/taskRestoreMutationService.js +179 -0
  954. package/dist/sync/v3/taskStatusActivation.d.ts +7 -0
  955. package/dist/sync/v3/taskStatusActivation.js +15 -0
  956. package/dist/sync/v3/taskStatusMutationService.d.ts +76 -0
  957. package/dist/sync/v3/taskStatusMutationService.js +308 -0
  958. package/dist/sync/v3/taskWorkflowMutationPayload.d.ts +4 -0
  959. package/dist/sync/v3/taskWorkflowMutationPayload.js +22 -0
  960. package/dist/sync/v3/taskWorkflowMutationService.d.ts +64 -0
  961. package/dist/sync/v3/taskWorkflowMutationService.js +102 -0
  962. package/dist/sync/v3/taxonomyCoexistence.d.ts +10 -0
  963. package/dist/sync/v3/taxonomyCoexistence.js +19 -0
  964. package/dist/sync/v3/taxonomyCompositeMutationService.d.ts +110 -0
  965. package/dist/sync/v3/taxonomyCompositeMutationService.js +304 -0
  966. package/dist/sync/v3/taxonomyMutationService.d.ts +57 -0
  967. package/dist/sync/v3/taxonomyMutationService.js +106 -0
  968. package/dist/sync/v3/taxonomyStateMutation.d.ts +22 -0
  969. package/dist/sync/v3/taxonomyStateMutation.js +49 -0
  970. package/dist/sync/v3/taxonomySyncPayload.d.ts +9 -0
  971. package/dist/sync/v3/taxonomySyncPayload.js +199 -0
  972. package/dist/sync/v3/workflowAssignmentSync.d.ts +22 -0
  973. package/dist/sync/v3/workflowAssignmentSync.js +213 -0
  974. package/dist/sync/v3/workflowRuntimeMutationService.d.ts +89 -0
  975. package/dist/sync/v3/workflowRuntimeMutationService.js +359 -0
  976. package/dist/sync/v3/workflowRuntimeOperationIdentity.d.ts +13 -0
  977. package/dist/sync/v3/workflowRuntimeOperationIdentity.js +35 -0
  978. package/dist/sync/v3/workflowRuntimeSync.d.ts +141 -0
  979. package/dist/sync/v3/workflowRuntimeSync.js +485 -0
  980. package/dist/sync/v3/workspaceSyncJournalReader.d.ts +43 -0
  981. package/dist/sync/v3/workspaceSyncJournalReader.js +45 -0
  982. package/dist/sync/v3/workspaceSyncLocalOwnershipSnapshot.d.ts +28 -0
  983. package/dist/sync/v3/workspaceSyncLocalOwnershipSnapshot.js +81 -0
  984. package/dist/sync/v3/workspaceSyncPayloadFingerprint.d.ts +1 -0
  985. package/dist/sync/v3/workspaceSyncPayloadFingerprint.js +5 -0
  986. package/dist/sync/v3/workspaceSyncV2ProjectionExclusions.d.ts +16 -0
  987. package/dist/sync/v3/workspaceSyncV2ProjectionExclusions.js +161 -0
  988. package/dist/sync/v3/workspaceSyncV3AttachmentApplyObligationStore.d.ts +83 -0
  989. package/dist/sync/v3/workspaceSyncV3AttachmentApplyObligationStore.js +161 -0
  990. package/dist/sync/v3/workspaceSyncV3AttachmentAssetHydration.d.ts +16 -0
  991. package/dist/sync/v3/workspaceSyncV3AttachmentAssetHydration.js +90 -0
  992. package/dist/sync/v3/workspaceSyncV3CloudOperationHandler.d.ts +65 -0
  993. package/dist/sync/v3/workspaceSyncV3CloudOperationHandler.js +356 -0
  994. package/dist/sync/v3/workspaceSyncV3CombinedCoverage.d.ts +51 -0
  995. package/dist/sync/v3/workspaceSyncV3CombinedCoverage.js +171 -0
  996. package/dist/sync/v3/workspaceSyncV3CombinedFeedOrchestrator.d.ts +43 -0
  997. package/dist/sync/v3/workspaceSyncV3CombinedFeedOrchestrator.js +535 -0
  998. package/dist/sync/v3/workspaceSyncV3CombinedLocalApply.d.ts +50 -0
  999. package/dist/sync/v3/workspaceSyncV3CombinedLocalApply.js +1149 -0
  1000. package/dist/sync/v3/workspaceSyncV3CombinedProjectionState.d.ts +96 -0
  1001. package/dist/sync/v3/workspaceSyncV3CombinedProjectionState.js +672 -0
  1002. package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.d.ts +42 -0
  1003. package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.js +598 -0
  1004. package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.d.ts +65 -0
  1005. package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.js +505 -0
  1006. package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.d.ts +78 -0
  1007. package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.js +511 -0
  1008. package/dist/sync/v3/workspaceSyncV3CombinedWireContract.d.ts +45 -0
  1009. package/dist/sync/v3/workspaceSyncV3CombinedWireContract.js +125 -0
  1010. package/dist/sync/v3/workspaceSyncV3CoverageRegistry.d.ts +13 -0
  1011. package/dist/sync/v3/workspaceSyncV3CoverageRegistry.js +34 -0
  1012. package/dist/sync/v3/workspaceSyncV3CursorEncoding.d.ts +1 -0
  1013. package/dist/sync/v3/workspaceSyncV3CursorEncoding.js +6 -0
  1014. package/dist/sync/v3/workspaceSyncV3DomainAdmission.d.ts +43 -0
  1015. package/dist/sync/v3/workspaceSyncV3DomainAdmission.js +118 -0
  1016. package/dist/sync/v3/workspaceSyncV3Feed.d.ts +95 -0
  1017. package/dist/sync/v3/workspaceSyncV3Feed.js +243 -0
  1018. package/dist/sync/v3/workspaceSyncV3FeedApply.d.ts +13 -0
  1019. package/dist/sync/v3/workspaceSyncV3FeedApply.js +67 -0
  1020. package/dist/sync/v3/workspaceSyncV3FeedClientContract.d.ts +3 -0
  1021. package/dist/sync/v3/workspaceSyncV3FeedClientContract.js +46 -0
  1022. package/dist/sync/v3/workspaceSyncV3FeedCursorKeys.d.ts +10 -0
  1023. package/dist/sync/v3/workspaceSyncV3FeedCursorKeys.js +58 -0
  1024. package/dist/sync/v3/workspaceSyncV3FeedOrchestrator.d.ts +31 -0
  1025. package/dist/sync/v3/workspaceSyncV3FeedOrchestrator.js +228 -0
  1026. package/dist/sync/v3/workspaceSyncV3FeedProfile.d.ts +32 -0
  1027. package/dist/sync/v3/workspaceSyncV3FeedProfile.js +21 -0
  1028. package/dist/sync/v3/workspaceSyncV3InitiativeLocalApply.d.ts +36 -0
  1029. package/dist/sync/v3/workspaceSyncV3InitiativeLocalApply.js +163 -0
  1030. package/dist/sync/v3/workspaceSyncV3InitiativeRepair.d.ts +33 -0
  1031. package/dist/sync/v3/workspaceSyncV3InitiativeRepair.js +118 -0
  1032. package/dist/sync/v3/workspaceSyncV3LegacyBoundaryAttestation.d.ts +10 -0
  1033. package/dist/sync/v3/workspaceSyncV3LegacyBoundaryAttestation.js +45 -0
  1034. package/dist/sync/v3/workspaceSyncV3LocalOutboxStatus.d.ts +27 -0
  1035. package/dist/sync/v3/workspaceSyncV3LocalOutboxStatus.js +83 -0
  1036. package/dist/sync/v3/workspaceSyncV3NestedCoverage.d.ts +10 -0
  1037. package/dist/sync/v3/workspaceSyncV3NestedCoverage.js +40 -0
  1038. package/dist/sync/v3/workspaceSyncV3NestedTaskApply.d.ts +83 -0
  1039. package/dist/sync/v3/workspaceSyncV3NestedTaskApply.js +325 -0
  1040. package/dist/sync/v3/workspaceSyncV3NestedTaskCodecs.d.ts +59 -0
  1041. package/dist/sync/v3/workspaceSyncV3NestedTaskCodecs.js +302 -0
  1042. package/dist/sync/v3/workspaceSyncV3NestedTaskProjection.d.ts +47 -0
  1043. package/dist/sync/v3/workspaceSyncV3NestedTaskProjection.js +329 -0
  1044. package/dist/sync/v3/workspaceSyncV3NestedTaskRepairSnapshot.d.ts +19 -0
  1045. package/dist/sync/v3/workspaceSyncV3NestedTaskRepairSnapshot.js +41 -0
  1046. package/dist/sync/v3/workspaceSyncV3NestedWireContract.d.ts +6 -0
  1047. package/dist/sync/v3/workspaceSyncV3NestedWireContract.js +16 -0
  1048. package/dist/sync/v3/workspaceSyncV3OperationProjection.d.ts +8 -0
  1049. package/dist/sync/v3/workspaceSyncV3OperationProjection.js +52 -0
  1050. package/dist/sync/v3/workspaceSyncV3OperationProtocol.d.ts +229 -0
  1051. package/dist/sync/v3/workspaceSyncV3OperationProtocol.js +1 -0
  1052. package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.d.ts +165 -0
  1053. package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.js +414 -0
  1054. package/dist/sync/v3/workspaceSyncV3OriginActor.d.ts +36 -0
  1055. package/dist/sync/v3/workspaceSyncV3OriginActor.js +61 -0
  1056. package/dist/sync/v3/workspaceSyncV3OriginAssertion.d.ts +46 -0
  1057. package/dist/sync/v3/workspaceSyncV3OriginAssertion.js +121 -0
  1058. package/dist/sync/v3/workspaceSyncV3OriginAssertionHeader.d.ts +1 -0
  1059. package/dist/sync/v3/workspaceSyncV3OriginAssertionHeader.js +1 -0
  1060. package/dist/sync/v3/workspaceSyncV3PlanningOrderCoverage.d.ts +10 -0
  1061. package/dist/sync/v3/workspaceSyncV3PlanningOrderCoverage.js +34 -0
  1062. package/dist/sync/v3/workspaceSyncV3PlanningOrderWireContract.d.ts +6 -0
  1063. package/dist/sync/v3/workspaceSyncV3PlanningOrderWireContract.js +10 -0
  1064. package/dist/sync/v3/workspaceSyncV3ProjectionState.d.ts +105 -0
  1065. package/dist/sync/v3/workspaceSyncV3ProjectionState.js +467 -0
  1066. package/dist/sync/v3/workspaceSyncV3TaskCommentAudit.d.ts +56 -0
  1067. package/dist/sync/v3/workspaceSyncV3TaskCommentAudit.js +250 -0
  1068. package/dist/sync/v3/workspaceSyncV3TaskRelationshipProjection.d.ts +30 -0
  1069. package/dist/sync/v3/workspaceSyncV3TaskRelationshipProjection.js +142 -0
  1070. package/dist/sync/v3/workspaceSyncV3TaskRootProjection.d.ts +40 -0
  1071. package/dist/sync/v3/workspaceSyncV3TaskRootProjection.js +246 -0
  1072. package/dist/sync/v3/workspaceSyncV3TaxonomyFeedProjection.d.ts +39 -0
  1073. package/dist/sync/v3/workspaceSyncV3TaxonomyFeedProjection.js +185 -0
  1074. package/dist/sync/v3/workspaceSyncV3WorkflowCoverage.d.ts +10 -0
  1075. package/dist/sync/v3/workspaceSyncV3WorkflowCoverage.js +36 -0
  1076. package/dist/sync/v3/workspaceSyncV3WorkflowRuntimeApply.d.ts +17 -0
  1077. package/dist/sync/v3/workspaceSyncV3WorkflowRuntimeApply.js +143 -0
  1078. package/dist/sync/v3/workspaceSyncV3WorkflowRuntimeProjection.d.ts +9 -0
  1079. package/dist/sync/v3/workspaceSyncV3WorkflowRuntimeProjection.js +195 -0
  1080. package/dist/sync/v3/workspaceSyncV3WorkflowWireContract.d.ts +11 -0
  1081. package/dist/sync/v3/workspaceSyncV3WorkflowWireContract.js +12 -0
  1082. package/dist/sync/v3/workspaceSyncV3WorkstreamProjection.d.ts +4 -0
  1083. package/dist/sync/v3/workspaceSyncV3WorkstreamProjection.js +98 -0
  1084. package/dist/sync/v3/workspaceSyncV3WorkstreamTaskOrderProjection.d.ts +9 -0
  1085. package/dist/sync/v3/workspaceSyncV3WorkstreamTaskOrderProjection.js +72 -0
  1086. package/dist/sync/v3/workstreamActivityAuthoritativeRevision.d.ts +11 -0
  1087. package/dist/sync/v3/workstreamActivityAuthoritativeRevision.js +23 -0
  1088. package/dist/sync/v3/workstreamActivityIdentity.d.ts +8 -0
  1089. package/dist/sync/v3/workstreamActivityIdentity.js +14 -0
  1090. package/dist/sync/v3/workstreamCoexistence.d.ts +19 -0
  1091. package/dist/sync/v3/workstreamCoexistence.js +64 -0
  1092. package/dist/sync/v3/workstreamMutationPayload.d.ts +27 -0
  1093. package/dist/sync/v3/workstreamMutationPayload.js +147 -0
  1094. package/dist/sync/v3/workstreamMutationService.d.ts +72 -0
  1095. package/dist/sync/v3/workstreamMutationService.js +256 -0
  1096. package/dist/sync/v3/workstreamTaskOrderMutationService.d.ts +55 -0
  1097. package/dist/sync/v3/workstreamTaskOrderMutationService.js +110 -0
  1098. package/dist/sync/v3/workstreamTaskOrderSync.d.ts +14 -0
  1099. package/dist/sync/v3/workstreamTaskOrderSync.js +25 -0
  1100. package/dist/sync/workspaceContentManifest.d.ts +86 -0
  1101. package/dist/sync/workspaceContentManifest.js +123 -0
  1102. package/dist/sync/workspacePullFeed.d.ts +186 -2
  1103. package/dist/sync/workspacePullFeed.js +513 -136
  1104. package/dist/sync/workspacePushPreparedPlan.d.ts +21 -0
  1105. package/dist/sync/workspacePushPreparedPlan.js +1 -0
  1106. package/dist/sync/workspaceRepair.d.ts +17 -25
  1107. package/dist/sync/workspaceRepair.js +348 -25
  1108. package/dist/sync/workspaceSyncContentDecryption.d.ts +6 -0
  1109. package/dist/sync/workspaceSyncContentDecryption.js +11 -0
  1110. package/dist/sync/workspaceSyncModel.d.ts +216 -5
  1111. package/dist/sync/workspaceSyncModel.js +371 -35
  1112. package/dist/sync/workspaceSyncSnapshotProjection.d.ts +11 -0
  1113. package/dist/sync/workspaceSyncSnapshotProjection.js +101 -0
  1114. package/dist/sync/workspaceSyncState.d.ts +13 -0
  1115. package/dist/sync/workspaceSyncState.js +36 -0
  1116. package/dist/sync/workspaceSyncV2SnapshotBuilder.d.ts +106 -0
  1117. package/dist/sync/workspaceSyncV2SnapshotBuilder.js +193 -0
  1118. package/dist/types.d.ts +23 -15
  1119. package/dist/types.js +1 -3
  1120. package/dist/ui/ai-profile-clients/amazon-nova.svg +1 -0
  1121. package/dist/ui/ai-profile-clients/antigravity.png +0 -0
  1122. package/dist/ui/ai-profile-clients/chatgpt.svg +10 -0
  1123. package/dist/ui/ai-profile-clients/claude-chat.svg +1 -0
  1124. package/dist/ui/ai-profile-clients/claude-code.svg +15 -0
  1125. package/dist/ui/ai-profile-clients/cline-app-icon-light.png +0 -0
  1126. package/dist/ui/ai-profile-clients/cline.svg +16 -0
  1127. package/dist/ui/ai-profile-clients/codex.svg +1 -0
  1128. package/dist/ui/ai-profile-clients/copilot.png +0 -0
  1129. package/dist/ui/ai-profile-clients/cursor.svg +1 -0
  1130. package/dist/ui/ai-profile-clients/deepseek.svg +1 -0
  1131. package/dist/ui/ai-profile-clients/gemini-cli-icon.png +0 -0
  1132. package/dist/ui/ai-profile-clients/gemini.svg +10 -0
  1133. package/dist/ui/ai-profile-clients/grok.svg +31 -0
  1134. package/dist/ui/ai-profile-clients/kiro.svg +11 -0
  1135. package/dist/ui/ai-profile-clients/llama.svg +1 -0
  1136. package/dist/ui/ai-profile-clients/mistral.svg +1 -0
  1137. package/dist/ui/ai-profile-clients/ms_copilot.jpeg +0 -0
  1138. package/dist/ui/ai-profile-clients/openclaw.png +0 -0
  1139. package/dist/ui/ai-profile-clients/perplexity.svg +1 -0
  1140. package/dist/ui/ai-profile-clients/vscode.svg +41 -0
  1141. package/dist/ui/ai-profile-clients/windsurf.svg +11 -0
  1142. package/dist/ui/assets/AiIdentityRosterCard-DB1BLO_j.js +1 -0
  1143. package/dist/ui/assets/AiProfilesModule-DPxQeF9N.js +1 -0
  1144. package/dist/ui/assets/AnnotatedAttachmentWorkspace-CBRZ8rca.css +1 -0
  1145. package/dist/ui/assets/AnnotatedAttachmentWorkspace-DHNYaNg6.js +3 -0
  1146. package/dist/ui/assets/AssetTraySortControl-B9k5caQW.css +1 -0
  1147. package/dist/ui/assets/AssetTraySortControl-DphbyHVc.js +1 -0
  1148. package/dist/ui/assets/ContextAttachmentManager-CMxSzHqc.js +3 -0
  1149. package/dist/ui/assets/DocumentWorkspace-BC7sy5TG.js +261 -0
  1150. package/dist/ui/assets/DocumentWorkspace-BIBGBfd7.css +1 -0
  1151. package/dist/ui/assets/EntityActivityTimeline-BfJbZRdl.css +1 -0
  1152. package/dist/ui/assets/EntityActivityTimeline-pJ2ZjZ-k.js +1 -0
  1153. package/dist/ui/assets/PlanningModule-CeTqXMMz.css +1 -0
  1154. package/dist/ui/assets/PlanningModule-t5GbvVR9.js +1 -0
  1155. package/dist/ui/assets/PlansPage-BVH_NfgT.js +1 -0
  1156. package/dist/ui/assets/PlansPage-C2nkK2Bp.css +1 -0
  1157. package/dist/ui/assets/TaskContextUpload-Ds4LnDzV.css +1 -0
  1158. package/dist/ui/assets/TaskContextUpload-bl4fOOUz.js +1 -0
  1159. package/dist/ui/assets/TaskSettings-xVsxSa0g.js +12 -0
  1160. package/dist/ui/assets/TaskforceAgentsModule-CkAxW19K.js +21 -0
  1161. package/dist/ui/assets/TaskforceAgentsModule-D6IC0S7Q.css +1 -0
  1162. package/dist/ui/assets/WorkflowManagerModule-BKqIGVnF.js +1 -0
  1163. package/dist/ui/assets/WorkflowManagerModule-DF10XENz.css +1 -0
  1164. package/dist/ui/assets/antigravity-DRKQga2U.png +0 -0
  1165. package/dist/ui/assets/cursor-BM_3k4Y4.svg +1 -0
  1166. package/dist/ui/assets/gemini-cli-icon-dBAVjCcn.png +0 -0
  1167. package/dist/ui/assets/grok-BuodbWaG.svg +31 -0
  1168. package/dist/ui/assets/index-BzJlVnNS.css +1 -0
  1169. package/dist/ui/assets/index-Cx7vZJHL.js +7 -0
  1170. package/dist/ui/assets/{vendor-dnd-DRzYolkg.js → vendor-dnd-CJ-AjP-Y.js} +1 -1
  1171. package/dist/ui/assets/{vendor-icons-CLnehDTw.js → vendor-icons-B8ZNsH1g.js} +1 -1
  1172. package/dist/ui/assets/{vendor-markdown-BUxTU7dS.js → vendor-markdown-_lhNCyq-.js} +9 -9
  1173. package/dist/ui/assets/vendor-router-AqJMU8Lz.js +3 -0
  1174. package/dist/ui/assets/vscode-C_7wk1WI.svg +41 -0
  1175. package/dist/ui/branding/logos/logo_dark_bg.png +0 -0
  1176. package/dist/ui/branding/logos/logo_favicon_dark.png +0 -0
  1177. package/dist/ui/branding/logos/logo_favicon_dark.svg +56 -0
  1178. package/dist/ui/branding/logos/logo_favicon_light.png +0 -0
  1179. package/dist/ui/branding/logos/logo_light_bg.png +0 -0
  1180. package/dist/ui/images/Taskforce_Van.webp +0 -0
  1181. package/dist/ui/index.html +6 -6
  1182. package/dist/update/uiUpdateService.d.ts +43 -0
  1183. package/dist/update/uiUpdateService.js +149 -0
  1184. package/dist/update/updateCli.d.ts +15 -0
  1185. package/dist/update/updateCli.js +76 -0
  1186. package/dist/update/updateExecutor.d.ts +40 -0
  1187. package/dist/update/updateExecutor.js +474 -0
  1188. package/dist/update/updateStatus.d.ts +83 -0
  1189. package/dist/update/updateStatus.js +703 -0
  1190. package/dist/utils/aiProfileAvatarPaths.d.ts +14 -0
  1191. package/dist/utils/aiProfileAvatarPaths.js +52 -0
  1192. package/dist/utils/aiProfileDefaultLogo.d.ts +7 -0
  1193. package/dist/utils/aiProfileDefaultLogo.js +84 -0
  1194. package/dist/utils/aiProfileEvents.d.ts +9 -1
  1195. package/dist/utils/annotatedAttachments.d.ts +8 -0
  1196. package/dist/utils/annotatedAttachments.js +17 -1
  1197. package/dist/utils/assetTraySorting.d.ts +25 -0
  1198. package/dist/utils/assetTraySorting.js +83 -0
  1199. package/dist/utils/assignees.d.ts +5 -0
  1200. package/dist/utils/assignees.js +14 -9
  1201. package/dist/utils/authLogin.d.ts +10 -0
  1202. package/dist/utils/authLogin.js +8 -0
  1203. package/dist/utils/authSessionEvents.d.ts +2 -0
  1204. package/dist/utils/authSessionEvents.js +6 -0
  1205. package/dist/utils/avatarUpload.js +5 -5
  1206. package/dist/utils/canonicalReferenceAttachments.d.ts +12 -0
  1207. package/dist/utils/canonicalReferenceAttachments.js +42 -0
  1208. package/dist/utils/cloudAssetDisplay.d.ts +2 -0
  1209. package/dist/utils/cloudAssetDisplay.js +8 -0
  1210. package/dist/utils/constants.d.ts +4 -11
  1211. package/dist/utils/constants.js +5 -64
  1212. package/dist/utils/contextAttachmentPreview.d.ts +11 -0
  1213. package/dist/utils/contextAttachmentPreview.js +8 -0
  1214. package/dist/utils/contextAttachmentUpload.d.ts +8 -0
  1215. package/dist/utils/contextAttachmentUpload.js +144 -0
  1216. package/dist/utils/documentNames.js +6 -4
  1217. package/dist/utils/entityReferences.d.ts +14 -0
  1218. package/dist/utils/entityReferences.js +21 -0
  1219. package/dist/utils/httpSetCookie.d.ts +3 -0
  1220. package/dist/utils/httpSetCookie.js +22 -0
  1221. package/dist/utils/imageNoteStoragePaths.d.ts +3 -0
  1222. package/dist/utils/imageNoteStoragePaths.js +19 -0
  1223. package/dist/utils/imageReferences.d.ts +6 -0
  1224. package/dist/utils/imageReferences.js +1 -0
  1225. package/dist/utils/planningArchiveOrchestrator.d.ts +23 -0
  1226. package/dist/utils/planningArchiveOrchestrator.js +37 -0
  1227. package/dist/utils/planningArchivePresentation.d.ts +20 -0
  1228. package/dist/utils/planningArchivePresentation.js +23 -0
  1229. package/dist/utils/planningArchiveReadiness.d.ts +26 -0
  1230. package/dist/utils/planningArchiveReadiness.js +30 -0
  1231. package/dist/utils/planningFavorites.d.ts +7 -0
  1232. package/dist/utils/planningFavorites.js +34 -0
  1233. package/dist/utils/syncEventPresentation.js +53 -0
  1234. package/dist/utils/syncStatusPresentation.d.ts +25 -0
  1235. package/dist/utils/syncStatusPresentation.js +86 -5
  1236. package/dist/utils/taskActivity.d.ts +9 -2
  1237. package/dist/utils/taskActivity.js +61 -0
  1238. package/dist/utils/taskDraftDefaults.d.ts +0 -8
  1239. package/dist/utils/taskDraftDefaults.js +0 -4
  1240. package/dist/utils/taskEvents.d.ts +11 -0
  1241. package/dist/utils/taskEvents.js +6 -0
  1242. package/dist/utils/taskHeaderQuickFilter.d.ts +14 -0
  1243. package/dist/utils/taskHeaderQuickFilter.js +32 -0
  1244. package/dist/utils/taskInvalidation.d.ts +23 -0
  1245. package/dist/utils/taskInvalidation.js +67 -0
  1246. package/dist/utils/taskNormalization.d.ts +2 -1
  1247. package/dist/utils/taskNormalization.js +44 -18
  1248. package/dist/utils/taskReferences.d.ts +16 -0
  1249. package/dist/utils/taskReferences.js +63 -0
  1250. package/dist/utils/taskforceAgentEvents.d.ts +8 -0
  1251. package/dist/utils/taskforceAgentEvents.js +6 -0
  1252. package/dist/utils/taskforceAgentSkillEvents.d.ts +7 -0
  1253. package/dist/utils/taskforceAgentSkillEvents.js +8 -0
  1254. package/dist/utils/uiNotice.d.ts +3 -0
  1255. package/dist/utils/uiNotice.js +1 -1
  1256. package/dist/utils/workspaceResourceEvents.d.ts +7 -0
  1257. package/dist/utils/workspaceResourceEvents.js +6 -0
  1258. package/dist/utils/workspaceSyncPresentation.d.ts +24 -0
  1259. package/dist/utils/workspaceSyncPresentation.js +243 -6
  1260. package/package.json +69 -21
  1261. package/dist/components/features/AgentsModule.d.ts +0 -18
  1262. package/dist/components/features/AgentsModule.js +0 -479
  1263. package/dist/components/features/InitiativesModule.d.ts +0 -22
  1264. package/dist/components/features/InitiativesModule.js +0 -33
  1265. package/dist/components/features/WorkflowsModule.d.ts +0 -27
  1266. package/dist/components/features/WorkflowsModule.js +0 -21
  1267. package/dist/components/features/settings/WorkflowEditor.d.ts +0 -15
  1268. package/dist/components/features/settings/WorkflowEditor.js +0 -245
  1269. package/dist/components/views/panels/DocumentFilterToolbar.d.ts +0 -10
  1270. package/dist/components/views/panels/DocumentFilterToolbar.js +0 -7
  1271. package/dist/components/views/standalone/modals/AccountHubModal.d.ts +0 -61
  1272. package/dist/components/views/standalone/modals/AccountHubModal.js +0 -108
  1273. package/dist/components/views/standalone/modals/EditProfileModal.d.ts +0 -19
  1274. package/dist/components/views/standalone/modals/EditProfileModal.js +0 -11
  1275. package/dist/hooks/ui/useResourceExport.d.ts +0 -21
  1276. package/dist/hooks/ui/useResourceExport.js +0 -87
  1277. package/dist/hooks/ui/useWorkflowTemplates.d.ts +0 -37
  1278. package/dist/hooks/ui/useWorkflowTemplates.js +0 -116
  1279. package/dist/mcp/clientProfileDefaults.d.ts +0 -12
  1280. package/dist/mcp/clientProfileDefaults.js +0 -41
  1281. package/dist/resources/templates/WORKFLOW_V2_POLICY.md +0 -55
  1282. package/dist/resources/templates/environments/aider.yaml +0 -14
  1283. package/dist/resources/templates/environments/antigravity.yaml +0 -10
  1284. package/dist/resources/templates/environments/claude.yaml +0 -10
  1285. package/dist/resources/templates/environments/cline.yaml +0 -10
  1286. package/dist/resources/templates/environments/codex.yaml +0 -13
  1287. package/dist/resources/templates/environments/copilot.yaml +0 -10
  1288. package/dist/resources/templates/environments/cursor.yaml +0 -9
  1289. package/dist/resources/templates/environments/gemini.yaml +0 -9
  1290. package/dist/resources/templates/environments/windsurf.yaml +0 -10
  1291. package/dist/resources/templates/workflow-sources/README.md +0 -9
  1292. package/dist/resources/templates/workflow-sources/workflowDocs.mjs +0 -530
  1293. package/dist/resources/templates/workflow-sources/workflowEditorOverrides.json +0 -1
  1294. package/dist/resources/templates/workflows/collaborate.yaml +0 -109
  1295. package/dist/resources/templates/workflows/do.yaml +0 -87
  1296. package/dist/resources/templates/workflows/evaluate.yaml +0 -116
  1297. package/dist/resources/templates/workflows/execute.yaml +0 -156
  1298. package/dist/resources/templates/workflows/plan.yaml +0 -118
  1299. package/dist/resources/templates/workflows/review.yaml +0 -114
  1300. package/dist/services/formatTransformers.d.ts +0 -29
  1301. package/dist/services/formatTransformers.js +0 -56
  1302. package/dist/services/templateEngine.d.ts +0 -46
  1303. package/dist/services/templateEngine.js +0 -148
  1304. package/dist/shared/workflowDefaults.d.ts +0 -9
  1305. package/dist/shared/workflowDefaults.js +0 -11
  1306. package/dist/ui/agent-logos/Gemini CLI.jpeg +0 -0
  1307. package/dist/ui/agent-logos/antigravity.jpeg +0 -0
  1308. package/dist/ui/agent-logos/chatgpt.png +0 -0
  1309. package/dist/ui/agent-logos/claude-code.jpeg +0 -0
  1310. package/dist/ui/agent-logos/codex.jpeg +0 -0
  1311. package/dist/ui/agent-logos/cursor.png +0 -0
  1312. package/dist/ui/agent-logos/openclaw.jpeg +0 -0
  1313. package/dist/ui/agent-logos/windsurf.png +0 -0
  1314. package/dist/ui/assets/AgentsModule-C4LcqhcZ.js +0 -1
  1315. package/dist/ui/assets/AnnotatedAttachmentWorkspace-B-Dq22d2.js +0 -3
  1316. package/dist/ui/assets/AnnotatedAttachmentWorkspace-BVKew-mH.css +0 -1
  1317. package/dist/ui/assets/ContextAttachmentManager-DsXPTvi-.js +0 -3
  1318. package/dist/ui/assets/DocumentWorkspace-CxA1wO3U.js +0 -252
  1319. package/dist/ui/assets/DocumentWorkspace-D4rJKXzd.css +0 -1
  1320. package/dist/ui/assets/EntityActivityTimeline-B8nSe8l3.js +0 -1
  1321. package/dist/ui/assets/EntityActivityTimeline-DyqvvhuF.css +0 -1
  1322. package/dist/ui/assets/InitiativesModule-VY95v38E.js +0 -1
  1323. package/dist/ui/assets/PlansPage-CQbKDv1a.js +0 -1
  1324. package/dist/ui/assets/PlansPage-DeAzWYTb.css +0 -1
  1325. package/dist/ui/assets/TaskContextUpload-DvDlNpHC.js +0 -1
  1326. package/dist/ui/assets/TaskSettings-CUWbYYtP.js +0 -12
  1327. package/dist/ui/assets/WorkflowsModule-CgM3Jako.js +0 -5
  1328. package/dist/ui/assets/documentReferences-Do9YjrS3.js +0 -1
  1329. package/dist/ui/assets/index--mh3pktj.js +0 -5
  1330. package/dist/ui/assets/index-BawaaEXS.css +0 -1
  1331. package/dist/ui/assets/vendor-router-BbWMxlnO.js +0 -3
  1332. package/dist/ui/branding/logos/logo_black_01.png +0 -0
  1333. package/dist/ui/branding/logos/logo_black_02.png +0 -0
  1334. package/dist/ui/branding/logos/logo_white_01.png +0 -0
  1335. package/dist/ui/branding/logos/logo_white_02.png +0 -0
  1336. package/scripts/generate-workflow-templates.mjs +0 -134
  1337. package/src/resources/templates/WORKFLOW_V2_POLICY.md +0 -55
  1338. package/src/resources/templates/environments/aider.yaml +0 -14
  1339. package/src/resources/templates/environments/antigravity.yaml +0 -10
  1340. package/src/resources/templates/environments/claude.yaml +0 -10
  1341. package/src/resources/templates/environments/cline.yaml +0 -10
  1342. package/src/resources/templates/environments/codex.yaml +0 -13
  1343. package/src/resources/templates/environments/copilot.yaml +0 -10
  1344. package/src/resources/templates/environments/cursor.yaml +0 -9
  1345. package/src/resources/templates/environments/gemini.yaml +0 -9
  1346. package/src/resources/templates/environments/windsurf.yaml +0 -10
  1347. package/src/resources/templates/workflow-sources/README.md +0 -9
  1348. package/src/resources/templates/workflow-sources/workflowDocs.mjs +0 -530
  1349. package/src/resources/templates/workflow-sources/workflowEditorOverrides.json +0 -1
  1350. package/src/resources/templates/workflows/collaborate.yaml +0 -109
  1351. package/src/resources/templates/workflows/do.yaml +0 -87
  1352. package/src/resources/templates/workflows/evaluate.yaml +0 -116
  1353. package/src/resources/templates/workflows/execute.yaml +0 -156
  1354. package/src/resources/templates/workflows/plan.yaml +0 -118
  1355. package/src/resources/templates/workflows/review.yaml +0 -114
  1356. /package/dist/ui/branding/logos/{logo_dark.svg → logo_dark_no_bg.svg} +0 -0
  1357. /package/dist/ui/branding/logos/{logo_favicon.svg → logo_favicon_light.svg} +0 -0
  1358. /package/dist/ui/branding/logos/{logo_light.svg → logo_light_no_bg.svg} +0 -0
@@ -1,21 +1,35 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
3
  import { createHash } from 'crypto';
4
+ import { parseAiProfileColorSource } from '../shared/aiProfileColors.js';
4
5
  import { normalizeBinaryAssetDeleteSyncPayload, normalizeBinaryAssetSyncPayload, normalizeDocumentDeleteSyncPayload, normalizeDocumentSyncPayload, } from './contentSyncPayload.js';
5
- import { normalizeAiProfileSyncPayload, normalizeAnnotatedAttachmentSessionSyncPayload, normalizeDeleteSyncPayload, normalizeDocumentReviewCommentSyncPayload, normalizeDocumentReviewSessionSyncPayload, } from './collaborationSyncPayload.js';
6
+ import { normalizeAiProfileSyncPayload, normalizeAgentConversationSyncPayload, normalizeAgentRoleSyncPayload, normalizeAnnotatedAttachmentSessionSyncPayload, normalizeDeleteSyncPayload, normalizeDocumentReviewCommentSyncPayload, normalizeDocumentReviewSessionSyncPayload, normalizeTaskforceAgentSkillSyncPayload, normalizeTaskforceAgentSyncPayload, } from './collaborationSyncPayload.js';
6
7
  import { normalizeInitiativeSyncPayload, normalizeTaxonomySyncPayload, normalizeWorkstreamSyncPayload, } from './planningSyncPayload.js';
7
8
  import { normalizeTaskSyncPayload, taskSyncPayloadToCoreTask, } from './taskSyncPayload.js';
8
9
  import { compareWorkspaceMutationOrdering, getTaskMutationTieBreak, getTaskMutationWatermark } from './workspaceSyncSurface.js';
10
+ import { isTaskMetadataActivityEventId } from './v3/taskMetadataActivityIdentity.js';
11
+ import { fingerprintWorkspaceSyncPayload, WorkspaceSyncRevisionConflictError, WorkspaceSyncDurabilityStore, } from './v3/syncDurabilityStore.js';
12
+ import { runTaxonomyCoexistenceTransaction } from './v3/taxonomyCoexistence.js';
13
+ import { applyInitiativeSyncChangesWithCoexistence } from './v3/initiativeCoexistence.js';
14
+ import { applyWorkstreamSyncChangesWithCoexistence } from './v3/workstreamCoexistence.js';
15
+ import { serializeTaxonomyStateForSync } from './v3/taxonomySyncPayload.js';
16
+ import { TaskforceAgentStore } from '../storage/taskforceAgentStore.js';
17
+ import { TaskforceAgentSkillStore } from '../storage/taskforceAgentSkillStore.js';
18
+ import { TaskforceAgentConversationStore } from '../storage/taskforceAgentConversationStore.js';
19
+ import { AgentRoleStore } from '../storage/agentRoleStore.js';
20
+ import { preserveV3OwnedTaskRoot, preserveV3OwnedTaskLifecycle, preserveV3OwnedTaskMetadata, preserveV3OwnedTaskReopenAssignee, preserveV3OwnedTaskTaxonomy, } from './v3/taskMetadataCoexistence.js';
9
21
  function createIncomingApplyModel() {
10
22
  return {
11
23
  taskMutations: {
12
24
  upserts: [],
13
25
  deletes: new Map(),
14
26
  },
27
+ taskRelationships: new Map(),
15
28
  planning: {
16
29
  incomingTaxonomies: null,
17
30
  incomingTaxonomyState: null,
18
31
  incomingTaxonomiesUpdatedAt: '',
32
+ incomingTaxonomyDurableRevision: null,
19
33
  incomingInitiatives: new Map(),
20
34
  incomingWorkstreams: new Map(),
21
35
  },
@@ -35,6 +49,10 @@ function createIncomingApplyModel() {
35
49
  incomingDocumentReviewCommentDeletes: new Map(),
36
50
  incomingAnnotatedAttachmentSessions: new Map(),
37
51
  incomingAnnotatedAttachmentSessionDeletes: new Map(),
52
+ incomingTaskforceAgents: new Map(),
53
+ incomingAgentRoles: new Map(),
54
+ incomingTaskforceAgentSkills: new Map(),
55
+ incomingAgentConversations: new Map(),
38
56
  },
39
57
  taskActivity: {
40
58
  incomingTaskEvents: new Map(),
@@ -46,6 +64,8 @@ export function resolveSyncConflictOrdering(incomingWatermark, existingWatermark
46
64
  }
47
65
  function shouldSkipTaskClassification(op) {
48
66
  return (op === 'delete'
67
+ || op === 'task-relationship-upsert'
68
+ || op === 'task-relationship-delete'
49
69
  || op === 'initiative-upsert'
50
70
  || op === 'workstream-upsert'
51
71
  || op === 'document-upsert'
@@ -57,7 +77,41 @@ function shouldSkipTaskClassification(op) {
57
77
  || op === 'document-review-comment-upsert'
58
78
  || op === 'document-review-comment-delete'
59
79
  || op === 'annotated-attachment-session-upsert'
60
- || op === 'annotated-attachment-session-delete');
80
+ || op === 'annotated-attachment-session-delete'
81
+ || op === 'taskforce-agent-upsert'
82
+ || op === 'agent-role-upsert'
83
+ || op === 'taskforce-agent-skill-upsert'
84
+ || op === 'agent-conversation-upsert');
85
+ }
86
+ function normalizeDurableTaskRevision(raw, task) {
87
+ if (raw === undefined)
88
+ return null;
89
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
90
+ throw new Error('Task durable revision must be an object.');
91
+ }
92
+ const source = raw;
93
+ const expectedKeys = [
94
+ 'canonicalFingerprint', 'contractVersion', 'domain', 'entityId', 'entityRevision',
95
+ 'lifecycleRevision', 'mutationKind', 'payloadFingerprint', 'sequence', 'taxonomyOwned',
96
+ ].sort();
97
+ const actualKeys = Object.keys(source).sort();
98
+ if (actualKeys.length !== expectedKeys.length || actualKeys.some((key, index) => key !== expectedKeys[index])) {
99
+ throw new Error('Task durable revision contains missing or unknown fields.');
100
+ }
101
+ if (source.contractVersion !== 3
102
+ || source.domain !== 'task'
103
+ || source.entityId !== task.id
104
+ || source.mutationKind !== 'replicated-state'
105
+ || typeof source.sequence !== 'string' || !/^[1-9]\d*$/.test(source.sequence)
106
+ || typeof source.entityRevision !== 'string' || !/^[1-9]\d*$/.test(source.entityRevision)
107
+ || typeof source.lifecycleRevision !== 'string' || !/^(0|[1-9]\d*)$/.test(source.lifecycleRevision)
108
+ || typeof source.canonicalFingerprint !== 'string' || !/^[a-f0-9]{64}$/.test(source.canonicalFingerprint)
109
+ || typeof source.payloadFingerprint !== 'string' || !/^[a-f0-9]{64}$/.test(source.payloadFingerprint)
110
+ || typeof source.taxonomyOwned !== 'boolean'
111
+ || fingerprintWorkspaceSyncPayload(task) !== source.payloadFingerprint) {
112
+ throw new Error('Task durable revision does not match its task payload.');
113
+ }
114
+ return source;
61
115
  }
62
116
  function recordTaskReferenceNumberMismatch(input) {
63
117
  const { core, workspaceId, task, recordSyncDiagnostic, } = input;
@@ -88,14 +142,35 @@ export function classifyWorkspaceSyncChanges(input) {
88
142
  for (const change of incomingChanges) {
89
143
  const raw = change;
90
144
  const op = String(raw.op || '').trim().toLowerCase();
145
+ if (op === 'task-relationship-upsert' || op === 'task-relationship-delete') {
146
+ const value = raw.relationship;
147
+ const id = String(value?.id || '').trim();
148
+ const sourceTaskId = String(value?.sourceTaskId || '').trim();
149
+ const targetTaskId = String(value?.targetTaskId || '').trim();
150
+ const kind = String(value?.kind || '').trim();
151
+ const updatedAt = String(value?.updatedAt || '').trim();
152
+ if (id && sourceTaskId && targetTaskId && ['dependency', 'related', 'supersedes'].includes(kind) && Number.isFinite(Date.parse(updatedAt))) {
153
+ model.taskRelationships.set(id, {
154
+ id, workspaceId, sourceTaskId, targetTaskId,
155
+ kind: kind,
156
+ createdBy: value?.createdBy || null,
157
+ createdAt: String(value?.createdAt || updatedAt),
158
+ updatedBy: value?.updatedBy || null,
159
+ updatedAt,
160
+ deletedBy: value?.deletedBy || null,
161
+ deletedAt: op === 'task-relationship-delete' ? String(value?.deletedAt || updatedAt) : value?.deletedAt || null,
162
+ });
163
+ }
164
+ continue;
165
+ }
91
166
  if (op === 'taxonomy-upsert') {
92
167
  const taxonomy = normalizeTaxonomySyncPayload(raw);
93
- if (taxonomy?.taxonomyState)
94
- model.planning.incomingTaxonomyState = taxonomy.taxonomyState;
95
- if (Array.isArray(taxonomy?.taxonomies))
96
- model.planning.incomingTaxonomies = taxonomy.taxonomies;
97
- if (taxonomy?.updatedAt)
168
+ if (taxonomy) {
169
+ model.planning.incomingTaxonomyState = taxonomy.taxonomyState || null;
170
+ model.planning.incomingTaxonomies = Array.isArray(taxonomy.taxonomies) ? taxonomy.taxonomies : null;
98
171
  model.planning.incomingTaxonomiesUpdatedAt = taxonomy.updatedAt;
172
+ model.planning.incomingTaxonomyDurableRevision = taxonomy.durableRevision || null;
173
+ }
99
174
  continue;
100
175
  }
101
176
  if (op === 'initiative-upsert') {
@@ -178,8 +253,15 @@ export function classifyWorkspaceSyncChanges(input) {
178
253
  }
179
254
  if (op === 'document-review-comment-delete') {
180
255
  const deletedComment = normalizeDeleteSyncPayload(raw, 'commentId');
181
- if (deletedComment)
182
- model.collaboration.incomingDocumentReviewCommentDeletes.set(deletedComment.id, deletedComment.deletedAt);
256
+ if (deletedComment) {
257
+ const deletedByActorId = typeof raw.deletedByActorId === 'string' && raw.deletedByActorId.trim().length > 0
258
+ ? raw.deletedByActorId.trim()
259
+ : null;
260
+ model.collaboration.incomingDocumentReviewCommentDeletes.set(deletedComment.id, {
261
+ deletedAt: deletedComment.deletedAt,
262
+ deletedByActorId,
263
+ });
264
+ }
183
265
  continue;
184
266
  }
185
267
  if (op === 'annotated-attachment-session-upsert') {
@@ -194,6 +276,30 @@ export function classifyWorkspaceSyncChanges(input) {
194
276
  model.collaboration.incomingAnnotatedAttachmentSessionDeletes.set(deletedSession.id, deletedSession.deletedAt);
195
277
  continue;
196
278
  }
279
+ if (op === 'taskforce-agent-upsert') {
280
+ const agent = normalizeTaskforceAgentSyncPayload(raw.agent, workspaceId, String(raw.updatedAt || raw.watermark || '').trim());
281
+ if (agent)
282
+ model.collaboration.incomingTaskforceAgents.set(agent.id, agent);
283
+ continue;
284
+ }
285
+ if (op === 'agent-role-upsert') {
286
+ const role = normalizeAgentRoleSyncPayload(raw.role, workspaceId, String(raw.updatedAt || raw.watermark || '').trim());
287
+ if (role)
288
+ model.collaboration.incomingAgentRoles.set(role.id, role);
289
+ continue;
290
+ }
291
+ if (op === 'taskforce-agent-skill-upsert') {
292
+ const skill = normalizeTaskforceAgentSkillSyncPayload(raw.skill, workspaceId, String(raw.updatedAt || raw.watermark || '').trim());
293
+ if (skill)
294
+ model.collaboration.incomingTaskforceAgentSkills.set(skill.id, skill);
295
+ continue;
296
+ }
297
+ if (op === 'agent-conversation-upsert') {
298
+ const conversation = normalizeAgentConversationSyncPayload(raw.conversation, workspaceId, String(raw.updatedAt || raw.watermark || '').trim());
299
+ if (conversation)
300
+ model.collaboration.incomingAgentConversations.set(conversation.id, conversation);
301
+ continue;
302
+ }
197
303
  if (op === 'task-event-upsert' || op === 'entity-event-upsert') {
198
304
  const event = normalizeTaskEventSyncPayload(raw.event, workspaceId, String(raw.updatedAt || raw.watermark || '').trim());
199
305
  if (event)
@@ -205,7 +311,24 @@ export function classifyWorkspaceSyncChanges(input) {
205
311
  const task = normalizeTaskSyncPayload(raw.task);
206
312
  const deleteTaskId = String(raw.taskId || raw.id || task?.id || '').trim();
207
313
  if (deleteTaskId) {
208
- model.taskMutations.deletes.set(deleteTaskId, String(raw.deletedAt || raw.watermark || new Date().toISOString()).trim());
314
+ const actorType = raw.actorType === 'human' || raw.actorType === 'ai' || raw.actorType === 'system'
315
+ ? raw.actorType
316
+ : undefined;
317
+ const source = raw.source === 'ui' || raw.source === 'mcp' || raw.source === 'sync' || raw.source === 'workspace-delete' || raw.source === 'system'
318
+ ? raw.source
319
+ : undefined;
320
+ const details = raw.details && typeof raw.details === 'object' && !Array.isArray(raw.details)
321
+ ? raw.details
322
+ : undefined;
323
+ const suppliedDeletedAt = String(raw.deletedAt || raw.watermark || '').trim();
324
+ model.taskMutations.deletes.set(deleteTaskId, {
325
+ deletedAt: suppliedDeletedAt || new Date().toISOString(),
326
+ suppliedDeletedAt: Boolean(suppliedDeletedAt),
327
+ ...(raw.actor ? { actor: String(raw.actor) } : {}),
328
+ ...(actorType ? { actorType } : {}),
329
+ ...(source ? { source } : {}),
330
+ ...(details ? { details } : {}),
331
+ });
209
332
  }
210
333
  }
211
334
  for (const change of incomingChanges) {
@@ -216,52 +339,206 @@ export function classifyWorkspaceSyncChanges(input) {
216
339
  const task = normalizeTaskSyncPayload(raw.task);
217
340
  if (!task)
218
341
  continue;
342
+ const durableRevision = normalizeDurableTaskRevision(raw.durableRevision, task);
219
343
  model.taskMutations.upserts.push({
220
344
  archived: raw.archived === true || task.isArchived === true,
221
345
  task,
346
+ ...(durableRevision ? { durableRevision } : {}),
222
347
  });
223
348
  }
224
349
  return model;
225
350
  }
226
351
  export function prepareTaskSyncSnapshotApply(input) {
227
- const { core, workspaceId, taskMutations, recordSyncDiagnostic, } = input;
352
+ const { core, workspaceId, taskMutations, recordSyncDiagnostic, v3OwnedTaskMetadataIds, v3OwnedTaskRootIds, v3OwnedTaskTaxonomyIds, v3OwnedTaskDeleteIds, v3OwnedTaskLifecycleIds, v3OwnedTaskReopenAssigneeIds, coexistenceDirection, recordReferenceNumberMismatch = true, } = input;
228
353
  const prepared = {
229
354
  tasks: [],
230
355
  archived: [],
356
+ authoritativeTaskTaxonomyIds: [],
357
+ authoritativeTaskNestedContentIds: [],
358
+ metadataPreservedTaskIds: [],
359
+ metadataSeededTaskIds: [],
360
+ lifecyclePreservedTaskIds: [],
361
+ reopenAssigneePreservedTaskIds: [],
231
362
  };
232
363
  for (const mutation of taskMutations.upserts) {
233
- const task = mutation.task;
234
- const taskId = String(task.id || '').trim();
235
- recordTaskReferenceNumberMismatch({
236
- core,
237
- workspaceId,
238
- task: task,
239
- recordSyncDiagnostic,
240
- });
241
- const deleteWatermark = taskId ? String(taskMutations.deletes.get(taskId) || '').trim() : '';
364
+ const incomingTask = mutation.task;
365
+ const taskId = String(incomingTask.id || '').trim();
366
+ if (taskId && mutation.durableRevision?.taxonomyOwned)
367
+ prepared.authoritativeTaskTaxonomyIds.push(taskId);
368
+ if (taskId && v3OwnedTaskRootIds?.has(taskId))
369
+ prepared.authoritativeTaskNestedContentIds.push(taskId);
370
+ if (taskId && v3OwnedTaskDeleteIds?.has(taskId))
371
+ continue;
372
+ const existing = taskId && (v3OwnedTaskRootIds?.has(taskId) || v3OwnedTaskMetadataIds?.has(taskId) || v3OwnedTaskTaxonomyIds?.has(taskId) || v3OwnedTaskLifecycleIds?.has(taskId) || v3OwnedTaskReopenAssigneeIds?.has(taskId))
373
+ ? core.getTask(taskId, workspaceId)
374
+ : null;
375
+ let task = incomingTask;
376
+ if (taskId && v3OwnedTaskRootIds?.has(taskId)) {
377
+ if (!existing) {
378
+ throw Object.assign(new Error(`V2 task carrier ${taskId} is missing its v3-owned task root.`), { code: 'SYNC_V2_TASK_CARRIER_ROOT_MISSING', statusCode: 409 });
379
+ }
380
+ task = preserveV3OwnedTaskRoot(task, existing);
381
+ }
382
+ if (existing && v3OwnedTaskMetadataIds?.has(taskId)) {
383
+ task = preserveV3OwnedTaskMetadata(task, existing);
384
+ if (coexistenceDirection)
385
+ prepared.metadataPreservedTaskIds.push(taskId);
386
+ }
387
+ if (existing
388
+ && v3OwnedTaskTaxonomyIds?.has(taskId)
389
+ && !(coexistenceDirection === 'local-pull' && mutation.durableRevision?.taxonomyOwned)) {
390
+ task = preserveV3OwnedTaskTaxonomy(task, existing);
391
+ }
392
+ if (existing && v3OwnedTaskLifecycleIds?.has(taskId)) {
393
+ task = preserveV3OwnedTaskLifecycle(task, existing);
394
+ if (coexistenceDirection)
395
+ prepared.lifecyclePreservedTaskIds.push(taskId);
396
+ }
397
+ if (existing && v3OwnedTaskReopenAssigneeIds?.has(taskId)) {
398
+ task = preserveV3OwnedTaskReopenAssignee(task, existing);
399
+ if (coexistenceDirection)
400
+ prepared.reopenAssigneePreservedTaskIds.push(taskId);
401
+ }
402
+ if (!existing
403
+ && taskId
404
+ && coexistenceDirection === 'cloud-push'
405
+ && v3OwnedTaskMetadataIds?.has(taskId)) {
406
+ // A metadata operation cannot create its missing cloud entity. Seed the
407
+ // entity once from the same local snapshot; the active assertion keeps
408
+ // later v2 pushes protected until v3 acceptance records ownership.
409
+ prepared.metadataSeededTaskIds.push(taskId);
410
+ }
411
+ if (recordReferenceNumberMismatch) {
412
+ recordTaskReferenceNumberMismatch({
413
+ core,
414
+ workspaceId,
415
+ task: task,
416
+ recordSyncDiagnostic,
417
+ });
418
+ }
419
+ const deleteWatermark = taskId ? String(taskMutations.deletes.get(taskId)?.deletedAt || '').trim() : '';
242
420
  if (taskId && deleteWatermark) {
243
421
  const compareAgainstDelete = resolveSyncConflictOrdering(deleteWatermark, String(task.updatedAt || task.createdAt || '').trim(), `delete:${taskId}`, getTaskMutationTieBreak(task, mutation.archived));
244
422
  if (compareAgainstDelete >= 0)
245
423
  continue;
246
424
  }
247
- if (mutation.archived)
425
+ if (task.isArchived === true)
248
426
  prepared.archived.push(task);
249
427
  else
250
428
  prepared.tasks.push(task);
251
429
  }
252
430
  return prepared;
253
431
  }
432
+ export function prepareDurableTaskPullMutations(input) {
433
+ const upserts = [];
434
+ const pendingRevisions = [];
435
+ for (const mutation of input.taskMutations.upserts) {
436
+ const marker = mutation.durableRevision;
437
+ if (!marker) {
438
+ upserts.push(mutation);
439
+ continue;
440
+ }
441
+ const current = input.store.readWorkspaceDomainOwnership({
442
+ tenantId: input.tenantId,
443
+ workspaceId: input.workspaceId,
444
+ domain: 'task',
445
+ entityId: marker.entityId,
446
+ });
447
+ if (current.activeOperation)
448
+ throw new WorkspaceSyncRevisionConflictError({
449
+ domain: 'task',
450
+ entityId: marker.entityId,
451
+ reason: 'active-local-operation',
452
+ });
453
+ const incomingRevision = BigInt(marker.entityRevision);
454
+ const currentRevision = BigInt(current.entityRevision);
455
+ if (incomingRevision < currentRevision)
456
+ continue;
457
+ if (incomingRevision === currentRevision) {
458
+ if (current.lifecycleRevision !== marker.lifecycleRevision
459
+ || current.lastSequence !== marker.sequence
460
+ || current.canonicalFingerprint !== marker.canonicalFingerprint)
461
+ throw new WorkspaceSyncRevisionConflictError({
462
+ domain: 'task',
463
+ entityId: marker.entityId,
464
+ reason: 'equal-revision-divergence',
465
+ incoming: {
466
+ sequence: marker.sequence,
467
+ entityRevision: marker.entityRevision,
468
+ lifecycleRevision: marker.lifecycleRevision,
469
+ canonicalFingerprint: marker.canonicalFingerprint,
470
+ },
471
+ current,
472
+ });
473
+ upserts.push(mutation);
474
+ pendingRevisions.push(marker);
475
+ continue;
476
+ }
477
+ if (current.lastSequence !== null && BigInt(marker.sequence) <= BigInt(current.lastSequence)) {
478
+ throw new WorkspaceSyncRevisionConflictError({
479
+ domain: 'task',
480
+ entityId: marker.entityId,
481
+ reason: 'sequence-regression',
482
+ incoming: {
483
+ sequence: marker.sequence,
484
+ entityRevision: marker.entityRevision,
485
+ lifecycleRevision: marker.lifecycleRevision,
486
+ canonicalFingerprint: marker.canonicalFingerprint,
487
+ },
488
+ current,
489
+ });
490
+ }
491
+ upserts.push(mutation);
492
+ pendingRevisions.push(marker);
493
+ }
494
+ return {
495
+ taskMutations: { upserts, deletes: input.taskMutations.deletes },
496
+ pendingRevisions,
497
+ };
498
+ }
499
+ export function applyDurableTaskPullRevisions(input) {
500
+ for (const marker of input.revisions) {
501
+ input.store.applyReplicatedEntityRevision({
502
+ tenantId: input.tenantId,
503
+ workspaceId: input.workspaceId,
504
+ domain: marker.domain,
505
+ entityId: marker.entityId,
506
+ sequence: marker.sequence,
507
+ entityRevision: marker.entityRevision,
508
+ lifecycleRevision: marker.lifecycleRevision,
509
+ canonicalFingerprint: marker.canonicalFingerprint,
510
+ now: input.now,
511
+ applyMutation: () => undefined,
512
+ });
513
+ if (marker.taxonomyOwned) {
514
+ input.store.markTaskTaxonomyProjectionOwned({
515
+ tenantId: input.tenantId,
516
+ workspaceId: input.workspaceId,
517
+ taskIds: [marker.entityId],
518
+ now: input.now,
519
+ });
520
+ }
521
+ }
522
+ }
254
523
  export function applyTaskSyncDeletes(input) {
255
524
  const { core, workspaceId, taskMutations, recordSyncDiagnostic, } = input;
256
- for (const [taskId, deleteWatermark] of taskMutations.deletes.entries()) {
525
+ for (const [taskId, deletion] of taskMutations.deletes.entries()) {
257
526
  try {
527
+ const deleteWatermark = deletion.deletedAt;
258
528
  const existingTask = core.getTask(taskId, workspaceId);
259
529
  if (existingTask) {
260
530
  const compareAgainstExisting = resolveSyncConflictOrdering(deleteWatermark, getTaskMutationWatermark(existingTask), `delete:${taskId}`, getTaskMutationTieBreak(existingTask, Boolean(existingTask.isArchived)));
261
531
  if (compareAgainstExisting < 0)
262
532
  continue;
263
533
  }
264
- core.deleteTaskForSync(taskId, workspaceId, { persistBackup: false });
534
+ core.deleteTaskForSync(taskId, workspaceId, {
535
+ persistBackup: false,
536
+ ...(deletion.suppliedDeletedAt ? { deletedAt: deletion.deletedAt } : {}),
537
+ ...(deletion.actor ? { actor: deletion.actor } : {}),
538
+ ...(deletion.actorType ? { actorType: deletion.actorType } : {}),
539
+ ...(deletion.source ? { source: deletion.source } : {}),
540
+ ...(deletion.details ? { details: deletion.details } : {}),
541
+ });
265
542
  }
266
543
  catch (error) {
267
544
  recordSyncDiagnostic(workspaceId, 'apply', 'Failed to delete task during sync apply.', {
@@ -269,20 +546,79 @@ export function applyTaskSyncDeletes(input) {
269
546
  taskId,
270
547
  error: String(error?.message || error || '')
271
548
  });
549
+ if (input.failFast)
550
+ throw error;
272
551
  }
273
552
  }
274
553
  return taskMutations.deletes.size;
275
554
  }
276
555
  export function applyPreparedTaskSyncSnapshot(input) {
277
- const { core, workspaceId, prepared, } = input;
278
- return core.applyWorkspaceSyncSnapshot({
556
+ const { core, workspaceId, prepared, deferSideEffects, } = input;
557
+ const snapshot = {
279
558
  tasks: prepared.tasks.map(taskSyncPayloadToCoreTask),
280
559
  archived: prepared.archived.map(taskSyncPayloadToCoreTask)
281
- }, workspaceId);
560
+ };
561
+ const options = {
562
+ ...(deferSideEffects ? { deferSideEffects: true } : {}),
563
+ ...(prepared.authoritativeTaskTaxonomyIds.length > 0
564
+ ? { authoritativeTaskTaxonomyIds: new Set(prepared.authoritativeTaskTaxonomyIds) }
565
+ : {}),
566
+ ...(prepared.authoritativeTaskNestedContentIds.length > 0
567
+ ? { authoritativeTaskNestedContentIds: new Set(prepared.authoritativeTaskNestedContentIds) }
568
+ : {}),
569
+ };
570
+ return Object.keys(options).length > 0
571
+ ? core.applyWorkspaceSyncSnapshot(snapshot, workspaceId, options)
572
+ : core.applyWorkspaceSyncSnapshot(snapshot, workspaceId);
573
+ }
574
+ export function applyTaskRelationshipSyncChanges(input) {
575
+ let applied = 0;
576
+ let skipped = 0;
577
+ const ordered = [...input.relationships.values()].sort((left, right) => {
578
+ if (Boolean(left.deletedAt) !== Boolean(right.deletedAt))
579
+ return left.deletedAt ? 1 : -1;
580
+ return left.updatedAt.localeCompare(right.updatedAt) || left.id.localeCompare(right.id);
581
+ });
582
+ for (const relationship of ordered) {
583
+ if (input.protectedRelationshipIds?.has(relationship.id)) {
584
+ skipped += 1;
585
+ continue;
586
+ }
587
+ try {
588
+ if (input.core.applyTaskRelationshipForSync(relationship, input.workspaceId) === 'applied')
589
+ applied += 1;
590
+ else
591
+ skipped += 1;
592
+ }
593
+ catch (error) {
594
+ input.recordSyncDiagnostic(input.workspaceId, 'apply', `Rejected task relationship ${relationship.id}: ${String(error?.message || error)}`, {
595
+ source: 'apply.taskRelationship', relationshipId: relationship.id,
596
+ sourceTaskId: relationship.sourceTaskId, targetTaskId: relationship.targetTaskId,
597
+ });
598
+ throw error;
599
+ }
600
+ }
601
+ return { applied, skipped };
282
602
  }
283
603
  export function applyPlanningSyncChanges(input) {
284
- const { core, workspaceId, incomingInitiatives, incomingWorkstreams, incomingTaxonomies, incomingTaxonomyState, incomingTaxonomiesUpdatedAt, workspaceTaxonomySyncMeta, recordSyncDiagnostic, } = input;
285
- if (incomingInitiatives.size > 0) {
604
+ const { core, workspaceId, incomingInitiatives, incomingWorkstreams, recordSyncDiagnostic, } = input;
605
+ if (incomingInitiatives.size > 0 && input.coexistenceDirection) {
606
+ if (!input.durabilityStore || !input.tenantId || !input.now) {
607
+ throw new Error('Initiative coexistence requires durability store, tenant, and timestamp.');
608
+ }
609
+ applyInitiativeSyncChangesWithCoexistence({
610
+ store: input.durabilityStore,
611
+ core,
612
+ tenantId: input.tenantId,
613
+ workspaceId,
614
+ direction: input.coexistenceDirection,
615
+ incomingInitiatives,
616
+ assertedActiveInitiativeIds: input.assertedActiveV3InitiativeIds,
617
+ requiredProjectionOwner: input.requiredInitiativeProjectionOwner,
618
+ now: input.now,
619
+ });
620
+ }
621
+ else if (incomingInitiatives.size > 0) {
286
622
  for (const initiative of incomingInitiatives.values()) {
287
623
  try {
288
624
  core.upsertInitiativeForSync({
@@ -292,6 +628,7 @@ export function applyPlanningSyncChanges(input) {
292
628
  title: initiative.title,
293
629
  description: initiative.description,
294
630
  ownerId: initiative.ownerId,
631
+ ...(initiative.comments !== undefined ? { comments: initiative.comments } : {}),
295
632
  createdAt: initiative.createdAt,
296
633
  updatedAt: initiative.updatedAt,
297
634
  order: initiative.order,
@@ -309,7 +646,22 @@ export function applyPlanningSyncChanges(input) {
309
646
  }
310
647
  }
311
648
  }
312
- if (incomingWorkstreams.size > 0) {
649
+ if (incomingWorkstreams.size > 0 && input.coexistenceDirection) {
650
+ if (!input.durabilityStore || !input.tenantId || !input.now) {
651
+ throw new Error('Workstream coexistence requires durability store, tenant, and timestamp.');
652
+ }
653
+ applyWorkstreamSyncChangesWithCoexistence({
654
+ store: input.durabilityStore,
655
+ core,
656
+ tenantId: input.tenantId,
657
+ workspaceId,
658
+ direction: input.coexistenceDirection,
659
+ incomingWorkstreams,
660
+ requiredCombinedProjectionOwner: input.coexistenceDirection === 'local-pull' ? 'v2' : undefined,
661
+ now: input.now,
662
+ });
663
+ }
664
+ else if (incomingWorkstreams.size > 0) {
313
665
  for (const workstream of incomingWorkstreams.values()) {
314
666
  try {
315
667
  core.upsertWorkstreamForSync({
@@ -320,6 +672,7 @@ export function applyPlanningSyncChanges(input) {
320
672
  title: workstream.title,
321
673
  description: workstream.description,
322
674
  ownerId: workstream.ownerId,
675
+ ...(workstream.comments !== undefined ? { comments: workstream.comments } : {}),
323
676
  createdAt: workstream.createdAt,
324
677
  updatedAt: workstream.updatedAt,
325
678
  order: workstream.order,
@@ -337,39 +690,124 @@ export function applyPlanningSyncChanges(input) {
337
690
  }
338
691
  }
339
692
  }
340
- if (incomingTaxonomyState || Array.isArray(incomingTaxonomies)) {
341
- const nextTaxonomyState = incomingTaxonomyState || { taxonomies: incomingTaxonomies || [] };
342
- if (!incomingTaxonomiesUpdatedAt) {
343
- if (typeof core.updateTaxonomyState === 'function') {
344
- core.updateTaxonomyState(nextTaxonomyState, workspaceId);
345
- }
346
- else {
347
- core.updateTaxonomies(Array.isArray(incomingTaxonomies) ? incomingTaxonomies : []);
348
- }
693
+ }
694
+ export function applyTaxonomySyncChanges(input) {
695
+ const hasTaxonomy = Boolean(input.incomingTaxonomyState) || Array.isArray(input.incomingTaxonomies);
696
+ if (!hasTaxonomy)
697
+ return { applied: false, protected: false };
698
+ const nextTaxonomyState = input.incomingTaxonomyState
699
+ || { taxonomies: (input.incomingTaxonomies || []) };
700
+ let pendingTaxonomyMeta = null;
701
+ let notifyLegacyCommit = false;
702
+ const applyLegacy = (boundaryHeld = false) => {
703
+ const applyState = () => boundaryHeld
704
+ ? input.core.replaceTaxonomyStateForLegacySync(nextTaxonomyState, input.workspaceId)
705
+ : input.core.updateTaxonomyState(nextTaxonomyState, input.workspaceId);
706
+ if (!input.incomingTaxonomiesUpdatedAt) {
707
+ applyState();
708
+ if (boundaryHeld)
709
+ notifyLegacyCommit = true;
349
710
  const fallbackHash = createHash('sha256').update(JSON.stringify(nextTaxonomyState)).digest('hex');
350
- workspaceTaxonomySyncMeta.set(workspaceId, {
351
- updatedAt: new Date().toISOString(),
352
- hash: fallbackHash
353
- });
711
+ pendingTaxonomyMeta = { updatedAt: new Date().toISOString(), hash: fallbackHash };
712
+ return true;
354
713
  }
355
- else {
356
- const incomingTaxonomyHash = createHash('sha256').update(JSON.stringify(nextTaxonomyState)).digest('hex');
357
- const currentMeta = workspaceTaxonomySyncMeta.get(workspaceId) || { updatedAt: '', hash: '' };
358
- const compare = resolveSyncConflictOrdering(incomingTaxonomiesUpdatedAt, currentMeta.updatedAt, incomingTaxonomyHash, currentMeta.hash);
359
- if (compare >= 0) {
360
- if (typeof core.updateTaxonomyState === 'function') {
361
- core.updateTaxonomyState(nextTaxonomyState, workspaceId);
362
- }
363
- else {
364
- core.updateTaxonomies(Array.isArray(incomingTaxonomies) ? incomingTaxonomies : []);
714
+ const incomingHash = createHash('sha256').update(JSON.stringify(nextTaxonomyState)).digest('hex');
715
+ const currentMeta = input.workspaceTaxonomySyncMeta.get(input.workspaceId) || { updatedAt: '', hash: '' };
716
+ const compare = resolveSyncConflictOrdering(input.incomingTaxonomiesUpdatedAt, currentMeta.updatedAt, incomingHash, currentMeta.hash);
717
+ if (compare < 0)
718
+ return false;
719
+ applyState();
720
+ if (boundaryHeld)
721
+ notifyLegacyCommit = true;
722
+ pendingTaxonomyMeta = { updatedAt: input.incomingTaxonomiesUpdatedAt, hash: incomingHash };
723
+ return true;
724
+ };
725
+ if (!input.coexistenceDirection) {
726
+ const result = { applied: applyLegacy(), protected: false };
727
+ if (pendingTaxonomyMeta)
728
+ input.workspaceTaxonomySyncMeta.set(input.workspaceId, pendingTaxonomyMeta);
729
+ return result;
730
+ }
731
+ const store = new WorkspaceSyncDurabilityStore(input.core.getDatabaseAdapter());
732
+ let notifyDurableCommit = false;
733
+ const result = runTaxonomyCoexistenceTransaction({
734
+ store,
735
+ tenantId: input.core.getTenantId(),
736
+ workspaceId: input.workspaceId,
737
+ direction: input.coexistenceDirection,
738
+ now: input.incomingTaxonomiesUpdatedAt || new Date().toISOString(),
739
+ apply: (ownership) => {
740
+ if (input.coexistenceDirection === 'cloud-push') {
741
+ if (ownership.owned || ownership.activeOperation || input.assertedActiveV3Taxonomy === true) {
742
+ return { applied: false, protected: true };
365
743
  }
366
- workspaceTaxonomySyncMeta.set(workspaceId, {
367
- updatedAt: incomingTaxonomiesUpdatedAt,
368
- hash: incomingTaxonomyHash
369
- });
744
+ return { applied: applyLegacy(true), protected: false };
745
+ }
746
+ if (ownership.activeOperation)
747
+ return { applied: false, protected: true };
748
+ const marker = input.incomingDurableRevision;
749
+ if (!marker) {
750
+ if (ownership.owned)
751
+ return { applied: false, protected: true };
752
+ return { applied: applyLegacy(true), protected: false };
370
753
  }
754
+ if (!input.incomingTaxonomyState) {
755
+ throw new Error('A durable taxonomy revision requires a complete taxonomy state.');
756
+ }
757
+ const canonicalState = serializeTaxonomyStateForSync(input.incomingTaxonomyState);
758
+ const canonicalFingerprint = fingerprintWorkspaceSyncPayload(canonicalState);
759
+ if (canonicalFingerprint !== marker.canonicalFingerprint) {
760
+ throw new Error('Taxonomy durable revision fingerprint does not match the payload.');
761
+ }
762
+ const replicated = store.applyReplicatedEntityRevision({
763
+ tenantId: input.core.getTenantId(),
764
+ workspaceId: input.workspaceId,
765
+ domain: marker.domain,
766
+ entityId: marker.entityId,
767
+ sequence: marker.sequence,
768
+ entityRevision: marker.entityRevision,
769
+ lifecycleRevision: marker.lifecycleRevision,
770
+ canonicalFingerprint,
771
+ now: input.incomingTaxonomiesUpdatedAt,
772
+ applyMutation: () => input.core.replaceTaxonomyStateForDurableSync({
773
+ workspaceId: input.workspaceId,
774
+ taxonomyState: canonicalState,
775
+ updatedAt: input.incomingTaxonomiesUpdatedAt,
776
+ }),
777
+ });
778
+ if (replicated.state === 'applied') {
779
+ notifyDurableCommit = true;
780
+ }
781
+ if (replicated.state === 'deferred') {
782
+ throw new Error('Taxonomy replication cannot defer its installed revision.');
783
+ }
784
+ return {
785
+ applied: replicated.state === 'applied',
786
+ protected: replicated.state !== 'applied',
787
+ revisionState: replicated.state,
788
+ };
789
+ },
790
+ });
791
+ if (notifyDurableCommit) {
792
+ input.workspaceTaxonomySyncMeta.set(input.workspaceId, {
793
+ updatedAt: input.incomingTaxonomiesUpdatedAt,
794
+ hash: input.incomingDurableRevision.canonicalFingerprint,
795
+ });
796
+ try {
797
+ input.core.notifyDurableTaxonomyCommitted(input.workspaceId);
798
+ }
799
+ catch { /* committed taxonomy state remains authoritative */ }
800
+ }
801
+ else if (pendingTaxonomyMeta) {
802
+ input.workspaceTaxonomySyncMeta.set(input.workspaceId, pendingTaxonomyMeta);
803
+ }
804
+ if (notifyLegacyCommit) {
805
+ try {
806
+ input.core.notifyTaxonomyStateForLegacySync(input.workspaceId);
371
807
  }
808
+ catch { /* committed taxonomy state remains authoritative */ }
372
809
  }
810
+ return result;
373
811
  }
374
812
  export function applyAiProfileAndMemberSyncChanges(input) {
375
813
  const { core, workspaceId, incomingAiProfiles, workspaceMembers, recordSyncDiagnostic, assertSyncedAiProfilesPersisted, createSyncRouteError, } = input;
@@ -384,6 +822,8 @@ export function applyAiProfileAndMemberSyncChanges(input) {
384
822
  username: profile.username,
385
823
  icon: profile.icon,
386
824
  color: profile.color,
825
+ colorSource: parseAiProfileColorSource(profile.colorSource),
826
+ colorUpdatedAt: profile.colorUpdatedAt ?? null,
387
827
  ...(Object.prototype.hasOwnProperty.call(profile, 'avatarUrl') ? { avatarUrl: profile.avatarUrl ?? null } : {}),
388
828
  ...(Object.prototype.hasOwnProperty.call(profile, 'avatarSourceUrl') ? { avatarSourceUrl: profile.avatarSourceUrl ?? null } : {}),
389
829
  ...(Object.prototype.hasOwnProperty.call(profile, 'avatarRevision') ? { avatarRevision: profile.avatarRevision ?? 0 } : {}),
@@ -441,7 +881,7 @@ export function applyAiProfileAndMemberSyncChanges(input) {
441
881
  }
442
882
  }
443
883
  export async function applyContentSyncChanges(input) {
444
- const { core, workspaceId, incomingDocuments, incomingDocumentDeletes, incomingAssets, incomingAssetDeletes, basePath, hasObjectStorageClient, hasDocumentSyncMetadataDrift, hasBinaryAssetSyncMetadataDrift, getExistingDocument, writeWorkspaceSyncDocument, deleteWorkspaceSyncDocument, writeWorkspaceSyncBinaryAsset, deleteWorkspaceSyncBinaryAsset, getExistingBinaryAsset, recordSyncDiagnostic, options, } = input;
884
+ const { core, workspaceId, incomingDocuments, incomingDocumentDeletes, incomingAssets, incomingAssetDeletes, basePath, hasObjectStorageClient, hasDocumentSyncMetadataDrift, hasBinaryAssetSyncMetadataDrift, getExistingDocument, writeWorkspaceSyncDocument, deleteWorkspaceSyncDocument, writeWorkspaceSyncBinaryAsset, deleteWorkspaceSyncBinaryAsset, getExistingBinaryAsset, recordSyncDiagnostic, options, phase = 'all', } = input;
445
885
  const contentApplyFailures = [];
446
886
  const recordContentApplyFailure = (failure) => {
447
887
  contentApplyFailures.push(failure);
@@ -456,7 +896,7 @@ export async function applyContentSyncChanges(input) {
456
896
  error.details = { failures: contentApplyFailures.slice(0, 10) };
457
897
  throw error;
458
898
  };
459
- if (incomingDocuments.length > 0) {
899
+ if (phase !== 'deletes' && incomingDocuments.length > 0) {
460
900
  for (const doc of incomingDocuments) {
461
901
  try {
462
902
  const existingDoc = core.getDocumentWatermark(workspaceId, doc.path);
@@ -474,7 +914,11 @@ export async function applyContentSyncChanges(input) {
474
914
  }
475
915
  }
476
916
  const compare = resolveSyncConflictOrdering(doc.updatedAt, existingUpdatedAt, incomingHash, existingHash);
477
- if (compare < 0)
917
+ const replacesExternalPlaceholder = metadataDrift
918
+ && existingDocFallback?.storageProvider === 'external'
919
+ && Boolean(doc.assetId && doc.assetId !== existingDocFallback.assetId)
920
+ && Date.parse(doc.updatedAt) === Date.parse(existingUpdatedAt);
921
+ if (compare < 0 && !replacesExternalPlaceholder)
478
922
  continue;
479
923
  if (compare === 0 && existingHash === incomingHash && !metadataDrift && !hasObjectStorageClient())
480
924
  continue;
@@ -500,7 +944,7 @@ export async function applyContentSyncChanges(input) {
500
944
  }
501
945
  }
502
946
  }
503
- if (incomingDocumentDeletes.size > 0) {
947
+ if (phase !== 'upserts' && incomingDocumentDeletes.size > 0) {
504
948
  for (const [docPath, deletedAt] of incomingDocumentDeletes.entries()) {
505
949
  const existingDoc = core.getDocumentWatermark(workspaceId, docPath);
506
950
  const existingUpdatedAt = String(existingDoc?.updatedAt || '').trim();
@@ -511,7 +955,7 @@ export async function applyContentSyncChanges(input) {
511
955
  deleteWorkspaceSyncDocument(basePath, docPath, workspaceId);
512
956
  }
513
957
  }
514
- if (incomingAssets.length > 0) {
958
+ if (phase !== 'deletes' && incomingAssets.length > 0) {
515
959
  for (const asset of incomingAssets) {
516
960
  try {
517
961
  const localAssetPath = path.resolve(basePath, asset.path);
@@ -554,7 +998,7 @@ export async function applyContentSyncChanges(input) {
554
998
  }
555
999
  }
556
1000
  throwIfContentApplyFailed();
557
- if (incomingAssetDeletes.size > 0) {
1001
+ if (phase !== 'upserts' && incomingAssetDeletes.size > 0) {
558
1002
  for (const [assetPath, deletedAt] of incomingAssetDeletes.entries()) {
559
1003
  const existing = getExistingBinaryAsset(assetPath, workspaceId);
560
1004
  const existingUpdatedAt = String(existing?.updatedAt || '').trim();
@@ -579,7 +1023,7 @@ export async function applyContentSyncChanges(input) {
579
1023
  }
580
1024
  }
581
1025
  export function applyCollaborationSyncChanges(input) {
582
- const { core, workspaceId, incomingDocumentReviewSessions, incomingDocumentReviewSessionDeletes, incomingDocumentReviewComments, incomingDocumentReviewCommentDeletes, incomingAnnotatedAttachmentSessions, incomingAnnotatedAttachmentSessionDeletes, recordSyncDiagnostic, createSyncRouteError, } = input;
1026
+ const { core, workspaceId, incomingDocumentReviewSessions, incomingDocumentReviewSessionDeletes, incomingDocumentReviewComments, incomingDocumentReviewCommentDeletes, incomingAnnotatedAttachmentSessions, incomingAnnotatedAttachmentSessionDeletes, incomingTaskforceAgents = new Map(), incomingAgentRoles = new Map(), incomingTaskforceAgentSkills = new Map(), incomingAgentConversations = new Map(), recordSyncDiagnostic, createSyncRouteError, } = input;
583
1027
  if (incomingDocumentReviewSessions.size > 0) {
584
1028
  for (const session of incomingDocumentReviewSessions.values()) {
585
1029
  try {
@@ -625,7 +1069,9 @@ export function applyCollaborationSyncChanges(input) {
625
1069
  }
626
1070
  }
627
1071
  if (incomingDocumentReviewComments.size > 0) {
628
- for (const comment of incomingDocumentReviewComments.values()) {
1072
+ const orderedDocumentReviewComments = Array.from(incomingDocumentReviewComments.values())
1073
+ .sort((left, right) => Number(Boolean(left.parentCommentId)) - Number(Boolean(right.parentCommentId)));
1074
+ for (const comment of orderedDocumentReviewComments) {
629
1075
  try {
630
1076
  const existingComments = core.listDocumentReviewCommentsForSync({
631
1077
  workspaceId,
@@ -633,29 +1079,84 @@ export function applyCollaborationSyncChanges(input) {
633
1079
  });
634
1080
  const existing = existingComments.find((entry) => entry.id === comment.id) || null;
635
1081
  const incomingTieBreak = createHash('sha256')
636
- .update(JSON.stringify({ body: comment.body, anchor: comment.anchor, deletedAt: comment.deletedAt }))
1082
+ .update(JSON.stringify({
1083
+ body: comment.body,
1084
+ anchor: comment.anchor,
1085
+ deletedAt: comment.deletedAt,
1086
+ parentCommentId: comment.parentCommentId,
1087
+ authorActorId: comment.authorActorId,
1088
+ updatedByActorId: comment.updatedByActorId,
1089
+ deletedByActorId: comment.deletedByActorId,
1090
+ }))
637
1091
  .digest('hex');
638
1092
  const existingTieBreak = existing
639
1093
  ? createHash('sha256')
640
- .update(JSON.stringify({ body: existing.body, anchor: existing.anchor, deletedAt: existing.deletedAt }))
1094
+ .update(JSON.stringify({
1095
+ body: existing.body,
1096
+ anchor: existing.anchor,
1097
+ deletedAt: existing.deletedAt,
1098
+ parentCommentId: existing.parentCommentId,
1099
+ authorActorId: existing.authorActorId,
1100
+ updatedByActorId: existing.updatedByActorId,
1101
+ deletedByActorId: existing.deletedByActorId,
1102
+ }))
641
1103
  .digest('hex')
642
1104
  : '';
643
- const compare = resolveSyncConflictOrdering(comment.updatedAt, String(existing?.updatedAt || '').trim(), incomingTieBreak, existingTieBreak);
644
- if (compare < 0)
1105
+ const metadataCompare = resolveSyncConflictOrdering(comment.updatedAt, String(existing?.updatedAt || '').trim(), incomingTieBreak, existingTieBreak);
1106
+ const incomingLifecycleTieBreak = createHash('sha256')
1107
+ .update(JSON.stringify({
1108
+ threadStatus: comment.threadStatus,
1109
+ resolvedAt: comment.resolvedAt,
1110
+ resolvedByActorId: comment.resolvedByActorId,
1111
+ }))
1112
+ .digest('hex');
1113
+ const existingLifecycleTieBreak = existing
1114
+ ? createHash('sha256')
1115
+ .update(JSON.stringify({
1116
+ threadStatus: existing.threadStatus,
1117
+ resolvedAt: existing.resolvedAt,
1118
+ resolvedByActorId: existing.resolvedByActorId,
1119
+ }))
1120
+ .digest('hex')
1121
+ : '';
1122
+ const lifecycleCompare = comment.threadStatusUpdatedAt === undefined
1123
+ ? -1
1124
+ : resolveSyncConflictOrdering(String(comment.threadStatusUpdatedAt || '').trim(), String(existing?.threadStatusUpdatedAt || '').trim(), incomingLifecycleTieBreak, existingLifecycleTieBreak);
1125
+ if (metadataCompare < 0 && lifecycleCompare < 0)
645
1126
  continue;
646
1127
  core.upsertDocumentReviewCommentForSync({
647
1128
  id: comment.id,
648
1129
  tenantId: core.getTenantId(),
649
1130
  workspaceId,
650
- sessionId: comment.sessionId,
651
- body: comment.body,
652
- anchor: comment.anchor,
653
- order: comment.order,
654
- authorActorId: comment.authorActorId,
655
- createdAt: comment.createdAt,
656
- updatedAt: comment.updatedAt,
657
- deletedAt: comment.deletedAt,
1131
+ sessionId: metadataCompare >= 0 ? comment.sessionId : existing.sessionId,
1132
+ body: metadataCompare >= 0 ? comment.body : existing.body,
1133
+ anchor: (metadataCompare >= 0 ? comment.anchor : existing.anchor),
1134
+ order: metadataCompare >= 0 ? comment.order : existing.order,
1135
+ authorActorId: metadataCompare >= 0 ? comment.authorActorId : existing.authorActorId,
1136
+ updatedByActorId: metadataCompare >= 0 ? comment.updatedByActorId : existing.updatedByActorId,
1137
+ deletedByActorId: metadataCompare >= 0 ? comment.deletedByActorId : existing.deletedByActorId,
1138
+ parentCommentId: metadataCompare >= 0 ? comment.parentCommentId : existing.parentCommentId,
1139
+ threadStatus: lifecycleCompare >= 0 ? comment.threadStatus : undefined,
1140
+ threadStatusUpdatedAt: lifecycleCompare >= 0 ? comment.threadStatusUpdatedAt : undefined,
1141
+ resolvedAt: lifecycleCompare >= 0 ? comment.resolvedAt : undefined,
1142
+ resolvedByActorId: lifecycleCompare >= 0 ? comment.resolvedByActorId : undefined,
1143
+ createdAt: metadataCompare >= 0 ? comment.createdAt : existing.createdAt,
1144
+ updatedAt: metadataCompare >= 0 ? comment.updatedAt : existing.updatedAt,
1145
+ deletedAt: metadataCompare >= 0 ? comment.deletedAt : existing.deletedAt,
658
1146
  });
1147
+ if (comment.parentCommentId) {
1148
+ const rootExists = core.listDocumentReviewCommentsForSync({
1149
+ workspaceId,
1150
+ includeDeleted: true,
1151
+ }).some((entry) => entry.id === comment.parentCommentId && !entry.deletedAt && !entry.parentCommentId);
1152
+ if (!rootExists) {
1153
+ recordSyncDiagnostic(workspaceId, 'apply', 'Retained document review reply awaiting its root comment.', {
1154
+ source: 'apply.documentReviewCommentOrphan',
1155
+ commentId: comment.id,
1156
+ parentCommentId: comment.parentCommentId,
1157
+ });
1158
+ }
1159
+ }
659
1160
  }
660
1161
  catch (error) {
661
1162
  recordSyncDiagnostic(workspaceId, 'apply', 'Failed to upsert document review comment during sync apply.', {
@@ -693,7 +1194,8 @@ export function applyCollaborationSyncChanges(input) {
693
1194
  }
694
1195
  }
695
1196
  if (incomingDocumentReviewCommentDeletes.size > 0) {
696
- for (const [commentId, deletedAt] of incomingDocumentReviewCommentDeletes.entries()) {
1197
+ for (const [commentId, deletion] of incomingDocumentReviewCommentDeletes.entries()) {
1198
+ const { deletedAt, deletedByActorId } = deletion;
697
1199
  try {
698
1200
  const existing = core.listDocumentReviewCommentsForSync({
699
1201
  workspaceId,
@@ -702,7 +1204,12 @@ export function applyCollaborationSyncChanges(input) {
702
1204
  const compare = resolveSyncConflictOrdering(deletedAt, String(existing?.updatedAt || '').trim(), `delete:${commentId}`, String(existing?.id || '').trim());
703
1205
  if (existing && compare < 0)
704
1206
  continue;
705
- core.deleteDocumentReviewCommentForSync({ workspaceId, commentId, deletedAt });
1207
+ core.deleteDocumentReviewCommentForSync({
1208
+ workspaceId,
1209
+ commentId,
1210
+ deletedAt,
1211
+ deletedByActorId,
1212
+ });
706
1213
  }
707
1214
  catch (error) {
708
1215
  recordSyncDiagnostic(workspaceId, 'apply', 'Failed to delete document review comment during sync apply.', {
@@ -782,6 +1289,232 @@ export function applyCollaborationSyncChanges(input) {
782
1289
  }
783
1290
  }
784
1291
  }
1292
+ if (incomingTaskforceAgents.size > 0) {
1293
+ const agentStore = new TaskforceAgentStore(core.getDatabaseAdapter(), core.getTenantId());
1294
+ for (const agent of incomingTaskforceAgents.values()) {
1295
+ try {
1296
+ const existing = agentStore.getForSync(workspaceId, agent.id);
1297
+ const incomingTieBreak = createHash('sha256')
1298
+ .update(JSON.stringify({
1299
+ definition: agent.definition,
1300
+ definitionRevision: agent.definitionRevision,
1301
+ definitionHash: agent.definitionHash,
1302
+ lifecycleStatus: agent.lifecycleStatus,
1303
+ managedProfileId: agent.managedProfileId,
1304
+ name: agent.name,
1305
+ modelProvider: agent.modelProvider,
1306
+ providerKey: agent.providerKey,
1307
+ modelKey: agent.modelKey,
1308
+ modelTier: agent.modelTier,
1309
+ systemPrompt: agent.systemPrompt,
1310
+ enabled: agent.enabled,
1311
+ deletedAt: agent.deletedAt ?? null,
1312
+ }))
1313
+ .digest('hex');
1314
+ const existingTieBreak = existing
1315
+ ? createHash('sha256')
1316
+ .update(JSON.stringify({
1317
+ definition: existing.definitionValue,
1318
+ definitionRevision: existing.definitionRevision,
1319
+ definitionHash: existing.definitionHash,
1320
+ lifecycleStatus: existing.lifecycleStatus,
1321
+ managedProfileId: existing.managedProfileId,
1322
+ name: existing.name,
1323
+ modelProvider: existing.modelProvider,
1324
+ providerKey: existing.providerKey,
1325
+ modelKey: existing.modelKey,
1326
+ modelTier: existing.modelTier,
1327
+ systemPrompt: existing.systemPrompt,
1328
+ enabled: existing.enabled,
1329
+ deletedAt: existing.deletedAt ?? null,
1330
+ }))
1331
+ .digest('hex')
1332
+ : '';
1333
+ const compare = resolveSyncConflictOrdering(agent.deletedAt || agent.updatedAt, String(existing?.deletedAt || existing?.updatedAt || '').trim(), incomingTieBreak, existingTieBreak);
1334
+ if (compare < 0)
1335
+ continue;
1336
+ agentStore.upsertForSync({
1337
+ id: agent.id,
1338
+ workspaceId,
1339
+ ...(Object.prototype.hasOwnProperty.call(agent, 'definition') ? {
1340
+ definition: agent.definition,
1341
+ definitionRevision: agent.definitionRevision,
1342
+ definitionHash: agent.definitionHash,
1343
+ lifecycleStatus: agent.lifecycleStatus,
1344
+ managedProfileId: agent.managedProfileId,
1345
+ } : {}),
1346
+ name: agent.name,
1347
+ modelProvider: agent.modelProvider,
1348
+ providerKey: agent.providerKey,
1349
+ modelKey: agent.modelKey,
1350
+ modelTier: agent.modelTier,
1351
+ systemPrompt: agent.systemPrompt,
1352
+ enabled: agent.enabled,
1353
+ createdByUserId: agent.createdByUserId,
1354
+ updatedByUserId: agent.updatedByUserId,
1355
+ createdAt: agent.createdAt,
1356
+ updatedAt: agent.updatedAt,
1357
+ deletedAt: agent.deletedAt,
1358
+ });
1359
+ }
1360
+ catch (error) {
1361
+ const syncError = error;
1362
+ const rejectionCode = String(syncError?.code || '').trim();
1363
+ const rejectedCanonicalPayload = (rejectionCode === 'TASKFORCE_AGENT_SYNC_HASH_MISMATCH'
1364
+ || rejectionCode === 'TASKFORCE_AGENT_SYNC_INVALID_ENVELOPE'
1365
+ || rejectionCode === 'TASKFORCE_AGENT_SYNC_INVALID_DEFINITION'
1366
+ || rejectionCode === 'TASKFORCE_AGENT_SYNC_LEGACY_PROJECTION_REJECTED');
1367
+ const details = {
1368
+ source: 'apply.taskforceAgentUpsert',
1369
+ agentId: agent.id,
1370
+ error: String(error?.message || error || ''),
1371
+ errorCode: String(error?.code || '').trim() || null
1372
+ };
1373
+ recordSyncDiagnostic(workspaceId, 'apply', 'Failed to upsert Taskforce Agent during sync apply.', details);
1374
+ throw createSyncRouteError(`Failed to persist Taskforce Agent ${agent.id} during sync apply: ${String(error?.message || error || 'Unknown error')}`, details, {
1375
+ code: rejectedCanonicalPayload ? rejectionCode : 'TASKFORCE_AGENT_SYNC_APPLY_FAILED',
1376
+ statusCode: rejectedCanonicalPayload ? 409 : 500,
1377
+ });
1378
+ }
1379
+ }
1380
+ }
1381
+ if (incomingAgentRoles.size > 0) {
1382
+ const roleStore = new AgentRoleStore(core.getDatabaseAdapter(), core.getTenantId());
1383
+ for (const role of incomingAgentRoles.values()) {
1384
+ try {
1385
+ const existing = roleStore.get(workspaceId, role.id, { includeDeleted: true });
1386
+ const incomingTieBreak = createHash('sha256')
1387
+ .update(JSON.stringify({
1388
+ lifecycleStatus: role.lifecycleStatus,
1389
+ currentRevision: role.currentRevision,
1390
+ currentContentHash: role.currentContentHash,
1391
+ revisions: role.revisions,
1392
+ deletedAt: role.deletedAt,
1393
+ }))
1394
+ .digest('hex');
1395
+ const existingSnapshot = existing
1396
+ ? roleStore.listForSync(workspaceId).find((entry) => entry.id === role.id)
1397
+ : null;
1398
+ const existingTieBreak = existingSnapshot
1399
+ ? createHash('sha256')
1400
+ .update(JSON.stringify({
1401
+ lifecycleStatus: existingSnapshot.lifecycleStatus,
1402
+ currentRevision: existingSnapshot.currentRevision,
1403
+ currentContentHash: existingSnapshot.currentContentHash,
1404
+ revisions: existingSnapshot.revisions,
1405
+ deletedAt: existingSnapshot.deletedAt,
1406
+ }))
1407
+ .digest('hex')
1408
+ : '';
1409
+ const compare = resolveSyncConflictOrdering(role.deletedAt || role.updatedAt, String(existing?.deletedAt || existing?.updatedAt || '').trim(), incomingTieBreak, existingTieBreak);
1410
+ if (compare < 0)
1411
+ continue;
1412
+ roleStore.upsertForSync(role);
1413
+ }
1414
+ catch (error) {
1415
+ const domainCode = String(error?.code || '').trim();
1416
+ const details = {
1417
+ source: 'apply.agentRoleUpsert',
1418
+ roleId: role.id,
1419
+ error: String(error?.message || error || ''),
1420
+ errorCode: domainCode || null,
1421
+ };
1422
+ recordSyncDiagnostic(workspaceId, 'apply', 'Failed to upsert Agent Role during sync apply.', details);
1423
+ throw createSyncRouteError(`Failed to persist Agent Role ${role.id} during sync apply: ${String(error?.message || error || 'Unknown error')}`, details, { code: domainCode || 'AGENT_ROLE_SYNC_APPLY_FAILED', statusCode: 409 });
1424
+ }
1425
+ }
1426
+ }
1427
+ if (incomingTaskforceAgentSkills.size > 0) {
1428
+ const skillStore = new TaskforceAgentSkillStore(core.getDatabaseAdapter(), core.getTenantId());
1429
+ for (const skill of incomingTaskforceAgentSkills.values()) {
1430
+ try {
1431
+ skillStore.upsertForSync(skill);
1432
+ }
1433
+ catch (error) {
1434
+ const syncError = error;
1435
+ const rejectionCode = String(syncError?.code || '').trim();
1436
+ const rejectedCanonicalPayload = rejectionCode.startsWith('TASKFORCE_AGENT_SKILL_SYNC_');
1437
+ const details = {
1438
+ source: 'apply.taskforceAgentSkillUpsert',
1439
+ skillId: skill.id,
1440
+ error: String(error?.message || error || ''),
1441
+ errorCode: rejectionCode || null
1442
+ };
1443
+ recordSyncDiagnostic(workspaceId, 'apply', 'Failed to upsert Taskforce Agent Skill during sync apply.', details);
1444
+ throw createSyncRouteError(`Failed to persist Taskforce Agent Skill ${skill.id} during sync apply: ${String(error?.message || error || 'Unknown error')}`, details, {
1445
+ code: rejectedCanonicalPayload ? rejectionCode : 'TASKFORCE_AGENT_SKILL_SYNC_APPLY_FAILED',
1446
+ statusCode: rejectedCanonicalPayload ? 409 : 500,
1447
+ });
1448
+ }
1449
+ }
1450
+ }
1451
+ if (incomingAgentConversations.size > 0) {
1452
+ const conversationStore = new TaskforceAgentConversationStore(core.getDatabaseAdapter(), core.getTenantId());
1453
+ for (const conversation of incomingAgentConversations.values()) {
1454
+ try {
1455
+ const existing = conversationStore.getByIdForSync(workspaceId, conversation.id);
1456
+ const incomingTieBreak = createHash('sha256')
1457
+ .update(JSON.stringify({
1458
+ agentId: conversation.agentId,
1459
+ taskId: conversation.taskId,
1460
+ title: conversation.title,
1461
+ messages: conversation.messages,
1462
+ modelProvider: conversation.modelProvider,
1463
+ modelId: conversation.modelId,
1464
+ usage: conversation.usage,
1465
+ latencyMs: conversation.latencyMs,
1466
+ deletedAt: conversation.deletedAt ?? null,
1467
+ }))
1468
+ .digest('hex');
1469
+ const existingTieBreak = existing
1470
+ ? createHash('sha256')
1471
+ .update(JSON.stringify({
1472
+ agentId: existing.agentId,
1473
+ taskId: existing.taskId,
1474
+ title: existing.title,
1475
+ messages: existing.messages,
1476
+ modelProvider: existing.modelProvider,
1477
+ modelId: existing.modelId,
1478
+ usage: existing.usage,
1479
+ latencyMs: existing.latencyMs,
1480
+ deletedAt: existing.deletedAt ?? null,
1481
+ }))
1482
+ .digest('hex')
1483
+ : '';
1484
+ const compare = resolveSyncConflictOrdering(conversation.deletedAt || conversation.updatedAt, String(existing?.deletedAt || existing?.updatedAt || '').trim(), incomingTieBreak, existingTieBreak);
1485
+ if (compare < 0)
1486
+ continue;
1487
+ conversationStore.upsertForSync({
1488
+ id: conversation.id,
1489
+ workspaceId,
1490
+ agentId: conversation.agentId,
1491
+ taskId: conversation.taskId,
1492
+ title: conversation.title,
1493
+ messages: conversation.messages,
1494
+ modelProvider: conversation.modelProvider,
1495
+ modelId: conversation.modelId,
1496
+ usage: conversation.usage,
1497
+ latencyMs: conversation.latencyMs,
1498
+ createdByUserId: conversation.createdByUserId,
1499
+ updatedByUserId: conversation.updatedByUserId,
1500
+ createdAt: conversation.createdAt,
1501
+ updatedAt: conversation.updatedAt,
1502
+ deletedAt: conversation.deletedAt,
1503
+ });
1504
+ }
1505
+ catch (error) {
1506
+ const details = {
1507
+ source: 'apply.agentConversationUpsert',
1508
+ conversationId: conversation.id,
1509
+ agentId: conversation.agentId,
1510
+ error: String(error?.message || error || ''),
1511
+ errorCode: String(error?.code || '').trim() || null
1512
+ };
1513
+ recordSyncDiagnostic(workspaceId, 'apply', 'Failed to upsert Taskforce Agent conversation during sync apply.', details);
1514
+ throw createSyncRouteError(`Failed to persist Taskforce Agent conversation ${conversation.id} during sync apply: ${String(error?.message || error || 'Unknown error')}`, details, { code: 'AGENT_CONVERSATION_SYNC_APPLY_FAILED', statusCode: 500 });
1515
+ }
1516
+ }
1517
+ }
785
1518
  }
786
1519
  export function applyTaskActivitySyncChanges(input) {
787
1520
  const { core, workspaceId, incomingTaskEvents, recordSyncDiagnostic, createSyncRouteError, } = input;
@@ -811,6 +1544,11 @@ export function applyTaskActivitySyncChanges(input) {
811
1544
  workspaceId,
812
1545
  eventId: event.id,
813
1546
  });
1547
+ // V3 installs the authoritative snapshot through its acknowledged
1548
+ // transaction. A delayed legacy event with the same operation ID
1549
+ // must not replace it based on client clock or payload tie-breaks.
1550
+ if (existing && isTaskMetadataActivityEventId(event.id))
1551
+ continue;
814
1552
  const incomingTieBreak = createHash('sha256')
815
1553
  .update(JSON.stringify({
816
1554
  entityType,