@taskforcehq/taskforce 0.3.327 → 0.3.329

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (360) hide show
  1. package/dist/Taskforce.module.css +257 -87
  2. package/dist/TaskforceCore.js +237 -230
  3. package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.js +1 -1
  4. package/dist/cli.js +34 -0
  5. package/dist/cliCloudTargetGuard.d.ts +5 -0
  6. package/dist/cliCloudTargetGuard.js +11 -0
  7. package/dist/components/activity/EntityActivityTimeline.js +15 -5
  8. package/dist/components/context/AttachmentPreviewHost.js +1 -1
  9. package/dist/components/context/ContextAttachmentManager.d.ts +3 -0
  10. package/dist/components/context/ContextAttachmentManager.js +116 -20
  11. package/dist/components/features/AnnotatedAttachmentWorkspace.js +24 -8
  12. package/dist/components/features/TaskSettings.d.ts +12 -1
  13. package/dist/components/features/TaskSettings.js +147 -40
  14. package/dist/components/features/agentCapabilities/AgentCapabilitiesPrototype.d.ts +1 -1
  15. package/dist/components/features/planning/PlanningEntitySummary.d.ts +3 -1
  16. package/dist/components/features/planning/PlanningEntitySummary.js +3 -2
  17. package/dist/components/features/planning/PlanningLinkPicker.d.ts +3 -1
  18. package/dist/components/features/planning/PlanningLinkPicker.js +5 -3
  19. package/dist/components/features/planning/PlanningModule.js +28 -14
  20. package/dist/components/features/planning/PlanningTaskOrderList.d.ts +1 -1
  21. package/dist/components/features/planning/PlanningTaskOrderList.js +17 -6
  22. package/dist/components/features/planning/PlanningVisualIdentity.d.ts +14 -0
  23. package/dist/components/features/planning/PlanningVisualIdentity.js +106 -0
  24. package/dist/components/features/planning/planningTaskArrangement.d.ts +1 -0
  25. package/dist/components/features/planning/planningTaskArrangement.js +5 -5
  26. package/dist/components/features/planning/planningWorkspaceModel.d.ts +11 -0
  27. package/dist/components/features/taskforceAgentEditorModel.js +3 -1
  28. package/dist/components/task/TaskActionHeader.d.ts +2 -1
  29. package/dist/components/task/TaskActionHeader.js +2 -2
  30. package/dist/components/task/TaskCard.d.ts +5 -0
  31. package/dist/components/task/TaskCard.js +101 -13
  32. package/dist/components/task/TaskContextUpload.d.ts +3 -0
  33. package/dist/components/task/TaskContextUpload.js +2 -2
  34. package/dist/components/task/TaskForm.d.ts +4 -0
  35. package/dist/components/task/TaskForm.js +32 -7
  36. package/dist/components/task/TaskImageReviews.js +28 -19
  37. package/dist/components/task/TaskKanban.d.ts +6 -1
  38. package/dist/components/task/TaskKanban.js +152 -6
  39. package/dist/components/task/TaskList.d.ts +5 -0
  40. package/dist/components/task/TaskList.js +3 -3
  41. package/dist/components/task/TaskStatusActions.js +11 -2
  42. package/dist/components/task/TaskWorkstreamPicker.js +2 -1
  43. package/dist/components/ui/DocumentTypeIcon.d.ts +7 -0
  44. package/dist/components/ui/DocumentTypeIcon.js +8 -0
  45. package/dist/components/ui/PasswordInput.d.ts +6 -0
  46. package/dist/components/ui/PasswordInput.js +11 -0
  47. package/dist/components/ui/TaxonomyDropdown.d.ts +9 -1
  48. package/dist/components/ui/TaxonomyDropdown.js +30 -3
  49. package/dist/components/ui/TopNoticeLayer.js +1 -1
  50. package/dist/components/views/AppShellHeader.js +32 -11
  51. package/dist/components/views/PlanComparisonPage.js +12 -0
  52. package/dist/components/views/StandaloneLayout.js +68 -39
  53. package/dist/components/views/WidgetView.js +10 -7
  54. package/dist/components/views/panels/PlanningDrawer.d.ts +7 -1
  55. package/dist/components/views/panels/PlanningDrawer.js +51 -54
  56. package/dist/components/views/standalone/modals/AccountSettingsModal.js +26 -17
  57. package/dist/config/envSchema.js +13 -0
  58. package/dist/config/localServiceCloudTarget.d.ts +10 -0
  59. package/dist/config/localServiceCloudTarget.js +76 -0
  60. package/dist/config/localServiceRuntimeContract.d.ts +13 -0
  61. package/dist/config/localServiceRuntimeContract.js +135 -0
  62. package/dist/core/AiProfileService.d.ts +1 -0
  63. package/dist/core/AiProfileService.js +48 -9
  64. package/dist/core/AttachmentLinkService.js +7 -4
  65. package/dist/core/DeletedTaskLifecycleService.d.ts +5 -0
  66. package/dist/core/DeletedTaskLifecycleService.js +55 -3
  67. package/dist/core/McpTokenService.d.ts +4 -0
  68. package/dist/core/McpTokenService.js +52 -0
  69. package/dist/core/TaskAttachmentLinksDurableMutationService.d.ts +8 -2
  70. package/dist/core/TaskAttachmentLinksDurableMutationService.js +51 -18
  71. package/dist/core/Taskforce.d.ts +124 -2
  72. package/dist/core/Taskforce.js +1175 -87
  73. package/dist/core/types.d.ts +8 -1
  74. package/dist/documentReviews/DocumentReviewCommentStore.d.ts +11 -0
  75. package/dist/documentReviews/DocumentReviewCommentStore.js +35 -2
  76. package/dist/documentReviews/service.d.ts +4 -0
  77. package/dist/documentReviews/service.js +141 -46
  78. package/dist/hooks/sync/useDurableLocalOutboxDrain.d.ts +1 -1
  79. package/dist/hooks/sync/useDurableTaskCreateMutation.js +1 -1
  80. package/dist/hooks/sync/useDurableTaskMetadataMutation.d.ts +1 -0
  81. package/dist/hooks/sync/useDurableTaskMetadataMutation.js +1 -0
  82. package/dist/hooks/sync/useDurableTaskStatusMutation.d.ts +1 -0
  83. package/dist/hooks/tasks/taskHttpMutation.js +1 -0
  84. package/dist/hooks/tasks/useCloudTaskSearch.d.ts +12 -0
  85. package/dist/hooks/tasks/useCloudTaskSearch.js +71 -0
  86. package/dist/hooks/tasks/useTaskDescriptionImageDraftRecovery.d.ts +16 -0
  87. package/dist/hooks/tasks/useTaskDescriptionImageDraftRecovery.js +197 -0
  88. package/dist/hooks/tasks/useTaskEditorNavigation.d.ts +16 -3
  89. package/dist/hooks/tasks/useTaskEditorNavigation.js +72 -13
  90. package/dist/hooks/tasks/useTaskFormActions.d.ts +9 -0
  91. package/dist/hooks/tasks/useTaskFormActions.js +96 -17
  92. package/dist/hooks/ui/useSettingsModel.d.ts +24 -2
  93. package/dist/hooks/ui/useSettingsModel.js +13 -2
  94. package/dist/hooks/ui/useSettingsPersistence.d.ts +12 -1
  95. package/dist/hooks/ui/useSettingsPersistence.js +74 -47
  96. package/dist/hooks/useFilterSort.d.ts +7 -3
  97. package/dist/hooks/useFilterSort.js +15 -5
  98. package/dist/hooks/useTaskData.d.ts +10 -1
  99. package/dist/hooks/useTaskData.js +216 -7
  100. package/dist/hooks/useTaskMutations.d.ts +10 -2
  101. package/dist/hooks/useTaskMutations.js +223 -43
  102. package/dist/hooks/useTaskforce.d.ts +94 -57
  103. package/dist/hooks/useTaskforce.js +428 -16
  104. package/dist/hooks/useUiNotice.d.ts +4 -0
  105. package/dist/hooks/useUiNotice.js +4 -0
  106. package/dist/mcp/adminWorkspaceRegistrar.js +3 -3
  107. package/dist/mcp/canonicalAssetHelpers.d.ts +13 -0
  108. package/dist/mcp/canonicalAssetHelpers.js +39 -5
  109. package/dist/mcp/collaborationRegistrar.js +15 -13
  110. package/dist/mcp/documentAssetRegistrar.js +60 -44
  111. package/dist/mcp/documentHelpers.d.ts +1 -0
  112. package/dist/mcp/documentHelpers.js +7 -3
  113. package/dist/mcp/localServiceProxy.js +4 -1
  114. package/dist/mcp/runtime.d.ts +16 -0
  115. package/dist/mcp/runtime.js +735 -210
  116. package/dist/mcp/taskAttachmentCommandAdapter.d.ts +2 -0
  117. package/dist/mcp/taskAttachmentCommandAdapter.js +14 -8
  118. package/dist/mcp/taskPlanningRegistrar.js +78 -67
  119. package/dist/mcp/toolCallCompatibility.js +38 -1
  120. package/dist/mcp/toolCatalog.d.ts +1 -0
  121. package/dist/mcp/toolRegistry.js +2 -2
  122. package/dist/migrations/taskSchemaMigrations.js +47 -0
  123. package/dist/runtime/appGateDefinitions.d.ts +30 -6
  124. package/dist/runtime/appGateDefinitions.js +6 -6
  125. package/dist/runtime/appGates.d.ts +12 -13
  126. package/dist/runtime/appGates.js +29 -13
  127. package/dist/runtime/nodeAppGates.d.ts +8 -0
  128. package/dist/runtime/nodeAppGates.js +27 -0
  129. package/dist/server/appAccess.d.ts +12 -0
  130. package/dist/server/appAccess.js +21 -0
  131. package/dist/server/authorizedWorkspaceAccess.d.ts +12 -0
  132. package/dist/server/authorizedWorkspaceAccess.js +40 -0
  133. package/dist/server/cloudCollectionRead.d.ts +25 -0
  134. package/dist/server/cloudCollectionRead.js +120 -0
  135. package/dist/server/cloudCollectionReadPool.d.ts +52 -0
  136. package/dist/server/cloudCollectionReadPool.js +140 -0
  137. package/dist/server/cloudCollectionReadWorker.d.ts +1 -0
  138. package/dist/server/cloudCollectionReadWorker.js +36 -0
  139. package/dist/server/index.d.ts +6 -11
  140. package/dist/server/index.js +67 -42
  141. package/dist/server/localServiceLease.d.ts +6 -0
  142. package/dist/server/localServiceLease.js +17 -1
  143. package/dist/server/localWorkspaceSyncServerRuntime.js +10 -3
  144. package/dist/server/rateLimit.d.ts +1 -0
  145. package/dist/server/rateLimit.js +4 -0
  146. package/dist/server/realtimeSyncWs.js +36 -12
  147. package/dist/server/routes/admin.js +1 -0
  148. package/dist/server/routes/agentRoles.js +3 -2
  149. package/dist/server/routes/agentSkills.js +3 -2
  150. package/dist/server/routes/agents.js +118 -16
  151. package/dist/server/routes/annotatedAttachments.js +3 -2
  152. package/dist/server/routes/auth.js +3 -1
  153. package/dist/server/routes/documents.d.ts +5 -2
  154. package/dist/server/routes/documents.js +160 -13
  155. package/dist/server/routes/durableTaskHttpRouters.d.ts +11 -2
  156. package/dist/server/routes/durableTaskHttpRouters.js +2 -2
  157. package/dist/server/routes/localService.js +4 -0
  158. package/dist/server/routes/primitives.d.ts +4 -0
  159. package/dist/server/routes/shared.d.ts +24 -0
  160. package/dist/server/routes/shared.js +114 -18
  161. package/dist/server/routes/sync.js +22 -0
  162. package/dist/server/routes/syncAuxRoutes.js +5 -2
  163. package/dist/server/routes/syncPullApplyRoutes.js +23 -4
  164. package/dist/server/routes/syncV3FeedRoutes.js +22 -18
  165. package/dist/server/routes/syncV3LocalCaptureRoutes.js +48 -4
  166. package/dist/server/routes/syncV3LocalFeedApplyRoutes.d.ts +1 -0
  167. package/dist/server/routes/syncV3LocalFeedApplyRoutes.js +26 -0
  168. package/dist/server/routes/syncV3OperationRoutes.js +27 -2
  169. package/dist/server/routes/tasks.js +299 -97
  170. package/dist/server/routes/workspaces.js +43 -1
  171. package/dist/server/routes.js +35 -7
  172. package/dist/server/workspaceDeletionAdmission.d.ts +23 -0
  173. package/dist/server/workspaceDeletionAdmission.js +50 -0
  174. package/dist/service/localServiceCli.js +52 -25
  175. package/dist/service/localServiceClientLifecycle.js +93 -6
  176. package/dist/services/codexAppServerModelGateway.d.ts +112 -0
  177. package/dist/services/codexAppServerModelGateway.js +438 -0
  178. package/dist/services/taskforceAgentMcpBridge.d.ts +7 -1
  179. package/dist/services/taskforceAgentMcpBridge.js +23 -3
  180. package/dist/shared/planningIdentity.d.ts +20 -0
  181. package/dist/shared/planningIdentity.js +79 -0
  182. package/dist/shared/taskforceAgentDefinition.js +7 -1
  183. package/dist/shared/taskforceAgentModels.d.ts +1 -0
  184. package/dist/shared/taskforceAgentModels.js +30 -1
  185. package/dist/storage/postgresAdapter.d.ts +20 -3
  186. package/dist/storage/postgresAdapter.js +110 -14
  187. package/dist/storage/postgresRequestDiagnostics.d.ts +8 -0
  188. package/dist/storage/postgresRequestDiagnostics.js +24 -0
  189. package/dist/storage/postgresWorker.js +13 -4
  190. package/dist/storage/postgresWorkerProtocol.d.ts +29 -0
  191. package/dist/storage/postgresWorkerProtocol.js +30 -0
  192. package/dist/storage/workspaceAssetStore.d.ts +32 -0
  193. package/dist/storage/workspaceAssetStore.js +70 -0
  194. package/dist/sync/cloudSyncApi.d.ts +4 -1
  195. package/dist/sync/cloudSyncApi.js +7 -2
  196. package/dist/sync/contentSyncState.d.ts +1 -1
  197. package/dist/sync/coordinator/localSyncExecutionPermitStore.d.ts +17 -0
  198. package/dist/sync/coordinator/localSyncExecutionPermitStore.js +77 -23
  199. package/dist/sync/coordinator/localWorkspaceSyncRunner.js +6 -2
  200. package/dist/sync/coordinator/workspaceSyncTransportGateway.js +4 -2
  201. package/dist/sync/engine/workspaceSyncEngineBrowserGatewayRemoteServices.js +20 -2
  202. package/dist/sync/engine/workspaceSyncEngineLocalServices.d.ts +4 -0
  203. package/dist/sync/engine/workspaceSyncEngineLocalServices.js +11 -0
  204. package/dist/sync/engine/workspaceSyncEngineRemoteServices.d.ts +16 -0
  205. package/dist/sync/engine/workspaceSyncEngineRemoteServices.js +2 -1
  206. package/dist/sync/engine/workspaceSyncEngineServerRemoteServices.d.ts +1 -1
  207. package/dist/sync/engine/workspaceSyncEngineServerRemoteServices.js +46 -4
  208. package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.d.ts +3 -1
  209. package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.js +51 -11
  210. package/dist/sync/engine/workspaceSyncEngineTransfers.d.ts +1 -1
  211. package/dist/sync/engine/workspaceSyncEngineTransfers.js +8 -3
  212. package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.js +2 -0
  213. package/dist/sync/syncApplyHandlers.d.ts +3 -1
  214. package/dist/sync/syncApplyHandlers.js +29 -0
  215. package/dist/sync/syncService.d.ts +2 -0
  216. package/dist/sync/syncService.js +13 -1
  217. package/dist/sync/taskSyncPayload.d.ts +1 -0
  218. package/dist/sync/taskSyncPayload.js +6 -0
  219. package/dist/sync/v3/combinedFeedCapability.js +4 -0
  220. package/dist/sync/v3/durableTaskAttachmentLinksMutationRouter.d.ts +3 -0
  221. package/dist/sync/v3/durableTaskAttachmentLinksMutationRouter.js +31 -3
  222. package/dist/sync/v3/durableTaskChecklistMutationRouter.d.ts +2 -0
  223. package/dist/sync/v3/durableTaskChecklistMutationRouter.js +4 -0
  224. package/dist/sync/v3/durableTaskHttpBulkMutationRouter.d.ts +1 -0
  225. package/dist/sync/v3/durableTaskHttpBulkMutationRouter.js +47 -12
  226. package/dist/sync/v3/durableTaskHttpRootMutationRouter.d.ts +5 -3
  227. package/dist/sync/v3/durableTaskHttpRootMutationRouter.js +27 -2
  228. package/dist/sync/v3/localInitiativeOutboxService.js +4 -2
  229. package/dist/sync/v3/localOutboxDispatcher.js +5 -1
  230. package/dist/sync/v3/localTaskAttachmentLinksOutboxHandler.js +12 -2
  231. package/dist/sync/v3/localTaskAttachmentLinksOutboxService.d.ts +3 -0
  232. package/dist/sync/v3/localTaskAttachmentLinksOutboxService.js +62 -10
  233. package/dist/sync/v3/localTaskCreateOutboxService.js +15 -6
  234. package/dist/sync/v3/localTaskMetadataClient.d.ts +1 -0
  235. package/dist/sync/v3/localTaskMetadataClient.js +1 -0
  236. package/dist/sync/v3/localTaskMetadataOutboxHandler.js +5 -1
  237. package/dist/sync/v3/localTaskMetadataOutboxService.d.ts +2 -0
  238. package/dist/sync/v3/localTaskMetadataOutboxService.js +7 -0
  239. package/dist/sync/v3/localTaskRestoreOutboxService.js +14 -6
  240. package/dist/sync/v3/localTaskStatusClient.d.ts +1 -0
  241. package/dist/sync/v3/localTaskStatusClient.js +6 -1
  242. package/dist/sync/v3/localTaskStatusOutboxService.d.ts +2 -0
  243. package/dist/sync/v3/localTaskStatusOutboxService.js +54 -13
  244. package/dist/sync/v3/localWorkstreamOutboxService.js +4 -2
  245. package/dist/sync/v3/syncDurabilityStore.d.ts +15 -0
  246. package/dist/sync/v3/syncDurabilityStore.js +201 -43
  247. package/dist/sync/v3/taskAttachmentLinksMutationService.d.ts +7 -4
  248. package/dist/sync/v3/taskAttachmentLinksMutationService.js +37 -12
  249. package/dist/sync/v3/taskChecklistMutationService.d.ts +4 -2
  250. package/dist/sync/v3/taskChecklistMutationService.js +4 -0
  251. package/dist/sync/v3/taskCreateMutationService.d.ts +2 -2
  252. package/dist/sync/v3/taskCreateMutationService.js +7 -4
  253. package/dist/sync/v3/taskMetadataCoexistence.js +4 -0
  254. package/dist/sync/v3/taskMetadataMutationService.d.ts +3 -0
  255. package/dist/sync/v3/taskMetadataMutationService.js +4 -0
  256. package/dist/sync/v3/taskRestoreMutationService.d.ts +2 -2
  257. package/dist/sync/v3/taskRestoreMutationService.js +7 -4
  258. package/dist/sync/v3/taskStatusMutationService.d.ts +2 -0
  259. package/dist/sync/v3/taskStatusMutationService.js +4 -0
  260. package/dist/sync/v3/workflowAssignmentSync.d.ts +1 -0
  261. package/dist/sync/v3/workflowAssignmentSync.js +3 -0
  262. package/dist/sync/v3/workspaceSyncV2ProjectionExclusions.d.ts +1 -1
  263. package/dist/sync/v3/workspaceSyncV2ProjectionExclusions.js +14 -12
  264. package/dist/sync/v3/workspaceSyncV3AttachmentApplyObligationStore.d.ts +11 -0
  265. package/dist/sync/v3/workspaceSyncV3AttachmentApplyObligationStore.js +27 -10
  266. package/dist/sync/v3/workspaceSyncV3AttachmentAssetHydration.d.ts +2 -1
  267. package/dist/sync/v3/workspaceSyncV3AttachmentAssetHydration.js +52 -10
  268. package/dist/sync/v3/workspaceSyncV3CloudOperationHandler.js +10 -1
  269. package/dist/sync/v3/workspaceSyncV3CombinedFeedOrchestrator.js +15 -4
  270. package/dist/sync/v3/workspaceSyncV3CombinedLocalApply.js +66 -13
  271. package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.d.ts +11 -0
  272. package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.js +57 -22
  273. package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.d.ts +10 -4
  274. package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.js +124 -51
  275. package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.d.ts +10 -0
  276. package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.js +120 -28
  277. package/dist/sync/v3/workspaceSyncV3CombinedWireContract.d.ts +3 -1
  278. package/dist/sync/v3/workspaceSyncV3CombinedWireContract.js +18 -0
  279. package/dist/sync/v3/workspaceSyncV3CoverageRegistry.js +6 -0
  280. package/dist/sync/v3/workspaceSyncV3FeedProfile.d.ts +1 -1
  281. package/dist/sync/v3/workspaceSyncV3LegacyBoundaryAttestation.d.ts +1 -0
  282. package/dist/sync/v3/workspaceSyncV3LegacyBoundaryAttestation.js +23 -10
  283. package/dist/sync/v3/workspaceSyncV3NestedTaskApply.d.ts +3 -0
  284. package/dist/sync/v3/workspaceSyncV3NestedTaskApply.js +64 -13
  285. package/dist/sync/v3/workspaceSyncV3NestedTaskCodecs.d.ts +9 -0
  286. package/dist/sync/v3/workspaceSyncV3NestedTaskCodecs.js +26 -0
  287. package/dist/sync/v3/workspaceSyncV3NestedTaskProjection.d.ts +15 -5
  288. package/dist/sync/v3/workspaceSyncV3NestedTaskProjection.js +50 -14
  289. package/dist/sync/v3/workspaceSyncV3NestedTaskRepairSnapshot.d.ts +2 -1
  290. package/dist/sync/v3/workspaceSyncV3NestedTaskRepairSnapshot.js +11 -3
  291. package/dist/sync/v3/workspaceSyncV3OperationProtocol.d.ts +3 -0
  292. package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.d.ts +2 -0
  293. package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.js +19 -7
  294. package/dist/sync/v3/workspaceSyncV3RepairSqlBatching.d.ts +2 -0
  295. package/dist/sync/v3/workspaceSyncV3RepairSqlBatching.js +10 -0
  296. package/dist/sync/v3/workspaceSyncV3TaskCommentAudit.js +9 -2
  297. package/dist/sync/v3/workspaceSyncV3TaskCoverCoverage.d.ts +7 -0
  298. package/dist/sync/v3/workspaceSyncV3TaskCoverCoverage.js +37 -0
  299. package/dist/sync/v3/workspaceSyncV3TaskCoverWireContract.d.ts +6 -0
  300. package/dist/sync/v3/workspaceSyncV3TaskCoverWireContract.js +9 -0
  301. package/dist/sync/v3/workspaceSyncV3TaskRootProjection.d.ts +1 -1
  302. package/dist/sync/v3/workspaceSyncV3TaskRootProjection.js +1 -1
  303. package/dist/sync/workspacePullFeed.d.ts +6 -1
  304. package/dist/sync/workspacePullFeed.js +174 -162
  305. package/dist/sync/workspaceRepair.d.ts +3 -0
  306. package/dist/sync/workspaceRepair.js +67 -6
  307. package/dist/sync/workspaceSyncModel.d.ts +11 -0
  308. package/dist/sync/workspaceSyncModel.js +27 -2
  309. package/dist/types.d.ts +55 -1
  310. package/dist/types.js +6 -0
  311. package/dist/ui/assets/{AiIdentityRosterCard-DB1BLO_j.js → AiIdentityRosterCard-BZM4aQnM.js} +1 -1
  312. package/dist/ui/assets/AiProfilesModule-BbAEWtHH.js +1 -0
  313. package/dist/ui/assets/AnnotatedAttachmentWorkspace-B68Wg-RV.js +3 -0
  314. package/dist/ui/assets/AnnotatedAttachmentWorkspace-TzYu7pkG.css +1 -0
  315. package/dist/ui/assets/AssetTraySortControl-C8Rztyal.js +1 -0
  316. package/dist/ui/assets/ContextAttachmentManager-Cj3c7X9y.js +3 -0
  317. package/dist/ui/assets/{DocumentWorkspace-BC7sy5TG.js → DocumentWorkspace-B5uvzems.js} +4 -4
  318. package/dist/ui/assets/EntityActivityTimeline-BVFvCB5R.js +1 -0
  319. package/dist/ui/assets/PlanningModule-B5DWQOGz.js +1 -0
  320. package/dist/ui/assets/PlanningModule-CoIR9hbV.css +1 -0
  321. package/dist/ui/assets/PlansPage-AY4cGWco.js +1 -0
  322. package/dist/ui/assets/TaskContextUpload-DZxTVesW.js +1 -0
  323. package/dist/ui/assets/TaskContextUpload-qmBeUw3u.css +1 -0
  324. package/dist/ui/assets/TaskSettings-BeWAuyZj.js +12 -0
  325. package/dist/ui/assets/{TaskforceAgentsModule-CkAxW19K.js → TaskforceAgentsModule-BifCYtjR.js} +6 -6
  326. package/dist/ui/assets/WorkflowManagerModule-DEr5di_r.js +1 -0
  327. package/dist/ui/assets/index-I5zhdtgt.js +7 -0
  328. package/dist/ui/assets/index-VRFsx3wz.css +1 -0
  329. package/dist/ui/assets/{vendor-icons-B8ZNsH1g.js → vendor-icons-D9Lpw-j4.js} +1 -1
  330. package/dist/ui/index.html +3 -3
  331. package/dist/utils/constants.d.ts +2 -2
  332. package/dist/utils/constants.js +1 -1
  333. package/dist/utils/contextAttachmentUpload.d.ts +2 -0
  334. package/dist/utils/contextAttachmentUpload.js +7 -0
  335. package/dist/utils/contextFiles.d.ts +1 -1
  336. package/dist/utils/contextFiles.js +4 -4
  337. package/dist/utils/taskActivity.d.ts +3 -2
  338. package/dist/utils/taskActivity.js +19 -2
  339. package/dist/utils/taskEditorReconciliation.d.ts +40 -0
  340. package/dist/utils/taskEditorReconciliation.js +217 -0
  341. package/dist/utils/taskNormalization.d.ts +1 -0
  342. package/dist/utils/taskNormalization.js +39 -0
  343. package/dist/utils/taskSearch.js +2 -2
  344. package/dist/utils/uiNotice.d.ts +4 -0
  345. package/package.json +21 -4
  346. package/dist/ui/assets/AiProfilesModule-DPxQeF9N.js +0 -1
  347. package/dist/ui/assets/AnnotatedAttachmentWorkspace-CBRZ8rca.css +0 -1
  348. package/dist/ui/assets/AnnotatedAttachmentWorkspace-DHNYaNg6.js +0 -3
  349. package/dist/ui/assets/AssetTraySortControl-DphbyHVc.js +0 -1
  350. package/dist/ui/assets/ContextAttachmentManager-CMxSzHqc.js +0 -3
  351. package/dist/ui/assets/EntityActivityTimeline-pJ2ZjZ-k.js +0 -1
  352. package/dist/ui/assets/PlanningModule-CeTqXMMz.css +0 -1
  353. package/dist/ui/assets/PlanningModule-t5GbvVR9.js +0 -1
  354. package/dist/ui/assets/PlansPage-BVH_NfgT.js +0 -1
  355. package/dist/ui/assets/TaskContextUpload-Ds4LnDzV.css +0 -1
  356. package/dist/ui/assets/TaskContextUpload-bl4fOOUz.js +0 -1
  357. package/dist/ui/assets/TaskSettings-xVsxSa0g.js +0 -12
  358. package/dist/ui/assets/WorkflowManagerModule-BKqIGVnF.js +0 -1
  359. package/dist/ui/assets/index-BzJlVnNS.css +0 -1
  360. package/dist/ui/assets/index-Cx7vZJHL.js +0 -7
