@taskforcehq/taskforce 0.3.328 → 0.3.330

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 (485) hide show
  1. package/dist/Taskforce.module.css +523 -79
  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/features/AiProfilesModule.js +3 -5
  8. package/dist/components/features/AnnotatedAttachmentWorkspace.js +24 -8
  9. package/dist/components/features/TaskSettings.d.ts +12 -1
  10. package/dist/components/features/TaskSettings.js +217 -54
  11. package/dist/components/features/TaskforceAgentsModule.d.ts +1 -2
  12. package/dist/components/features/TaskforceAgentsModule.js +586 -116
  13. package/dist/components/features/agentCapabilities/AgentCapabilitiesPrototype.d.ts +1 -1
  14. package/dist/components/features/agentConnections/AgentConnectionControl.d.ts +15 -0
  15. package/dist/components/features/agentConnections/AgentConnectionControl.js +125 -0
  16. package/dist/components/features/agentConnections/ModelConnectionsPanel.d.ts +18 -0
  17. package/dist/components/features/agentConnections/ModelConnectionsPanel.js +393 -0
  18. package/dist/components/features/agentConnections/modelConnectionsApi.d.ts +65 -0
  19. package/dist/components/features/agentConnections/modelConnectionsApi.js +129 -0
  20. package/dist/components/features/planning/PlanningModule.js +2 -5
  21. package/dist/components/features/planning/PlanningTaskOrderList.d.ts +1 -1
  22. package/dist/components/features/planning/PlanningTaskOrderList.js +17 -6
  23. package/dist/components/features/planning/planningTaskArrangement.d.ts +1 -0
  24. package/dist/components/features/planning/planningTaskArrangement.js +5 -5
  25. package/dist/components/features/taskforceAgentAssignments/AgentBehaviorAssignments.js +15 -24
  26. package/dist/components/features/taskforceAgentEditorModel.d.ts +2 -1
  27. package/dist/components/features/taskforceAgentEditorModel.js +5 -1
  28. package/dist/components/features/workflowManager/workflowManagerApi.d.ts +1 -1
  29. package/dist/components/features/workflowManager/workflowManagerApi.js +3 -0
  30. package/dist/components/task/TaskCard.d.ts +5 -0
  31. package/dist/components/task/TaskCard.js +65 -10
  32. package/dist/components/task/TaskImageReviews.js +14 -5
  33. package/dist/components/task/TaskKanban.d.ts +6 -1
  34. package/dist/components/task/TaskKanban.js +152 -6
  35. package/dist/components/task/TaskList.d.ts +5 -0
  36. package/dist/components/task/TaskList.js +3 -3
  37. package/dist/components/task/TaskWorkflowAssignmentField.js +68 -10
  38. package/dist/components/ui/PasswordInput.d.ts +6 -0
  39. package/dist/components/ui/PasswordInput.js +11 -0
  40. package/dist/components/ui/TopNoticeLayer.js +1 -1
  41. package/dist/components/views/AppShellHeader.js +32 -11
  42. package/dist/components/views/PlanComparisonPage.js +12 -0
  43. package/dist/components/views/StandaloneLayout.js +32 -55
  44. package/dist/components/views/WidgetView.js +3 -3
  45. package/dist/components/views/panels/PlanningDrawer.js +5 -12
  46. package/dist/components/views/standalone/modals/AccountSettingsModal.js +26 -17
  47. package/dist/components/views/standalone/modals/SyncStatusModal.d.ts +4 -3
  48. package/dist/components/views/standalone/modals/SyncStatusModal.js +33 -38
  49. package/dist/config/envSchema.js +60 -1
  50. package/dist/config/localServiceRuntimeContract.d.ts +13 -0
  51. package/dist/config/localServiceRuntimeContract.js +135 -0
  52. package/dist/core/AiProfileService.js +46 -8
  53. package/dist/core/DeletedTaskLifecycleService.d.ts +1 -0
  54. package/dist/core/DeletedTaskLifecycleService.js +37 -6
  55. package/dist/core/McpTokenService.d.ts +23 -1
  56. package/dist/core/McpTokenService.js +93 -10
  57. package/dist/core/TaskAttachmentLinksDurableMutationService.d.ts +3 -2
  58. package/dist/core/TaskAttachmentLinksDurableMutationService.js +33 -9
  59. package/dist/core/TaskChecklistCommandService.d.ts +27 -0
  60. package/dist/core/TaskChecklistCommandService.js +83 -5
  61. package/dist/core/TaskLifecycleCommandService.d.ts +3 -1
  62. package/dist/core/TaskLifecycleCommandService.js +6 -2
  63. package/dist/core/Taskforce.d.ts +94 -2
  64. package/dist/core/Taskforce.js +760 -36
  65. package/dist/core/types.d.ts +14 -0
  66. package/dist/documentReviews/commandService.d.ts +2 -1
  67. package/dist/documentReviews/commandService.js +6 -3
  68. package/dist/hooks/sync/orchestratorShared.d.ts +1 -0
  69. package/dist/hooks/sync/orchestratorShared.js +2 -0
  70. package/dist/hooks/sync/useDurableLocalOutboxDrain.d.ts +1 -1
  71. package/dist/hooks/sync/useDurableTaskCreateMutation.js +1 -1
  72. package/dist/hooks/sync/useDurableTaskMetadataMutation.d.ts +1 -0
  73. package/dist/hooks/sync/useDurableTaskMetadataMutation.js +1 -0
  74. package/dist/hooks/sync/useDurableTaskStatusMutation.d.ts +1 -0
  75. package/dist/hooks/sync/useLocalSyncCoordinatorSnapshot.d.ts +3 -0
  76. package/dist/hooks/sync/useLocalSyncCoordinatorSnapshot.js +85 -9
  77. package/dist/hooks/sync/useSyncStatusControls.d.ts +4 -1
  78. package/dist/hooks/sync/useSyncStatusControls.js +47 -11
  79. package/dist/hooks/tasks/taskHttpMutation.js +1 -0
  80. package/dist/hooks/tasks/useCloudTaskSearch.d.ts +12 -0
  81. package/dist/hooks/tasks/useCloudTaskSearch.js +71 -0
  82. package/dist/hooks/tasks/useTaskDescriptionImageDraftRecovery.d.ts +16 -0
  83. package/dist/hooks/tasks/useTaskDescriptionImageDraftRecovery.js +197 -0
  84. package/dist/hooks/tasks/useTaskEditorNavigation.d.ts +16 -3
  85. package/dist/hooks/tasks/useTaskEditorNavigation.js +72 -13
  86. package/dist/hooks/tasks/useTaskFormActions.d.ts +6 -0
  87. package/dist/hooks/tasks/useTaskFormActions.js +65 -12
  88. package/dist/hooks/ui/useSettingsModel.d.ts +24 -2
  89. package/dist/hooks/ui/useSettingsModel.js +13 -2
  90. package/dist/hooks/ui/useSettingsPersistence.d.ts +12 -1
  91. package/dist/hooks/ui/useSettingsPersistence.js +74 -47
  92. package/dist/hooks/useFilterSort.d.ts +7 -3
  93. package/dist/hooks/useFilterSort.js +15 -5
  94. package/dist/hooks/useSyncOrchestrator.d.ts +3 -0
  95. package/dist/hooks/useSyncOrchestrator.js +111 -2
  96. package/dist/hooks/useTaskData.d.ts +40 -1
  97. package/dist/hooks/useTaskData.js +240 -9
  98. package/dist/hooks/useTaskMutations.d.ts +12 -2
  99. package/dist/hooks/useTaskMutations.js +266 -52
  100. package/dist/hooks/useTaskforce.d.ts +39 -9
  101. package/dist/hooks/useTaskforce.js +359 -40
  102. package/dist/hooks/useUiNotice.d.ts +4 -0
  103. package/dist/hooks/useUiNotice.js +4 -0
  104. package/dist/mcp/adminWorkspaceRegistrar.js +3 -3
  105. package/dist/mcp/clientRegistry.d.ts +2 -2
  106. package/dist/mcp/clientRegistry.js +1 -1
  107. package/dist/mcp/documentAssetRegistrar.js +53 -41
  108. package/dist/mcp/documentHelpers.d.ts +1 -0
  109. package/dist/mcp/documentHelpers.js +7 -3
  110. package/dist/mcp/durableTaskMutationRouter.d.ts +4 -1
  111. package/dist/mcp/durableTaskMutationRouter.js +10 -0
  112. package/dist/mcp/durableTaskRelationshipMutationRouter.js +4 -0
  113. package/dist/mcp/httpProtocolRouting.d.ts +10 -0
  114. package/dist/mcp/httpProtocolRouting.js +19 -0
  115. package/dist/mcp/localCliHealth.d.ts +2 -2
  116. package/dist/mcp/localCliHealth.js +2 -2
  117. package/dist/mcp/localServiceProxy.d.ts +1 -0
  118. package/dist/mcp/localServiceProxy.js +530 -68
  119. package/dist/mcp/planningAttachmentCommandAdapter.d.ts +3 -1
  120. package/dist/mcp/planningAttachmentCommandAdapter.js +20 -2
  121. package/dist/mcp/runtime.d.ts +54 -79
  122. package/dist/mcp/runtime.js +556 -139
  123. package/dist/mcp/taskPlanningRegistrar.js +64 -42
  124. package/dist/mcp/toolCallCompatibility.js +38 -1
  125. package/dist/mcp/toolCatalog.d.ts +1 -0
  126. package/dist/mcp/toolProfiles.d.ts +2 -0
  127. package/dist/mcp/toolProfiles.js +10 -0
  128. package/dist/mcp/toolRegistry.d.ts +1 -0
  129. package/dist/mcp/toolRegistry.js +1 -0
  130. package/dist/mcp/workflowExecutionRegistrar.js +4 -4
  131. package/dist/migrations/taskSchemaMigrations.d.ts +5 -0
  132. package/dist/migrations/taskSchemaMigrations.js +427 -0
  133. package/dist/runtime/appGateDefinitions.d.ts +30 -6
  134. package/dist/runtime/appGateDefinitions.js +6 -6
  135. package/dist/runtime/appGates.d.ts +13 -13
  136. package/dist/runtime/appGates.js +36 -13
  137. package/dist/runtime/nodeAppGates.d.ts +8 -0
  138. package/dist/runtime/nodeAppGates.js +27 -0
  139. package/dist/server/cloudCollectionRead.d.ts +1 -1
  140. package/dist/server/cloudCollectionRead.js +2 -2
  141. package/dist/server/index.d.ts +6 -0
  142. package/dist/server/index.js +123 -14
  143. package/dist/server/localDatabaseIdentity.js +4 -1
  144. package/dist/server/localServiceLease.d.ts +3 -0
  145. package/dist/server/localServiceLease.js +11 -2
  146. package/dist/server/localServiceSessions.d.ts +14 -17
  147. package/dist/server/localServiceSessions.js +308 -94
  148. package/dist/server/localWorkspaceSyncServerRuntime.js +12 -7
  149. package/dist/server/rateLimit.d.ts +1 -0
  150. package/dist/server/rateLimit.js +4 -0
  151. package/dist/server/realtimeSyncWs.js +36 -12
  152. package/dist/server/routes/admin.d.ts +4 -0
  153. package/dist/server/routes/admin.js +113 -3
  154. package/dist/server/routes/agentRoles.js +3 -2
  155. package/dist/server/routes/agentSkills.js +3 -2
  156. package/dist/server/routes/agents.d.ts +7 -0
  157. package/dist/server/routes/agents.js +394 -39
  158. package/dist/server/routes/annotatedAttachments.js +3 -2
  159. package/dist/server/routes/auth.js +3 -1
  160. package/dist/server/routes/billing.js +5 -1
  161. package/dist/server/routes/durableTaskHttpRouters.d.ts +11 -2
  162. package/dist/server/routes/executorPhaseAApprovals.d.ts +19 -0
  163. package/dist/server/routes/executorPhaseAApprovals.js +140 -0
  164. package/dist/server/routes/executorPhaseAIssuerRedemptions.d.ts +11 -0
  165. package/dist/server/routes/executorPhaseAIssuerRedemptions.js +24 -0
  166. package/dist/server/routes/githubReviewEvidence.d.ts +19 -0
  167. package/dist/server/routes/githubReviewEvidence.js +116 -0
  168. package/dist/server/routes/localService.d.ts +15 -4
  169. package/dist/server/routes/localService.js +138 -40
  170. package/dist/server/routes/modelConnections.d.ts +24 -0
  171. package/dist/server/routes/modelConnections.js +205 -0
  172. package/dist/server/routes/primitives.d.ts +2 -0
  173. package/dist/server/routes/shared.d.ts +19 -0
  174. package/dist/server/routes/shared.js +95 -19
  175. package/dist/server/routes/sync.js +1 -0
  176. package/dist/server/routes/syncAuxRoutes.js +9 -2
  177. package/dist/server/routes/syncPullApplyRoutes.js +23 -4
  178. package/dist/server/routes/syncPushRoutes.d.ts +1 -0
  179. package/dist/server/routes/syncPushRoutes.js +1 -0
  180. package/dist/server/routes/syncV3FeedRoutes.js +27 -16
  181. package/dist/server/routes/syncV3LocalCaptureRoutes.js +28 -2
  182. package/dist/server/routes/syncV3LocalFeedApplyRoutes.d.ts +1 -0
  183. package/dist/server/routes/syncV3LocalFeedApplyRoutes.js +26 -0
  184. package/dist/server/routes/syncV3OperationRoutes.js +45 -9
  185. package/dist/server/routes/tasks.js +124 -13
  186. package/dist/server/routes/workflows.js +9 -1
  187. package/dist/server/routes/workspaces.js +43 -1
  188. package/dist/server/routes.js +59 -0
  189. package/dist/server/workspaceDeletionAdmission.d.ts +23 -0
  190. package/dist/server/workspaceDeletionAdmission.js +50 -0
  191. package/dist/service/localServiceCli.js +16 -0
  192. package/dist/service/localServiceClientLifecycle.js +36 -10
  193. package/dist/services/codexAppServerModelGateway.d.ts +161 -0
  194. package/dist/services/codexAppServerModelGateway.js +663 -0
  195. package/dist/services/codexDeviceCodeLoginManager.d.ts +39 -0
  196. package/dist/services/codexDeviceCodeLoginManager.js +265 -0
  197. package/dist/services/codexModelProviderConnectionLifecycle.d.ts +8 -0
  198. package/dist/services/codexModelProviderConnectionLifecycle.js +73 -0
  199. package/dist/services/executorPhaseAApprovalRuntime.d.ts +14 -0
  200. package/dist/services/executorPhaseAApprovalRuntime.js +24 -0
  201. package/dist/services/executorPhaseAApprovalService.d.ts +40 -0
  202. package/dist/services/executorPhaseAApprovalService.js +609 -0
  203. package/dist/services/executorPhaseADriftEvaluator.d.ts +78 -0
  204. package/dist/services/executorPhaseADriftEvaluator.js +93 -0
  205. package/dist/services/executorPhaseAIssuerCore.d.ts +126 -0
  206. package/dist/services/executorPhaseAIssuerCore.js +295 -0
  207. package/dist/services/executorPhaseAIssuerRedemptionService.d.ts +34 -0
  208. package/dist/services/executorPhaseAIssuerRedemptionService.js +158 -0
  209. package/dist/services/githubReviewEvidenceRuntime.d.ts +14 -0
  210. package/dist/services/githubReviewEvidenceRuntime.js +30 -0
  211. package/dist/services/githubReviewEvidenceService.d.ts +93 -0
  212. package/dist/services/githubReviewEvidenceService.js +336 -0
  213. package/dist/services/modelGateway.d.ts +7 -0
  214. package/dist/services/modelProviderConnectionService.d.ts +71 -0
  215. package/dist/services/modelProviderConnectionService.js +279 -0
  216. package/dist/services/modelProviderCredentialHome.d.ts +32 -0
  217. package/dist/services/modelProviderCredentialHome.js +271 -0
  218. package/dist/services/ownerScopedModelConnectionGateway.d.ts +12 -0
  219. package/dist/services/ownerScopedModelConnectionGateway.js +30 -0
  220. package/dist/services/taskforceAgentConnectionBindingService.d.ts +66 -0
  221. package/dist/services/taskforceAgentConnectionBindingService.js +185 -0
  222. package/dist/services/taskforceAgentMcpBridge.d.ts +8 -2
  223. package/dist/services/taskforceAgentMcpBridge.js +30 -27
  224. package/dist/shared/adminEdgeProxy.d.ts +5 -0
  225. package/dist/shared/adminEdgeProxy.js +94 -0
  226. package/dist/shared/adminProxySessionCookies.d.ts +16 -0
  227. package/dist/shared/adminProxySessionCookies.js +86 -0
  228. package/dist/shared/aiProfileColors.d.ts +31 -1
  229. package/dist/shared/aiProfileColors.js +14 -6
  230. package/dist/shared/executorPhaseAApprovalGoldenVector.json +269 -0
  231. package/dist/shared/executorPhaseAApprovalReceipt.d.ts +112 -0
  232. package/dist/shared/executorPhaseAApprovalReceipt.js +58 -0
  233. package/dist/shared/executorPhaseAApprovalTrustPolicy.json +10 -0
  234. package/dist/shared/executorPhaseADriftContracts.d.ts +37 -0
  235. package/dist/shared/executorPhaseADriftContracts.js +63 -0
  236. package/dist/shared/executorPhaseAIssuerContracts.d.ts +75 -0
  237. package/dist/shared/executorPhaseAIssuerContracts.js +90 -0
  238. package/dist/shared/executorPhaseARunAuthorization.d.ts +120 -0
  239. package/dist/shared/executorPhaseARunAuthorization.js +232 -0
  240. package/dist/shared/executorPhaseASchemaValidation.d.ts +7 -0
  241. package/dist/shared/executorPhaseASchemaValidation.js +53 -0
  242. package/dist/shared/executorPhaseASchemas/approval-receipt.schema.json +106 -0
  243. package/dist/shared/executorPhaseASchemas/drift-attestation.schema.json +54 -0
  244. package/dist/shared/executorPhaseASchemas/drift-request.schema.json +47 -0
  245. package/dist/shared/executorPhaseASchemas/foundation-manifest.schema.json +29 -0
  246. package/dist/shared/executorPhaseASchemas/issuer-audit-record.schema.json +24 -0
  247. package/dist/shared/executorPhaseASchemas/issuer-proof.schema.json +43 -0
  248. package/dist/shared/executorPhaseASchemas/issuer-redemption-request.schema.json +18 -0
  249. package/dist/shared/executorPhaseASchemas/issuer-redemption-response.schema.json +39 -0
  250. package/dist/shared/executorPhaseASchemas/logical-envelope.schema.json +149 -0
  251. package/dist/shared/executorPhaseASchemas/preflight-report.schema.json +216 -0
  252. package/dist/shared/executorPhaseASchemas/run-capability.schema.json +111 -0
  253. package/dist/shared/executorPhaseASchemas/sender-proof.schema.json +37 -0
  254. package/dist/shared/executorPhaseASchemas/workload-grant.schema.json +68 -0
  255. package/dist/shared/executorPhaseASchemas/workload-jwt-claims.schema.json +67 -0
  256. package/dist/shared/executorPhaseATiming.d.ts +1 -0
  257. package/dist/shared/executorPhaseATiming.js +1 -0
  258. package/dist/shared/planningIdentity.js +1 -1
  259. package/dist/shared/productLogoKeys.d.ts +2 -0
  260. package/dist/shared/productLogoKeys.js +18 -0
  261. package/dist/shared/taskforceAgentDefinition.d.ts +0 -1
  262. package/dist/shared/taskforceAgentDefinition.js +6 -3
  263. package/dist/shared/taskforceAgentModels.d.ts +1 -0
  264. package/dist/shared/taskforceAgentModels.js +36 -3
  265. package/dist/shared/userFeatureGrants.d.ts +4 -0
  266. package/dist/shared/userFeatureGrants.js +7 -0
  267. package/dist/storage/executorPhaseAApprovalReceiptStore.d.ts +37 -0
  268. package/dist/storage/executorPhaseAApprovalReceiptStore.js +81 -0
  269. package/dist/storage/executorPhaseARunAuthorizationStore.d.ts +103 -0
  270. package/dist/storage/executorPhaseARunAuthorizationStore.js +492 -0
  271. package/dist/storage/githubReviewEvidenceInstallationStore.d.ts +26 -0
  272. package/dist/storage/githubReviewEvidenceInstallationStore.js +89 -0
  273. package/dist/storage/modelProviderConnectionStore.d.ts +99 -0
  274. package/dist/storage/modelProviderConnectionStore.js +446 -0
  275. package/dist/storage/postgresAdapter.d.ts +24 -3
  276. package/dist/storage/postgresAdapter.js +117 -14
  277. package/dist/storage/postgresWorker.js +22 -5
  278. package/dist/storage/postgresWorkerProtocol.d.ts +30 -0
  279. package/dist/storage/postgresWorkerProtocol.js +30 -0
  280. package/dist/storage/taskforceAgentConnectionBindingStore.d.ts +31 -0
  281. package/dist/storage/taskforceAgentConnectionBindingStore.js +84 -0
  282. package/dist/sync/cloudSyncApi.d.ts +4 -1
  283. package/dist/sync/cloudSyncApi.js +7 -2
  284. package/dist/sync/contentSyncState.d.ts +1 -1
  285. package/dist/sync/coordinator/localSyncExecutionPermitStore.d.ts +1 -0
  286. package/dist/sync/coordinator/localSyncExecutionPermitStore.js +67 -30
  287. package/dist/sync/coordinator/localWorkspaceSyncPendingV2PushProgress.d.ts +10 -0
  288. package/dist/sync/coordinator/localWorkspaceSyncPendingV2PushProgress.js +29 -0
  289. package/dist/sync/coordinator/localWorkspaceSyncRunner.js +6 -2
  290. package/dist/sync/coordinator/localWorkspaceSyncRunnerState.d.ts +15 -1
  291. package/dist/sync/coordinator/localWorkspaceSyncRunnerState.js +99 -2
  292. package/dist/sync/coordinator/workspaceSyncCredentialBroker.d.ts +1 -0
  293. package/dist/sync/coordinator/workspaceSyncCredentialBroker.js +33 -4
  294. package/dist/sync/engine/workspaceSyncContentLifecycleAdapter.d.ts +2 -1
  295. package/dist/sync/engine/workspaceSyncContentVersionStore.d.ts +38 -0
  296. package/dist/sync/engine/workspaceSyncContentVersionStore.js +50 -1
  297. package/dist/sync/engine/workspaceSyncEngineBrowserGatewayRemoteServices.js +20 -2
  298. package/dist/sync/engine/workspaceSyncEngineLifecyclePolicy.js +6 -6
  299. package/dist/sync/engine/workspaceSyncEngineLocalServices.d.ts +4 -0
  300. package/dist/sync/engine/workspaceSyncEngineLocalServices.js +11 -0
  301. package/dist/sync/engine/workspaceSyncEnginePushCompletion.d.ts +14 -0
  302. package/dist/sync/engine/workspaceSyncEnginePushCompletion.js +84 -0
  303. package/dist/sync/engine/workspaceSyncEngineRecovery.js +1 -0
  304. package/dist/sync/engine/workspaceSyncEngineRemoteServices.d.ts +11 -0
  305. package/dist/sync/engine/workspaceSyncEngineRemoteServices.js +2 -1
  306. package/dist/sync/engine/workspaceSyncEngineRuntime.d.ts +1 -0
  307. package/dist/sync/engine/workspaceSyncEngineRuntime.js +1 -0
  308. package/dist/sync/engine/workspaceSyncEngineServerRemoteServices.js +31 -4
  309. package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.d.ts +3 -1
  310. package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.js +134 -43
  311. package/dist/sync/engine/workspaceSyncEngineServerSnapshotReader.js +6 -0
  312. package/dist/sync/engine/workspaceSyncEngineTransfers.d.ts +1 -1
  313. package/dist/sync/engine/workspaceSyncEngineTransfers.js +11 -4
  314. package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.d.ts +1 -0
  315. package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.js +29 -0
  316. package/dist/sync/syncApplyHandlers.d.ts +2 -0
  317. package/dist/sync/syncApplyHandlers.js +10 -1
  318. package/dist/sync/syncService.d.ts +17 -0
  319. package/dist/sync/syncService.js +87 -19
  320. package/dist/sync/taskforceAgentSyncAuthorization.d.ts +16 -0
  321. package/dist/sync/taskforceAgentSyncAuthorization.js +20 -0
  322. package/dist/sync/v3/combinedFeedCapability.js +8 -0
  323. package/dist/sync/v3/durableInitiativeMutationRouter.js +18 -10
  324. package/dist/sync/v3/durableOperationReplay.d.ts +14 -0
  325. package/dist/sync/v3/durableOperationReplay.js +18 -0
  326. package/dist/sync/v3/durableTaskAttachmentLinksMutationRouter.d.ts +2 -0
  327. package/dist/sync/v3/durableTaskAttachmentLinksMutationRouter.js +14 -1
  328. package/dist/sync/v3/durableTaskChecklistMutationRouter.d.ts +4 -1
  329. package/dist/sync/v3/durableTaskChecklistMutationRouter.js +62 -15
  330. package/dist/sync/v3/durableTaskCommentMutationRouter.js +3 -0
  331. package/dist/sync/v3/durableTaskHttpBulkMutationRouter.d.ts +1 -0
  332. package/dist/sync/v3/durableTaskHttpBulkMutationRouter.js +30 -8
  333. package/dist/sync/v3/durableTaskHttpRootMutationRouter.d.ts +5 -3
  334. package/dist/sync/v3/durableTaskHttpRootMutationRouter.js +37 -2
  335. package/dist/sync/v3/durableTaxonomyMutationRouter.js +5 -0
  336. package/dist/sync/v3/durableWorkflowRuntimeMutationRouter.d.ts +11 -0
  337. package/dist/sync/v3/durableWorkflowRuntimeMutationRouter.js +39 -10
  338. package/dist/sync/v3/durableWorkstreamMutationRouter.js +18 -10
  339. package/dist/sync/v3/durableWorkstreamTaskOrderMutationRouter.js +16 -5
  340. package/dist/sync/v3/localOutboxDispatchRuntime.js +2 -2
  341. package/dist/sync/v3/localTaskAttachmentLinksOutboxService.d.ts +2 -0
  342. package/dist/sync/v3/localTaskAttachmentLinksOutboxService.js +47 -7
  343. package/dist/sync/v3/localTaskChecklistOutboxHandler.js +16 -2
  344. package/dist/sync/v3/localTaskChecklistOutboxService.d.ts +4 -0
  345. package/dist/sync/v3/localTaskChecklistOutboxService.js +14 -1
  346. package/dist/sync/v3/localTaskCreateOutboxService.js +15 -6
  347. package/dist/sync/v3/localTaskMetadataClient.d.ts +1 -0
  348. package/dist/sync/v3/localTaskMetadataClient.js +1 -0
  349. package/dist/sync/v3/localTaskMetadataOutboxHandler.js +5 -1
  350. package/dist/sync/v3/localTaskMetadataOutboxService.d.ts +2 -0
  351. package/dist/sync/v3/localTaskMetadataOutboxService.js +7 -0
  352. package/dist/sync/v3/localTaskRestoreOutboxService.js +14 -6
  353. package/dist/sync/v3/localTaskStatusClient.d.ts +1 -0
  354. package/dist/sync/v3/localTaskStatusClient.js +6 -1
  355. package/dist/sync/v3/localTaskStatusOutboxService.d.ts +10 -0
  356. package/dist/sync/v3/localTaskStatusOutboxService.js +272 -24
  357. package/dist/sync/v3/syncDurabilityStore.d.ts +41 -0
  358. package/dist/sync/v3/syncDurabilityStore.js +199 -13
  359. package/dist/sync/v3/taskAttachmentLinksMutationService.d.ts +6 -4
  360. package/dist/sync/v3/taskAttachmentLinksMutationService.js +19 -10
  361. package/dist/sync/v3/taskChecklistMutationService.d.ts +15 -2
  362. package/dist/sync/v3/taskChecklistMutationService.js +48 -1
  363. package/dist/sync/v3/taskCreateMutationService.d.ts +2 -2
  364. package/dist/sync/v3/taskCreateMutationService.js +7 -4
  365. package/dist/sync/v3/taskMetadataMutationService.d.ts +3 -0
  366. package/dist/sync/v3/taskMetadataMutationService.js +4 -0
  367. package/dist/sync/v3/taskRestoreMutationService.d.ts +2 -2
  368. package/dist/sync/v3/taskRestoreMutationService.js +7 -4
  369. package/dist/sync/v3/taskStatusMutationService.d.ts +31 -1
  370. package/dist/sync/v3/taskStatusMutationService.js +123 -3
  371. package/dist/sync/v3/workflowAssignmentSync.d.ts +6 -0
  372. package/dist/sync/v3/workflowAssignmentSync.js +30 -0
  373. package/dist/sync/v3/workspaceSyncJournalReader.js +1 -1
  374. package/dist/sync/v3/workspaceSyncOperationRetentionService.d.ts +16 -0
  375. package/dist/sync/v3/workspaceSyncOperationRetentionService.js +83 -0
  376. package/dist/sync/v3/workspaceSyncV2ProjectionExclusions.d.ts +1 -1
  377. package/dist/sync/v3/workspaceSyncV2ProjectionExclusions.js +13 -3
  378. package/dist/sync/v3/workspaceSyncV3AttachmentApplyObligationStore.d.ts +11 -0
  379. package/dist/sync/v3/workspaceSyncV3AttachmentApplyObligationStore.js +27 -10
  380. package/dist/sync/v3/workspaceSyncV3AttachmentAssetHydration.d.ts +2 -1
  381. package/dist/sync/v3/workspaceSyncV3AttachmentAssetHydration.js +52 -10
  382. package/dist/sync/v3/workspaceSyncV3CloudOperationHandler.d.ts +1 -0
  383. package/dist/sync/v3/workspaceSyncV3CloudOperationHandler.js +18 -3
  384. package/dist/sync/v3/workspaceSyncV3CombinedFeedOrchestrator.js +8 -3
  385. package/dist/sync/v3/workspaceSyncV3CombinedLocalApply.js +51 -10
  386. package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.d.ts +14 -0
  387. package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.js +49 -25
  388. package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.d.ts +13 -4
  389. package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.js +124 -57
  390. package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.d.ts +20 -0
  391. package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.js +106 -30
  392. package/dist/sync/v3/workspaceSyncV3CombinedWireContract.d.ts +4 -1
  393. package/dist/sync/v3/workspaceSyncV3CombinedWireContract.js +34 -0
  394. package/dist/sync/v3/workspaceSyncV3CoverageRegistry.js +12 -0
  395. package/dist/sync/v3/workspaceSyncV3FeedProfile.d.ts +1 -1
  396. package/dist/sync/v3/workspaceSyncV3LegacyBoundaryAttestation.d.ts +1 -0
  397. package/dist/sync/v3/workspaceSyncV3LegacyBoundaryAttestation.js +23 -10
  398. package/dist/sync/v3/workspaceSyncV3NestedTaskApply.d.ts +3 -0
  399. package/dist/sync/v3/workspaceSyncV3NestedTaskApply.js +64 -13
  400. package/dist/sync/v3/workspaceSyncV3NestedTaskCodecs.d.ts +9 -0
  401. package/dist/sync/v3/workspaceSyncV3NestedTaskCodecs.js +26 -0
  402. package/dist/sync/v3/workspaceSyncV3NestedTaskProjection.d.ts +15 -5
  403. package/dist/sync/v3/workspaceSyncV3NestedTaskProjection.js +50 -14
  404. package/dist/sync/v3/workspaceSyncV3NestedTaskRepairSnapshot.d.ts +2 -1
  405. package/dist/sync/v3/workspaceSyncV3NestedTaskRepairSnapshot.js +11 -3
  406. package/dist/sync/v3/workspaceSyncV3OperationProtocol.d.ts +5 -0
  407. package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.d.ts +7 -0
  408. package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.js +55 -9
  409. package/dist/sync/v3/workspaceSyncV3RepairSnapshotRetentionService.d.ts +17 -0
  410. package/dist/sync/v3/workspaceSyncV3RepairSnapshotRetentionService.js +64 -0
  411. package/dist/sync/v3/workspaceSyncV3TaskCommentAudit.js +9 -2
  412. package/dist/sync/v3/workspaceSyncV3TaskCoverCoverage.d.ts +7 -0
  413. package/dist/sync/v3/workspaceSyncV3TaskCoverCoverage.js +37 -0
  414. package/dist/sync/v3/workspaceSyncV3TaskCoverWireContract.d.ts +6 -0
  415. package/dist/sync/v3/workspaceSyncV3TaskCoverWireContract.js +9 -0
  416. package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverCoverage.d.ts +7 -0
  417. package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverCoverage.js +33 -0
  418. package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverWireContract.d.ts +7 -0
  419. package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverWireContract.js +8 -0
  420. package/dist/sync/workspacePullFeed.js +2 -1
  421. package/dist/sync/workspaceRepair.d.ts +8 -2
  422. package/dist/sync/workspaceRepair.js +222 -6
  423. package/dist/sync/workspaceSyncModel.d.ts +21 -0
  424. package/dist/sync/workspaceSyncModel.js +35 -7
  425. package/dist/sync/workspaceSyncState.d.ts +1 -0
  426. package/dist/sync/workspaceSyncV2SnapshotBuilder.d.ts +6 -0
  427. package/dist/sync/workspaceSyncV2SnapshotBuilder.js +5 -0
  428. package/dist/types.d.ts +47 -1
  429. package/dist/types.js +6 -0
  430. package/dist/ui/assets/AiIdentityRosterCard-OcSz1PkK.js +1 -0
  431. package/dist/ui/assets/AiProfilesModule-ByhYW5Xi.js +1 -0
  432. package/dist/ui/assets/AnnotatedAttachmentWorkspace-BTM6nIg_.js +3 -0
  433. package/dist/ui/assets/AnnotatedAttachmentWorkspace-TzYu7pkG.css +1 -0
  434. package/dist/ui/assets/{AssetTraySortControl-Kf1pelSy.js → AssetTraySortControl-DabEG8L4.js} +1 -1
  435. package/dist/ui/assets/{ContextAttachmentManager-B8boOs6Q.js → ContextAttachmentManager-Coa8yVGM.js} +2 -2
  436. package/dist/ui/assets/{DocumentWorkspace-DXH4XUsB.js → DocumentWorkspace-BB0qhdix.js} +1 -1
  437. package/dist/ui/assets/{EntityActivityTimeline-BtSTq0ON.js → EntityActivityTimeline-CZ8x4UJE.js} +1 -1
  438. package/dist/ui/assets/PlanningModule-pRPjR7v5.js +1 -0
  439. package/dist/ui/assets/PlansPage-D86pZSSl.js +1 -0
  440. package/dist/ui/assets/TaskContextUpload-BVIkU9yT.js +1 -0
  441. package/dist/ui/assets/TaskSettings-Cv1mNhv_.js +12 -0
  442. package/dist/ui/assets/TaskforceAgentsModule-b-8R25cJ.css +1 -0
  443. package/dist/ui/assets/TaskforceAgentsModule-gmH-PD2q.js +24 -0
  444. package/dist/ui/assets/{WorkflowManagerModule-DWFspC-o.js → WorkflowManagerModule-DbfnHJ-f.js} +1 -1
  445. package/dist/ui/assets/index-BZ-hdZSk.css +1 -0
  446. package/dist/ui/assets/index-CTsDBaef.js +7 -0
  447. package/dist/ui/assets/{vendor-icons-BkFLXavV.js → vendor-icons-Bsq-mcEn.js} +1 -1
  448. package/dist/ui/branding/logos/letterhead_dark.png +0 -0
  449. package/dist/ui/branding/logos/letterhead_light.png +0 -0
  450. package/dist/ui/branding/logos/signature_dark.png +0 -0
  451. package/dist/ui/branding/logos/signature_light.png +0 -0
  452. package/dist/ui/index.html +3 -3
  453. package/dist/utils/aiProfileDefaultLogo.js +16 -48
  454. package/dist/utils/httpSetCookie.d.ts +1 -0
  455. package/dist/utils/httpSetCookie.js +4 -1
  456. package/dist/utils/localRuntimeUrl.d.ts +1 -0
  457. package/dist/utils/localRuntimeUrl.js +14 -0
  458. package/dist/utils/productLogoRegistry.d.ts +2 -0
  459. package/dist/utils/productLogoRegistry.js +36 -0
  460. package/dist/utils/syncStatusPresentation.d.ts +4 -0
  461. package/dist/utils/syncStatusPresentation.js +17 -0
  462. package/dist/utils/taskActivity.d.ts +3 -2
  463. package/dist/utils/taskActivity.js +19 -2
  464. package/dist/utils/taskEditorReconciliation.d.ts +40 -0
  465. package/dist/utils/taskEditorReconciliation.js +217 -0
  466. package/dist/utils/taskEvents.d.ts +2 -0
  467. package/dist/utils/taskNormalization.d.ts +1 -0
  468. package/dist/utils/taskNormalization.js +39 -0
  469. package/dist/utils/taskSearch.js +2 -2
  470. package/dist/utils/uiNotice.d.ts +4 -0
  471. package/dist/utils/workspaceSyncPresentation.d.ts +1 -1
  472. package/dist/utils/workspaceSyncPresentation.js +23 -17
  473. package/package.json +36 -6
  474. package/dist/ui/assets/AiIdentityRosterCard-MZs7lVED.js +0 -1
  475. package/dist/ui/assets/AiProfilesModule-C3i0LOxe.js +0 -1
  476. package/dist/ui/assets/AnnotatedAttachmentWorkspace-CBRZ8rca.css +0 -1
  477. package/dist/ui/assets/AnnotatedAttachmentWorkspace-DVZk5Tln.js +0 -3
  478. package/dist/ui/assets/PlanningModule-BPVyEa-f.js +0 -1
  479. package/dist/ui/assets/PlansPage-ChqgxALc.js +0 -1
  480. package/dist/ui/assets/TaskContextUpload-CB3ol0sN.js +0 -1
  481. package/dist/ui/assets/TaskSettings-g4ECKNOz.js +0 -12
  482. package/dist/ui/assets/TaskforceAgentsModule-BazdUwxZ.js +0 -21
  483. package/dist/ui/assets/TaskforceAgentsModule-D6IC0S7Q.css +0 -1
  484. package/dist/ui/assets/index-BUplSsv_.js +0 -7
  485. package/dist/ui/assets/index-gz2EXuoK.css +0 -1
