@taskforcehq/taskforce 0.3.329 → 0.3.332
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/README.md +7 -2
- 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/agentCapabilities/AgentCapabilitiesPrototype.d.ts +2 -2
- package/dist/components/features/agentCapabilities/AgentCapabilitiesPrototype.js +2 -2
- 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/planning/PlanningModule.js +15 -3
- package/dist/components/features/planning/planningMetadata.d.ts +10 -0
- package/dist/components/features/planning/planningMetadata.js +8 -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 +62 -27
- package/dist/components/views/panels/PlanningDrawer.d.ts +2 -1
- package/dist/components/views/panels/PlanningDrawer.js +12 -8
- 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 +55 -1
- package/dist/core/McpTokenService.d.ts +25 -1
- package/dist/core/McpTokenService.js +106 -15
- 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 +43 -3
- package/dist/core/Taskforce.js +158 -7
- package/dist/core/types.d.ts +9 -0
- package/dist/documentReviews/DocumentReviewCommentStore.d.ts +2 -0
- package/dist/documentReviews/DocumentReviewCommentStore.js +28 -9
- 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 +11 -0
- package/dist/mcp/httpProtocolRouting.js +22 -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 +408 -102
- package/dist/mcp/taskPlanningRegistrar.js +25 -6
- package/dist/mcp/toolProfiles.d.ts +2 -0
- package/dist/mcp/toolProfiles.js +11 -0
- package/dist/mcp/toolRegistry.d.ts +1 -0
- package/dist/mcp/toolRegistry.js +9 -8
- 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/buildInfo.d.ts +1 -0
- package/dist/server/buildInfo.js +5 -1
- package/dist/server/cloudMcpCapacityTelemetry.d.ts +68 -0
- package/dist/server/cloudMcpCapacityTelemetry.js +221 -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 +25 -19
- package/dist/server/routes/admin.d.ts +4 -0
- package/dist/server/routes/admin.js +126 -5
- 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 +22 -0
- package/dist/server/routes/shared.js +298 -182
- 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/service/localServiceCli.d.ts +2 -2
- package/dist/service/localServiceCli.js +4 -3
- 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 +139 -0
- package/dist/services/executorPhaseAIssuerCore.js +402 -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 +2 -2
- package/dist/services/taskforceAgentMcpBridge.js +42 -29
- 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 +14 -1
- package/dist/storage/postgresRequestDiagnostics.d.ts +9 -1
- package/dist/storage/postgresRequestDiagnostics.js +15 -2
- package/dist/storage/postgresWorker.js +20 -2
- package/dist/storage/postgresWorkerProtocol.d.ts +7 -0
- package/dist/storage/taskforceAgentConnectionBindingStore.d.ts +31 -0
- package/dist/storage/taskforceAgentConnectionBindingStore.js +84 -0
- package/dist/storage/workflowStore.d.ts +2 -0
- package/dist/storage/workflowStore.js +39 -2
- package/dist/sync/cloudSyncApi.js +4 -2
- package/dist/sync/collaborationSyncState.js +5 -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/localWorkspaceSyncRunner.d.ts +3 -1
- package/dist/sync/coordinator/localWorkspaceSyncRunner.js +18 -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 +31 -0
- package/dist/sync/syncApplyHandlers.d.ts +3 -0
- package/dist/sync/syncApplyHandlers.js +81 -15
- 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 +18 -7
- package/dist/sync/v3/durableWorkflowRuntimeMutationRouter.js +89 -23
- 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/localOutboxRecoveryPreparationService.js +8 -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/localTaskCreateOutboxService.d.ts +3 -1
- package/dist/sync/v3/localTaskCreateOutboxService.js +6 -1
- package/dist/sync/v3/localTaskDeleteOutboxService.js +1 -0
- package/dist/sync/v3/localTaskLifecycleOutboxService.d.ts +2 -1
- package/dist/sync/v3/localTaskLifecycleOutboxService.js +5 -1
- package/dist/sync/v3/localTaskMetadataOutboxService.d.ts +2 -1
- package/dist/sync/v3/localTaskMetadataOutboxService.js +6 -2
- package/dist/sync/v3/localTaskStatusOutboxService.d.ts +10 -1
- package/dist/sync/v3/localTaskStatusOutboxService.js +238 -16
- package/dist/sync/v3/syncDurabilityStore.d.ts +36 -1
- package/dist/sync/v3/syncDurabilityStore.js +202 -8
- 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/workflowRuntimeMutationService.d.ts +5 -0
- package/dist/sync/v3/workflowRuntimeMutationService.js +124 -71
- 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/workspaceSyncV3CombinedLocalApply.js +25 -3
- 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/workspaceSyncV3Feed.d.ts +1 -0
- package/dist/sync/v3/workspaceSyncV3Feed.js +6 -1
- package/dist/sync/v3/workspaceSyncV3NestedTaskProjection.d.ts +2 -0
- package/dist/sync/v3/workspaceSyncV3NestedTaskProjection.js +49 -18
- 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/workspaceSyncV3WorkflowRuntimeApply.d.ts +1 -0
- package/dist/sync/v3/workspaceSyncV3WorkflowRuntimeApply.js +50 -5
- 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-CDMPtnbC.js +1 -0
- package/dist/ui/assets/AiProfilesModule-Cww85C4E.js +1 -0
- package/dist/ui/assets/{AnnotatedAttachmentWorkspace-B68Wg-RV.js → AnnotatedAttachmentWorkspace-Dt9TKYSH.js} +1 -1
- package/dist/ui/assets/{AssetTraySortControl-C8Rztyal.js → AssetTraySortControl-CKgapnxu.js} +1 -1
- package/dist/ui/assets/{ContextAttachmentManager-Cj3c7X9y.js → ContextAttachmentManager-T-cEVcOZ.js} +2 -2
- package/dist/ui/assets/{DocumentWorkspace-B5uvzems.js → DocumentWorkspace-HD4MUjAZ.js} +1 -1
- package/dist/ui/assets/{EntityActivityTimeline-BVFvCB5R.js → EntityActivityTimeline-_V0zfMuh.js} +1 -1
- package/dist/ui/assets/PlanningModule-mTkBygsB.js +1 -0
- package/dist/ui/assets/{PlansPage-AY4cGWco.js → PlansPage-Btiq06VO.js} +1 -1
- package/dist/ui/assets/{TaskContextUpload-DZxTVesW.js → TaskContextUpload-C00NVUpn.js} +1 -1
- package/dist/ui/assets/TaskSettings-Cp-L-4xh.js +12 -0
- package/dist/ui/assets/TaskforceAgentsModule-Coq9-PUp.js +24 -0
- package/dist/ui/assets/TaskforceAgentsModule-b-8R25cJ.css +1 -0
- package/dist/ui/assets/{WorkflowManagerModule-DEr5di_r.js → WorkflowManagerModule-CuqRzMmM.js} +1 -1
- package/dist/ui/assets/index-BZ-hdZSk.css +1 -0
- package/dist/ui/assets/index-DSQINwt9.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 +24 -4
- package/dist/ui/assets/AiIdentityRosterCard-BZM4aQnM.js +0 -1
- package/dist/ui/assets/AiProfilesModule-BbAEWtHH.js +0 -1
- package/dist/ui/assets/PlanningModule-B5DWQOGz.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
|
@@ -5,7 +5,7 @@ import { buildWorkspaceSyncV3InitiativeRepairPage, decodeWorkspaceSyncV3Initiati
|
|
|
5
5
|
import { WORKSPACE_SYNC_V3_COVERAGE_PROFILE } from '../../sync/v3/workspaceSyncV3FeedProfile.js';
|
|
6
6
|
import { isWorkspaceSyncV3InitiativeLegacyPushDisabled } from '../../sync/v3/planningActivation.js';
|
|
7
7
|
import { WORKSPACE_SYNC_V3_COMBINED_COVERAGE_PROFILE } from '../../sync/v3/workspaceSyncV3CombinedCoverage.js';
|
|
8
|
-
import { buildWorkspaceSyncV3CombinedRepairPage, decodeWorkspaceSyncV3CombinedRepairCursor, decodeWorkspaceSyncV3NestedRepairCursor, decodeWorkspaceSyncV3PlanningOrderRepairCursor, decodeWorkspaceSyncV3TaskCoverRepairCursor, decodeWorkspaceSyncV3WorkflowRepairCursor, WorkspaceSyncV3CombinedRepairSnapshotUnavailableError, } from '../../sync/v3/workspaceSyncV3CombinedRepairMaterialization.js';
|
|
8
|
+
import { buildWorkspaceSyncV3CombinedRepairPage, decodeWorkspaceSyncV3CombinedRepairCursor, decodeWorkspaceSyncV3NestedRepairCursor, decodeWorkspaceSyncV3PlanningOrderRepairCursor, decodeWorkspaceSyncV3TaskCoverRepairCursor, decodeWorkspaceSyncV3WorkflowRepairCursor, decodeWorkspaceSyncV3WorkflowTaskCoverRepairCursor, WorkspaceSyncV3CombinedRepairSnapshotUnavailableError, } from '../../sync/v3/workspaceSyncV3CombinedRepairMaterialization.js';
|
|
9
9
|
import { isWorkspaceSyncV3CombinedLegacyFenceEnabled } from '../../sync/v3/workspaceSyncV2ProjectionExclusions.js';
|
|
10
10
|
import { resolveCombinedFeedCapability } from '../../sync/v3/combinedFeedCapability.js';
|
|
11
11
|
import { resolveWorkspaceSyncV3RegisteredCoverage } from '../../sync/v3/workspaceSyncV3CoverageRegistry.js';
|
|
@@ -22,6 +22,9 @@ function json(res, status, body) {
|
|
|
22
22
|
res.end(JSON.stringify(body));
|
|
23
23
|
}
|
|
24
24
|
function decodeCombinedRepairCursorForContract(rawCursor, keyring, wire) {
|
|
25
|
+
if (wire.taskCoverProjectionRequired && wire.workflowWriterPrerequisitesRequired) {
|
|
26
|
+
return decodeWorkspaceSyncV3WorkflowTaskCoverRepairCursor(rawCursor, keyring);
|
|
27
|
+
}
|
|
25
28
|
if (wire.taskCoverProjectionRequired)
|
|
26
29
|
return decodeWorkspaceSyncV3TaskCoverRepairCursor(rawCursor, keyring);
|
|
27
30
|
if (wire.workflowWriterPrerequisitesRequired)
|
|
@@ -236,6 +239,8 @@ export function registerWorkspaceSyncV3FeedRoutes(input) {
|
|
|
236
239
|
cursorKeyring: keyring, cursor, pageSize: Number.isFinite(limit) ? limit : undefined,
|
|
237
240
|
nestedCoverage: requestedWire.nestedWriterPrerequisitesRequired,
|
|
238
241
|
workflowCoverage: requestedWire.workflowWriterPrerequisitesRequired,
|
|
242
|
+
workflowTaskCoverCoverage: requestedWire.workflowWriterPrerequisitesRequired
|
|
243
|
+
&& requestedWire.taskCoverProjectionRequired,
|
|
239
244
|
planningOrderCoverage: requestedWire.planningOrderWriterPrerequisitesRequired,
|
|
240
245
|
taskCoverCoverage: requestedWire.taskCoverProjectionRequired });
|
|
241
246
|
json(res, 200, attestLegacyPushBoundary({ ...page }, {
|
|
@@ -352,6 +357,8 @@ export function registerWorkspaceSyncV3FeedRoutes(input) {
|
|
|
352
357
|
pageSize: Number.isFinite(limit) ? limit : undefined,
|
|
353
358
|
nestedCoverage: coverage.wire.nestedWriterPrerequisitesRequired,
|
|
354
359
|
workflowCoverage: coverage.wire.workflowWriterPrerequisitesRequired,
|
|
360
|
+
workflowTaskCoverCoverage: coverage.wire.workflowWriterPrerequisitesRequired
|
|
361
|
+
&& coverage.wire.taskCoverProjectionRequired,
|
|
355
362
|
planningOrderCoverage: coverage.wire.planningOrderWriterPrerequisitesRequired,
|
|
356
363
|
taskCoverCoverage: coverage.wire.taskCoverProjectionRequired,
|
|
357
364
|
coveredLegacyWritesFenced: combinedLegacyPushDisabled })
|
|
@@ -399,6 +406,8 @@ export function registerWorkspaceSyncV3FeedRoutes(input) {
|
|
|
399
406
|
cursorKeyring: cursorKeyring, pageSize: Number.isFinite(limit) ? limit : undefined,
|
|
400
407
|
nestedCoverage: coverage.wire.nestedWriterPrerequisitesRequired,
|
|
401
408
|
workflowCoverage: coverage.wire.workflowWriterPrerequisitesRequired,
|
|
409
|
+
workflowTaskCoverCoverage: coverage.wire.workflowWriterPrerequisitesRequired
|
|
410
|
+
&& coverage.wire.taskCoverProjectionRequired,
|
|
402
411
|
planningOrderCoverage: coverage.wire.planningOrderWriterPrerequisitesRequired,
|
|
403
412
|
taskCoverCoverage: coverage.wire.taskCoverProjectionRequired,
|
|
404
413
|
coveredLegacyWritesFenced: combinedLegacyPushDisabled })
|
|
@@ -27,11 +27,11 @@ import { parseWorkspaceSyncV3OriginActor, } from '../../sync/v3/workspaceSyncV3O
|
|
|
27
27
|
import { validateWorkspaceSyncV3TaskCommentReconcileProvenance, verifyWorkspaceSyncV3TaskCommentReconcileProvenance, } from '../../sync/v3/taskCommentReconcileProvenance.js';
|
|
28
28
|
import { isStrongWorkspaceSyncV3OriginAssertionProfileToken, verifyWorkspaceSyncV3OriginAssertion, WORKSPACE_SYNC_V3_ORIGIN_ASSERTION_HEADER, workspaceSyncV3OriginAssertionBinding, } from '../../sync/v3/workspaceSyncV3OriginAssertion.js';
|
|
29
29
|
import { validateWorkflowRuntimeMutationCommand } from '../../sync/v3/workflowRuntimeSync.js';
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
30
|
+
import { resolveWorkflowRuntimeDurableTransportCapability } from '../../sync/v3/durableWorkflowRuntimeMutationRouter.js';
|
|
31
|
+
import { normalizeTaskStatusOperationWithWorkflowAssignment, WorkflowAssignmentSyncError, } from '../../sync/v3/workflowAssignmentSync.js';
|
|
32
32
|
import { WorkflowAssignmentSyncConflictError } from '../../storage/workflowStore.js';
|
|
33
33
|
import { DurableTaskCommentMutationError } from '../../sync/v3/taskCommentMutationService.js';
|
|
34
|
-
import { DurableTaskChecklistMutationError } from '../../sync/v3/taskChecklistMutationService.js';
|
|
34
|
+
import { DurableTaskChecklistMutationError, validateTaskChecklistItemUpdateIntent, } from '../../sync/v3/taskChecklistMutationService.js';
|
|
35
35
|
import { DurableTaskAttachmentLinksMutationError } from '../../sync/v3/taskAttachmentLinksMutationService.js';
|
|
36
36
|
import { validateWorkspaceSyncV3TaskAttachmentLinksPayload, validateWorkspaceSyncV3TaskChecklistPayload, validateWorkspaceSyncV3TaskCommentsPayload, } from '../../sync/v3/workspaceSyncV3NestedTaskCodecs.js';
|
|
37
37
|
import { parseJsonBody } from './primitives.js';
|
|
@@ -368,6 +368,7 @@ export function parseWorkspaceSyncV3OperationEnvelope(body) {
|
|
|
368
368
|
assertExactKeys(payload, [
|
|
369
369
|
...baseKeys,
|
|
370
370
|
...(payload.workflowAssignment === undefined ? [] : ['workflowAssignment']),
|
|
371
|
+
...(payload.reviewHandoff === undefined ? [] : ['reviewHandoff']),
|
|
371
372
|
...(payload.originActor === undefined ? [] : ['originActor']),
|
|
372
373
|
...(payload.expectedDetailRevision === undefined ? [] : ['expectedDetailRevision']),
|
|
373
374
|
], 'operation.payload');
|
|
@@ -377,9 +378,8 @@ export function parseWorkspaceSyncV3OperationEnvelope(body) {
|
|
|
377
378
|
canceledReason: payload.canceledReason,
|
|
378
379
|
metadataPatch: payload.metadataPatch,
|
|
379
380
|
});
|
|
380
|
-
const
|
|
381
|
-
|
|
382
|
-
: normalizeWorkflowAssignmentSyncRecord(payload.workflowAssignment);
|
|
381
|
+
const normalizedOperationPayload = normalizeTaskStatusOperationWithWorkflowAssignment(payload);
|
|
382
|
+
const workflowAssignment = normalizedOperationPayload.workflowAssignment;
|
|
383
383
|
if (workflowAssignment
|
|
384
384
|
&& (normalizedPayload.status !== 'in-progress'
|
|
385
385
|
|| workflowAssignment.execution.taskId !== entityId)) {
|
|
@@ -396,6 +396,9 @@ export function parseWorkspaceSyncV3OperationEnvelope(body) {
|
|
|
396
396
|
payload: {
|
|
397
397
|
...normalizedPayload,
|
|
398
398
|
...(workflowAssignment ? { workflowAssignment } : {}),
|
|
399
|
+
...(normalizedOperationPayload.reviewHandoff
|
|
400
|
+
? { reviewHandoff: normalizedOperationPayload.reviewHandoff }
|
|
401
|
+
: {}),
|
|
399
402
|
...(originActor ? { originActor } : {}),
|
|
400
403
|
...(expectedDetailRevision ? { expectedDetailRevision } : {}),
|
|
401
404
|
},
|
|
@@ -460,7 +463,24 @@ export function parseWorkspaceSyncV3OperationEnvelope(body) {
|
|
|
460
463
|
if (baseLifecycleRevision !== '0') {
|
|
461
464
|
throw new SyncV3RequestError('Task checklist lifecycle revision must be 0.');
|
|
462
465
|
}
|
|
463
|
-
|
|
466
|
+
const expectedDetailRevision = payload.expectedDetailRevision === undefined
|
|
467
|
+
? undefined
|
|
468
|
+
: requireId(payload.expectedDetailRevision, 'operation.payload.expectedDetailRevision');
|
|
469
|
+
let itemUpdateIntent;
|
|
470
|
+
try {
|
|
471
|
+
itemUpdateIntent = payload.itemUpdateIntent === undefined
|
|
472
|
+
? undefined
|
|
473
|
+
: validateTaskChecklistItemUpdateIntent(payload.itemUpdateIntent);
|
|
474
|
+
}
|
|
475
|
+
catch (error) {
|
|
476
|
+
throw new SyncV3RequestError(error instanceof Error ? error.message : 'operation.payload.itemUpdateIntent is invalid.');
|
|
477
|
+
}
|
|
478
|
+
assertExactKeys(payload, [
|
|
479
|
+
'items',
|
|
480
|
+
...(expectedDetailRevision === undefined ? [] : ['expectedDetailRevision']),
|
|
481
|
+
...(itemUpdateIntent === undefined ? [] : ['itemUpdateIntent']),
|
|
482
|
+
...(payload.originActor === undefined ? [] : ['originActor']),
|
|
483
|
+
], 'operation.payload');
|
|
464
484
|
let items;
|
|
465
485
|
try {
|
|
466
486
|
items = validateWorkspaceSyncV3TaskChecklistPayload({ taskId: entityId, items: payload.items }).items;
|
|
@@ -474,7 +494,12 @@ export function parseWorkspaceSyncV3OperationEnvelope(body) {
|
|
|
474
494
|
return { ...common, operation: {
|
|
475
495
|
domain: 'task-checklist', entityId, mutationKind: 'replace', baseEntityRevision,
|
|
476
496
|
baseLifecycleRevision: '0',
|
|
477
|
-
payload: {
|
|
497
|
+
payload: {
|
|
498
|
+
items,
|
|
499
|
+
...(expectedDetailRevision ? { expectedDetailRevision } : {}),
|
|
500
|
+
...(itemUpdateIntent ? { itemUpdateIntent } : {}),
|
|
501
|
+
...(originActor ? { originActor } : {}),
|
|
502
|
+
},
|
|
478
503
|
} };
|
|
479
504
|
}
|
|
480
505
|
if (operation.domain === 'task-attachment-links' && operation.mutationKind === 'replace') {
|
|
@@ -730,7 +755,7 @@ export function registerWorkspaceSyncV3OperationRoutes(input) {
|
|
|
730
755
|
const taxonomyEnabled = input.taxonomyEnabled ?? isWorkspaceSyncV3TaxonomyEnabled();
|
|
731
756
|
const initiativeEnabled = input.initiativeEnabled ?? isWorkspaceSyncV3InitiativesEnabled();
|
|
732
757
|
const workstreamEnabled = input.workstreamEnabled ?? isWorkspaceSyncV3WorkstreamsEnabled();
|
|
733
|
-
const workflowRuntimeEnabled = input.workflowRuntimeEnabled ??
|
|
758
|
+
const workflowRuntimeEnabled = input.workflowRuntimeEnabled ?? resolveWorkflowRuntimeDurableTransportCapability({
|
|
734
759
|
runtimeMode: 'cloud',
|
|
735
760
|
surface: 'http',
|
|
736
761
|
env: input.env,
|
|
@@ -1026,6 +1051,7 @@ export function registerWorkspaceSyncV3OperationRoutes(input) {
|
|
|
1026
1051
|
operationId: envelope.operationId,
|
|
1027
1052
|
errorCode: String(error?.code || 'POST_COMMIT_EFFECT_FAILED').slice(0, 100),
|
|
1028
1053
|
}),
|
|
1054
|
+
includeWorkflowRuntimeJournal: workflowRuntimeEnabled,
|
|
1029
1055
|
};
|
|
1030
1056
|
const operationWasCommitted = Boolean(store.readCommittedOperationResponse({
|
|
1031
1057
|
tenantId: input.core.getTenantId(),
|
|
@@ -69,6 +69,7 @@ import { createDurableWorkstreamMutationRouter } from '../../sync/v3/durableWork
|
|
|
69
69
|
import { createDurableWorkstreamTaskOrderMutationRouter } from '../../sync/v3/durableWorkstreamTaskOrderMutationRouter.js';
|
|
70
70
|
import { serializeCanonicalPlanningAttachmentLinks } from '../../sync/planningCanonicalFields.js';
|
|
71
71
|
import { createTaskHttpDurableRouters } from './durableTaskHttpRouters.js';
|
|
72
|
+
import { WorkspaceSyncDurabilityStore } from '../../sync/v3/syncDurabilityStore.js';
|
|
72
73
|
// === SECTION: Module dependency interface ===
|
|
73
74
|
const UI_STATE_MAX_JSON_BODY_BYTES = 50 * 1024 * 1024;
|
|
74
75
|
function normalizeDurableChecklistItems(input) {
|
|
@@ -534,8 +535,25 @@ export function registerTaskRoutes(deps) {
|
|
|
534
535
|
if (!ensureAppAccess(req, res))
|
|
535
536
|
return;
|
|
536
537
|
const workspaceId = requestWorkspaceId(req);
|
|
538
|
+
const relationships = core.listTaskRelationshipsForSync(workspaceId);
|
|
539
|
+
const requestUrl = new URL(req.url || '', 'http://localhost');
|
|
540
|
+
const includeSyncCoordinates = requestUrl.searchParams.get('includeSyncCoordinates') === 'true';
|
|
541
|
+
const durabilityStore = includeSyncCoordinates
|
|
542
|
+
? new WorkspaceSyncDurabilityStore(core.getDatabaseAdapter())
|
|
543
|
+
: null;
|
|
544
|
+
const syncCoordinates = durabilityStore
|
|
545
|
+
? Object.fromEntries(relationships.map((relationship) => [
|
|
546
|
+
relationship.id,
|
|
547
|
+
durabilityStore.readEntityRevisionCoordinates({
|
|
548
|
+
tenantId: core.getTenantId(),
|
|
549
|
+
workspaceId,
|
|
550
|
+
domain: 'task-relationship',
|
|
551
|
+
entityId: relationship.id,
|
|
552
|
+
}),
|
|
553
|
+
]))
|
|
554
|
+
: undefined;
|
|
537
555
|
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
538
|
-
res.end(JSON.stringify({ relationships:
|
|
556
|
+
res.end(JSON.stringify({ relationships, ...(syncCoordinates ? { syncCoordinates } : {}) }));
|
|
539
557
|
});
|
|
540
558
|
const handleListDeletedTasks = async (req, res) => {
|
|
541
559
|
if (!ensureAppAccess(req, res))
|
|
@@ -601,7 +619,8 @@ export function registerTaskRoutes(deps) {
|
|
|
601
619
|
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
602
620
|
res.end(JSON.stringify({ dataVersion }));
|
|
603
621
|
});
|
|
604
|
-
// GET /api/taskforce/health -
|
|
622
|
+
// GET /api/taskforce/health - Bounded, non-mutating readiness signal for API + DB.
|
|
623
|
+
// `/api/taskforce/version` remains the dependency-free process/build liveness signal.
|
|
605
624
|
addRoute('GET', '/api/taskforce/health', async (req, res) => {
|
|
606
625
|
const healthy = core.isDatabaseHealthy();
|
|
607
626
|
const payload = {
|
|
@@ -8,7 +8,7 @@ import { WorkflowStore } from '../../storage/workflowStore.js';
|
|
|
8
8
|
import { createDurableTaskHttpRootMutationRouter } from '../../sync/v3/durableTaskHttpRootMutationRouter.js';
|
|
9
9
|
import { fingerprintWorkspaceSyncPayload, WorkspaceSyncDurabilityStore, } from '../../sync/v3/syncDurabilityStore.js';
|
|
10
10
|
import { normalizeWorkflowAssignmentSyncRecord } from '../../sync/v3/workflowAssignmentSync.js';
|
|
11
|
-
import { createDurableWorkflowRuntimeMutationRouter, resolveWorkflowRuntimeMutationCapability, } from '../../sync/v3/durableWorkflowRuntimeMutationRouter.js';
|
|
11
|
+
import { areWorkflowRuntimeMutationsFenced, createDurableWorkflowRuntimeMutationRouter, resolveWorkflowRuntimeMutationCapability, } from '../../sync/v3/durableWorkflowRuntimeMutationRouter.js';
|
|
12
12
|
import { parseJsonBody, resolveHttpErrorStatusCode } from './primitives.js';
|
|
13
13
|
import { requestRuntimeMode } from './shared.js';
|
|
14
14
|
function writeJson(res, statusCode, payload) {
|
|
@@ -94,6 +94,14 @@ export function registerWorkflowRoutes(deps) {
|
|
|
94
94
|
const executionMutationGuard = (req, res) => {
|
|
95
95
|
if (!guard(req, res))
|
|
96
96
|
return false;
|
|
97
|
+
if (areWorkflowRuntimeMutationsFenced()) {
|
|
98
|
+
writeJson(res, 503, {
|
|
99
|
+
success: false,
|
|
100
|
+
error: 'Workflow execution changes are temporarily paused.',
|
|
101
|
+
code: 'WORKFLOW_RUNTIME_MUTATIONS_FENCED',
|
|
102
|
+
});
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
97
105
|
return durableWorkflowHttpEnabled(req) || requireCloudRuntime(res, 'Workflow execution');
|
|
98
106
|
};
|
|
99
107
|
const workspaceIdFor = (req) => String(requestWorkspaceId(req) || '').trim() || 'default';
|
package/dist/server/routes.js
CHANGED
|
@@ -27,11 +27,15 @@ import { registerTaskRoutes } from './routes/tasks.js';
|
|
|
27
27
|
import { registerWorkspaceRoutes } from './routes/workspaces.js';
|
|
28
28
|
import { registerAuthRoutes } from './routes/auth.js';
|
|
29
29
|
import { registerAdminRoutes } from './routes/admin.js';
|
|
30
|
+
import { registerGitHubReviewEvidenceRoutes } from './routes/githubReviewEvidence.js';
|
|
31
|
+
import { registerExecutorPhaseAApprovalRoutes } from './routes/executorPhaseAApprovals.js';
|
|
32
|
+
import { registerExecutorPhaseAIssuerRedemptionRoutes } from './routes/executorPhaseAIssuerRedemptions.js';
|
|
30
33
|
import { registerResourceRoutes } from './routes/resources.js';
|
|
31
34
|
import { registerDocumentRoutes } from './routes/documents.js';
|
|
32
35
|
import { registerDocumentReviewRoutes } from './routes/documentReviews.js';
|
|
33
36
|
import { registerAnnotatedAttachmentRoutes } from './routes/annotatedAttachments.js';
|
|
34
37
|
import { registerAgentsRoutes } from './routes/agents.js';
|
|
38
|
+
import { registerModelConnectionsRoutes } from './routes/modelConnections.js';
|
|
35
39
|
import { registerAgentRolesRoutes } from './routes/agentRoles.js';
|
|
36
40
|
import { registerAgentSkillsRoutes } from './routes/agentSkills.js';
|
|
37
41
|
import { registerWorkflowRoutes } from './routes/workflows.js';
|
|
@@ -40,6 +44,8 @@ import { createAgentRoleBehaviorReferenceResolver } from '../services/agentRoleR
|
|
|
40
44
|
import { registerLocalMcpHealthRoutes } from './routes/localMcpHealth.js';
|
|
41
45
|
import { registerLocalUpdateRoutes } from './routes/localUpdate.js';
|
|
42
46
|
import { registerLocalServiceRoutes } from './routes/localService.js';
|
|
47
|
+
import { createGitHubReviewEvidenceRuntime } from '../services/githubReviewEvidenceRuntime.js';
|
|
48
|
+
import { createExecutorPhaseAApprovalRuntime } from '../services/executorPhaseAApprovalRuntime.js';
|
|
43
49
|
import { escapeHtml } from './routes/primitives.js';
|
|
44
50
|
import { getRouteEmailConfig, resolvePublicAuthBaseUrl, resolveRuntimeConfigBaseUrl, shouldExposeDevAuthTokens } from './routes/authSupport.js';
|
|
45
51
|
import { requestHeader, requestRole, requestRuntimeMode, requestUserId, makeAuditAdminAction, makeAuditAuthAction, makeEnsureAdminRole, makeEnsureAppAccess, makeEnsureAuthenticatedUser, makeEnsureCloudPlanData, makeRequestWorkspaceId, makeRequireCloudRuntime, makeResolveAdminRequestActor, makeResolveAuthenticatedUserId, makeResolveAuthenticatedMutationUserId, } from './routes/shared.js';
|
|
@@ -1443,6 +1449,51 @@ export function createRoutes(core, context = {}) {
|
|
|
1443
1449
|
normalizeDocumentPathInput,
|
|
1444
1450
|
});
|
|
1445
1451
|
registerLocalServiceRoutes({ addRoute, core, context: context.localService });
|
|
1452
|
+
const githubReviewEvidence = createGitHubReviewEvidenceRuntime(core);
|
|
1453
|
+
registerGitHubReviewEvidenceRoutes({
|
|
1454
|
+
addRoute,
|
|
1455
|
+
store: githubReviewEvidence.store,
|
|
1456
|
+
configured: githubReviewEvidence.configured,
|
|
1457
|
+
inspectInstallation: (installationId) => githubReviewEvidence.verifier.inspectInstallation(installationId),
|
|
1458
|
+
requestWorkspaceId,
|
|
1459
|
+
requestRole,
|
|
1460
|
+
resolveAuthenticatedUserId,
|
|
1461
|
+
ensureAppAccess,
|
|
1462
|
+
ensureWorkspaceAdminRole,
|
|
1463
|
+
ensureAdminRole,
|
|
1464
|
+
requireCloudRuntime,
|
|
1465
|
+
auditAuthAction,
|
|
1466
|
+
});
|
|
1467
|
+
const executorPhaseAApprovals = createExecutorPhaseAApprovalRuntime(core);
|
|
1468
|
+
registerExecutorPhaseAApprovalRoutes({
|
|
1469
|
+
addRoute,
|
|
1470
|
+
service: executorPhaseAApprovals.service,
|
|
1471
|
+
requireCloudRuntime,
|
|
1472
|
+
ensureAppAccess,
|
|
1473
|
+
resolveHumanSystemAdminActor: (req) => {
|
|
1474
|
+
if (!context.authConfig?.enabled)
|
|
1475
|
+
return null;
|
|
1476
|
+
const access = resolveRequestAccess(req, context.authConfig);
|
|
1477
|
+
if (!access.authenticated || !access.userId || access.userId === 'anonymous')
|
|
1478
|
+
return null;
|
|
1479
|
+
return core.getSystemRole(access.userId) === 'system_admin' ? access.userId : null;
|
|
1480
|
+
},
|
|
1481
|
+
hasActiveWorkspaceMembership: (workspaceId, userId) => core.listWorkspaceUsers(workspaceId).some((membership) => (String(membership.userId || '').trim() === userId
|
|
1482
|
+
&& String(membership.status || '').trim().toLowerCase() === 'active'
|
|
1483
|
+
&& membership.disabled !== true)),
|
|
1484
|
+
auditAuthAction,
|
|
1485
|
+
workspaceId: executorPhaseAApprovals.policy.workspaceId,
|
|
1486
|
+
allowedOrigin: executorPhaseAApprovals.policy.issuer,
|
|
1487
|
+
performanceEnvironment: resolveDeploymentConfig(process.env).cloudEnvironment === 'performance',
|
|
1488
|
+
});
|
|
1489
|
+
registerExecutorPhaseAIssuerRedemptionRoutes({
|
|
1490
|
+
addRoute,
|
|
1491
|
+
requireCloudRuntime,
|
|
1492
|
+
performanceEnvironment: resolveDeploymentConfig(process.env).cloudEnvironment === 'performance',
|
|
1493
|
+
featureEnabled: String(process.env.TASKFORCE_PHASE_A_ISSUER_REDEMPTION_ENABLED || '').trim().toLowerCase() === 'true',
|
|
1494
|
+
auditAuthAction,
|
|
1495
|
+
workspaceId: executorPhaseAApprovals.policy.workspaceId,
|
|
1496
|
+
});
|
|
1446
1497
|
registerAdminRoutes({
|
|
1447
1498
|
addRoute,
|
|
1448
1499
|
core,
|
|
@@ -1452,6 +1503,7 @@ export function createRoutes(core, context = {}) {
|
|
|
1452
1503
|
requestRole,
|
|
1453
1504
|
ensureAppAccess,
|
|
1454
1505
|
ensureAdminRole,
|
|
1506
|
+
ensureWorkspaceAdminRole,
|
|
1455
1507
|
ensureCloudPlanData,
|
|
1456
1508
|
requireCloudRuntime,
|
|
1457
1509
|
resolveAuthenticatedUserId,
|
|
@@ -1565,6 +1617,13 @@ export function createRoutes(core, context = {}) {
|
|
|
1565
1617
|
resolveBehaviorReference: createAgentRoleBehaviorReferenceResolver(new AgentRoleStore(core.getDatabaseAdapter(), core.getTenantId()), workspaceId),
|
|
1566
1618
|
}),
|
|
1567
1619
|
});
|
|
1620
|
+
registerModelConnectionsRoutes({
|
|
1621
|
+
addRoute,
|
|
1622
|
+
ensureAppAccess,
|
|
1623
|
+
core,
|
|
1624
|
+
resolveAuthenticatedUserId,
|
|
1625
|
+
resolveRuntimeMode: (req) => (context.authConfig?.runtimeMode === 'cloud' ? 'cloud' : requestRuntimeMode(req)),
|
|
1626
|
+
});
|
|
1568
1627
|
registerAgentRolesRoutes({
|
|
1569
1628
|
addRoute,
|
|
1570
1629
|
ensureAppAccess,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { StandaloneServerOptions, TaskforceStandaloneServer } from '../server/index.js';
|
|
2
2
|
import { inspectLocalServiceDescriptor } from '../server/localServiceLease.js';
|
|
3
3
|
import { acquireLocalServiceOwnershipForRuntime } from '../server/localServiceOwnershipBootstrap.js';
|
|
4
4
|
import { type SqliteWalHolder } from '../storage/sqliteWalHealth.js';
|
|
@@ -18,7 +18,7 @@ export interface LocalServiceCliOptions {
|
|
|
18
18
|
executablePath: string;
|
|
19
19
|
cliEntryPath: string;
|
|
20
20
|
execArgv?: readonly string[];
|
|
21
|
-
createServer?:
|
|
21
|
+
createServer?: (options: StandaloneServerOptions) => TaskforceStandaloneServer;
|
|
22
22
|
acquireOwnership?: typeof acquireLocalServiceOwnershipForRuntime;
|
|
23
23
|
inspectDescriptor?: typeof inspectLocalServiceDescriptor;
|
|
24
24
|
spawnDetached?: (executablePath: string, args: readonly string[], env: NodeJS.ProcessEnv) => void;
|
|
@@ -2,7 +2,6 @@ import * as fs from 'fs';
|
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import { applyLocalServiceCloudTarget, localServiceCloudTargetsEqual, parseLocalServiceCloudTarget, resolveLocalServiceCloudTarget, } from '../config/localServiceCloudTarget.js';
|
|
4
4
|
import { localServiceRuntimeContractsEqual, parseLocalServiceRuntimeContract, resolveLocalServiceRuntimeContract, } from '../config/localServiceRuntimeContract.js';
|
|
5
|
-
import { createStandaloneServer } from '../server/index.js';
|
|
6
5
|
import { inspectLocalServiceDescriptor, redactLocalServiceDescriptor, } from '../server/localServiceLease.js';
|
|
7
6
|
import { acquireLocalServiceOwnershipForRuntime, } from '../server/localServiceOwnershipBootstrap.js';
|
|
8
7
|
import { discoverOrStartLocalService, LOCAL_SERVICE_API_BASE_PATH, LOCAL_SERVICE_PROTOCOL_VERSION, resolveLocalServiceLeaseInput, spawnDetachedLocalService, waitForLocalServiceDescriptor, } from './localServiceClientLifecycle.js';
|
|
@@ -126,7 +125,9 @@ async function runForeground(command, options) {
|
|
|
126
125
|
});
|
|
127
126
|
};
|
|
128
127
|
try {
|
|
129
|
-
|
|
128
|
+
const createServer = options.createServer
|
|
129
|
+
|| (await import('../server/index.js')).createStandaloneServer;
|
|
130
|
+
server = createServer({
|
|
130
131
|
projectRoot: command.projectRoot,
|
|
131
132
|
port: 0,
|
|
132
133
|
localSyncProcessLock: ownership.syncProcessLock || undefined,
|
|
@@ -370,7 +371,7 @@ export async function runLocalServiceCli(argv, input) {
|
|
|
370
371
|
executablePath: input.executablePath,
|
|
371
372
|
cliEntryPath: input.cliEntryPath,
|
|
372
373
|
execArgv: input.execArgv || [],
|
|
373
|
-
createServer: input.createServer
|
|
374
|
+
createServer: input.createServer,
|
|
374
375
|
acquireOwnership: input.acquireOwnership || acquireLocalServiceOwnershipForRuntime,
|
|
375
376
|
inspectDescriptor: input.inspectDescriptor || inspectLocalServiceDescriptor,
|
|
376
377
|
spawnDetached: input.spawnDetached || spawnDetachedLocalService,
|
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
import type { ModelGateway, ModelGatewayGenerateInput, ModelGatewayGenerateResult } from './modelGateway.js';
|
|
2
|
+
export declare const PINNED_CODEX_APP_SERVER_VERSION = "0.148.0-alpha.9";
|
|
3
|
+
export declare class CodexAppServerCompatibilityError extends Error {
|
|
4
|
+
readonly reason: 'version' | 'credential_home';
|
|
5
|
+
constructor(reason: 'version' | 'credential_home', message: string);
|
|
6
|
+
}
|
|
7
|
+
export declare function resolveBundledCodexCommand(): string;
|
|
8
|
+
export declare function assertCodexAppServerCompatibility(result: unknown, expectedCodexHome?: string): void;
|
|
2
9
|
export type CodexAppServerModelKeyIdMap = Partial<Record<string, string>>;
|
|
10
|
+
export interface CodexDeviceCodeLoginStart {
|
|
11
|
+
loginId: string;
|
|
12
|
+
userCode: string;
|
|
13
|
+
verificationUrl: string;
|
|
14
|
+
}
|
|
15
|
+
export interface CodexAccountSnapshot {
|
|
16
|
+
type: string;
|
|
17
|
+
email?: string;
|
|
18
|
+
planType?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface CodexAccountLoginCompletion {
|
|
21
|
+
loginId: string;
|
|
22
|
+
success: boolean;
|
|
23
|
+
error?: string;
|
|
24
|
+
}
|
|
3
25
|
type CodexAppServerApprovalPolicy = 'never';
|
|
4
26
|
type CodexAppServerSandboxMode = 'read-only';
|
|
5
27
|
type CodexAppServerSandboxPolicy = {
|
|
@@ -15,6 +37,15 @@ type CodexAppServerRuntimePolicy = {
|
|
|
15
37
|
export interface CodexAppServerClient {
|
|
16
38
|
initialize(): Promise<void>;
|
|
17
39
|
assertChatGptSubscriptionAuth(): Promise<void>;
|
|
40
|
+
startChatGptDeviceCodeLogin(): Promise<CodexDeviceCodeLoginStart>;
|
|
41
|
+
waitForAccountLoginCompleted(input: {
|
|
42
|
+
loginId: string;
|
|
43
|
+
timeoutMs: number;
|
|
44
|
+
signal?: AbortSignal;
|
|
45
|
+
}): Promise<CodexAccountLoginCompletion>;
|
|
46
|
+
cancelAccountLogin(loginId: string): Promise<'canceled' | 'notFound'>;
|
|
47
|
+
readAccount(refreshToken?: boolean): Promise<CodexAccountSnapshot | null>;
|
|
48
|
+
logoutAccount(): Promise<void>;
|
|
18
49
|
startThread(input: {
|
|
19
50
|
model: string;
|
|
20
51
|
developerInstructions?: string;
|
|
@@ -30,7 +61,7 @@ export interface CodexAppServerClient {
|
|
|
30
61
|
text: string;
|
|
31
62
|
stopReason?: string;
|
|
32
63
|
}>;
|
|
33
|
-
close(): void
|
|
64
|
+
close(): Promise<void>;
|
|
34
65
|
}
|
|
35
66
|
export interface CodexAppServerModelGatewayOptions {
|
|
36
67
|
client?: CodexAppServerClient;
|
|
@@ -42,14 +73,16 @@ export interface CodexAppServerModelGatewayOptions {
|
|
|
42
73
|
modelKeyIds?: CodexAppServerModelKeyIdMap;
|
|
43
74
|
timeoutMs?: number;
|
|
44
75
|
requestTimeoutMs?: number;
|
|
76
|
+
credentialPaths?: string[];
|
|
45
77
|
}
|
|
46
78
|
export declare const DEFAULT_CODEX_APP_SERVER_MODEL_KEY_IDS: CodexAppServerModelKeyIdMap;
|
|
47
79
|
export declare function buildCodexAppServerEnv(source?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
48
|
-
export declare function sanitizeCodexAppServerStderr(value: unknown): string;
|
|
80
|
+
export declare function sanitizeCodexAppServerStderr(value: unknown, credentialPaths?: string[]): string;
|
|
49
81
|
export declare function collectCodexAppServerStderr(current: string, chunk: unknown): string;
|
|
50
82
|
export declare function assertCodexChatGptSubscriptionAccount(result: unknown): void;
|
|
83
|
+
export declare function extractCodexAccountLoginCompletion(messages: unknown[], loginId: string, credentialPaths?: string[]): CodexAccountLoginCompletion | null;
|
|
51
84
|
export declare function isCodexSubscriptionDevRuntimeAllowed(source?: NodeJS.ProcessEnv): boolean;
|
|
52
|
-
export declare function extractCodexTurnCompletion(messages: unknown[]): {
|
|
85
|
+
export declare function extractCodexTurnCompletion(messages: unknown[], credentialPaths?: string[]): {
|
|
53
86
|
text: string;
|
|
54
87
|
stopReason: string;
|
|
55
88
|
} | null;
|
|
@@ -61,18 +94,33 @@ export declare class CodexAppServerJsonRpcClient implements CodexAppServerClient
|
|
|
61
94
|
private initialized;
|
|
62
95
|
private readonly lineReader;
|
|
63
96
|
private readonly requestTimeoutMs;
|
|
64
|
-
private readonly
|
|
97
|
+
private readonly terminalRejectors;
|
|
98
|
+
private readonly loginNotificationStart;
|
|
65
99
|
private terminalError;
|
|
66
100
|
private stderrTail;
|
|
101
|
+
private readonly credentialPaths;
|
|
102
|
+
private readonly expectedCodexHome;
|
|
103
|
+
private readonly processExited;
|
|
104
|
+
private closePromise;
|
|
67
105
|
constructor(options?: {
|
|
68
106
|
command?: string;
|
|
69
107
|
args?: string[];
|
|
70
108
|
cwd?: string;
|
|
71
109
|
env?: NodeJS.ProcessEnv;
|
|
72
110
|
requestTimeoutMs?: number;
|
|
111
|
+
credentialPaths?: string[];
|
|
73
112
|
});
|
|
74
113
|
initialize(): Promise<void>;
|
|
75
114
|
assertChatGptSubscriptionAuth(): Promise<void>;
|
|
115
|
+
startChatGptDeviceCodeLogin(): Promise<CodexDeviceCodeLoginStart>;
|
|
116
|
+
waitForAccountLoginCompleted(input: {
|
|
117
|
+
loginId: string;
|
|
118
|
+
timeoutMs: number;
|
|
119
|
+
signal?: AbortSignal;
|
|
120
|
+
}): Promise<CodexAccountLoginCompletion>;
|
|
121
|
+
cancelAccountLogin(loginId: string): Promise<'canceled' | 'notFound'>;
|
|
122
|
+
readAccount(refreshToken?: boolean): Promise<CodexAccountSnapshot | null>;
|
|
123
|
+
logoutAccount(): Promise<void>;
|
|
76
124
|
startThread(input: {
|
|
77
125
|
model: string;
|
|
78
126
|
developerInstructions?: string;
|
|
@@ -89,12 +137,13 @@ export declare class CodexAppServerJsonRpcClient implements CodexAppServerClient
|
|
|
89
137
|
text: string;
|
|
90
138
|
stopReason?: string;
|
|
91
139
|
}>;
|
|
92
|
-
close(): void
|
|
140
|
+
close(): Promise<void>;
|
|
93
141
|
private request;
|
|
94
142
|
private sendNotification;
|
|
95
143
|
private handleLine;
|
|
96
144
|
private sendResponseError;
|
|
97
145
|
private waitForTurnCompletion;
|
|
146
|
+
private waitForNotification;
|
|
98
147
|
private rejectAll;
|
|
99
148
|
private fail;
|
|
100
149
|
}
|