@@ -8,7 +8,7 @@ export declare class DurableTaskAttachmentLinksApplyError extends Error {
8
8
  constructor(message: string, code: 'TASK_ATTACHMENT_ASSET_NOT_READY' | 'TASK_ATTACHMENT_ASSET_INVALID' | 'TASK_ATTACHMENT_LINK_INVALID', statusCode: number, assetId?: string | undefined);
9
9
  }
10
10
  export interface DurableTaskAttachmentLinksCore {
11
- getWorkspaceAssetStore(): Pick<WorkspaceAssetStore, 'get' | 'listLinksForTask' | 'adoptReadableReferenceNumber'>;
11
+ getWorkspaceAssetStore(): Pick<WorkspaceAssetStore, 'get' | 'listLinksForTask' | 'adoptReadableReferenceNumber' | 'restoreDeleted'>;
12
12
  getWorkspaceAssetDispatchReadiness(assetId: string, workspaceId: string): {
13
13
  ready: boolean;
14
14
  retryable: boolean;
@@ -16,14 +16,20 @@ export interface DurableTaskAttachmentLinksCore {
16
16
  };
17
17
  }
18
18
  export interface DurableWorkspaceTaskAttachmentLinksCore extends DurableTaskAttachmentLinksCore {
19
- getWorkspaceAssetStore(): Pick<WorkspaceAssetStore, 'get' | 'listLinksForTask' | 'listLinksForWorkspace' | 'listAllNormalizedByWorkspace' | 'adoptReadableReferenceNumber'>;
19
+ getWorkspaceAssetStore(): Pick<WorkspaceAssetStore, 'get' | 'listLinksForTask' | 'listLinksForWorkspace' | 'listAllNormalizedByWorkspace' | 'adoptReadableReferenceNumber' | 'restoreDeleted'>;
20
20
  }
21
+ export declare function resolveTaskCardCoverAssetIdForLinks(input: {
22
+ currentCardCoverAssetId?: string | null;
23
+ requestedCardCoverAssetId?: string | null;
24
+ links: readonly WorkspaceSyncV3TaskAttachmentLink[];
25
+ }): string | null;
21
26
  export declare function listTaskAttachmentLinksForDurableSync(core: DurableTaskAttachmentLinksCore, workspaceId: string, taskId: string): WorkspaceSyncV3TaskAttachmentLink[];
22
27
  export declare function listWorkspaceTaskAttachmentLinksForDurableSync(core: DurableWorkspaceTaskAttachmentLinksCore, workspaceId: string, taskIds: ReadonlySet<string>): Map<string, WorkspaceSyncV3TaskAttachmentLink[]>;
23
28
  export declare function resolveTaskAttachmentLinksForDurableSync(core: DurableTaskAttachmentLinksCore, workspaceId: string, links: readonly WorkspaceSyncV3TaskAttachmentLink[], options?: {
24
29
  requireDispatchReady?: boolean;
25
30
  adoptAuthoritativeReferenceNumber?: boolean;
26
31
  ignoreAssetMetadataSnapshots?: boolean;
32
+ restoreDeletedExternalAssetForAuthoritativeSync?: boolean;
27
33
  }): AttachmentItem[];
28
34
  export declare function normalizeTaskAttachmentDescriptorsForDurableSync(core: DurableTaskAttachmentLinksCore, workspaceId: string, attachments: readonly AttachmentItem[], options?: {
29
35
  requireDispatchReady?: boolean;
@@ -12,6 +12,19 @@ export class DurableTaskAttachmentLinksApplyError extends Error {
12
12
  this.name = 'DurableTaskAttachmentLinksApplyError';
13
13
  }
14
14
  }
15
+ export function resolveTaskCardCoverAssetIdForLinks(input) {
16
+ const explicitlyRequested = Object.prototype.hasOwnProperty.call(input, 'requestedCardCoverAssetId');
17
+ const candidate = explicitlyRequested
18
+ ? String(input.requestedCardCoverAssetId || '').trim()
19
+ : String(input.currentCardCoverAssetId || '').trim();
20
+ if (!candidate)
21
+ return null;
22
+ const matchingImage = input.links.some((link) => link.assetId === candidate && link.role === 'image');
23
+ if (!matchingImage && explicitlyRequested) {
24
+ throw new DurableTaskAttachmentLinksApplyError('Task card cover must reference an image already attached to this task.', 'TASK_ATTACHMENT_LINK_INVALID', 400, candidate);
25
+ }
26
+ return matchingImage ? candidate : null;
27
+ }
15
28
  function fail(message, code, statusCode, assetId) {
16
29
  throw new DurableTaskAttachmentLinksApplyError(message, code, statusCode, assetId);
17
30
  }
@@ -40,6 +53,12 @@ function canonicalRole(asset, requested) {
40
53
  }
41
54
  return expected;
42
55
  }
56
+ function canonicalPersistedRole(asset, persisted) {
57
+ // Historical external links predate the reference-only invariant. Repair
58
+ // projections must publish the current canonical shape, while mutation
59
+ // inputs continue through canonicalRole and remain strictly validated.
60
+ return asset.storageProvider === 'external' ? 'reference' : canonicalRole(asset, persisted);
61
+ }
43
62
  function referenceFields(asset) {
44
63
  if (!asset.referenceNumber)
45
64
  return { referenceNumber: null, referenceLabel: null };
@@ -70,9 +89,13 @@ function assertReady(core, workspaceId, asset, options) {
70
89
  }
71
90
  }
72
91
  function canonicalLink(asset, link, fallbackOrder) {
92
+ // Historical task links could persist an external asset as an attachment.
93
+ // External assets are references by contract, so repair/export must emit the
94
+ // canonical role rather than reproducing an un-installable legacy link.
95
+ const role = asset.storageProvider === 'external' ? 'reference' : link.role;
73
96
  return {
74
97
  assetId: asset.assetId,
75
- role: link.role,
98
+ role,
76
99
  order: Number.isSafeInteger(link.sortOrder) && Number(link.sortOrder) >= 0
77
100
  ? Number(link.sortOrder)
78
101
  : fallbackOrder,
@@ -94,7 +117,7 @@ export function listTaskAttachmentLinksForDurableSync(core, workspaceId, taskId)
94
117
  fail(`Task attachment asset is deleted: ${link.assetId}`, 'TASK_ATTACHMENT_ASSET_INVALID', 400);
95
118
  }
96
119
  assertReady(core, workspaceId, asset);
97
- return canonicalLink(asset, link, index);
120
+ return canonicalLink(asset, { ...link, role: canonicalPersistedRole(asset, link.role) }, index);
98
121
  })