@@ -11,8 +11,16 @@ function nullableStringProperty(description) {
11
11
  ],
12
12
  };
13
13
  }
14
- function numberProperty(description) {
15
- return { type: 'number', description };
14
+ function integerProperty(description, minimum, maximum) {
15
+ return {
16
+ type: 'integer',
17
+ description,
18
+ ...(minimum === undefined ? {} : { minimum }),
19
+ ...(maximum === undefined ? {} : { maximum }),
20
+ };
21
+ }
22
+ function integerEnumProperty(description, values) {
23
+ return { type: 'integer', description, enum: values };
16
24
  }
17
25
  function booleanProperty(description) {
18
26
  return { type: 'boolean', description };
@@ -57,7 +65,7 @@ export function registerTaskPlanningTools(registerTool, executeTool) {
57
65
  title: stringProperty('Initiative title.'),
58
66
  description: stringProperty('Optional initiative description.'),
59
67
  ownerId: stringProperty(`${context.assigneeHint} Call list_assignees to inspect eligible IDs.`),
60
- order: numberProperty('Optional initiative order.'),
68
+ order: integerProperty('Optional non-negative initiative order.', 0),
61
69
  },
62
70
  required: ['title'],
63
71
  },
@@ -71,7 +79,7 @@ export function registerTaskPlanningTools(registerTool, executeTool) {
71
79
  title: stringProperty('Workstream title.'),
72
80
  description: stringProperty('Optional workstream description.'),
73
81
  ownerId: stringProperty(`${context.assigneeHint} Call list_assignees to inspect eligible IDs.`),
74
- order: numberProperty('Optional workstream order.'),
82
+ order: integerProperty('Optional non-negative workstream order.', 0),
75
83
  tasks: {
76
84
  type: 'array', maxItems: 50,
77
85
  items: {
@@ -83,8 +91,8 @@ export function registerTaskPlanningTools(registerTool, executeTool) {
83
91
  assignee: stringProperty(`${context.assigneeHint} Call list_assignees to inspect eligible IDs.`),
84
92
  category: stringProperty('Task category.', context.categoryEnum),
85
93
  type: stringProperty('Task type.', context.typeEnum),
86
- priority: numberProperty(context.priorityDesc),
87
- complexity: numberProperty(context.complexityDesc),
94
+ priority: integerEnumProperty(context.priorityDesc, context.priorityEnum),
95
+ complexity: integerProperty(context.complexityDesc, 1, 5),
88
96
  scheduledDate: stringProperty('Optional schedule date (YYYY-MM-DD).'),
89
97
  dueDate: stringProperty('Optional due date (YYYY-MM-DD).'),
90
98
  },
@@ -120,22 +128,24 @@ export function registerTaskPlanningTools(registerTool, executeTool) {
120
128
  status: stringProperty('Filter by status.', ['task', 'on-hold', 'in-progress', 'review', 'done', 'cancelled']),
121
129
  openOnly: booleanProperty('When true, only include open tasks (task, on-hold, in-progress, review).'),
122
130
  assignee: stringProperty(context.assigneeHint),
123
- priority: numberProperty('Filter by priority level.'),
131
+ priority: integerEnumProperty(context.priorityDesc, context.priorityEnum),
124
132
  type: stringProperty('Filter by task type.', context.typeEnum),
125
133
  workstreamId: stringProperty('Filter by workstream ID or workstream reference such as WS-123.'),
126
134
  sort: stringProperty('Sort field (default: created).', ['priority', 'created', 'updated']),
127
135
  order: stringProperty('Sort order (default: desc).', ['asc', 'desc']),
128
- limit: numberProperty('Max tasks to return.'),
129
- offset: numberProperty('Non-negative result offset for pagination (default: 0).'),
136
+ limit: integerProperty('Max tasks to return (max 200).', 1, 200),
137
+ offset: integerProperty('Non-negative result offset for pagination (default: 0).', 0),
130
138
  },
131
139
  },
132
140
  }));
