@taskforcehq/taskforce 0.3.329 → 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.
- package/dist/Taskforce.module.css +290 -45
- package/dist/components/features/AiProfilesModule.js +3 -5
- package/dist/components/features/TaskSettings.js +70 -14
- package/dist/components/features/TaskforceAgentsModule.d.ts +1 -2
- package/dist/components/features/TaskforceAgentsModule.js +586 -116
- package/dist/components/features/agentConnections/AgentConnectionControl.d.ts +15 -0
- package/dist/components/features/agentConnections/AgentConnectionControl.js +125 -0
- package/dist/components/features/agentConnections/ModelConnectionsPanel.d.ts +18 -0
- package/dist/components/features/agentConnections/ModelConnectionsPanel.js +393 -0
- package/dist/components/features/agentConnections/modelConnectionsApi.d.ts +65 -0
- package/dist/components/features/agentConnections/modelConnectionsApi.js +129 -0
- package/dist/components/features/taskforceAgentAssignments/AgentBehaviorAssignments.js +15 -24
- package/dist/components/features/taskforceAgentEditorModel.d.ts +2 -1
- package/dist/components/features/taskforceAgentEditorModel.js +3 -1
- package/dist/components/features/workflowManager/workflowManagerApi.d.ts +1 -1
- package/dist/components/features/workflowManager/workflowManagerApi.js +3 -0
- package/dist/components/task/TaskWorkflowAssignmentField.js +68 -10
- package/dist/components/views/StandaloneLayout.js +27 -26
- package/dist/components/views/standalone/modals/SyncStatusModal.d.ts +4 -3
- package/dist/components/views/standalone/modals/SyncStatusModal.js +33 -38
- package/dist/config/envSchema.js +48 -1
- package/dist/core/McpTokenService.d.ts +23 -1
- package/dist/core/McpTokenService.js +93 -10
- package/dist/core/TaskChecklistCommandService.d.ts +27 -0
- package/dist/core/TaskChecklistCommandService.js +83 -5
- package/dist/core/TaskLifecycleCommandService.d.ts +3 -1
- package/dist/core/TaskLifecycleCommandService.js +6 -2
- package/dist/core/Taskforce.d.ts +32 -0
- package/dist/core/Taskforce.js +125 -4
- package/dist/core/types.d.ts +8 -0
- package/dist/documentReviews/commandService.d.ts +2 -1
- package/dist/documentReviews/commandService.js +6 -3
- package/dist/hooks/sync/orchestratorShared.d.ts +1 -0
- package/dist/hooks/sync/orchestratorShared.js +2 -0
- package/dist/hooks/sync/useLocalSyncCoordinatorSnapshot.d.ts +3 -0
- package/dist/hooks/sync/useLocalSyncCoordinatorSnapshot.js +85 -9
- package/dist/hooks/sync/useSyncStatusControls.d.ts +4 -1
- package/dist/hooks/sync/useSyncStatusControls.js +47 -11
- package/dist/hooks/useSyncOrchestrator.d.ts +3 -0
- package/dist/hooks/useSyncOrchestrator.js +111 -2
- package/dist/hooks/useTaskData.d.ts +31 -1
- package/dist/hooks/useTaskData.js +29 -7
- package/dist/hooks/useTaskMutations.d.ts +3 -1
- package/dist/hooks/useTaskMutations.js +46 -12
- package/dist/hooks/useTaskforce.d.ts +2 -0
- package/dist/hooks/useTaskforce.js +11 -2
- package/dist/mcp/clientRegistry.d.ts +2 -2
- package/dist/mcp/clientRegistry.js +1 -1
- package/dist/mcp/documentAssetRegistrar.js +9 -6
- package/dist/mcp/durableTaskMutationRouter.d.ts +4 -1
- package/dist/mcp/durableTaskMutationRouter.js +10 -0
- package/dist/mcp/durableTaskRelationshipMutationRouter.js +4 -0
- package/dist/mcp/httpProtocolRouting.d.ts +10 -0
- package/dist/mcp/httpProtocolRouting.js +19 -0
- package/dist/mcp/localCliHealth.d.ts +2 -2
- package/dist/mcp/localCliHealth.js +2 -2
- package/dist/mcp/localServiceProxy.d.ts +1 -0
- package/dist/mcp/localServiceProxy.js +530 -68
- package/dist/mcp/planningAttachmentCommandAdapter.d.ts +3 -1
- package/dist/mcp/planningAttachmentCommandAdapter.js +20 -2
- package/dist/mcp/runtime.d.ts +54 -79
- package/dist/mcp/runtime.js +384 -97
- package/dist/mcp/taskPlanningRegistrar.js +23 -4
- package/dist/mcp/toolProfiles.d.ts +2 -0
- package/dist/mcp/toolProfiles.js +10 -0
- package/dist/mcp/toolRegistry.d.ts +1 -0
- package/dist/mcp/toolRegistry.js +1 -0
- package/dist/mcp/workflowExecutionRegistrar.js +4 -4
- package/dist/migrations/taskSchemaMigrations.d.ts +5 -0
- package/dist/migrations/taskSchemaMigrations.js +415 -0
- package/dist/runtime/appGates.d.ts +2 -1
- package/dist/runtime/appGates.js +7 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.js +108 -11
- package/dist/server/localDatabaseIdentity.js +4 -1
- package/dist/server/localServiceLease.js +2 -1
- package/dist/server/localServiceSessions.d.ts +14 -17
- package/dist/server/localServiceSessions.js +308 -94
- package/dist/server/localWorkspaceSyncServerRuntime.js +12 -14
- package/dist/server/routes/admin.d.ts +4 -0
- package/dist/server/routes/admin.js +112 -3
- package/dist/server/routes/agents.d.ts +7 -0
- package/dist/server/routes/agents.js +277 -24
- package/dist/server/routes/billing.js +5 -1
- package/dist/server/routes/durableTaskHttpRouters.d.ts +2 -0
- package/dist/server/routes/executorPhaseAApprovals.d.ts +19 -0
- package/dist/server/routes/executorPhaseAApprovals.js +140 -0
- package/dist/server/routes/executorPhaseAIssuerRedemptions.d.ts +11 -0
- package/dist/server/routes/executorPhaseAIssuerRedemptions.js +24 -0
- package/dist/server/routes/githubReviewEvidence.d.ts +19 -0
- package/dist/server/routes/githubReviewEvidence.js +116 -0
- package/dist/server/routes/localService.d.ts +15 -4
- package/dist/server/routes/localService.js +136 -40
- package/dist/server/routes/modelConnections.d.ts +24 -0
- package/dist/server/routes/modelConnections.js +205 -0
- package/dist/server/routes/shared.d.ts +19 -0
- package/dist/server/routes/shared.js +95 -19
- package/dist/server/routes/sync.js +1 -0
- package/dist/server/routes/syncAuxRoutes.js +5 -1
- package/dist/server/routes/syncPushRoutes.d.ts +1 -0
- package/dist/server/routes/syncPushRoutes.js +1 -0
- package/dist/server/routes/syncV3FeedRoutes.js +10 -1
- package/dist/server/routes/syncV3OperationRoutes.js +35 -9
- package/dist/server/routes/tasks.js +21 -2
- package/dist/server/routes/workflows.js +9 -1
- package/dist/server/routes.js +59 -0
- package/dist/services/codexAppServerModelGateway.d.ts +54 -5
- package/dist/services/codexAppServerModelGateway.js +246 -21
- package/dist/services/codexDeviceCodeLoginManager.d.ts +39 -0
- package/dist/services/codexDeviceCodeLoginManager.js +265 -0
- package/dist/services/codexModelProviderConnectionLifecycle.d.ts +8 -0
- package/dist/services/codexModelProviderConnectionLifecycle.js +73 -0
- package/dist/services/executorPhaseAApprovalRuntime.d.ts +14 -0
- package/dist/services/executorPhaseAApprovalRuntime.js +24 -0
- package/dist/services/executorPhaseAApprovalService.d.ts +40 -0
- package/dist/services/executorPhaseAApprovalService.js +609 -0
- package/dist/services/executorPhaseADriftEvaluator.d.ts +78 -0
- package/dist/services/executorPhaseADriftEvaluator.js +93 -0
- package/dist/services/executorPhaseAIssuerCore.d.ts +126 -0
- package/dist/services/executorPhaseAIssuerCore.js +295 -0
- package/dist/services/executorPhaseAIssuerRedemptionService.d.ts +34 -0
- package/dist/services/executorPhaseAIssuerRedemptionService.js +158 -0
- package/dist/services/githubReviewEvidenceRuntime.d.ts +14 -0
- package/dist/services/githubReviewEvidenceRuntime.js +30 -0
- package/dist/services/githubReviewEvidenceService.d.ts +93 -0
- package/dist/services/githubReviewEvidenceService.js +336 -0
- package/dist/services/modelGateway.d.ts +7 -0
- package/dist/services/modelProviderConnectionService.d.ts +71 -0
- package/dist/services/modelProviderConnectionService.js +279 -0
- package/dist/services/modelProviderCredentialHome.d.ts +32 -0
- package/dist/services/modelProviderCredentialHome.js +271 -0
- package/dist/services/ownerScopedModelConnectionGateway.d.ts +12 -0
- package/dist/services/ownerScopedModelConnectionGateway.js +30 -0
- package/dist/services/taskforceAgentConnectionBindingService.d.ts +66 -0
- package/dist/services/taskforceAgentConnectionBindingService.js +185 -0
- package/dist/services/taskforceAgentMcpBridge.d.ts +1 -1
- package/dist/services/taskforceAgentMcpBridge.js +7 -24
- package/dist/shared/adminEdgeProxy.d.ts +5 -0
- package/dist/shared/adminEdgeProxy.js +94 -0
- package/dist/shared/adminProxySessionCookies.d.ts +16 -0
- package/dist/shared/adminProxySessionCookies.js +86 -0
- package/dist/shared/aiProfileColors.d.ts +31 -1
- package/dist/shared/aiProfileColors.js +14 -6
- package/dist/shared/executorPhaseAApprovalGoldenVector.json +269 -0
- package/dist/shared/executorPhaseAApprovalReceipt.d.ts +112 -0
- package/dist/shared/executorPhaseAApprovalReceipt.js +58 -0
- package/dist/shared/executorPhaseAApprovalTrustPolicy.json +10 -0
- package/dist/shared/executorPhaseADriftContracts.d.ts +37 -0
- package/dist/shared/executorPhaseADriftContracts.js +63 -0
- package/dist/shared/executorPhaseAIssuerContracts.d.ts +75 -0
- package/dist/shared/executorPhaseAIssuerContracts.js +90 -0
- package/dist/shared/executorPhaseARunAuthorization.d.ts +120 -0
- package/dist/shared/executorPhaseARunAuthorization.js +232 -0
- package/dist/shared/executorPhaseASchemaValidation.d.ts +7 -0
- package/dist/shared/executorPhaseASchemaValidation.js +53 -0
- package/dist/shared/executorPhaseASchemas/approval-receipt.schema.json +106 -0
- package/dist/shared/executorPhaseASchemas/drift-attestation.schema.json +54 -0
- package/dist/shared/executorPhaseASchemas/drift-request.schema.json +47 -0
- package/dist/shared/executorPhaseASchemas/foundation-manifest.schema.json +29 -0
- package/dist/shared/executorPhaseASchemas/issuer-audit-record.schema.json +24 -0
- package/dist/shared/executorPhaseASchemas/issuer-proof.schema.json +43 -0
- package/dist/shared/executorPhaseASchemas/issuer-redemption-request.schema.json +18 -0
- package/dist/shared/executorPhaseASchemas/issuer-redemption-response.schema.json +39 -0
- package/dist/shared/executorPhaseASchemas/logical-envelope.schema.json +149 -0
- package/dist/shared/executorPhaseASchemas/preflight-report.schema.json +216 -0
- package/dist/shared/executorPhaseASchemas/run-capability.schema.json +111 -0
- package/dist/shared/executorPhaseASchemas/sender-proof.schema.json +37 -0
- package/dist/shared/executorPhaseASchemas/workload-grant.schema.json +68 -0
- package/dist/shared/executorPhaseASchemas/workload-jwt-claims.schema.json +67 -0
- package/dist/shared/executorPhaseATiming.d.ts +1 -0
- package/dist/shared/executorPhaseATiming.js +1 -0
- package/dist/shared/planningIdentity.js +1 -1
- package/dist/shared/productLogoKeys.d.ts +2 -0
- package/dist/shared/productLogoKeys.js +18 -0
- package/dist/shared/taskforceAgentDefinition.d.ts +0 -1
- package/dist/shared/taskforceAgentDefinition.js +6 -9
- package/dist/shared/taskforceAgentModels.js +7 -3
- package/dist/shared/userFeatureGrants.d.ts +4 -0
- package/dist/shared/userFeatureGrants.js +7 -0
- package/dist/storage/executorPhaseAApprovalReceiptStore.d.ts +37 -0
- package/dist/storage/executorPhaseAApprovalReceiptStore.js +81 -0
- package/dist/storage/executorPhaseARunAuthorizationStore.d.ts +103 -0
- package/dist/storage/executorPhaseARunAuthorizationStore.js +492 -0
- package/dist/storage/githubReviewEvidenceInstallationStore.d.ts +26 -0
- package/dist/storage/githubReviewEvidenceInstallationStore.js +89 -0
- package/dist/storage/modelProviderConnectionStore.d.ts +99 -0
- package/dist/storage/modelProviderConnectionStore.js +446 -0
- package/dist/storage/postgresAdapter.d.ts +4 -0
- package/dist/storage/postgresAdapter.js +11 -0
- package/dist/storage/postgresWorker.js +9 -1
- package/dist/storage/postgresWorkerProtocol.d.ts +1 -0
- package/dist/storage/taskforceAgentConnectionBindingStore.d.ts +31 -0
- package/dist/storage/taskforceAgentConnectionBindingStore.js +84 -0
- package/dist/sync/coordinator/localSyncExecutionPermitStore.js +60 -29
- package/dist/sync/coordinator/localWorkspaceSyncPendingV2PushProgress.d.ts +10 -0
- package/dist/sync/coordinator/localWorkspaceSyncPendingV2PushProgress.js +29 -0
- package/dist/sync/coordinator/localWorkspaceSyncRunnerState.d.ts +15 -1
- package/dist/sync/coordinator/localWorkspaceSyncRunnerState.js +99 -2
- package/dist/sync/coordinator/workspaceSyncCredentialBroker.d.ts +1 -0
- package/dist/sync/coordinator/workspaceSyncCredentialBroker.js +33 -4
- package/dist/sync/engine/workspaceSyncContentLifecycleAdapter.d.ts +2 -1
- package/dist/sync/engine/workspaceSyncContentVersionStore.d.ts +38 -0
- package/dist/sync/engine/workspaceSyncContentVersionStore.js +50 -1
- package/dist/sync/engine/workspaceSyncEngineLifecyclePolicy.js +6 -6
- package/dist/sync/engine/workspaceSyncEnginePushCompletion.d.ts +14 -0
- package/dist/sync/engine/workspaceSyncEnginePushCompletion.js +84 -0
- package/dist/sync/engine/workspaceSyncEngineRecovery.js +1 -0
- package/dist/sync/engine/workspaceSyncEngineRuntime.d.ts +1 -0
- package/dist/sync/engine/workspaceSyncEngineRuntime.js +1 -0
- package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.js +112 -38
- package/dist/sync/engine/workspaceSyncEngineServerSnapshotReader.js +6 -0
- package/dist/sync/engine/workspaceSyncEngineTransfers.js +3 -1
- package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.d.ts +1 -0
- package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.js +29 -0
- package/dist/sync/syncApplyHandlers.d.ts +2 -0
- package/dist/sync/syncApplyHandlers.js +10 -1
- package/dist/sync/syncService.d.ts +15 -0
- package/dist/sync/syncService.js +83 -18
- package/dist/sync/taskforceAgentSyncAuthorization.d.ts +16 -0
- package/dist/sync/taskforceAgentSyncAuthorization.js +20 -0
- package/dist/sync/v3/combinedFeedCapability.js +4 -0
- package/dist/sync/v3/durableInitiativeMutationRouter.js +18 -10
- package/dist/sync/v3/durableOperationReplay.d.ts +14 -0
- package/dist/sync/v3/durableOperationReplay.js +18 -0
- package/dist/sync/v3/durableTaskAttachmentLinksMutationRouter.js +3 -0
- package/dist/sync/v3/durableTaskChecklistMutationRouter.d.ts +2 -1
- package/dist/sync/v3/durableTaskChecklistMutationRouter.js +58 -15
- package/dist/sync/v3/durableTaskCommentMutationRouter.js +3 -0
- package/dist/sync/v3/durableTaskHttpRootMutationRouter.d.ts +1 -1
- package/dist/sync/v3/durableTaskHttpRootMutationRouter.js +10 -0
- package/dist/sync/v3/durableTaxonomyMutationRouter.js +5 -0
- package/dist/sync/v3/durableWorkflowRuntimeMutationRouter.d.ts +11 -0
- package/dist/sync/v3/durableWorkflowRuntimeMutationRouter.js +39 -10
- package/dist/sync/v3/durableWorkstreamMutationRouter.js +18 -10
- package/dist/sync/v3/durableWorkstreamTaskOrderMutationRouter.js +16 -5
- package/dist/sync/v3/localOutboxDispatchRuntime.js +2 -2
- package/dist/sync/v3/localTaskChecklistOutboxHandler.js +16 -2
- package/dist/sync/v3/localTaskChecklistOutboxService.d.ts +4 -0
- package/dist/sync/v3/localTaskChecklistOutboxService.js +14 -1
- package/dist/sync/v3/localTaskStatusOutboxService.d.ts +8 -0
- package/dist/sync/v3/localTaskStatusOutboxService.js +219 -12
- package/dist/sync/v3/syncDurabilityStore.d.ts +34 -0
- package/dist/sync/v3/syncDurabilityStore.js +168 -2
- package/dist/sync/v3/taskChecklistMutationService.d.ts +11 -0
- package/dist/sync/v3/taskChecklistMutationService.js +44 -1
- package/dist/sync/v3/taskStatusMutationService.d.ts +29 -1
- package/dist/sync/v3/taskStatusMutationService.js +119 -3
- package/dist/sync/v3/workflowAssignmentSync.d.ts +5 -0
- package/dist/sync/v3/workflowAssignmentSync.js +27 -0
- package/dist/sync/v3/workspaceSyncJournalReader.js +1 -1
- package/dist/sync/v3/workspaceSyncOperationRetentionService.d.ts +16 -0
- package/dist/sync/v3/workspaceSyncOperationRetentionService.js +83 -0
- package/dist/sync/v3/workspaceSyncV3CloudOperationHandler.d.ts +1 -0
- package/dist/sync/v3/workspaceSyncV3CloudOperationHandler.js +9 -2
- package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.d.ts +7 -0
- package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.js +44 -32
- package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.d.ts +9 -5
- package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.js +54 -38
- package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.d.ts +10 -0
- package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.js +70 -31
- package/dist/sync/v3/workspaceSyncV3CombinedWireContract.d.ts +2 -1
- package/dist/sync/v3/workspaceSyncV3CombinedWireContract.js +16 -0
- package/dist/sync/v3/workspaceSyncV3CoverageRegistry.js +6 -0
- package/dist/sync/v3/workspaceSyncV3OperationProtocol.d.ts +3 -0
- package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.d.ts +5 -0
- package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.js +36 -2
- package/dist/sync/v3/workspaceSyncV3RepairSnapshotRetentionService.d.ts +17 -0
- package/dist/sync/v3/workspaceSyncV3RepairSnapshotRetentionService.js +64 -0
- package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverCoverage.d.ts +7 -0
- package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverCoverage.js +33 -0
- package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverWireContract.d.ts +7 -0
- package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverWireContract.js +8 -0
- package/dist/sync/workspaceRepair.d.ts +5 -2
- package/dist/sync/workspaceRepair.js +161 -6
- package/dist/sync/workspaceSyncModel.d.ts +21 -0
- package/dist/sync/workspaceSyncModel.js +35 -7
- package/dist/sync/workspaceSyncState.d.ts +1 -0
- package/dist/sync/workspaceSyncV2SnapshotBuilder.d.ts +6 -0
- package/dist/sync/workspaceSyncV2SnapshotBuilder.js +5 -0
- package/dist/ui/assets/AiIdentityRosterCard-OcSz1PkK.js +1 -0
- package/dist/ui/assets/AiProfilesModule-ByhYW5Xi.js +1 -0
- package/dist/ui/assets/{AnnotatedAttachmentWorkspace-B68Wg-RV.js → AnnotatedAttachmentWorkspace-BTM6nIg_.js} +1 -1
- package/dist/ui/assets/{AssetTraySortControl-C8Rztyal.js → AssetTraySortControl-DabEG8L4.js} +1 -1
- package/dist/ui/assets/{ContextAttachmentManager-Cj3c7X9y.js → ContextAttachmentManager-Coa8yVGM.js} +1 -1
- package/dist/ui/assets/{DocumentWorkspace-B5uvzems.js → DocumentWorkspace-BB0qhdix.js} +1 -1
- package/dist/ui/assets/{EntityActivityTimeline-BVFvCB5R.js → EntityActivityTimeline-CZ8x4UJE.js} +1 -1
- package/dist/ui/assets/{PlanningModule-B5DWQOGz.js → PlanningModule-pRPjR7v5.js} +1 -1
- package/dist/ui/assets/{PlansPage-AY4cGWco.js → PlansPage-D86pZSSl.js} +1 -1
- package/dist/ui/assets/{TaskContextUpload-DZxTVesW.js → TaskContextUpload-BVIkU9yT.js} +1 -1
- package/dist/ui/assets/TaskSettings-Cv1mNhv_.js +12 -0
- package/dist/ui/assets/TaskforceAgentsModule-b-8R25cJ.css +1 -0
- package/dist/ui/assets/TaskforceAgentsModule-gmH-PD2q.js +24 -0
- package/dist/ui/assets/{WorkflowManagerModule-DEr5di_r.js → WorkflowManagerModule-DbfnHJ-f.js} +1 -1
- package/dist/ui/assets/index-BZ-hdZSk.css +1 -0
- package/dist/ui/assets/index-CTsDBaef.js +7 -0
- package/dist/ui/assets/{vendor-icons-D9Lpw-j4.js → vendor-icons-Bsq-mcEn.js} +1 -1
- package/dist/ui/branding/logos/letterhead_dark.png +0 -0
- package/dist/ui/branding/logos/letterhead_light.png +0 -0
- package/dist/ui/branding/logos/signature_dark.png +0 -0
- package/dist/ui/branding/logos/signature_light.png +0 -0
- package/dist/ui/index.html +3 -3
- package/dist/utils/aiProfileDefaultLogo.js +16 -48
- package/dist/utils/httpSetCookie.d.ts +1 -0
- package/dist/utils/httpSetCookie.js +4 -1
- package/dist/utils/localRuntimeUrl.d.ts +1 -0
- package/dist/utils/localRuntimeUrl.js +14 -0
- package/dist/utils/productLogoRegistry.d.ts +2 -0
- package/dist/utils/productLogoRegistry.js +36 -0
- package/dist/utils/syncStatusPresentation.d.ts +4 -0
- package/dist/utils/syncStatusPresentation.js +17 -0
- package/dist/utils/taskEvents.d.ts +2 -0
- package/dist/utils/workspaceSyncPresentation.d.ts +1 -1
- package/dist/utils/workspaceSyncPresentation.js +23 -17
- package/package.json +22 -4
- package/dist/ui/assets/AiIdentityRosterCard-BZM4aQnM.js +0 -1
- package/dist/ui/assets/AiProfilesModule-BbAEWtHH.js +0 -1
- package/dist/ui/assets/TaskSettings-BeWAuyZj.js +0 -12
- package/dist/ui/assets/TaskforceAgentsModule-BifCYtjR.js +0 -21
- package/dist/ui/assets/TaskforceAgentsModule-D6IC0S7Q.css +0 -1
- package/dist/ui/assets/index-I5zhdtgt.js +0 -7
- package/dist/ui/assets/index-VRFsx3wz.css +0 -1
|
@@ -3,12 +3,13 @@ import { serializeInitiativeForSync, serializeWorkstreamForSync } from '../plann
|
|
|
3
3
|
import { serializeTaskForSync } from '../taskSyncPayload.js';
|
|
4
4
|
import { canonicalWorkspaceSyncJson } from './canonicalWorkspaceSyncJson.js';
|
|
5
5
|
import { WORKSPACE_SYNC_COMBINED_PROJECTION, fingerprintWorkspaceSyncPayload, WORKSPACE_SYNC_CONTRACT_VERSION, WorkspaceSyncRevisionConflictError, } from './syncDurabilityStore.js';
|
|
6
|
-
import { buildWorkspaceSyncV3CombinedRepairSnapshot, buildWorkspaceSyncV3CombinedRepairSnapshotFromLockedCandidates, buildWorkspaceSyncV3NestedRepairSnapshot, buildWorkspaceSyncV3PlanningOrderRepairSnapshot, buildWorkspaceSyncV3TaskCoverRepairSnapshot, buildWorkspaceSyncV3WorkflowRepairSnapshot, listWorkspaceSyncV3CombinedRepairCandidates, listWorkspaceSyncV3NestedRepairCandidates, listWorkspaceSyncV3PlanningOrderRepairCandidates, listWorkspaceSyncV3TaskCoverRepairCandidates, listWorkspaceSyncV3WorkflowRepairCandidates, } from './workspaceSyncV3CombinedRepairSnapshot.js';
|
|
6
|
+
import { buildWorkspaceSyncV3CombinedRepairSnapshot, buildWorkspaceSyncV3CombinedRepairSnapshotFromLockedCandidates, buildWorkspaceSyncV3NestedRepairSnapshot, buildWorkspaceSyncV3PlanningOrderRepairSnapshot, buildWorkspaceSyncV3TaskCoverRepairSnapshot, buildWorkspaceSyncV3WorkflowRepairSnapshot, buildWorkspaceSyncV3WorkflowTaskCoverRepairSnapshot, listWorkspaceSyncV3CombinedRepairCandidates, listWorkspaceSyncV3NestedRepairCandidates, listWorkspaceSyncV3PlanningOrderRepairCandidates, listWorkspaceSyncV3TaskCoverRepairCandidates, listWorkspaceSyncV3WorkflowRepairCandidates, listWorkspaceSyncV3WorkflowTaskCoverRepairCandidates, } from './workspaceSyncV3CombinedRepairSnapshot.js';
|
|
7
7
|
import { WORKSPACE_SYNC_V3_COMBINED_COVERAGE_PROFILE } from './workspaceSyncV3CombinedCoverage.js';
|
|
8
8
|
import { WORKSPACE_SYNC_V3_NESTED_COVERAGE_PROFILE } from './workspaceSyncV3NestedCoverage.js';
|
|
9
9
|
import { WORKSPACE_SYNC_V3_WORKFLOW_COVERAGE_PROFILE } from './workspaceSyncV3WorkflowCoverage.js';
|
|
10
10
|
import { WORKSPACE_SYNC_V3_PLANNING_ORDER_COVERAGE_PROFILE } from './workspaceSyncV3PlanningOrderCoverage.js';
|
|
11
11
|
import { WORKSPACE_SYNC_V3_TASK_COVER_COVERAGE_PROFILE } from './workspaceSyncV3TaskCoverCoverage.js';
|
|
12
|
+
import { WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_PROFILE } from './workspaceSyncV3WorkflowTaskCoverCoverage.js';
|
|
12
13
|
import { serializeWorkspaceSyncV3TaskAttachmentLinksPayload, serializeWorkspaceSyncV3TaskCommentsPayload, } from './workspaceSyncV3NestedTaskCodecs.js';
|
|
13
14
|
import { projectWorkspaceSyncV3NestedTaskJournalRow } from './workspaceSyncV3NestedTaskProjection.js';
|
|
14
15
|
import { serializeTaskRelationshipForSync } from './workspaceSyncV3TaskRelationshipProjection.js';
|
|
@@ -261,15 +262,17 @@ export function prepareWorkspaceSyncV3CombinedRepairSnapshot(input) {
|
|
|
261
262
|
`).get(tenantId, workspaceId, now);
|
|
262
263
|
sequence(lock?.last_sequence);
|
|
263
264
|
const lockCompletedAt = Date.now();
|
|
264
|
-
const candidates = input.
|
|
265
|
-
?
|
|
266
|
-
: input.
|
|
267
|
-
?
|
|
268
|
-
: input.
|
|
269
|
-
?
|
|
270
|
-
: input.
|
|
271
|
-
?
|
|
272
|
-
:
|
|
265
|
+
const candidates = input.workflowTaskCoverCoverage
|
|
266
|
+
? listWorkspaceSyncV3WorkflowTaskCoverRepairCandidates(input.core, workspaceId)
|
|
267
|
+
: input.workflowCoverage
|
|
268
|
+
? listWorkspaceSyncV3WorkflowRepairCandidates(input.core, workspaceId)
|
|
269
|
+
: input.taskCoverCoverage
|
|
270
|
+
? listWorkspaceSyncV3TaskCoverRepairCandidates(input.core, workspaceId)
|
|
271
|
+
: input.planningOrderCoverage
|
|
272
|
+
? listWorkspaceSyncV3PlanningOrderRepairCandidates(input.core, workspaceId)
|
|
273
|
+
: input.nestedCoverage
|
|
274
|
+
? listWorkspaceSyncV3NestedRepairCandidates(input.core, workspaceId)
|
|
275
|
+
: listWorkspaceSyncV3CombinedRepairCandidates(input.core, workspaceId);
|
|
273
276
|
const inventoryCompletedAt = Date.now();
|
|
274
277
|
const keys = candidates.map((candidate) => `${candidate.domain}\0${candidate.entityId}`);
|
|
275
278
|
if (new Set(keys).size !== keys.length)
|
|
@@ -551,15 +554,17 @@ export function prepareWorkspaceSyncV3CombinedRepairSnapshot(input) {
|
|
|
551
554
|
throw repairConflict('legacy-nested-repair-raced', repair.candidate);
|
|
552
555
|
}
|
|
553
556
|
const baselineWritesCompletedAt = Date.now();
|
|
554
|
-
const profile = input.
|
|
555
|
-
?
|
|
556
|
-
: input.
|
|
557
|
-
?
|
|
558
|
-
: input.
|
|
559
|
-
?
|
|
560
|
-
: input.
|
|
561
|
-
?
|
|
562
|
-
:
|
|
557
|
+
const profile = input.workflowTaskCoverCoverage
|
|
558
|
+
? WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_PROFILE
|
|
559
|
+
: input.workflowCoverage
|
|
560
|
+
? WORKSPACE_SYNC_V3_WORKFLOW_COVERAGE_PROFILE
|
|
561
|
+
: input.taskCoverCoverage
|
|
562
|
+
? WORKSPACE_SYNC_V3_TASK_COVER_COVERAGE_PROFILE
|
|
563
|
+
: input.planningOrderCoverage
|
|
564
|
+
? WORKSPACE_SYNC_V3_PLANNING_ORDER_COVERAGE_PROFILE
|
|
565
|
+
: input.nestedCoverage
|
|
566
|
+
? WORKSPACE_SYNC_V3_NESTED_COVERAGE_PROFILE
|
|
567
|
+
: WORKSPACE_SYNC_V3_COMBINED_COVERAGE_PROFILE;
|
|
563
568
|
const activeOwner = db.prepare(`
|
|
564
569
|
SELECT 1 AS active
|
|
565
570
|
FROM workspace_sync_projection_state
|
|
@@ -580,28 +585,32 @@ export function prepareWorkspaceSyncV3CombinedRepairSnapshot(input) {
|
|
|
580
585
|
inventory: candidates,
|
|
581
586
|
nestedCoverage: input.nestedCoverage === true,
|
|
582
587
|
workflowCoverage: input.workflowCoverage === true,
|
|
588
|
+
workflowTaskCoverCoverage: input.workflowTaskCoverCoverage === true,
|
|
583
589
|
planningOrderCoverage: input.planningOrderCoverage === true,
|
|
584
590
|
taskCoverCoverage: input.taskCoverCoverage === true,
|
|
585
591
|
})
|
|
586
|
-
: input.
|
|
587
|
-
?
|
|
588
|
-
: input.
|
|
589
|
-
?
|
|
590
|
-
: input.
|
|
591
|
-
?
|
|
592
|
-
: input.
|
|
593
|
-
?
|
|
594
|
-
:
|
|
592
|
+
: input.workflowTaskCoverCoverage
|
|
593
|
+
? buildWorkspaceSyncV3WorkflowTaskCoverRepairSnapshot({ core: input.core, workspaceId })
|
|
594
|
+
: input.workflowCoverage
|
|
595
|
+
? buildWorkspaceSyncV3WorkflowRepairSnapshot({ core: input.core, workspaceId })
|
|
596
|
+
: input.taskCoverCoverage
|
|
597
|
+
? buildWorkspaceSyncV3TaskCoverRepairSnapshot({ core: input.core, workspaceId })
|
|
598
|
+
: input.planningOrderCoverage
|
|
599
|
+
? buildWorkspaceSyncV3PlanningOrderRepairSnapshot({ core: input.core, workspaceId })
|
|
600
|
+
: input.nestedCoverage
|
|
601
|
+
? buildWorkspaceSyncV3NestedRepairSnapshot({ core: input.core, workspaceId })
|
|
602
|
+
: buildWorkspaceSyncV3CombinedRepairSnapshot({ core: input.core, workspaceId });
|
|
595
603
|
const snapshotCompletedAt = Date.now();
|
|
596
604
|
if (snapshot.snapshotSequence !== highWatermark) {
|
|
597
605
|
throw new Error('Combined repair baseline snapshot sequence changed while locked.');
|
|
598
606
|
}
|
|
599
607
|
console.info('[Taskforce Sync Repair Baseline Timing]', JSON.stringify({
|
|
600
608
|
workspaceId,
|
|
601
|
-
coverage: input.
|
|
602
|
-
: input.
|
|
603
|
-
: input.
|
|
604
|
-
: input.
|
|
609
|
+
coverage: input.workflowTaskCoverCoverage ? 'workflow-task-cover'
|
|
610
|
+
: input.workflowCoverage ? 'workflow'
|
|
611
|
+
: input.taskCoverCoverage ? 'task-cover'
|
|
612
|
+
: input.planningOrderCoverage ? 'planning-order'
|
|
613
|
+
: input.nestedCoverage ? 'nested' : 'combined',
|
|
605
614
|
candidates: candidates.length,
|
|
606
615
|
lock: lockCompletedAt - startedAt,
|
|
607
616
|
inventory: inventoryCompletedAt - lockCompletedAt,
|
|
@@ -627,6 +636,9 @@ export function prepareWorkspaceSyncV3PlanningOrderRepairSnapshot(input) {
|
|
|
627
636
|
export function prepareWorkspaceSyncV3TaskCoverRepairSnapshot(input) {
|
|
628
637
|
return prepareWorkspaceSyncV3CombinedRepairSnapshot({ ...input, taskCoverCoverage: true });
|
|
629
638
|
}
|
|
639
|
+
export function prepareWorkspaceSyncV3WorkflowTaskCoverRepairSnapshot(input) {
|
|
640
|
+
return prepareWorkspaceSyncV3CombinedRepairSnapshot({ ...input, workflowTaskCoverCoverage: true });
|
|
641
|
+
}
|
|
630
642
|
export function ensureWorkspaceSyncV3CombinedRepairBaselines(input) {
|
|
631
643
|
const { snapshot: _snapshot, ...result } = prepareWorkspaceSyncV3CombinedRepairSnapshot(input);
|
|
632
644
|
return result;
|
|
@@ -4,6 +4,7 @@ import { WORKSPACE_SYNC_V3_NESTED_COVERAGE_PROFILE } from './workspaceSyncV3Nest
|
|
|
4
4
|
import { WORKSPACE_SYNC_V3_WORKFLOW_COVERAGE_PROFILE } from './workspaceSyncV3WorkflowCoverage.js';
|
|
5
5
|
import { WORKSPACE_SYNC_V3_PLANNING_ORDER_COVERAGE_PROFILE } from './workspaceSyncV3PlanningOrderCoverage.js';
|
|
6
6
|
import { WORKSPACE_SYNC_V3_TASK_COVER_COVERAGE_PROFILE } from './workspaceSyncV3TaskCoverCoverage.js';
|
|
7
|
+
import { WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_PROFILE } from './workspaceSyncV3WorkflowTaskCoverCoverage.js';
|
|
7
8
|
import { type WorkspaceSyncV3FeedEntry } from './workspaceSyncV3Feed.js';
|
|
8
9
|
import { type WorkspaceSyncV3FeedCursorKeyring } from './workspaceSyncV3FeedCursorKeys.js';
|
|
9
10
|
export interface WorkspaceSyncV3CombinedRepairCursor {
|
|
@@ -22,7 +23,7 @@ export interface WorkspaceSyncV3CombinedRepairPage {
|
|
|
22
23
|
success: true;
|
|
23
24
|
protocolVersion: 3;
|
|
24
25
|
workspaceId: string;
|
|
25
|
-
coverage: typeof WORKSPACE_SYNC_V3_COMBINED_COVERAGE_PROFILE | typeof WORKSPACE_SYNC_V3_NESTED_COVERAGE_PROFILE | typeof WORKSPACE_SYNC_V3_WORKFLOW_COVERAGE_PROFILE | typeof WORKSPACE_SYNC_V3_PLANNING_ORDER_COVERAGE_PROFILE | typeof WORKSPACE_SYNC_V3_TASK_COVER_COVERAGE_PROFILE;
|
|
26
|
+
coverage: typeof WORKSPACE_SYNC_V3_COMBINED_COVERAGE_PROFILE | typeof WORKSPACE_SYNC_V3_NESTED_COVERAGE_PROFILE | typeof WORKSPACE_SYNC_V3_WORKFLOW_COVERAGE_PROFILE | typeof WORKSPACE_SYNC_V3_PLANNING_ORDER_COVERAGE_PROFILE | typeof WORKSPACE_SYNC_V3_TASK_COVER_COVERAGE_PROFILE | typeof WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_PROFILE;
|
|
26
27
|
snapshotId: string;
|
|
27
28
|
snapshotSequence: string;
|
|
28
29
|
expiresAt: string;
|
|
@@ -49,6 +50,7 @@ export declare function decodeWorkspaceSyncV3NestedRepairCursor(raw: string | nu
|
|
|
49
50
|
export declare function decodeWorkspaceSyncV3WorkflowRepairCursor(raw: string | null | undefined, keyring: WorkspaceSyncV3FeedCursorKeyring): WorkspaceSyncV3CombinedRepairCursor | null;
|
|
50
51
|
export declare function decodeWorkspaceSyncV3PlanningOrderRepairCursor(raw: string | null | undefined, keyring: WorkspaceSyncV3FeedCursorKeyring): WorkspaceSyncV3CombinedRepairCursor | null;
|
|
51
52
|
export declare function decodeWorkspaceSyncV3TaskCoverRepairCursor(raw: string | null | undefined, keyring: WorkspaceSyncV3FeedCursorKeyring): WorkspaceSyncV3CombinedRepairCursor | null;
|
|
53
|
+
export declare function decodeWorkspaceSyncV3WorkflowTaskCoverRepairCursor(raw: string | null | undefined, keyring: WorkspaceSyncV3FeedCursorKeyring): WorkspaceSyncV3CombinedRepairCursor | null;
|
|
52
54
|
export declare const WORKSPACE_SYNC_REPAIR_SNAPSHOT_CLEANUP_BATCH_SIZE = 500;
|
|
53
55
|
export declare function buildWorkspaceSyncV3CombinedRepairPage(input: {
|
|
54
56
|
core: TaskforceCore;
|
|
@@ -61,11 +63,13 @@ export declare function buildWorkspaceSyncV3CombinedRepairPage(input: {
|
|
|
61
63
|
now?: string;
|
|
62
64
|
nestedCoverage?: boolean;
|
|
63
65
|
workflowCoverage?: boolean;
|
|
66
|
+
workflowTaskCoverCoverage?: boolean;
|
|
64
67
|
planningOrderCoverage?: boolean;
|
|
65
68
|
taskCoverCoverage?: boolean;
|
|
66
69
|
coveredLegacyWritesFenced?: boolean;
|
|
67
70
|
}): WorkspaceSyncV3CombinedRepairPage;
|
|
68
|
-
export declare function buildWorkspaceSyncV3NestedRepairPage(input: Omit<Parameters<typeof buildWorkspaceSyncV3CombinedRepairPage>[0], 'nestedCoverage' | 'workflowCoverage' | 'planningOrderCoverage' | 'taskCoverCoverage'>): WorkspaceSyncV3CombinedRepairPage;
|
|
69
|
-
export declare function buildWorkspaceSyncV3WorkflowRepairPage(input: Omit<Parameters<typeof buildWorkspaceSyncV3CombinedRepairPage>[0], 'nestedCoverage' | 'workflowCoverage' | 'planningOrderCoverage' | 'taskCoverCoverage'>): WorkspaceSyncV3CombinedRepairPage;
|
|
70
|
-
export declare function buildWorkspaceSyncV3PlanningOrderRepairPage(input: Omit<Parameters<typeof buildWorkspaceSyncV3CombinedRepairPage>[0], 'nestedCoverage' | 'workflowCoverage' | 'planningOrderCoverage' | 'taskCoverCoverage'>): WorkspaceSyncV3CombinedRepairPage;
|
|
71
|
-
export declare function buildWorkspaceSyncV3TaskCoverRepairPage(input: Omit<Parameters<typeof buildWorkspaceSyncV3CombinedRepairPage>[0], 'nestedCoverage' | 'workflowCoverage' | 'planningOrderCoverage' | 'taskCoverCoverage'>): WorkspaceSyncV3CombinedRepairPage;
|
|
71
|
+
export declare function buildWorkspaceSyncV3NestedRepairPage(input: Omit<Parameters<typeof buildWorkspaceSyncV3CombinedRepairPage>[0], 'nestedCoverage' | 'workflowCoverage' | 'workflowTaskCoverCoverage' | 'planningOrderCoverage' | 'taskCoverCoverage'>): WorkspaceSyncV3CombinedRepairPage;
|
|
72
|
+
export declare function buildWorkspaceSyncV3WorkflowRepairPage(input: Omit<Parameters<typeof buildWorkspaceSyncV3CombinedRepairPage>[0], 'nestedCoverage' | 'workflowCoverage' | 'workflowTaskCoverCoverage' | 'planningOrderCoverage' | 'taskCoverCoverage'>): WorkspaceSyncV3CombinedRepairPage;
|
|
73
|
+
export declare function buildWorkspaceSyncV3PlanningOrderRepairPage(input: Omit<Parameters<typeof buildWorkspaceSyncV3CombinedRepairPage>[0], 'nestedCoverage' | 'workflowCoverage' | 'workflowTaskCoverCoverage' | 'planningOrderCoverage' | 'taskCoverCoverage'>): WorkspaceSyncV3CombinedRepairPage;
|
|
74
|
+
export declare function buildWorkspaceSyncV3TaskCoverRepairPage(input: Omit<Parameters<typeof buildWorkspaceSyncV3CombinedRepairPage>[0], 'nestedCoverage' | 'workflowCoverage' | 'workflowTaskCoverCoverage' | 'planningOrderCoverage' | 'taskCoverCoverage'>): WorkspaceSyncV3CombinedRepairPage;
|
|
75
|
+
export declare function buildWorkspaceSyncV3WorkflowTaskCoverRepairPage(input: Omit<Parameters<typeof buildWorkspaceSyncV3CombinedRepairPage>[0], 'nestedCoverage' | 'workflowCoverage' | 'workflowTaskCoverCoverage' | 'planningOrderCoverage' | 'taskCoverCoverage'>): WorkspaceSyncV3CombinedRepairPage;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { createHmac, randomUUID, timingSafeEqual } from 'crypto';
|
|
2
2
|
import { canonicalWorkspaceSyncJson } from './canonicalWorkspaceSyncJson.js';
|
|
3
3
|
import { decodeCanonicalWorkspaceSyncBase64Url } from './workspaceSyncV3CursorEncoding.js';
|
|
4
|
-
import { prepareWorkspaceSyncV3CombinedRepairSnapshot, prepareWorkspaceSyncV3NestedRepairSnapshot, prepareWorkspaceSyncV3PlanningOrderRepairSnapshot, prepareWorkspaceSyncV3TaskCoverRepairSnapshot, prepareWorkspaceSyncV3WorkflowRepairSnapshot, } from './workspaceSyncV3CombinedRepairBaseline.js';
|
|
4
|
+
import { prepareWorkspaceSyncV3CombinedRepairSnapshot, prepareWorkspaceSyncV3NestedRepairSnapshot, prepareWorkspaceSyncV3PlanningOrderRepairSnapshot, prepareWorkspaceSyncV3TaskCoverRepairSnapshot, prepareWorkspaceSyncV3WorkflowRepairSnapshot, prepareWorkspaceSyncV3WorkflowTaskCoverRepairSnapshot, } from './workspaceSyncV3CombinedRepairBaseline.js';
|
|
5
5
|
import { validateWorkspaceSyncV3CombinedFeedEntry, WORKSPACE_SYNC_V3_COMBINED_COVERAGE_PROFILE, } from './workspaceSyncV3CombinedCoverage.js';
|
|
6
6
|
import { validateWorkspaceSyncV3NestedCoverageFeedEntry, WORKSPACE_SYNC_V3_NESTED_COVERAGE_PROFILE, } from './workspaceSyncV3NestedCoverage.js';
|
|
7
7
|
import { validateWorkspaceSyncV3WorkflowCoverageFeedEntry, WORKSPACE_SYNC_V3_WORKFLOW_COVERAGE_PROFILE, } from './workspaceSyncV3WorkflowCoverage.js';
|
|
8
8
|
import { validateWorkspaceSyncV3PlanningOrderCoverageFeedEntry, WORKSPACE_SYNC_V3_PLANNING_ORDER_COVERAGE_PROFILE, } from './workspaceSyncV3PlanningOrderCoverage.js';
|
|
9
9
|
import { validateWorkspaceSyncV3TaskCoverCoverageFeedEntry, WORKSPACE_SYNC_V3_TASK_COVER_COVERAGE_PROFILE, } from './workspaceSyncV3TaskCoverCoverage.js';
|
|
10
|
+
import { validateWorkspaceSyncV3WorkflowTaskCoverCoverageFeedEntry, WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_PROFILE, } from './workspaceSyncV3WorkflowTaskCoverCoverage.js';
|
|
10
11
|
import { createWorkspaceSyncV3FeedResumeCursor, WorkspaceSyncV3FeedOperationTooLargeError, } from './workspaceSyncV3Feed.js';
|
|
11
12
|
import { findWorkspaceSyncV3FeedCursorVerificationKey, } from './workspaceSyncV3FeedCursorKeys.js';
|
|
12
13
|
import { WORKSPACE_SYNC_COMBINED_PROJECTION, WORKSPACE_SYNC_CONTRACT_VERSION, } from './syncDurabilityStore.js';
|
|
@@ -99,16 +100,21 @@ export function decodeWorkspaceSyncV3PlanningOrderRepairCursor(raw, keyring) {
|
|
|
99
100
|
export function decodeWorkspaceSyncV3TaskCoverRepairCursor(raw, keyring) {
|
|
100
101
|
return decodeRepairCursor(raw, keyring, WORKSPACE_SYNC_V3_TASK_COVER_COVERAGE_PROFILE);
|
|
101
102
|
}
|
|
103
|
+
export function decodeWorkspaceSyncV3WorkflowTaskCoverRepairCursor(raw, keyring) {
|
|
104
|
+
return decodeRepairCursor(raw, keyring, WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_PROFILE);
|
|
105
|
+
}
|
|
102
106
|
function repairProfile(coverage) {
|
|
103
|
-
return coverage === 'workflow'
|
|
104
|
-
?
|
|
105
|
-
: coverage === '
|
|
106
|
-
?
|
|
107
|
-
: coverage === '
|
|
108
|
-
?
|
|
109
|
-
: coverage === '
|
|
110
|
-
?
|
|
111
|
-
:
|
|
107
|
+
return coverage === 'workflow-task-cover'
|
|
108
|
+
? WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_PROFILE
|
|
109
|
+
: coverage === 'workflow'
|
|
110
|
+
? WORKSPACE_SYNC_V3_WORKFLOW_COVERAGE_PROFILE
|
|
111
|
+
: coverage === 'task-cover'
|
|
112
|
+
? WORKSPACE_SYNC_V3_TASK_COVER_COVERAGE_PROFILE
|
|
113
|
+
: coverage === 'planning-order'
|
|
114
|
+
? WORKSPACE_SYNC_V3_PLANNING_ORDER_COVERAGE_PROFILE
|
|
115
|
+
: coverage === 'nested'
|
|
116
|
+
? WORKSPACE_SYNC_V3_NESTED_COVERAGE_PROFILE
|
|
117
|
+
: WORKSPACE_SYNC_V3_COMBINED_COVERAGE_PROFILE;
|
|
112
118
|
}
|
|
113
119
|
function containsCurrentEntityEventInventory(input) {
|
|
114
120
|
if (input.coverage === 'combined')
|
|
@@ -355,15 +361,17 @@ function mapEntry(row, coverage) {
|
|
|
355
361
|
payloadFingerprint: String(row.payload_fingerprint || ''), payload,
|
|
356
362
|
occurredAt: timestamp(row.occurred_at, 'Combined repair occurrence time'),
|
|
357
363
|
};
|
|
358
|
-
(coverage === 'workflow'
|
|
359
|
-
?
|
|
360
|
-
: coverage === '
|
|
361
|
-
?
|
|
362
|
-
: coverage === '
|
|
363
|
-
?
|
|
364
|
-
: coverage === '
|
|
365
|
-
?
|
|
366
|
-
:
|
|
364
|
+
(coverage === 'workflow-task-cover'
|
|
365
|
+
? validateWorkspaceSyncV3WorkflowTaskCoverCoverageFeedEntry
|
|
366
|
+
: coverage === 'workflow'
|
|
367
|
+
? validateWorkspaceSyncV3WorkflowCoverageFeedEntry
|
|
368
|
+
: coverage === 'task-cover'
|
|
369
|
+
? validateWorkspaceSyncV3TaskCoverCoverageFeedEntry
|
|
370
|
+
: coverage === 'planning-order'
|
|
371
|
+
? validateWorkspaceSyncV3PlanningOrderCoverageFeedEntry
|
|
372
|
+
: coverage === 'nested'
|
|
373
|
+
? validateWorkspaceSyncV3NestedCoverageFeedEntry
|
|
374
|
+
: validateWorkspaceSyncV3CombinedFeedEntry)(entry);
|
|
367
375
|
return entry;
|
|
368
376
|
}
|
|
369
377
|
function finalizePage(input) {
|
|
@@ -420,15 +428,17 @@ export function buildWorkspaceSyncV3CombinedRepairPage(input) {
|
|
|
420
428
|
const pageSize = Math.max(1, Math.min(MAX_PAGE_SIZE, Math.floor(input.pageSize || DEFAULT_PAGE_SIZE)));
|
|
421
429
|
const maxResponseBytes = Math.max(1024, Math.min(8 * 1024 * 1024, Math.floor(input.maxResponseBytes || DEFAULT_MAX_RESPONSE_BYTES)));
|
|
422
430
|
const db = input.core.getDatabaseAdapter();
|
|
423
|
-
const coverage = input.
|
|
424
|
-
? 'workflow'
|
|
425
|
-
: input.
|
|
426
|
-
? '
|
|
427
|
-
: input.
|
|
428
|
-
? '
|
|
429
|
-
: input.
|
|
430
|
-
? '
|
|
431
|
-
:
|
|
431
|
+
const coverage = input.workflowTaskCoverCoverage
|
|
432
|
+
? 'workflow-task-cover'
|
|
433
|
+
: input.workflowCoverage
|
|
434
|
+
? 'workflow'
|
|
435
|
+
: input.taskCoverCoverage
|
|
436
|
+
? 'task-cover'
|
|
437
|
+
: input.planningOrderCoverage
|
|
438
|
+
? 'planning-order'
|
|
439
|
+
: input.nestedCoverage
|
|
440
|
+
? 'nested'
|
|
441
|
+
: 'combined';
|
|
432
442
|
if (input.cursor && Date.parse(input.cursor.expiresAt) <= Date.parse(now)) {
|
|
433
443
|
cleanupExpiredBestEffort(input.core, tenantId, workspaceId, now);
|
|
434
444
|
throw new WorkspaceSyncV3CombinedRepairSnapshotUnavailableError();
|
|
@@ -467,20 +477,23 @@ export function buildWorkspaceSyncV3CombinedRepairPage(input) {
|
|
|
467
477
|
return { metadata: reusable, reused: true,
|
|
468
478
|
insertedBaselineEntities: 0, insertedBaselineJournalRows: 0 };
|
|
469
479
|
const repairStartedAt = Date.now();
|
|
470
|
-
const prepared = coverage === 'workflow'
|
|
471
|
-
?
|
|
480
|
+
const prepared = coverage === 'workflow-task-cover'
|
|
481
|
+
? prepareWorkspaceSyncV3WorkflowTaskCoverRepairSnapshot({ core: input.core, workspaceId, now,
|
|
472
482
|
coveredLegacyWritesFenced: input.coveredLegacyWritesFenced })
|
|
473
|
-
: coverage === '
|
|
474
|
-
?
|
|
483
|
+
: coverage === 'workflow'
|
|
484
|
+
? prepareWorkspaceSyncV3WorkflowRepairSnapshot({ core: input.core, workspaceId, now,
|
|
475
485
|
coveredLegacyWritesFenced: input.coveredLegacyWritesFenced })
|
|
476
|
-
: coverage === '
|
|
477
|
-
?
|
|
486
|
+
: coverage === 'planning-order'
|
|
487
|
+
? prepareWorkspaceSyncV3PlanningOrderRepairSnapshot({ core: input.core, workspaceId, now,
|
|
478
488
|
coveredLegacyWritesFenced: input.coveredLegacyWritesFenced })
|
|
479
|
-
: coverage === '
|
|
480
|
-
?
|
|
489
|
+
: coverage === 'task-cover'
|
|
490
|
+
? prepareWorkspaceSyncV3TaskCoverRepairSnapshot({ core: input.core, workspaceId, now,
|
|
481
491
|
coveredLegacyWritesFenced: input.coveredLegacyWritesFenced })
|
|
482
|
-
:
|
|
483
|
-
|
|
492
|
+
: coverage === 'nested'
|
|
493
|
+
? prepareWorkspaceSyncV3NestedRepairSnapshot({ core: input.core, workspaceId, now,
|
|
494
|
+
coveredLegacyWritesFenced: input.coveredLegacyWritesFenced })
|
|
495
|
+
: prepareWorkspaceSyncV3CombinedRepairSnapshot({ core: input.core, workspaceId, now,
|
|
496
|
+
coveredLegacyWritesFenced: input.coveredLegacyWritesFenced });
|
|
484
497
|
// Production expiry is sampled at the end of persistence, after
|
|
485
498
|
// every immutable payload row has committed in the same lock.
|
|
486
499
|
const materializationStartedAt = input.now
|
|
@@ -576,3 +589,6 @@ export function buildWorkspaceSyncV3PlanningOrderRepairPage(input) {
|
|
|
576
589
|
export function buildWorkspaceSyncV3TaskCoverRepairPage(input) {
|
|
577
590
|
return buildWorkspaceSyncV3CombinedRepairPage({ ...input, taskCoverCoverage: true });
|
|
578
591
|
}
|
|
592
|
+
export function buildWorkspaceSyncV3WorkflowTaskCoverRepairPage(input) {
|
|
593
|
+
return buildWorkspaceSyncV3CombinedRepairPage({ ...input, workflowTaskCoverCoverage: true });
|
|
594
|
+
}
|
|
@@ -35,6 +35,8 @@ export declare function listWorkspaceSyncV3NestedRepairCandidates(core: Taskforc
|
|
|
35
35
|
export declare function listWorkspaceSyncV3TaskCoverRepairCandidates(core: TaskforceCore, workspaceId: string): WorkspaceSyncV3CombinedRepairCandidate[];
|
|
36
36
|
/** Candidate v5 inventory. Coverage-v3/v4 inventories intentionally remain unchanged. */
|
|
37
37
|
export declare function listWorkspaceSyncV3WorkflowRepairCandidates(core: TaskforceCore, workspaceId: string): WorkspaceSyncV3CombinedRepairCandidate[];
|
|
38
|
+
/** Candidate v8 inventory. It composes v7 task-cover state with workflow runtime. */
|
|
39
|
+
export declare function listWorkspaceSyncV3WorkflowTaskCoverRepairCandidates(core: TaskforceCore, workspaceId: string): WorkspaceSyncV3CombinedRepairCandidate[];
|
|
38
40
|
/** Candidate v6 inventory. Workflow v5 remains an independent dark contract. */
|
|
39
41
|
export declare function listWorkspaceSyncV3PlanningOrderRepairCandidates(core: TaskforceCore, workspaceId: string): WorkspaceSyncV3CombinedRepairCandidate[];
|
|
40
42
|
export declare function buildWorkspaceSyncV3CombinedRepairSnapshot(input: {
|
|
@@ -51,6 +53,7 @@ export declare function buildWorkspaceSyncV3CombinedRepairSnapshotFromLockedCand
|
|
|
51
53
|
inventory: WorkspaceSyncV3CombinedRepairCandidate[];
|
|
52
54
|
nestedCoverage?: boolean;
|
|
53
55
|
workflowCoverage?: boolean;
|
|
56
|
+
workflowTaskCoverCoverage?: boolean;
|
|
54
57
|
planningOrderCoverage?: boolean;
|
|
55
58
|
taskCoverCoverage?: boolean;
|
|
56
59
|
}): {
|
|
@@ -85,4 +88,11 @@ export declare function buildWorkspaceSyncV3TaskCoverRepairSnapshot(input: {
|
|
|
85
88
|
snapshotSequence: string;
|
|
86
89
|
entries: WorkspaceSyncV3FeedEntry[];
|
|
87
90
|
};
|
|
91
|
+
export declare function buildWorkspaceSyncV3WorkflowTaskCoverRepairSnapshot(input: {
|
|
92
|
+
core: TaskforceCore;
|
|
93
|
+
workspaceId: string;
|
|
94
|
+
}): {
|
|
95
|
+
snapshotSequence: string;
|
|
96
|
+
entries: WorkspaceSyncV3FeedEntry[];
|
|
97
|
+
};
|
|
88
98
|
export {};
|
|
@@ -15,6 +15,7 @@ import { projectWorkspaceSyncV3WorkflowRuntimeJournalRow, } from './workspaceSyn
|
|
|
15
15
|
import { validateWorkspaceSyncV3WorkflowCoverageFeedEntry, WORKSPACE_SYNC_V3_WORKFLOW_COVERAGE_PROFILE, } from './workspaceSyncV3WorkflowCoverage.js';
|
|
16
16
|
import { validateWorkspaceSyncV3PlanningOrderCoverageFeedEntry, WORKSPACE_SYNC_V3_PLANNING_ORDER_COVERAGE_PROFILE, } from './workspaceSyncV3PlanningOrderCoverage.js';
|
|
17
17
|
import { validateWorkspaceSyncV3TaskCoverCoverageFeedEntry, WORKSPACE_SYNC_V3_TASK_COVER_COVERAGE_PROFILE, } from './workspaceSyncV3TaskCoverCoverage.js';
|
|
18
|
+
import { validateWorkspaceSyncV3WorkflowTaskCoverCoverageFeedEntry, WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_PROFILE, } from './workspaceSyncV3WorkflowTaskCoverCoverage.js';
|
|
18
19
|
import { projectWorkspaceSyncV3WorkstreamTaskOrderJournalRow } from './workspaceSyncV3WorkstreamTaskOrderProjection.js';
|
|
19
20
|
import { serializeWorkstreamTaskOrderForSync } from './workstreamTaskOrderSync.js';
|
|
20
21
|
import { serializeTaxonomyStateForSync } from './taxonomySyncPayload.js';
|
|
@@ -31,6 +32,8 @@ const PLANNING_ORDER_PROJECTION_RANK = new Map(WORKSPACE_SYNC_V3_PLANNING_ORDER_
|
|
|
31
32
|
.map((projection, index) => [projection.projectionId, index]));
|
|
32
33
|
const TASK_COVER_PROJECTION_RANK = new Map(WORKSPACE_SYNC_V3_TASK_COVER_COVERAGE_PROFILE.projections
|
|
33
34
|
.map((projection, index) => [projection.projectionId, index]));
|
|
35
|
+
const WORKFLOW_TASK_COVER_PROJECTION_RANK = new Map(WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_PROFILE.projections
|
|
36
|
+
.map((projection, index) => [projection.projectionId, index]));
|
|
34
37
|
export class WorkspaceSyncV3CombinedRepairBaselineRequiredError extends Error {
|
|
35
38
|
missing;
|
|
36
39
|
code = 'WORKSPACE_SYNC_V3_COMBINED_REPAIR_BASELINE_REQUIRED';
|
|
@@ -43,15 +46,17 @@ function compareCodeUnits(left, right) {
|
|
|
43
46
|
return left < right ? -1 : left > right ? 1 : 0;
|
|
44
47
|
}
|
|
45
48
|
function projectionRank(entry, coverage) {
|
|
46
|
-
const ranks = coverage === 'workflow'
|
|
47
|
-
?
|
|
48
|
-
: coverage === '
|
|
49
|
-
?
|
|
50
|
-
: coverage === '
|
|
51
|
-
?
|
|
52
|
-
: coverage === '
|
|
53
|
-
?
|
|
54
|
-
:
|
|
49
|
+
const ranks = coverage === 'workflow-task-cover'
|
|
50
|
+
? WORKFLOW_TASK_COVER_PROJECTION_RANK
|
|
51
|
+
: coverage === 'workflow'
|
|
52
|
+
? WORKFLOW_PROJECTION_RANK
|
|
53
|
+
: coverage === 'task-cover'
|
|
54
|
+
? TASK_COVER_PROJECTION_RANK
|
|
55
|
+
: coverage === 'planning-order'
|
|
56
|
+
? PLANNING_ORDER_PROJECTION_RANK
|
|
57
|
+
: coverage === 'nested'
|
|
58
|
+
? NESTED_PROJECTION_RANK
|
|
59
|
+
: COMBINED_PROJECTION_RANK;
|
|
55
60
|
const rank = ranks.get(entry.projection);
|
|
56
61
|
if (rank === undefined)
|
|
57
62
|
throw new Error(`Unsupported combined repair projection: ${entry.projection}.`);
|
|
@@ -223,8 +228,7 @@ export function listWorkspaceSyncV3NestedRepairCandidates(core, workspaceId) {
|
|
|
223
228
|
export function listWorkspaceSyncV3TaskCoverRepairCandidates(core, workspaceId) {
|
|
224
229
|
return listNestedRepairCandidates(core, workspaceId, 'task-attachment-links/full-v2');
|
|
225
230
|
}
|
|
226
|
-
|
|
227
|
-
export function listWorkspaceSyncV3WorkflowRepairCandidates(core, workspaceId) {
|
|
231
|
+
function listWorkflowRuntimeRepairCandidates(core, workspaceId) {
|
|
228
232
|
const workflowStore = new WorkflowStore(core.getDatabaseAdapter(), core.getTenantId());
|
|
229
233
|
const executions = workflowStore.listExecutions(workspaceId).map((execution) => {
|
|
230
234
|
const projected = workflowStore.getProjectedExecution(workspaceId, execution.id);
|
|
@@ -265,12 +269,25 @@ export function listWorkspaceSyncV3WorkflowRepairCandidates(core, workspaceId) {
|
|
|
265
269
|
};
|
|
266
270
|
});
|
|
267
271
|
return [
|
|
268
|
-
...listWorkspaceSyncV3NestedRepairCandidates(core, workspaceId),
|
|
269
272
|
...definitions.values(),
|
|
270
273
|
...executionCandidates,
|
|
271
274
|
...events,
|
|
272
275
|
];
|
|
273
276
|
}
|
|
277
|
+
/** Candidate v5 inventory. Coverage-v3/v4 inventories intentionally remain unchanged. */
|
|
278
|
+
export function listWorkspaceSyncV3WorkflowRepairCandidates(core, workspaceId) {
|
|
279
|
+
return [
|
|
280
|
+
...listWorkspaceSyncV3NestedRepairCandidates(core, workspaceId),
|
|
281
|
+
...listWorkflowRuntimeRepairCandidates(core, workspaceId),
|
|
282
|
+
];
|
|
283
|
+
}
|
|
284
|
+
/** Candidate v8 inventory. It composes v7 task-cover state with workflow runtime. */
|
|
285
|
+
export function listWorkspaceSyncV3WorkflowTaskCoverRepairCandidates(core, workspaceId) {
|
|
286
|
+
return [
|
|
287
|
+
...listWorkspaceSyncV3TaskCoverRepairCandidates(core, workspaceId),
|
|
288
|
+
...listWorkflowRuntimeRepairCandidates(core, workspaceId),
|
|
289
|
+
];
|
|
290
|
+
}
|
|
274
291
|
/** Candidate v6 inventory. Workflow v5 remains an independent dark contract. */
|
|
275
292
|
export function listWorkspaceSyncV3PlanningOrderRepairCandidates(core, workspaceId) {
|
|
276
293
|
const nested = listWorkspaceSyncV3NestedRepairCandidates(core, workspaceId);
|
|
@@ -490,26 +507,30 @@ export function buildWorkspaceSyncV3CombinedRepairSnapshotFromLockedCandidates(i
|
|
|
490
507
|
.map((candidate) => candidate.entityId);
|
|
491
508
|
const taskFullProvenance = readTaskFullProvenanceRows({ db, tenantId, workspaceId, taskIds: remappedTaskIds });
|
|
492
509
|
const provenanceCompletedAt = Date.now();
|
|
493
|
-
const entries = inventory.map((candidate) => entry(candidate, rows.get(`${candidate.domain}\0${candidate.entityId}`), taskFullProvenance, input.taskCoverCoverage === true));
|
|
510
|
+
const entries = inventory.map((candidate) => entry(candidate, rows.get(`${candidate.domain}\0${candidate.entityId}`), taskFullProvenance, input.taskCoverCoverage === true || input.workflowTaskCoverCoverage === true));
|
|
494
511
|
const entriesCompletedAt = Date.now();
|
|
495
|
-
const coverage = input.
|
|
496
|
-
? 'workflow'
|
|
497
|
-
: input.
|
|
498
|
-
? '
|
|
499
|
-
: input.
|
|
500
|
-
? '
|
|
501
|
-
: input.
|
|
502
|
-
? '
|
|
503
|
-
:
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
512
|
+
const coverage = input.workflowTaskCoverCoverage
|
|
513
|
+
? 'workflow-task-cover'
|
|
514
|
+
: input.workflowCoverage
|
|
515
|
+
? 'workflow'
|
|
516
|
+
: input.taskCoverCoverage
|
|
517
|
+
? 'task-cover'
|
|
518
|
+
: input.planningOrderCoverage
|
|
519
|
+
? 'planning-order'
|
|
520
|
+
: input.nestedCoverage
|
|
521
|
+
? 'nested'
|
|
522
|
+
: 'combined';
|
|
523
|
+
entries.forEach(coverage === 'workflow-task-cover'
|
|
524
|
+
? validateWorkspaceSyncV3WorkflowTaskCoverCoverageFeedEntry
|
|
525
|
+
: coverage === 'workflow'
|
|
526
|
+
? validateWorkspaceSyncV3WorkflowCoverageFeedEntry
|
|
527
|
+
: coverage === 'task-cover'
|
|
528
|
+
? validateWorkspaceSyncV3TaskCoverCoverageFeedEntry
|
|
529
|
+
: coverage === 'planning-order'
|
|
530
|
+
? validateWorkspaceSyncV3PlanningOrderCoverageFeedEntry
|
|
531
|
+
: coverage === 'nested'
|
|
532
|
+
? validateWorkspaceSyncV3NestedCoverageFeedEntry
|
|
533
|
+
: validateWorkspaceSyncV3CombinedFeedEntry);
|
|
513
534
|
const validationCompletedAt = Date.now();
|
|
514
535
|
if (entries.some((candidate) => BigInt(candidate.sequence) > BigInt(snapshotSequence))) {
|
|
515
536
|
throw new Error('Combined repair entry exceeds the locked snapshot sequence.');
|
|
@@ -601,3 +622,21 @@ export function buildWorkspaceSyncV3TaskCoverRepairSnapshot(input) {
|
|
|
601
622
|
});
|
|
602
623
|
})();
|
|
603
624
|
}
|
|
625
|
+
export function buildWorkspaceSyncV3WorkflowTaskCoverRepairSnapshot(input) {
|
|
626
|
+
const workspaceId = String(input.workspaceId || '').trim();
|
|
627
|
+
if (!workspaceId)
|
|
628
|
+
throw new Error('Workspace id is required.');
|
|
629
|
+
const tenantId = input.core.getTenantId();
|
|
630
|
+
const db = input.core.getDatabaseAdapter();
|
|
631
|
+
return db.transaction(() => {
|
|
632
|
+
const snapshotSequence = lockAndReadHighWatermark(db, tenantId, workspaceId);
|
|
633
|
+
const inventory = listWorkspaceSyncV3WorkflowTaskCoverRepairCandidates(input.core, workspaceId);
|
|
634
|
+
return buildWorkspaceSyncV3CombinedRepairSnapshotFromLockedCandidates({
|
|
635
|
+
core: input.core,
|
|
636
|
+
workspaceId,
|
|
637
|
+
snapshotSequence,
|
|
638
|
+
inventory,
|
|
639
|
+
workflowTaskCoverCoverage: true,
|
|
640
|
+
});
|
|
641
|
+
})();
|
|
642
|
+
}
|
|
@@ -3,6 +3,7 @@ import { WORKSPACE_SYNC_V3_NESTED_COVERAGE_SELECTOR } from './workspaceSyncV3Nes
|
|
|
3
3
|
import { WORKSPACE_SYNC_V3_WORKFLOW_COVERAGE_SELECTOR } from './workspaceSyncV3WorkflowWireContract.js';
|
|
4
4
|
import { WORKSPACE_SYNC_V3_PLANNING_ORDER_COVERAGE_SELECTOR } from './workspaceSyncV3PlanningOrderWireContract.js';
|
|
5
5
|
import { WORKSPACE_SYNC_V3_TASK_COVER_COVERAGE_SELECTOR } from './workspaceSyncV3TaskCoverWireContract.js';
|
|
6
|
+
import { WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_SELECTOR } from './workspaceSyncV3WorkflowTaskCoverWireContract.js';
|
|
6
7
|
export declare const WORKSPACE_SYNC_V3_COMBINED_COVERAGE_SELECTOR: Readonly<{
|
|
7
8
|
coverageProfileId: "task-planning-metadata";
|
|
8
9
|
coverageVersion: 3;
|
|
@@ -10,7 +11,7 @@ export declare const WORKSPACE_SYNC_V3_COMBINED_COVERAGE_SELECTOR: Readonly<{
|
|
|
10
11
|
}>;
|
|
11
12
|
export declare const WORKSPACE_SYNC_V3_COMBINED_CAPABILITY_VERSION: 1;
|
|
12
13
|
export declare const WORKSPACE_SYNC_V3_COMBINED_EXCLUDED_V2_PROJECTIONS: readonly ["task/root-v1", "task-relationship/full-v1", "taxonomy/full-v1", "initiative/full-v1", "workstream/full-v1"];
|
|
13
|
-
export type WorkspaceSyncV3CombinedCoverageSelector = typeof WORKSPACE_SYNC_V3_COMBINED_COVERAGE_SELECTOR | typeof WORKSPACE_SYNC_V3_NESTED_COVERAGE_SELECTOR | typeof WORKSPACE_SYNC_V3_WORKFLOW_COVERAGE_SELECTOR | typeof WORKSPACE_SYNC_V3_PLANNING_ORDER_COVERAGE_SELECTOR | typeof WORKSPACE_SYNC_V3_TASK_COVER_COVERAGE_SELECTOR;
|
|
14
|
+
export type WorkspaceSyncV3CombinedCoverageSelector = typeof WORKSPACE_SYNC_V3_COMBINED_COVERAGE_SELECTOR | typeof WORKSPACE_SYNC_V3_NESTED_COVERAGE_SELECTOR | typeof WORKSPACE_SYNC_V3_WORKFLOW_COVERAGE_SELECTOR | typeof WORKSPACE_SYNC_V3_PLANNING_ORDER_COVERAGE_SELECTOR | typeof WORKSPACE_SYNC_V3_TASK_COVER_COVERAGE_SELECTOR | typeof WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_SELECTOR;
|
|
14
15
|
export interface WorkspaceSyncV3CombinedWireContract {
|
|
15
16
|
coverage: WorkspaceSyncV3CombinedCoverageSelector;
|
|
16
17
|
excludedProjections: readonly WorkspaceSyncV2ProjectionExclusion[];
|
|
@@ -2,6 +2,7 @@ import { WORKSPACE_SYNC_V3_NESTED_COVERAGE_SELECTOR, WORKSPACE_SYNC_V3_NESTED_EX
|
|
|
2
2
|
import { WORKSPACE_SYNC_V3_WORKFLOW_COVERAGE_SELECTOR, WORKSPACE_SYNC_V3_WORKFLOW_EXCLUDED_V2_PROJECTIONS, } from './workspaceSyncV3WorkflowWireContract.js';
|
|
3
3
|
import { WORKSPACE_SYNC_V3_PLANNING_ORDER_COVERAGE_SELECTOR, WORKSPACE_SYNC_V3_PLANNING_ORDER_EXCLUDED_V2_PROJECTIONS, } from './workspaceSyncV3PlanningOrderWireContract.js';
|
|
4
4
|
import { WORKSPACE_SYNC_V3_TASK_COVER_COVERAGE_SELECTOR, WORKSPACE_SYNC_V3_TASK_COVER_EXCLUDED_V2_PROJECTIONS, } from './workspaceSyncV3TaskCoverWireContract.js';
|
|
5
|
+
import { WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_SELECTOR, WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_EXCLUDED_V2_PROJECTIONS, } from './workspaceSyncV3WorkflowTaskCoverWireContract.js';
|
|
5
6
|
export const WORKSPACE_SYNC_V3_COMBINED_COVERAGE_SELECTOR = Object.freeze({
|
|
6
7
|
coverageProfileId: 'task-planning-metadata',
|
|
7
8
|
coverageVersion: 3,
|
|
@@ -79,9 +80,24 @@ export function resolveWorkspaceSyncV3CombinedWireContract(input) {
|
|
|
79
80
|
taskCoverProjectionRequired: true,
|
|
80
81
|
};
|
|
81
82
|
}
|
|
83
|
+
if (profileId === WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_SELECTOR.coverageProfileId
|
|
84
|
+
&& version === WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_SELECTOR.coverageVersion
|
|
85
|
+
&& digest === WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_SELECTOR.coverageDigest) {
|
|
86
|
+
return {
|
|
87
|
+
coverage: WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_SELECTOR,
|
|
88
|
+
excludedProjections: WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_EXCLUDED_V2_PROJECTIONS,
|
|
89
|
+
nestedWriterPrerequisitesRequired: true,
|
|
90
|
+
workflowWriterPrerequisitesRequired: true,
|
|
91
|
+
planningOrderWriterPrerequisitesRequired: false,
|
|
92
|
+
taskCoverProjectionRequired: true,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
82
95
|
return null;
|
|
83
96
|
}
|
|
84
97
|
export function resolveWorkspaceSyncV3CombinedCoverageForExclusions(exclusions) {
|
|
98
|
+
// V8 deliberately shares V7's v2 exclusions. Exclusions alone therefore
|
|
99
|
+
// identify the active V7 boundary; V8 activation must carry its exact
|
|
100
|
+
// persisted selector instead of using this legacy reverse lookup.
|
|
85
101
|
for (const coverage of [
|
|
86
102
|
WORKSPACE_SYNC_V3_COMBINED_COVERAGE_SELECTOR,
|
|
87
103
|
WORKSPACE_SYNC_V3_NESTED_COVERAGE_SELECTOR,
|
|
@@ -3,6 +3,7 @@ import { WORKSPACE_SYNC_V3_NESTED_COVERAGE_POLICY, WORKSPACE_SYNC_V3_NESTED_COVE
|
|
|
3
3
|
import { WORKSPACE_SYNC_V3_WORKFLOW_COVERAGE_POLICY, WORKSPACE_SYNC_V3_WORKFLOW_COVERAGE_PROFILE, validateWorkspaceSyncV3WorkflowCoverageFeedEntry, } from './workspaceSyncV3WorkflowCoverage.js';
|
|
4
4
|
import { WORKSPACE_SYNC_V3_PLANNING_ORDER_COVERAGE_POLICY, WORKSPACE_SYNC_V3_PLANNING_ORDER_COVERAGE_PROFILE, validateWorkspaceSyncV3PlanningOrderCoverageFeedEntry, } from './workspaceSyncV3PlanningOrderCoverage.js';
|
|
5
5
|
import { WORKSPACE_SYNC_V3_TASK_COVER_COVERAGE_POLICY, WORKSPACE_SYNC_V3_TASK_COVER_COVERAGE_PROFILE, validateWorkspaceSyncV3TaskCoverCoverageFeedEntry, } from './workspaceSyncV3TaskCoverCoverage.js';
|
|
6
|
+
import { WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_POLICY, WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_PROFILE, validateWorkspaceSyncV3WorkflowTaskCoverCoverageFeedEntry, } from './workspaceSyncV3WorkflowTaskCoverCoverage.js';
|
|
6
7
|
export const WORKSPACE_SYNC_V3_REGISTERED_COVERAGES = Object.freeze([
|
|
7
8
|
Object.freeze({
|
|
8
9
|
profile: WORKSPACE_SYNC_V3_COMBINED_COVERAGE_PROFILE,
|
|
@@ -29,6 +30,11 @@ export const WORKSPACE_SYNC_V3_REGISTERED_COVERAGES = Object.freeze([
|
|
|
29
30
|
policy: WORKSPACE_SYNC_V3_TASK_COVER_COVERAGE_POLICY,
|
|
30
31
|
validateEntry: validateWorkspaceSyncV3TaskCoverCoverageFeedEntry,
|
|
31
32
|
}),
|
|
33
|
+
Object.freeze({
|
|
34
|
+
profile: WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_PROFILE,
|
|
35
|
+
policy: WORKSPACE_SYNC_V3_WORKFLOW_TASK_COVER_COVERAGE_POLICY,
|
|
36
|
+
validateEntry: validateWorkspaceSyncV3WorkflowTaskCoverCoverageFeedEntry,
|
|
37
|
+
}),
|
|
32
38
|
]);
|
|
33
39
|
export function resolveWorkspaceSyncV3RegisteredCoverage(input) {
|
|
34
40
|
const profileId = String(input.coverageProfileId || '').trim();
|
|
@@ -11,6 +11,7 @@ import type { WorkflowRuntimeMutationCommand } from './workflowRuntimeSync.js';
|
|
|
11
11
|
import type { WorkspaceSyncV3OriginActor } from './workspaceSyncV3OriginActor.js';
|
|
12
12
|
import type { WorkspaceSyncV3TaskCommentReconcileProvenance } from './taskCommentReconcileProvenance.js';
|
|
13
13
|
import type { WorkspaceSyncEntityEventSnapshot } from '../workspaceSyncModel.js';
|
|
14
|
+
import type { TaskChecklistItemUpdateIntent } from './taskChecklistMutationService.js';
|
|
14
15
|
export type { WorkspaceSyncV3OriginActor } from './workspaceSyncV3OriginActor.js';
|
|
15
16
|
type WorkspaceSyncV3OperationEnvelopeBase<TOperation> = {
|
|
16
17
|
contractVersion: 3;
|
|
@@ -115,6 +116,8 @@ export type WorkspaceSyncV3TaskChecklistEnvelope = WorkspaceSyncV3OperationEnvel
|
|
|
115
116
|
baseLifecycleRevision: '0';
|
|
116
117
|
payload: {
|
|
117
118
|
items: ChecklistItem[];
|
|
119
|
+
expectedDetailRevision?: string;
|
|
120
|
+
itemUpdateIntent?: TaskChecklistItemUpdateIntent;
|
|
118
121
|
originActor?: WorkspaceSyncV3OriginActor;
|
|
119
122
|
};
|
|
120
123
|
}>;
|
|
@@ -46,6 +46,10 @@ export interface WorkspaceSyncV3OperatorDiagnosticsSnapshot {
|
|
|
46
46
|
materializationsInWindow: number;
|
|
47
47
|
materializedEntriesInWindow: number;
|
|
48
48
|
unexpiredMaterializations: number;
|
|
49
|
+
storedMaterializations: number;
|
|
50
|
+
storedEntries: number;
|
|
51
|
+
expiredMaterializations: number;
|
|
52
|
+
expiredEntries: number;
|
|
49
53
|
};
|
|
50
54
|
outbox: {
|
|
51
55
|
captureConfigured: boolean;
|
|
@@ -74,6 +78,7 @@ export interface WorkspaceSyncV3OperatorDiagnosticsSnapshot {
|
|
|
74
78
|
};
|
|
75
79
|
server5xx: number;
|
|
76
80
|
nonTest409: number;
|
|
81
|
+
cursorExpiredResets: number;
|
|
77
82
|
requestP95Ms: number | null;
|
|
78
83
|
maxObservedResponseBytes: number | null;
|
|
79
84
|
};
|