99
122
  .sort((left, right) => left.order - right.order
100
123
  || (left.assetId < right.assetId ? -1 : left.assetId > right.assetId ? 1 : 0)
@@ -126,7 +149,7 @@ export function listWorkspaceTaskAttachmentLinksForDurableSync(core, workspaceId
126
149
  fail(`Task attachment asset is deleted: ${link.assetId}`, 'TASK_ATTACHMENT_ASSET_INVALID', 400);
127
150
  }
128
151
  assertReady(core, workspaceId, asset);
129
- return canonicalLink(asset, link, index);
152
+ return canonicalLink(asset, { ...link, role: canonicalPersistedRole(asset, link.role) }, index);
130
153
  }).sort((left, right) => left.order - right.order
131
154
  || (left.assetId < right.assetId ? -1 : left.assetId > right.assetId ? 1 : 0)
132
155
  || (left.role < right.role ? -1 : left.role > right.role ? 1 : 0))
@@ -143,6 +166,14 @@ export function resolveTaskAttachmentLinksForDurableSync(core, workspaceId, link
143
166
  if (!asset) {
144
167
  fail(`Task attachment asset is unavailable because it has not reached this runtime: ${link.assetId}`, 'TASK_ATTACHMENT_ASSET_NOT_READY', 425, link.assetId);
145
168
  }
169
+ if (asset.deletedAt
170
+ && asset.storageProvider === 'external'
171
+ && options?.restoreDeletedExternalAssetForAuthoritativeSync === true) {
172
+ // External pointers do not travel through binary content hydration.
173
+ // An active authoritative link is the lifecycle proof needed to
174
+ // revive the existing local placeholder inside the apply transaction.
175
+ asset = store.restoreDeleted(asset.assetId, workspaceId, asset.updatedAt) || asset;
176
+ }
146
177
  assertReady(core, workspaceId, asset, options);
147
178
  // Replicated apply may align independently hydrated local D-/I- numbers
148
179
  // to cloud authority. Ordinary local/cloud mutation writers must never
@@ -159,13 +190,11 @@ export function resolveTaskAttachmentLinksForDurableSync(core, workspaceId, link
159
190
  fail('Task attachment links must have unique asset and role identities.', 'TASK_ATTACHMENT_LINK_INVALID', 400);
160
191
  }
161
192
  identities.add(identity);
162
- const displayName = asset.kind === 'document' && asset.storageProvider !== 'external'
163
- ? null
164
- : String(link.displayName
165
- || (options?.ignoreAssetMetadataSnapshots === true ? '' : link.caption)
166
- || (options?.ignoreAssetMetadataSnapshots === true ? '' : link.originalFilename)
167
- || asset.logicalName
168
- || asset.originalFilename).trim() || null;
193
+ const displayName = String(link.displayName
194
+ || (options?.ignoreAssetMetadataSnapshots === true ? '' : link.originalFilename)
195
+ || (options?.ignoreAssetMetadataSnapshots === true ? '' : link.caption)
196
+ || (options?.ignoreAssetMetadataSnapshots === true ? '' : asset.originalFilename)
197
+ || (options?.ignoreAssetMetadataSnapshots === true ? '' : asset.logicalName)).trim() || null;
169
198
  const projected = canonicalLink(asset, { role, displayName, sortOrder: index }, index);
170
199
  if (options?.ignoreAssetMetadataSnapshots !== true
171
200
  && ((link.referenceNumber ?? null) !== (projected.referenceNumber ?? null)
@@ -176,12 +205,18 @@ export function resolveTaskAttachmentLinksForDurableSync(core, workspaceId, link
176
205
  path: canonicalAssetPath(asset),
177
206
  assetId: asset.assetId,
178
207
  linkRole: role,
179
- ...(asset.kind === 'document' && asset.storageProvider !== 'external' && projected.caption !== undefined
208
+ ...(options?.ignoreAssetMetadataSnapshots !== true
209
+ && asset.kind === 'document'
210
+ && asset.storageProvider !== 'external'
211
+ && projected.caption !== undefined
180
212
  ? { caption: projected.caption } : {}),
181
213
  ...(projected.displayName !== undefined ? { displayName: projected.displayName } : {}),
182
- ...(projected.originalFilename !== undefined ? { originalFilename: projected.originalFilename } : {}),
183
- ...(projected.referenceNumber !== undefined ? { referenceNumber: projected.referenceNumber } : {}),
184
- ...(projected.referenceLabel !== undefined ? { referenceLabel: projected.referenceLabel } : {}),
214
+ ...(options?.ignoreAssetMetadataSnapshots !== true && projected.originalFilename !== undefined
215
+ ? { originalFilename: projected.originalFilename } : {}),
216
+ ...(options?.ignoreAssetMetadataSnapshots !== true && projected.referenceNumber !== undefined
217
+ ? { referenceNumber: projected.referenceNumber } : {}),
218
+ ...(options?.ignoreAssetMetadataSnapshots !== true && projected.referenceLabel !== undefined
219
+ ? { referenceLabel: projected.referenceLabel } : {}),
185
220
  };
186
221
  });
187
222
  }
@@ -205,10 +240,8 @@ export function normalizeTaskAttachmentDescriptorsForDurableSync(core, workspace
205
240
  fail('Task attachment links must have unique asset and role identities.', 'TASK_ATTACHMENT_LINK_INVALID', 400);
206
241
  }
207
242
  identities.add(identity);
208
- const displayName = asset.kind === 'document' && asset.storageProvider !== 'external'
209
- ? null
210
- : String(attachment.caption || attachment.displayName || attachment.originalFilename
211
- || asset.logicalName || asset.originalFilename).trim() || null;
243
+ const displayName = String(attachment.displayName || attachment.originalFilename || attachment.caption
244
+ || asset.logicalName || asset.originalFilename).trim() || null;
212
245
  return canonicalLink(asset, { role, displayName, sortOrder: order }, order);
213
246
  });