133
141
  register('search_tasks', (context) => ({
134
- description: context.describeTool('Search active and archived tasks by keyword, ID, T-* reference, or provisional LT-* reference. Use scope to narrow results. Prefer this over list_tasks when looking for a specific task by name. When results include links, preserve those links when presenting tasks.'),
142
+ description: context.describeTool('Search active and archived tasks by keyword, ID, T-* reference, or provisional LT-* reference. Use scope to narrow results and offset/limit to continue broad searches. Prefer this over list_tasks when looking for a specific task by name. When results include links, preserve those links when presenting tasks.'),
135
143
  inputSchema: {
136
144
  properties: {
137
145
  query: stringProperty('Search term or exact task reference such as T-123 or LT-123.'),
138
146
  scope: stringProperty('Search scope (default: all).', ['all', 'active', 'archive']),
147
+ limit: integerProperty('Page size (default 25; max 50).', 1, 50),
148
+ offset: integerProperty('Non-negative result offset (default 0).', 0),
139
149
  },
140
150
  required: ['query'],
141
151
  },
@@ -179,10 +189,12 @@ export function registerTaskPlanningTools(registerTool, executeTool) {
179
189
  },
180
190
  }));
181
191
  register('list_initiatives', (context) => ({
182
- description: context.describeTool('List or search initiatives for the active workspace. Pass query to search by initiative title, description, ID/reference, owner, or linked workstream title. Returns compact initiative summaries with workstream and task counts.'),
192
+ description: context.describeTool('List or search initiatives for the active workspace. Pass query to search by initiative title, description, ID/reference, owner, or linked workstream title. Use offset/limit to continue through compact summaries.'),
183
193
  inputSchema: {
184
194
  properties: {
185
195
  query: stringProperty('Optional search term for initiative title, description, ID/reference such as IN-123, owner, or linked workstream title.'),
196
+ limit: { type: 'integer', minimum: 1, maximum: 100, description: 'Page size (default 25; max 100).' },
197
+ offset: { type: 'integer', minimum: 0, description: 'Non-negative result offset (default 0).' },
186
198
  },
187
199
  },
188
200
  }));
@@ -205,7 +217,7 @@ export function registerTaskPlanningTools(registerTool, executeTool) {
205
217
  title: stringProperty('Initiative title.'),
206
218
  description: stringProperty('Optional initiative description.'),
207
219
  ownerId: stringProperty(context.assigneeHint),
208
- order: numberProperty('Optional sort order among initiatives.'),
220
+ order: integerProperty('Optional non-negative sort order among initiatives.', 0),
209
221
  attachments: arrayProperty('Optional attachment descriptors to store on the initiative. Prefer save_initiative_attachment for generated content or files.', {
210
222
  type: 'object',
211
223
  properties: {
@@ -231,7 +243,7 @@ export function registerTaskPlanningTools(registerTool, executeTool) {
231
243
  title: stringProperty('Updated initiative title.'),
232
244
  description: stringProperty('Updated initiative description.'),
233
245
  ownerId: stringProperty(context.assigneeHint),
234
- order: numberProperty('Optional sort order among initiatives.'),
246
+ order: integerProperty('Optional non-negative sort order among initiatives.', 0),
235
247
  attachments: arrayProperty('Replacement attachment descriptors for the initiative. Prefer save_initiative_attachment for generated content or files. Removing managed attachments requires delete_initiative_attachment in the extended profile.', {
236
248
  type: 'object',
237
249
  properties: {
@@ -278,10 +290,12 @@ export function registerTaskPlanningTools(registerTool, executeTool) {
278
290
  },
279
291
  }));
280
292
  register('list_workstreams', (context) => ({
281
- description: context.describeTool('List or search workstreams for the active workspace. Pass query to search by workstream title, description, ID/reference, owner, or linked initiative title/reference. Returns compact workstream summaries with task counts.'),
293
+ description: context.describeTool('List or search workstreams for the active workspace. Pass query to search by workstream title, description, ID/reference, owner, or linked initiative title/reference. Use offset/limit to continue through compact summaries.'),
282
294
  inputSchema: {
283
295
  properties: {
284
296
  query: stringProperty('Optional search term for workstream title, description, ID/reference such as WS-123, owner, or linked initiative title/reference.'),
297
+ limit: { type: 'integer', minimum: 1, maximum: 100, description: 'Page size (default 25; max 100).' },
298
+ offset: { type: 'integer', minimum: 0, description: 'Non-negative result offset (default 0).' },
285
299
  },
286
300
  },
287
301
  }));
@@ -305,7 +319,7 @@ export function registerTaskPlanningTools(registerTool, executeTool) {
305
319
  description: stringProperty('Optional workstream description.'),
306
320
  ownerId: stringProperty(context.assigneeHint),
307
321
  initiativeId: stringProperty('Optional initiative ID or initiative reference such as IN-123.'),
308
- order: numberProperty('Optional sort order among workstreams.'),
322
+ order: integerProperty('Optional non-negative sort order among workstreams.', 0),
309
323
  attachments: arrayProperty('Optional attachment descriptors to store on the workstream. Prefer save_workstream_attachment for generated content or files.', {
310
324
  type: 'object',
311
325
  properties: {
@@ -332,7 +346,7 @@ export function registerTaskPlanningTools(registerTool, executeTool) {
332
346
  description: stringProperty('Updated workstream description.'),
333
347
  ownerId: stringProperty(context.assigneeHint),
334
348
  initiativeId: stringProperty('Optional initiative ID or initiative reference such as IN-123. Pass an empty string to unlink.'),
335
- order: numberProperty('Optional sort order among workstreams.'),
349
+ order: integerProperty('Optional non-negative sort order among workstreams.', 0),
336
350
  attachments: arrayProperty('Replacement attachment descriptors for the workstream. Prefer save_workstream_attachment for generated content or files. Removing managed attachments requires delete_workstream_attachment in the extended profile.', {
337
351
  type: 'object',
338
352
  properties: {
@@ -384,9 +398,9 @@ export function registerTaskPlanningTools(registerTool, executeTool) {
384
398
  inputSchema: {
385
399
  properties: {
386
400
  taskId: stringProperty('Task ID or task reference such as T-123.'),
387
- id: stringProperty('Alias for taskId. Task ID or task reference such as T-123.'),
388
401
  workstreamId: nullableStringProperty('Workstream ID or workstream reference such as WS-123. Pass an empty string or null to unlink.'),
389
402
  },
403
+ required: ['taskId', 'workstreamId'],
390
404
  },
391
405
  }));
392
406
  register('update_workstream_initiative', (context) => ({
@@ -394,13 +408,13 @@ export function registerTaskPlanningTools(registerTool, executeTool) {
394
408
  inputSchema: {
395
409
  properties: {
396
410
  workstreamId: stringProperty('Workstream ID or workstream reference such as WS-123.'),
397
- id: stringProperty('Alias for workstreamId. Workstream ID or workstream reference such as WS-123.'),
398
411
  initiativeId: nullableStringProperty('Initiative ID or initiative reference such as IN-123. Pass an empty string or null to unlink.'),
399
412
  },
413
+ required: ['workstreamId', 'initiativeId'],
400
414
  },
401
415
  }));
402
416
  register('get_task_checklist', (context) => ({
403
- description: context.describeTool('Read the structured checklist items for one task. Returns stored checklist items, not markdown parsing.'),
417
+ description: context.describeTool('Read the structured checklist items for one task. Returns stored checklist items plus detailRevision for optimistic concurrency; it does not parse markdown.'),
404
418
  inputSchema: {
405
419
  properties: {
406
420
  taskId: stringProperty('Task ID or task reference such as T-123.'),
@@ -419,6 +433,24 @@ export function registerTaskPlanningTools(registerTool, executeTool) {
419
433
  required: ['taskId', 'text'],
420
434
  },
421
435
  }));
436
+ register('update_task_checklist_item', (context) => ({
437
+ description: context.describeTool('Update one existing checklist item without replacing the full checklist. Read get_task_checklist first and pass expectedDetailRevision to reject concurrent changes. Pass idempotencyKey only when retrying an ambiguous outcome; reuse it only with the exact same task, item, patch, and revision.'),
438
+ inputSchema: {
439
+ properties: {
440
+ taskId: stringProperty('Task ID or task reference such as T-123.'),
441
+ itemId: stringProperty('Stable checklist item ID returned by get_task_checklist.'),
442
+ text: stringProperty('Optional replacement checklist text. Must be descriptive and non-empty.'),
443
+ done: booleanProperty('Optional completion state.'),
444
+ order: integerProperty('Optional non-negative display order. Sibling items are not renumbered.', 0),
445
+ expectedDetailRevision: stringProperty('Optional task detailRevision from get_task_checklist. A stale value rejects the update without mutation.'),
446
+ idempotencyKey: {
447
+ type: 'string', minLength: 1, maxLength: 128,
448
+ description: 'Optional opaque retry key scoped to the active workspace, actor, and tool.',
449
+ },
450
+ },
451
+ required: ['taskId', 'itemId'],
452
+ },
453
+ }));
422
454
  register('replace_task_checklist', (context) => ({
423
455
  description: context.describeTool('Replace the structured checklist items for one task with a new ordered list. Use this when a user explicitly asks to create, update, or replace a task checklist; do not just draft checklist text.'),
424
456
  inputSchema: {
@@ -430,7 +462,7 @@ export function registerTaskPlanningTools(registerTool, executeTool) {
430
462
  id: { type: 'string', description: 'Stable checklist item ID. Reuse it when reordering or updating an existing item.' },
431
463
  text: { type: 'string' },
432
464
  done: { type: 'boolean' },
433
- order: { type: 'number', description: 'Optional zero-based display order.' },
465
+ order: { type: 'integer', minimum: 0, description: 'Optional zero-based display order.' },
434
466
  createdAt: { type: 'string', description: 'Optional canonical ISO creation timestamp.' },
435
467
  updatedAt: { type: 'string', description: 'Optional canonical ISO last-change timestamp.' },
436
468
  },
@@ -454,28 +486,17 @@ export function registerTaskPlanningTools(registerTool, executeTool) {
454
486
  inputSchema: {
455
487
  properties: {
456
488
  taskId: stringProperty('Task ID or task reference such as T-123.'),
457
- id: stringProperty('Alias for taskId.'),
458
489
  date: nullableStringProperty('YYYY-MM-DD; null or empty with taskId unschedules.'),
459
- scheduledDate: nullableStringProperty('Alias for date.'),
460
- order: numberProperty('Optional position within that day.'),
461
- orderInDay: numberProperty('Alias for order.'),
490
+ order: integerProperty('Optional non-negative position within that day.', 0),
462
491
  taskIds: arrayProperty('Ordered task IDs or references replacing one day.', { type: 'string' }),
463
- moves: arrayProperty('Advanced reorder moves using task, date, and order aliases.', {
492
+ moves: arrayProperty('Advanced reorder moves using canonical taskId, date, and order fields.', {
464
493
  type: 'object',
465
494
  properties: {
466
- id: { type: 'string' },
467
495
  taskId: { type: 'string' },
468
496
  date: { type: 'string' },
469
- scheduledDate: { type: 'string' },
470
- order: { type: 'number' },
471
- orderInDay: { type: 'number' },
497
+ order: { type: 'integer', minimum: 0 },
472
498
  },
473
- anyOf: [
474
- { required: ['id', 'date'] },
475
- { required: ['id', 'scheduledDate'] },
476
- { required: ['taskId', 'date'] },
477
- { required: ['taskId', 'scheduledDate'] },
478
- ],
499
+ required: ['taskId', 'date'],
479
500
  }),
480
501
  },
481
502
  },
@@ -535,9 +556,9 @@ export function registerTaskPlanningTools(registerTool, executeTool) {
535
556
  workstreamId: stringProperty('Workstream ID or WS-123; use to create the task directly inside a workstream. Search list_workstreams if needed.'),
536
557
  category: stringProperty('Task category value.', context.categoryEnum),
537
558
  type: stringProperty('Task type value.', context.typeEnum),
538
- priority: numberProperty(context.priorityDesc),
559
+ priority: integerEnumProperty(context.priorityDesc, context.priorityEnum),
539
560
  status: stringProperty('Initial task status.', ['task', 'on-hold', 'in-progress', 'review', 'done', 'cancelled']),
540
- complexity: numberProperty(context.complexityDesc),
561
+ complexity: integerProperty(context.complexityDesc, 1, 5),
541
562
  scheduledDate: stringProperty('Optional scheduled date in YYYY-MM-DD format.'),
542
563
  dueDate: stringProperty('Optional due date in YYYY-MM-DD format.'),
543
564
  },
@@ -564,7 +585,7 @@ export function registerTaskPlanningTools(registerTool, executeTool) {
564
585
  },
565
586
  }));
566
587
  register('update_task', (context) => ({
567
- description: context.describeTool('Update an existing task. Current taxonomy values are included in this tool schema; call get_config only for richer metadata or after a validation mismatch. Use start_task when beginning active work on a tracked task, and prefer finish_task for the final completion or review handoff.'),
588
+ description: context.describeTool('Update task fields. Use start_task to begin tracked work. Review transitions are rejected; use finish_task so its required handoff comment, status, and reviewer commit atomically.'),
568
589
  inputSchema: {
569
590
  properties: {
570
591
  id: stringProperty('Task ID or task reference such as T-123.'),
@@ -574,9 +595,9 @@ export function registerTaskPlanningTools(registerTool, executeTool) {
574
595
  workstreamId: stringProperty('Updated workstream ID or workstream reference such as WS-123. Pass an empty string to unlink the task. Call list_workstreams with query first if you only know the workstream name.'),
575
596
  category: stringProperty('Updated category value.', context.categoryEnum),
576
597
  type: stringProperty('Updated task type value.', context.typeEnum),
577
- priority: numberProperty(context.priorityDesc),
598
+ priority: integerEnumProperty(context.priorityDesc, context.priorityEnum),
578
599
  status: stringProperty('Updated task status.', ['task', 'on-hold', 'in-progress', 'review', 'done', 'cancelled']),
579
- complexity: numberProperty(context.complexityDesc),
600
+ complexity: integerProperty(context.complexityDesc, 1, 5),
580
601
  scheduledDate: stringProperty('Updated scheduled date in YYYY-MM-DD format. Pass an empty string to clear.'),
581
602
  dueDate: stringProperty('Updated due date in YYYY-MM-DD format. Pass an empty string to clear.'),
582
603
  },
@@ -584,12 +605,13 @@ export function registerTaskPlanningTools(registerTool, executeTool) {
584
605
  },
585
606
  }));
586
607
  register('finish_task', (context) => ({
587
- description: context.describeTool('Default end-of-task handoff. Use outcome=\'done\' for completed work or outcome=\'review\' for validation. Both remain active and unarchived; use archive_task for history. Archived tasks require reopen_task first.'),
608
+ description: context.describeTool('Finish active work as done or review without archiving. Review atomically commits its required handoff comment and reviewer. Pass a human or AI reviewer ID unless an eligible human is already assigned. No Git or PR required.'),
588
609
  inputSchema: {
589
610
  properties: {
590
611
  id: stringProperty('Task ID or task reference such as T-123.'),
591
612
  outcome: stringProperty('Completion outcome.', ['review', 'done']),
592
- comment: stringProperty('Optional completion note returned in the handoff response.'),
613
+ comment: stringProperty('Required for review and persisted atomically with the transition; optional for done.'),
614
+ reviewer: stringProperty('Reviewer assignee ID. Required for review unless an eligible human is already assigned.'),
593
615
  },
594
616
  required: ['id', 'outcome'],
595
617
  },
@@ -10,7 +10,44 @@ export function resolveCanonicalMcpToolName(nameRaw) {
10
10
  export function resolveMcpToolCallCompatibility(nameRaw, argsRaw) {
11
11
  const name = resolveCanonicalMcpToolName(nameRaw);
12
12
  const args = argsRaw && typeof argsRaw === 'object' && !Array.isArray(argsRaw)
13
- ? argsRaw
13
+ ? { ...argsRaw }
14
14
  : {};
15
+ const moveAlias = (alias, canonical) => {
16
+ if (args[canonical] === undefined && args[alias] !== undefined)
17
+ args[canonical] = args[alias];
18
+ delete args[alias];
19
+ };
20
+ if (name === 'get_image')
21
+ moveAlias('id', 'imageId');
22
+ if (name === 'get_image_annotations')
23
+ moveAlias('imageAssetId', 'imageId');
24
+ if (name === 'get_task_attachments')
25
+ moveAlias('id', 'taskId');
26
+ if (name === 'update_task_workstream')
27
+ moveAlias('id', 'taskId');
28
+ if (name === 'update_workstream_initiative')
29
+ moveAlias('id', 'workstreamId');
30
+ if (name === 'update_schedule') {
31
+ moveAlias('id', 'taskId');
32
+ moveAlias('scheduledDate', 'date');
33
+ moveAlias('orderInDay', 'order');
34
+ if (Array.isArray(args.moves)) {
35
+ args.moves = args.moves.map((move) => {
36
+ if (!move || typeof move !== 'object' || Array.isArray(move))
37
+ return move;
38
+ const normalized = { ...move };
39
+ const normalizeMoveAlias = (alias, canonical) => {
40
+ if (normalized[canonical] === undefined && normalized[alias] !== undefined) {
41
+ normalized[canonical] = normalized[alias];
42
+ }
43
+ delete normalized[alias];
44
+ };
45
+ normalizeMoveAlias('id', 'taskId');
46
+ normalizeMoveAlias('scheduledDate', 'date');
47
+ normalizeMoveAlias('orderInDay', 'order');
48
+ return normalized;
49
+ });
50
+ }
51
+ }
15
52
  return { name, arguments: args };
16
53
  }
@@ -22,6 +22,7 @@ export type McpToolDescriptorContext = {
22
22
  describeTool: (text: string) => string;
23
23
  assigneeHint: string;
24
24
  categoryEnum: string[];
25
+ priorityEnum: number[];
25
26
  priorityDesc: string;
26
27
  typeEnum: string[];
27
28
  complexityDesc: string;
@@ -5,11 +5,13 @@ type McpScopedPermission = Extract<McpPermission, {
5
5
  kind: 'scope';
6
6
  }>;
7
7
  type McpScope = McpScopedPermission['scope'];
8
+ export type CloudMcpToolProfile = Extract<McpToolProfile, 'default' | 'extended'>;
8
9
  export declare function normalizeMcpToolProfile(value: unknown, fallback: McpToolProfile): McpToolProfile;
9
10
  export declare function getDefaultMcpToolProfile(runtimeMode: 'local' | 'cloud'): McpToolProfile;
10
11
  export declare function isMcpToolVisibleInProfile(name: string, profile: McpToolProfile): boolean;
11
12
  export declare function getMcpToolRequiredProfiles(name: string): McpToolProfile[];
12
13
  export declare function getMcpToolProfileMembership(profile: McpToolProfile): McpToolName[];
14
+ export declare function getCloudMcpToolProfileMembership(profile: CloudMcpToolProfile, scopes?: readonly McpScope[]): McpToolName[];
13
15
  export declare function getManagedAgentMcpRuntimeProfile(_profile?: ManagedAgentMcpToolProfile): McpToolProfile;
14
16
  export declare function getManagedAgentMcpToolProfileMembership(profile?: ManagedAgentMcpToolProfile): McpToolName[];
15
17
  export declare function getManagedAgentMcpToolScopes(profile?: ManagedAgentMcpToolProfile): McpScope[];
@@ -14,6 +14,7 @@ const MANAGED_AGENT_ALLOWED_MUTATING_TOOLS = new Set([
14
14
  'add_comment',
15
15
  'add_initiative_comment',
16
16
  'add_task_checklist_item',
17
+ 'update_task_checklist_item',
17
18
  'add_workstream_comment',
18
19
  'complete_workflow_step',
19
20
  'replace_task_checklist',
@@ -45,6 +46,15 @@ export function getMcpToolProfileMembership(profile) {
45
46
  .map(([name]) => name)
46
47
  .sort((left, right) => left.localeCompare(right));
47
48
  }
49
+ export function getCloudMcpToolProfileMembership(profile, scopes) {
50
+ const allowedScopes = scopes ? new Set(scopes) : null;
51
+ return getMcpToolProfileMembership(profile).filter((name) => {
52
+ const permission = MCP_TOOL_REGISTRY[name].permission;
53
+ if (permission.kind === 'local-only' || permission.kind === 'session-only')
54
+ return false;
55
+ return permission.kind === 'public' || !allowedScopes || allowedScopes.has(permission.scope);
56
+ });
57
+ }
48
58
  export function getManagedAgentMcpRuntimeProfile(_profile = MCP_MANAGED_AGENT_DEFAULT_PROFILE) {
49
59
  return 'default';
50
60
  }
@@ -51,6 +51,7 @@ export declare const MCP_TOOL_REGISTRY: Readonly<{
51
51
  readonly update_workstream_initiative: McpToolRegistryEntry;
52
52
  readonly get_task_checklist: McpToolRegistryEntry;
53
53
  readonly add_task_checklist_item: McpToolRegistryEntry;
54
+ readonly update_task_checklist_item: McpToolRegistryEntry;
54
55
  readonly replace_task_checklist: McpToolRegistryEntry;
55
56
  readonly get_task_attachments: McpToolRegistryEntry;
56
57
  readonly get_workstream_attachments: McpToolRegistryEntry;
@@ -49,6 +49,7 @@ export const MCP_TOOL_REGISTRY = Object.freeze({
49
49
  update_workstream_initiative: defaultTool({ kind: 'scope', scope: 'tasks:write' }, true),
50
50
  get_task_checklist: defaultTool({ kind: 'scope', scope: 'tasks:read' }, false),
51
51
  add_task_checklist_item: defaultTool({ kind: 'scope', scope: 'tasks:write' }, true),
52
+ update_task_checklist_item: defaultTool({ kind: 'scope', scope: 'tasks:write' }, true),
52
53
  replace_task_checklist: defaultTool({ kind: 'scope', scope: 'tasks:write' }, true),
53
54
  get_task_attachments: defaultTool({ kind: 'scope', scope: 'tasks:read' }, false),
54
55
  get_workstream_attachments: extendedTool({ kind: 'scope', scope: 'tasks:read' }, false),
@@ -32,16 +32,16 @@ export function registerWorkflowExecutionTools(registerTool, executeTool) {
32
32
  },
33
33
  }));
34
34
  register('complete_workflow_step', (context) => ({
35
- description: context.describeTool('Complete the current workflow step when the active AI profile owns it. If the step requires a task comment, add the comment first and pass its returned commentId as evidence. Advances and reassigns the task automatically.'),
35
+ description: context.describeTool('Complete the current workflow step when the active AI profile owns it. Call get_task_workflow first for the same task and reuse its completionCall arguments exactly; never invent or reuse workflow IDs. If the step requires a task comment, add the comment first and pass its returned commentId as evidence. Advances and reassigns the task automatically.'),
36
36
  annotations: { idempotentHint: true },
37
37
  inputSchema: {
38
38
  additionalProperties: false,
39
39
  properties: {
40
40
  taskId: { type: 'string', description: 'Task UUID or reference label such as T-123.' },
41
- executionId: { type: 'string', description: 'Workflow execution ID returned by get_task_workflow.' },
42
- stepId: { type: 'string', description: 'Current workflow step ID returned by get_task_workflow.' },
41
+ executionId: { type: 'string', description: 'Exact executionId from the same-task get_task_workflow completionCall; never invent or reuse it.' },
42
+ stepId: { type: 'string', description: 'Exact stepId from the same-task get_task_workflow completionCall; never invent or reuse it.' },
43
43
  evidenceCommentId: {
44
- type: 'string',
44
+ anyOf: [{ type: 'string' }, { type: 'null' }],
45
45
  description: 'Exact commentId returned by add_comment when the current step requires task-comment evidence.',
46
46
  },
47
47
  },
@@ -44,6 +44,11 @@ export declare function ensureLocalSyncCoordinatorSchema(db: DatabaseAdapter): v
44
44
  export declare function ensureWorkspaceDocumentsSchema(db: DatabaseAdapter): void;
45
45
  export declare function ensureAnnotatedAttachmentSessionsSchema(db: DatabaseAdapter): void;
46
46
  export declare function ensureTaskforceAgentsSchema(db: DatabaseAdapter): void;
47
+ export declare function ensureModelProviderConnectionsSchema(db: DatabaseAdapter): void;
48
+ export declare function ensureTaskforceAgentConnectionBindingsSchema(db: DatabaseAdapter): void;
49
+ export declare function ensureGitHubReviewEvidenceInstallationBindingsSchema(db: DatabaseAdapter): void;
50
+ export declare function ensureExecutorPhaseAApprovalReceiptsSchema(db: DatabaseAdapter): void;
51
+ export declare function ensureExecutorPhaseARunAuthorizationsSchema(db: DatabaseAdapter): void;
47
52
  export declare function ensureAgentRolesSchema(db: DatabaseAdapter): void;
48
53
  export declare function ensureTaskforceAgentSkillsSchema(db: DatabaseAdapter): void;
49
54
  export declare function ensureWorkflowSchema(db: DatabaseAdapter): void;