214
247
  }
@@ -1,3 +1,4 @@
1
+ import { type PlanningIdentityColor, type PlanningIdentityEntityType, type PlanningIdentityIcon } from '../shared/planningIdentity.js';
1
2
  import type { DatabaseAdapter, DatabaseProvider } from '../storage/databaseAdapter.js';
2
3
  import { type LocalDataOwnerPermit } from '../server/localDataOwnerPermit.js';
3
4
  import type { DurableTaskStatusMutationPayload } from './TaskDurableStatusMutationService.js';
@@ -94,6 +95,17 @@ export interface AuditActivityItem {
94
95
  event: TaskEvent;
95
96
  }
96
97
  export type TaskActivityItem = CommentActivityItem | AuditActivityItem;
98
+ export type TaskActivitySummaryItem = {
99
+ id: string;
100
+ type: 'comment';
101
+ timestamp: string;
102
+ comment: Pick<Comment, 'text' | 'author' | 'actor'>;
103
+ } | {
104
+ id: string;
105
+ type: 'event';
106
+ timestamp: string;
107
+ event: Pick<TaskEvent, 'action' | 'details' | 'actor' | 'actorType' | 'actorProfile'>;
108
+ };
97
109
  export interface EntityAuditActivityItem {
98
110
  id: string;
99
111
  type: 'event';
@@ -151,6 +163,8 @@ export interface TaskItem {
151
163
  activity?: TaskActivityItem[];
152
164
  taskEvents?: TaskEvent[];
153
165
  attachments?: AttachmentItem[];
166
+ cardCoverAssetId?: string | null;
167
+ cardCoverAttachment?: Exclude<AttachmentItem, string> | null;
154
168
  /** @deprecated Use status='done'. Safe to remove after v0.4.x migration gate. */
155
169
  completed?: boolean;
156
170
  /** @deprecated Use status='cancelled'. Safe to remove after v0.4.x migration gate. */
@@ -169,7 +183,27 @@ export interface TaskItem {
169
183
  workstreamOrder?: number | null;
170
184
  workstreamId?: string | null;
171
185
  checklistItems?: ChecklistItem[];
172
- }
186
+ /** True when this object came from a collection read and omits the full task graph. */
187
+ isSummary?: boolean;
188
+ commentCount?: number;
189
+ checklistCount?: number;
190
+ completedChecklistCount?: number;
191
+ attachmentCount?: number;
192
+ relationshipCount?: number;
193
+ /** Compact newest comment or audit event carried by lightweight collection reads. */
194
+ latestActivity?: TaskActivitySummaryItem | null;
195
+ detailRevision?: string;
196
+ }
197
+ export type TaskSummary = Omit<TaskItem, 'description' | 'comments' | 'activity' | 'taskEvents' | 'attachments' | 'checklistItems'> & {
198
+ isSummary: true;
199
+ commentCount: number;
200
+ checklistCount: number;
201
+ completedChecklistCount: number;
202
+ attachmentCount: number;
203
+ relationshipCount: number;
204
+ latestActivity: TaskActivitySummaryItem | null;
205
+ detailRevision: string;
206
+ };
173
207
  export type AttachmentItem = string | {
174
208
  path: string;
175
209
  fsPath?: string;
@@ -190,6 +224,9 @@ export interface InitiativeItem {
190
224
  title: string;
191
225
  description: string | null;
192
226
  ownerId?: string | null;
227
+ icon?: PlanningIdentityIcon | null;
228
+ color?: PlanningIdentityColor | null;
229
+ identityUpdatedAt?: string | null;
193
230
  comments?: Comment[];
194
231
  activity?: EntityActivityItem[];
195
232
  entityEvents?: PlanningEntityEvent[];
@@ -207,6 +244,9 @@ export interface WorkstreamItem {
207
244
  title: string;
208
245
  description: string | null;
209
246
  ownerId?: string | null;
247
+ icon?: PlanningIdentityIcon | null;
248
+ color?: PlanningIdentityColor | null;
249
+ identityUpdatedAt?: string | null;
210
250
  comments?: Comment[];
211
251
  activity?: EntityActivityItem[];
212
252
  entityEvents?: PlanningEntityEvent[];
@@ -216,6 +256,13 @@ export interface WorkstreamItem {
216
256
  order?: number | null;
217
257
  isArchived?: boolean;
218
258
  }
259
+ export interface PlanningEntityIdentityRecord {
260
+ entityType: PlanningIdentityEntityType;
261
+ entityId: string;
262
+ icon: PlanningIdentityIcon | null;
263
+ color: PlanningIdentityColor | null;
264
+ updatedAt: string;
265
+ }
219
266
  export interface ChecklistItem {
220
267
  id: string;
221
268
  taskId: string;
@@ -254,7 +301,7 @@ export interface ScheduleBoardResult {
254
301
  }>;
255
302
  };
256
303
  }
257
- export type RealtimeMutationEntityType = 'task' | 'taxonomy' | 'document-metadata';
304
+ export type RealtimeMutationEntityType = 'task' | 'initiative' | 'workstream' | 'taxonomy' | 'document-metadata';
258
305
  export interface RealtimeMutationEvent {
259
306
  eventId: string;
260
307
  workspaceId: string;
@@ -299,6 +346,7 @@ export interface TaskforceConfig {
299
346
  storagePath?: string;
300
347
  tenantId?: string;
301
348
  runtimeMode?: RuntimeMode;
349
+ initializationMode?: 'standard' | 'cloud-read-worker';
302
350
  localDataOwnerPermit?: LocalDataOwnerPermit;
303
351
  database?: {
304
352
  provider?: DatabaseProvider;
@@ -335,12 +383,23 @@ export interface TaskFile {
335
383
  manualComplexityEnabled?: boolean;
336
384
  checklistDropdownEnabled?: boolean;
337
385
  showTaskCardStatusLabel?: boolean;
386
+ showTaskCardDescription?: boolean;
387
+ showTaskCardAttachments?: boolean;
388
+ showTaskCardChecklistProgress?: boolean;
389
+ showTaskCardLatestActivity?: boolean;
390
+ tintTaskCardActivityBackground?: boolean;
338
391
  taxonomies?: any[];
339
392
  };
340
393
  }
341
394
  export interface ArchiveFile {
342
395
  archived: TaskItem[];
343
396
  }
397
+ export interface TaskSummaryFile {
398
+ tasks: TaskSummary[];
399
+ }
400
+ export interface ArchiveSummaryFile {
401
+ archived: TaskSummary[];
402
+ }
344
403
  export interface BulkCreateTaskError {
345
404
  index: number;
346
405
  message: string;
@@ -856,6 +915,8 @@ export interface TaskforceSyncCapable {
856
915
  listInitiativesForSync(workspaceId: string | undefined, afterId: string | null, limit: number): InitiativeItem[];
857
916
  listWorkstreams(workspaceId?: string): WorkstreamItem[];
858
917
  listWorkstreamsForSync(workspaceId: string | undefined, afterId: string | null, limit: number): WorkstreamItem[];
918
+ listPlanningEntityIdentities(workspaceId?: string): PlanningEntityIdentityRecord[];
919
+ applyPlanningEntityIdentityForSync(identity: PlanningEntityIdentityRecord, workspaceId?: string | null): PlanningEntityIdentityRecord | null;
859
920
  listAiProfiles(workspaceId: string, options?: {
860
921
  includeArchived?: boolean;
861
922
  }): AiProfileRecord[];
@@ -976,8 +1037,10 @@ export interface TaskforceSyncCapable {
976
1037
  workspaceId: string;
977
1038
  connectionId: string;
978
1039
  seatScope?: AiProfileSeatScope | null;
1040
+ repairLegacyBinding?: boolean;
979
1041
  }): AiProfileRecord | null;
980
1042
  resolveWorkspaceActor(workspaceId: string, actorRef: unknown): TaskActor | null;
1043
+ resolveWorkspaceActors(workspaceId: string, actorRefs: unknown[]): Map<string, TaskActor | null>;
981
1044
  }
982
1045
  export type TaskRelationshipInputType = 'depends_on' | 'blocks' | 'related_to' | 'supersedes';
983
1046
  export type TaskRelationshipKind = 'dependency' | 'related' | 'supersedes';
@@ -1127,6 +1190,7 @@ export declare class TaskforceCore implements TaskforceSyncCapable {
1127
1190
  requireDispatchReady?: boolean;
1128
1191
  adoptAuthoritativeReferenceNumber?: boolean;
1129
1192
  ignoreAssetMetadataSnapshots?: boolean;
1193
+ restoreDeletedExternalAssetForAuthoritativeSync?: boolean;
1130
1194
  }): AttachmentItem[];
1131
1195
  private normalizeEntitlementState;
1132
1196
  private upsertCanonicalEntitlementRecord;
@@ -1316,6 +1380,13 @@ export declare class TaskforceCore implements TaskforceSyncCapable {
1316
1380
  getWorkstream(id: string, workspaceId?: string): WorkstreamItem | null;
1317
1381
  listWorkstreams(workspaceId?: string): WorkstreamItem[];
1318
1382
  listWorkstreamsForSync(workspaceId: string | undefined, afterId: string | null, limit: number): WorkstreamItem[];
1383
+ listPlanningEntityIdentities(workspaceId?: string): PlanningEntityIdentityRecord[];
1384
+ private writePlanningEntityIdentity;
1385
+ updatePlanningEntityIdentity(entityType: PlanningIdentityEntityType, entityId: string, patch: {
1386
+ icon?: unknown;
1387
+ color?: unknown;
1388
+ }, workspaceId?: string): InitiativeItem | WorkstreamItem;
1389
+ applyPlanningEntityIdentityForSync(identity: PlanningEntityIdentityRecord, workspaceId?: string | null): PlanningEntityIdentityRecord | null;
1319
1390
  listPlanningBootstrap(workspaceId?: string, diagnostics?: PlanningBootstrapDiagnostics): PlanningBootstrapPayload;
1320
1391
  createWorkstream(input: Partial<WorkstreamItem>, workspaceId?: string, options?: {
1321
1392
  actorRef?: string;
@@ -1419,6 +1490,16 @@ export declare class TaskforceCore implements TaskforceSyncCapable {
1419
1490
  private getSyncReconciliationServiceDeps;
1420
1491
  private getWorkspaceLifecycleServiceDeps;
1421
1492
  listTasks(workspaceId?: string): TaskFile;
1493
+ private listTaskSummaries;
1494
+ listActiveTaskSummaries(workspaceId?: string): TaskSummaryFile;
1495
+ listArchiveSummaries(workspaceId?: string): ArchiveSummaryFile;
1496
+ getTaskDetailRevision(id: string, workspaceId?: string): string | null;
1497
+ getTaskDetailSnapshot(id: string, workspaceId?: string): TaskItem | null;
1498
+ updateTaskIfDetailRevisionMatches(id: string, expectedDetailRevision: string, updates: Partial<TaskItem>, workspaceId?: string, options?: {
1499
+ actorRef?: string;
1500
+ saveSource?: 'manual' | 'autosave';
1501
+ }): TaskItem | null;
1502
+ assertTaskDetailRevisionForUpdate(id: string, expectedDetailRevision: string, workspaceId?: string): void;
1422
1503
  /**
1423
1504
  * Filter-pushdown listing used by read-only surfaces that don't need the
1424
1505
  * full task graph (MCP list_tasks, CLI summaries). Avoids the per-task
@@ -1438,6 +1519,25 @@ export declare class TaskforceCore implements TaskforceSyncCapable {
1438
1519
  limit?: number;
1439
1520
  offset?: number;
1440
1521
  workstreamId?: string;
1522
+ includeArchived?: boolean;
1523
+ }): Array<Record<string, unknown>>;
1524
+ listTaskCountsByWorkstream(workspaceId?: string, workstreamId?: string): Array<{
1525
+ workstreamId: string;
1526
+ total: number;
1527
+ active: number;
1528
+ archived: number;
1529
+ }>;
1530
+ listTaskReferenceSummaries(taskIds: string[], workspaceId?: string): Array<{
1531
+ id: string;
1532
+ referenceNumber: number | null;
1533
+ localReferenceNumber: number | null;
1534
+ referenceLabel: string | null;
1535
+ title: string;
1536
+ status: TaskStatus;
1537
+ }>;
1538
+ searchTaskSummaries(query: string, scope?: 'all' | 'active' | 'archive', workspaceId?: string, options?: {
1539
+ limit?: number;
1540
+ offset?: number;
1441
1541
  }): Array<Record<string, unknown>>;
1442
1542
  getDataVersion(): number;
1443
1543
  getDatabaseProvider(): DatabaseProvider;
@@ -1446,6 +1546,9 @@ export declare class TaskforceCore implements TaskforceSyncCapable {
1446
1546
  listDeletedTasks(workspaceId?: string): {
1447
1547
  deleted: DeletedTaskRecord[];
1448
1548
  };
1549
+ listDeletedTasksReadOnly(workspaceId?: string): {
1550
+ deleted: DeletedTaskRecord[];
1551
+ };
1449
1552
  getDeletedTask(id: string, workspaceId?: string): DeletedTaskRecord | null;
1450
1553
  private assertNoDurableTaskDeleteOwnership;
1451
1554
  permanentlyDeleteDeletedTask(id: string, workspaceId?: string): boolean;
@@ -1465,6 +1568,7 @@ export declare class TaskforceCore implements TaskforceSyncCapable {
1465
1568
  total: number;
1466
1569
  doneCount: number;
1467
1570
  cancelledCount: number;
1571
+ otherCount: number;
1468
1572
  retentionDays: number;
1469
1573
  };
1470
1574
  };
@@ -1602,6 +1706,7 @@ export declare class TaskforceCore implements TaskforceSyncCapable {
1602
1706
  workspaceId: string;
1603
1707
  connectionId: string;
1604
1708
  seatScope?: AiProfileSeatScope | null;
1709
+ repairLegacyBinding?: boolean;
1605
1710
  }): AiProfileRecord | null;
1606
1711
  resolveAiProfile(input: ResolveAiProfileInput, options?: ResolveAiProfileOptions): ResolveAiProfileResult;
1607
1712
  listAnnotatedAttachmentSessions(input: {
@@ -1717,6 +1822,8 @@ export declare class TaskforceCore implements TaskforceSyncCapable {
1717
1822
  body: string;
1718
1823
  anchor?: DocumentReviewAnchor | null;
1719
1824
  actorId?: string | null;
1825
+ idempotencyKey?: string | null;
1826
+ commentId?: string | null;
1720
1827
  }): DocumentReviewSession;
1721
1828
  addDocumentReviewReply(input: {
1722
1829
  workspaceId?: string | null;
@@ -1724,6 +1831,8 @@ export declare class TaskforceCore implements TaskforceSyncCapable {
1724
1831
  parentCommentId: string;
1725
1832
  body: string;
1726
1833
  actorId?: string | null;
1834
+ idempotencyKey?: string | null;
1835
+ commentId?: string | null;
1727
1836
  }): DocumentReviewSession;
1728
1837
  updateDocumentReviewThreadStatus(input: {
1729
1838
  workspaceId?: string | null;
@@ -1754,7 +1863,9 @@ export declare class TaskforceCore implements TaskforceSyncCapable {
1754
1863
  sessionId: string;
1755
1864
  }): boolean;
1756
1865
  private getAiProfileServiceDeps;
1866
+ private buildUnresolvedWorkspaceActor;
1757
1867
  resolveWorkspaceActor(workspaceId: string, actorRef: unknown): TaskActor | null;
1868
+ resolveWorkspaceActors(workspaceId: string, actorRefs: unknown[]): Map<string, TaskActor | null>;
1758
1869
  listAssignableActors(workspaceId: string): TaskActor[];
1759
1870
  addAdminAuditLog(input: {
1760
1871
  action: string;
@@ -2150,6 +2261,10 @@ export declare class TaskforceCore implements TaskforceSyncCapable {
2150
2261
  profileToken: string;
2151
2262
  profileName: string;
2152
2263
  }): boolean;
2264
+ listMcpOAuthRestorableAiProfileIds(input: {
2265
+ grantId: string;
2266
+ workspaceId: string;
2267
+ }): string[];
2153
2268
  recordMcpOAuthConnectorGrantUsage(input: {
2154
2269
  grantId: string;
2155
2270
  workspaceId: string;
@@ -2467,6 +2582,13 @@ export declare class TaskforceCore implements TaskforceSyncCapable {
2467
2582
  task: any;
2468
2583
  archived: boolean;
2469
2584
  }>;
2585
+ /**
2586
+ * Full task inventory for authoritative repair without the per-task UI
2587
+ * hydration performed by rowToTask. Repair serializes task roots, comments,
2588
+ * and checklist items separately; task activity, actor decoration, and
2589
+ * resolved attachment bodies are not part of that canonical inventory.
2590
+ */
2591
+ listTasksForAuthoritativeRepair(workspaceId: string): TaskItem[];
2470
2592
  listWorkspaceSyncDeletesSince(workspaceId: string | undefined, cursor: {
2471
2593
  watermark: string;
2472
2594
  id: string;