@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.
Files changed (363) hide show
  1. package/README.md +7 -2
  2. package/dist/Taskforce.module.css +290 -45
  3. package/dist/components/features/AiProfilesModule.js +3 -5
  4. package/dist/components/features/TaskSettings.js +70 -14
  5. package/dist/components/features/TaskforceAgentsModule.d.ts +1 -2
  6. package/dist/components/features/TaskforceAgentsModule.js +586 -116
  7. package/dist/components/features/agentCapabilities/AgentCapabilitiesPrototype.d.ts +2 -2
  8. package/dist/components/features/agentCapabilities/AgentCapabilitiesPrototype.js +2 -2
  9. package/dist/components/features/agentConnections/AgentConnectionControl.d.ts +15 -0
  10. package/dist/components/features/agentConnections/AgentConnectionControl.js +125 -0
  11. package/dist/components/features/agentConnections/ModelConnectionsPanel.d.ts +18 -0
  12. package/dist/components/features/agentConnections/ModelConnectionsPanel.js +393 -0
  13. package/dist/components/features/agentConnections/modelConnectionsApi.d.ts +65 -0
  14. package/dist/components/features/agentConnections/modelConnectionsApi.js +129 -0
  15. package/dist/components/features/planning/PlanningModule.js +15 -3
  16. package/dist/components/features/planning/planningMetadata.d.ts +10 -0
  17. package/dist/components/features/planning/planningMetadata.js +8 -0
  18. package/dist/components/features/taskforceAgentAssignments/AgentBehaviorAssignments.js +15 -24
  19. package/dist/components/features/taskforceAgentEditorModel.d.ts +2 -1
  20. package/dist/components/features/taskforceAgentEditorModel.js +3 -1
  21. package/dist/components/features/workflowManager/workflowManagerApi.d.ts +1 -1
  22. package/dist/components/features/workflowManager/workflowManagerApi.js +3 -0
  23. package/dist/components/task/TaskWorkflowAssignmentField.js +68 -10
  24. package/dist/components/views/StandaloneLayout.js +62 -27
  25. package/dist/components/views/panels/PlanningDrawer.d.ts +2 -1
  26. package/dist/components/views/panels/PlanningDrawer.js +12 -8
  27. package/dist/components/views/standalone/modals/SyncStatusModal.d.ts +4 -3
  28. package/dist/components/views/standalone/modals/SyncStatusModal.js +33 -38
  29. package/dist/config/envSchema.js +55 -1
  30. package/dist/core/McpTokenService.d.ts +25 -1
  31. package/dist/core/McpTokenService.js +106 -15
  32. package/dist/core/TaskChecklistCommandService.d.ts +27 -0
  33. package/dist/core/TaskChecklistCommandService.js +83 -5
  34. package/dist/core/TaskLifecycleCommandService.d.ts +3 -1
  35. package/dist/core/TaskLifecycleCommandService.js +6 -2
  36. package/dist/core/Taskforce.d.ts +43 -3
  37. package/dist/core/Taskforce.js +158 -7
  38. package/dist/core/types.d.ts +9 -0
  39. package/dist/documentReviews/DocumentReviewCommentStore.d.ts +2 -0
  40. package/dist/documentReviews/DocumentReviewCommentStore.js +28 -9
  41. package/dist/documentReviews/commandService.d.ts +2 -1
  42. package/dist/documentReviews/commandService.js +6 -3
  43. package/dist/hooks/sync/orchestratorShared.d.ts +1 -0
  44. package/dist/hooks/sync/orchestratorShared.js +2 -0
  45. package/dist/hooks/sync/useLocalSyncCoordinatorSnapshot.d.ts +3 -0
  46. package/dist/hooks/sync/useLocalSyncCoordinatorSnapshot.js +85 -9
  47. package/dist/hooks/sync/useSyncStatusControls.d.ts +4 -1
  48. package/dist/hooks/sync/useSyncStatusControls.js +47 -11
  49. package/dist/hooks/useSyncOrchestrator.d.ts +3 -0
  50. package/dist/hooks/useSyncOrchestrator.js +111 -2
  51. package/dist/hooks/useTaskData.d.ts +31 -1
  52. package/dist/hooks/useTaskData.js +29 -7
  53. package/dist/hooks/useTaskMutations.d.ts +3 -1
  54. package/dist/hooks/useTaskMutations.js +46 -12
  55. package/dist/hooks/useTaskforce.d.ts +2 -0
  56. package/dist/hooks/useTaskforce.js +11 -2
  57. package/dist/mcp/clientRegistry.d.ts +2 -2
  58. package/dist/mcp/clientRegistry.js +1 -1
  59. package/dist/mcp/documentAssetRegistrar.js +9 -6
  60. package/dist/mcp/durableTaskMutationRouter.d.ts +4 -1
  61. package/dist/mcp/durableTaskMutationRouter.js +10 -0
  62. package/dist/mcp/durableTaskRelationshipMutationRouter.js +4 -0
  63. package/dist/mcp/httpProtocolRouting.d.ts +11 -0
  64. package/dist/mcp/httpProtocolRouting.js +22 -0
  65. package/dist/mcp/localCliHealth.d.ts +2 -2
  66. package/dist/mcp/localCliHealth.js +2 -2
  67. package/dist/mcp/localServiceProxy.d.ts +1 -0
  68. package/dist/mcp/localServiceProxy.js +530 -68
  69. package/dist/mcp/planningAttachmentCommandAdapter.d.ts +3 -1
  70. package/dist/mcp/planningAttachmentCommandAdapter.js +20 -2
  71. package/dist/mcp/runtime.d.ts +54 -79
  72. package/dist/mcp/runtime.js +408 -102
  73. package/dist/mcp/taskPlanningRegistrar.js +25 -6
  74. package/dist/mcp/toolProfiles.d.ts +2 -0
  75. package/dist/mcp/toolProfiles.js +11 -0
  76. package/dist/mcp/toolRegistry.d.ts +1 -0
  77. package/dist/mcp/toolRegistry.js +9 -8
  78. package/dist/mcp/workflowExecutionRegistrar.js +4 -4
  79. package/dist/migrations/taskSchemaMigrations.d.ts +5 -0
  80. package/dist/migrations/taskSchemaMigrations.js +415 -0
  81. package/dist/runtime/appGates.d.ts +2 -1
  82. package/dist/runtime/appGates.js +7 -0
  83. package/dist/server/buildInfo.d.ts +1 -0
  84. package/dist/server/buildInfo.js +5 -1
  85. package/dist/server/cloudMcpCapacityTelemetry.d.ts +68 -0
  86. package/dist/server/cloudMcpCapacityTelemetry.js +221 -0
  87. package/dist/server/index.d.ts +3 -0
  88. package/dist/server/index.js +108 -11
  89. package/dist/server/localDatabaseIdentity.js +4 -1
  90. package/dist/server/localServiceLease.js +2 -1
  91. package/dist/server/localServiceSessions.d.ts +14 -17
  92. package/dist/server/localServiceSessions.js +308 -94
  93. package/dist/server/localWorkspaceSyncServerRuntime.js +25 -19
  94. package/dist/server/routes/admin.d.ts +4 -0
  95. package/dist/server/routes/admin.js +126 -5
  96. package/dist/server/routes/agents.d.ts +7 -0
  97. package/dist/server/routes/agents.js +277 -24
  98. package/dist/server/routes/billing.js +5 -1
  99. package/dist/server/routes/durableTaskHttpRouters.d.ts +2 -0
  100. package/dist/server/routes/executorPhaseAApprovals.d.ts +19 -0
  101. package/dist/server/routes/executorPhaseAApprovals.js +140 -0
  102. package/dist/server/routes/executorPhaseAIssuerRedemptions.d.ts +11 -0
  103. package/dist/server/routes/executorPhaseAIssuerRedemptions.js +24 -0
  104. package/dist/server/routes/githubReviewEvidence.d.ts +19 -0
  105. package/dist/server/routes/githubReviewEvidence.js +116 -0
  106. package/dist/server/routes/localService.d.ts +15 -4
  107. package/dist/server/routes/localService.js +136 -40
  108. package/dist/server/routes/modelConnections.d.ts +24 -0
  109. package/dist/server/routes/modelConnections.js +205 -0
  110. package/dist/server/routes/shared.d.ts +22 -0
  111. package/dist/server/routes/shared.js +298 -182
  112. package/dist/server/routes/sync.js +1 -0
  113. package/dist/server/routes/syncAuxRoutes.js +5 -1
  114. package/dist/server/routes/syncPushRoutes.d.ts +1 -0
  115. package/dist/server/routes/syncPushRoutes.js +1 -0
  116. package/dist/server/routes/syncV3FeedRoutes.js +10 -1
  117. package/dist/server/routes/syncV3OperationRoutes.js +35 -9
  118. package/dist/server/routes/tasks.js +21 -2
  119. package/dist/server/routes/workflows.js +9 -1
  120. package/dist/server/routes.js +59 -0
  121. package/dist/service/localServiceCli.d.ts +2 -2
  122. package/dist/service/localServiceCli.js +4 -3
  123. package/dist/services/codexAppServerModelGateway.d.ts +54 -5
  124. package/dist/services/codexAppServerModelGateway.js +246 -21
  125. package/dist/services/codexDeviceCodeLoginManager.d.ts +39 -0
  126. package/dist/services/codexDeviceCodeLoginManager.js +265 -0
  127. package/dist/services/codexModelProviderConnectionLifecycle.d.ts +8 -0
  128. package/dist/services/codexModelProviderConnectionLifecycle.js +73 -0
  129. package/dist/services/executorPhaseAApprovalRuntime.d.ts +14 -0
  130. package/dist/services/executorPhaseAApprovalRuntime.js +24 -0
  131. package/dist/services/executorPhaseAApprovalService.d.ts +40 -0
  132. package/dist/services/executorPhaseAApprovalService.js +609 -0
  133. package/dist/services/executorPhaseADriftEvaluator.d.ts +78 -0
  134. package/dist/services/executorPhaseADriftEvaluator.js +93 -0
  135. package/dist/services/executorPhaseAIssuerCore.d.ts +139 -0
  136. package/dist/services/executorPhaseAIssuerCore.js +402 -0
  137. package/dist/services/executorPhaseAIssuerRedemptionService.d.ts +34 -0
  138. package/dist/services/executorPhaseAIssuerRedemptionService.js +158 -0
  139. package/dist/services/githubReviewEvidenceRuntime.d.ts +14 -0
  140. package/dist/services/githubReviewEvidenceRuntime.js +30 -0
  141. package/dist/services/githubReviewEvidenceService.d.ts +93 -0
  142. package/dist/services/githubReviewEvidenceService.js +336 -0
  143. package/dist/services/modelGateway.d.ts +7 -0
  144. package/dist/services/modelProviderConnectionService.d.ts +71 -0
  145. package/dist/services/modelProviderConnectionService.js +279 -0
  146. package/dist/services/modelProviderCredentialHome.d.ts +32 -0
  147. package/dist/services/modelProviderCredentialHome.js +271 -0
  148. package/dist/services/ownerScopedModelConnectionGateway.d.ts +12 -0
  149. package/dist/services/ownerScopedModelConnectionGateway.js +30 -0
  150. package/dist/services/taskforceAgentConnectionBindingService.d.ts +66 -0
  151. package/dist/services/taskforceAgentConnectionBindingService.js +185 -0
  152. package/dist/services/taskforceAgentMcpBridge.d.ts +2 -2
  153. package/dist/services/taskforceAgentMcpBridge.js +42 -29
  154. package/dist/shared/adminEdgeProxy.d.ts +5 -0
  155. package/dist/shared/adminEdgeProxy.js +94 -0
  156. package/dist/shared/adminProxySessionCookies.d.ts +16 -0
  157. package/dist/shared/adminProxySessionCookies.js +86 -0
  158. package/dist/shared/aiProfileColors.d.ts +31 -1
  159. package/dist/shared/aiProfileColors.js +14 -6
  160. package/dist/shared/executorPhaseAApprovalGoldenVector.json +269 -0
  161. package/dist/shared/executorPhaseAApprovalReceipt.d.ts +112 -0
  162. package/dist/shared/executorPhaseAApprovalReceipt.js +58 -0
  163. package/dist/shared/executorPhaseAApprovalTrustPolicy.json +10 -0
  164. package/dist/shared/executorPhaseADriftContracts.d.ts +37 -0
  165. package/dist/shared/executorPhaseADriftContracts.js +63 -0
  166. package/dist/shared/executorPhaseAIssuerContracts.d.ts +75 -0
  167. package/dist/shared/executorPhaseAIssuerContracts.js +90 -0
  168. package/dist/shared/executorPhaseARunAuthorization.d.ts +120 -0
  169. package/dist/shared/executorPhaseARunAuthorization.js +232 -0
  170. package/dist/shared/executorPhaseASchemaValidation.d.ts +7 -0
  171. package/dist/shared/executorPhaseASchemaValidation.js +53 -0
  172. package/dist/shared/executorPhaseASchemas/approval-receipt.schema.json +106 -0
  173. package/dist/shared/executorPhaseASchemas/drift-attestation.schema.json +54 -0
  174. package/dist/shared/executorPhaseASchemas/drift-request.schema.json +47 -0
  175. package/dist/shared/executorPhaseASchemas/foundation-manifest.schema.json +29 -0
  176. package/dist/shared/executorPhaseASchemas/issuer-audit-record.schema.json +24 -0
  177. package/dist/shared/executorPhaseASchemas/issuer-proof.schema.json +43 -0
  178. package/dist/shared/executorPhaseASchemas/issuer-redemption-request.schema.json +18 -0
  179. package/dist/shared/executorPhaseASchemas/issuer-redemption-response.schema.json +39 -0
  180. package/dist/shared/executorPhaseASchemas/logical-envelope.schema.json +149 -0
  181. package/dist/shared/executorPhaseASchemas/preflight-report.schema.json +216 -0
  182. package/dist/shared/executorPhaseASchemas/run-capability.schema.json +111 -0
  183. package/dist/shared/executorPhaseASchemas/sender-proof.schema.json +37 -0
  184. package/dist/shared/executorPhaseASchemas/workload-grant.schema.json +68 -0
  185. package/dist/shared/executorPhaseASchemas/workload-jwt-claims.schema.json +67 -0
  186. package/dist/shared/executorPhaseATiming.d.ts +1 -0
  187. package/dist/shared/executorPhaseATiming.js +1 -0
  188. package/dist/shared/planningIdentity.js +1 -1
  189. package/dist/shared/productLogoKeys.d.ts +2 -0
  190. package/dist/shared/productLogoKeys.js +18 -0
  191. package/dist/shared/taskforceAgentDefinition.d.ts +0 -1
  192. package/dist/shared/taskforceAgentDefinition.js +6 -9
  193. package/dist/shared/taskforceAgentModels.js +7 -3
  194. package/dist/shared/userFeatureGrants.d.ts +4 -0
  195. package/dist/shared/userFeatureGrants.js +7 -0
  196. package/dist/storage/executorPhaseAApprovalReceiptStore.d.ts +37 -0
  197. package/dist/storage/executorPhaseAApprovalReceiptStore.js +81 -0
  198. package/dist/storage/executorPhaseARunAuthorizationStore.d.ts +103 -0
  199. package/dist/storage/executorPhaseARunAuthorizationStore.js +492 -0
  200. package/dist/storage/githubReviewEvidenceInstallationStore.d.ts +26 -0
  201. package/dist/storage/githubReviewEvidenceInstallationStore.js +89 -0
  202. package/dist/storage/modelProviderConnectionStore.d.ts +99 -0
  203. package/dist/storage/modelProviderConnectionStore.js +446 -0
  204. package/dist/storage/postgresAdapter.d.ts +4 -0
  205. package/dist/storage/postgresAdapter.js +14 -1
  206. package/dist/storage/postgresRequestDiagnostics.d.ts +9 -1
  207. package/dist/storage/postgresRequestDiagnostics.js +15 -2
  208. package/dist/storage/postgresWorker.js +20 -2
  209. package/dist/storage/postgresWorkerProtocol.d.ts +7 -0
  210. package/dist/storage/taskforceAgentConnectionBindingStore.d.ts +31 -0
  211. package/dist/storage/taskforceAgentConnectionBindingStore.js +84 -0
  212. package/dist/storage/workflowStore.d.ts +2 -0
  213. package/dist/storage/workflowStore.js +39 -2
  214. package/dist/sync/cloudSyncApi.js +4 -2
  215. package/dist/sync/collaborationSyncState.js +5 -0
  216. package/dist/sync/coordinator/localSyncExecutionPermitStore.js +60 -29
  217. package/dist/sync/coordinator/localWorkspaceSyncPendingV2PushProgress.d.ts +10 -0
  218. package/dist/sync/coordinator/localWorkspaceSyncPendingV2PushProgress.js +29 -0
  219. package/dist/sync/coordinator/localWorkspaceSyncRunner.d.ts +3 -1
  220. package/dist/sync/coordinator/localWorkspaceSyncRunner.js +18 -0
  221. package/dist/sync/coordinator/localWorkspaceSyncRunnerState.d.ts +15 -1
  222. package/dist/sync/coordinator/localWorkspaceSyncRunnerState.js +99 -2
  223. package/dist/sync/coordinator/workspaceSyncCredentialBroker.d.ts +1 -0
  224. package/dist/sync/coordinator/workspaceSyncCredentialBroker.js +33 -4
  225. package/dist/sync/engine/workspaceSyncContentLifecycleAdapter.d.ts +2 -1
  226. package/dist/sync/engine/workspaceSyncContentVersionStore.d.ts +38 -0
  227. package/dist/sync/engine/workspaceSyncContentVersionStore.js +50 -1
  228. package/dist/sync/engine/workspaceSyncEngineLifecyclePolicy.js +6 -6
  229. package/dist/sync/engine/workspaceSyncEnginePushCompletion.d.ts +14 -0
  230. package/dist/sync/engine/workspaceSyncEnginePushCompletion.js +84 -0
  231. package/dist/sync/engine/workspaceSyncEngineRecovery.js +1 -0
  232. package/dist/sync/engine/workspaceSyncEngineRuntime.d.ts +1 -0
  233. package/dist/sync/engine/workspaceSyncEngineRuntime.js +1 -0
  234. package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.js +112 -38
  235. package/dist/sync/engine/workspaceSyncEngineServerSnapshotReader.js +6 -0
  236. package/dist/sync/engine/workspaceSyncEngineTransfers.js +3 -1
  237. package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.d.ts +1 -0
  238. package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.js +31 -0
  239. package/dist/sync/syncApplyHandlers.d.ts +3 -0
  240. package/dist/sync/syncApplyHandlers.js +81 -15
  241. package/dist/sync/syncService.d.ts +15 -0
  242. package/dist/sync/syncService.js +83 -18
  243. package/dist/sync/taskforceAgentSyncAuthorization.d.ts +16 -0
  244. package/dist/sync/taskforceAgentSyncAuthorization.js +20 -0
  245. package/dist/sync/v3/combinedFeedCapability.js +4 -0
  246. package/dist/sync/v3/durableInitiativeMutationRouter.js +18 -10
  247. package/dist/sync/v3/durableOperationReplay.d.ts +14 -0
  248. package/dist/sync/v3/durableOperationReplay.js +18 -0
  249. package/dist/sync/v3/durableTaskAttachmentLinksMutationRouter.js +3 -0
  250. package/dist/sync/v3/durableTaskChecklistMutationRouter.d.ts +2 -1
  251. package/dist/sync/v3/durableTaskChecklistMutationRouter.js +58 -15
  252. package/dist/sync/v3/durableTaskCommentMutationRouter.js +3 -0
  253. package/dist/sync/v3/durableTaskHttpRootMutationRouter.d.ts +1 -1
  254. package/dist/sync/v3/durableTaskHttpRootMutationRouter.js +10 -0
  255. package/dist/sync/v3/durableTaxonomyMutationRouter.js +5 -0
  256. package/dist/sync/v3/durableWorkflowRuntimeMutationRouter.d.ts +18 -7
  257. package/dist/sync/v3/durableWorkflowRuntimeMutationRouter.js +89 -23
  258. package/dist/sync/v3/durableWorkstreamMutationRouter.js +18 -10
  259. package/dist/sync/v3/durableWorkstreamTaskOrderMutationRouter.js +16 -5
  260. package/dist/sync/v3/localOutboxDispatchRuntime.js +2 -2
  261. package/dist/sync/v3/localOutboxRecoveryPreparationService.js +8 -2
  262. package/dist/sync/v3/localTaskChecklistOutboxHandler.js +16 -2
  263. package/dist/sync/v3/localTaskChecklistOutboxService.d.ts +4 -0
  264. package/dist/sync/v3/localTaskChecklistOutboxService.js +14 -1
  265. package/dist/sync/v3/localTaskCreateOutboxService.d.ts +3 -1
  266. package/dist/sync/v3/localTaskCreateOutboxService.js +6 -1
  267. package/dist/sync/v3/localTaskDeleteOutboxService.js +1 -0
  268. package/dist/sync/v3/localTaskLifecycleOutboxService.d.ts +2 -1
  269. package/dist/sync/v3/localTaskLifecycleOutboxService.js +5 -1
  270. package/dist/sync/v3/localTaskMetadataOutboxService.d.ts +2 -1
  271. package/dist/sync/v3/localTaskMetadataOutboxService.js +6 -2
  272. package/dist/sync/v3/localTaskStatusOutboxService.d.ts +10 -1
  273. package/dist/sync/v3/localTaskStatusOutboxService.js +238 -16
  274. package/dist/sync/v3/syncDurabilityStore.d.ts +36 -1
  275. package/dist/sync/v3/syncDurabilityStore.js +202 -8
  276. package/dist/sync/v3/taskChecklistMutationService.d.ts +11 -0
  277. package/dist/sync/v3/taskChecklistMutationService.js +44 -1
  278. package/dist/sync/v3/taskStatusMutationService.d.ts +29 -1
  279. package/dist/sync/v3/taskStatusMutationService.js +119 -3
  280. package/dist/sync/v3/workflowAssignmentSync.d.ts +5 -0
  281. package/dist/sync/v3/workflowAssignmentSync.js +27 -0
  282. package/dist/sync/v3/workflowRuntimeMutationService.d.ts +5 -0
  283. package/dist/sync/v3/workflowRuntimeMutationService.js +124 -71
  284. package/dist/sync/v3/workspaceSyncJournalReader.js +1 -1
  285. package/dist/sync/v3/workspaceSyncOperationRetentionService.d.ts +16 -0
  286. package/dist/sync/v3/workspaceSyncOperationRetentionService.js +83 -0
  287. package/dist/sync/v3/workspaceSyncV3CloudOperationHandler.d.ts +1 -0
  288. package/dist/sync/v3/workspaceSyncV3CloudOperationHandler.js +9 -2
  289. package/dist/sync/v3/workspaceSyncV3CombinedLocalApply.js +25 -3
  290. package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.d.ts +7 -0
  291. package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.js +44 -32
  292. package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.d.ts +9 -5
  293. package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.js +54 -38
  294. package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.d.ts +10 -0
  295. package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.js +70 -31
  296. package/dist/sync/v3/workspaceSyncV3CombinedWireContract.d.ts +2 -1
  297. package/dist/sync/v3/workspaceSyncV3CombinedWireContract.js +16 -0
  298. package/dist/sync/v3/workspaceSyncV3CoverageRegistry.js +6 -0
  299. package/dist/sync/v3/workspaceSyncV3Feed.d.ts +1 -0
  300. package/dist/sync/v3/workspaceSyncV3Feed.js +6 -1
  301. package/dist/sync/v3/workspaceSyncV3NestedTaskProjection.d.ts +2 -0
  302. package/dist/sync/v3/workspaceSyncV3NestedTaskProjection.js +49 -18
  303. package/dist/sync/v3/workspaceSyncV3OperationProtocol.d.ts +3 -0
  304. package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.d.ts +5 -0
  305. package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.js +36 -2
  306. package/dist/sync/v3/workspaceSyncV3RepairSnapshotRetentionService.d.ts +17 -0
  307. package/dist/sync/v3/workspaceSyncV3RepairSnapshotRetentionService.js +64 -0
  308. package/dist/sync/v3/workspaceSyncV3WorkflowRuntimeApply.d.ts +1 -0
  309. package/dist/sync/v3/workspaceSyncV3WorkflowRuntimeApply.js +50 -5
  310. package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverCoverage.d.ts +7 -0
  311. package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverCoverage.js +33 -0
  312. package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverWireContract.d.ts +7 -0
  313. package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverWireContract.js +8 -0
  314. package/dist/sync/workspaceRepair.d.ts +5 -2
  315. package/dist/sync/workspaceRepair.js +161 -6
  316. package/dist/sync/workspaceSyncModel.d.ts +21 -0
  317. package/dist/sync/workspaceSyncModel.js +35 -7
  318. package/dist/sync/workspaceSyncState.d.ts +1 -0
  319. package/dist/sync/workspaceSyncV2SnapshotBuilder.d.ts +6 -0
  320. package/dist/sync/workspaceSyncV2SnapshotBuilder.js +5 -0
  321. package/dist/ui/assets/AiIdentityRosterCard-CDMPtnbC.js +1 -0
  322. package/dist/ui/assets/AiProfilesModule-Cww85C4E.js +1 -0
  323. package/dist/ui/assets/{AnnotatedAttachmentWorkspace-B68Wg-RV.js → AnnotatedAttachmentWorkspace-Dt9TKYSH.js} +1 -1
  324. package/dist/ui/assets/{AssetTraySortControl-C8Rztyal.js → AssetTraySortControl-CKgapnxu.js} +1 -1
  325. package/dist/ui/assets/{ContextAttachmentManager-Cj3c7X9y.js → ContextAttachmentManager-T-cEVcOZ.js} +2 -2
  326. package/dist/ui/assets/{DocumentWorkspace-B5uvzems.js → DocumentWorkspace-HD4MUjAZ.js} +1 -1
  327. package/dist/ui/assets/{EntityActivityTimeline-BVFvCB5R.js → EntityActivityTimeline-_V0zfMuh.js} +1 -1
  328. package/dist/ui/assets/PlanningModule-mTkBygsB.js +1 -0
  329. package/dist/ui/assets/{PlansPage-AY4cGWco.js → PlansPage-Btiq06VO.js} +1 -1
  330. package/dist/ui/assets/{TaskContextUpload-DZxTVesW.js → TaskContextUpload-C00NVUpn.js} +1 -1
  331. package/dist/ui/assets/TaskSettings-Cp-L-4xh.js +12 -0
  332. package/dist/ui/assets/TaskforceAgentsModule-Coq9-PUp.js +24 -0
  333. package/dist/ui/assets/TaskforceAgentsModule-b-8R25cJ.css +1 -0
  334. package/dist/ui/assets/{WorkflowManagerModule-DEr5di_r.js → WorkflowManagerModule-CuqRzMmM.js} +1 -1
  335. package/dist/ui/assets/index-BZ-hdZSk.css +1 -0
  336. package/dist/ui/assets/index-DSQINwt9.js +7 -0
  337. package/dist/ui/assets/{vendor-icons-D9Lpw-j4.js → vendor-icons-Bsq-mcEn.js} +1 -1
  338. package/dist/ui/branding/logos/letterhead_dark.png +0 -0
  339. package/dist/ui/branding/logos/letterhead_light.png +0 -0
  340. package/dist/ui/branding/logos/signature_dark.png +0 -0
  341. package/dist/ui/branding/logos/signature_light.png +0 -0
  342. package/dist/ui/index.html +3 -3
  343. package/dist/utils/aiProfileDefaultLogo.js +16 -48
  344. package/dist/utils/httpSetCookie.d.ts +1 -0
  345. package/dist/utils/httpSetCookie.js +4 -1
  346. package/dist/utils/localRuntimeUrl.d.ts +1 -0
  347. package/dist/utils/localRuntimeUrl.js +14 -0
  348. package/dist/utils/productLogoRegistry.d.ts +2 -0
  349. package/dist/utils/productLogoRegistry.js +36 -0
  350. package/dist/utils/syncStatusPresentation.d.ts +4 -0
  351. package/dist/utils/syncStatusPresentation.js +17 -0
  352. package/dist/utils/taskEvents.d.ts +2 -0
  353. package/dist/utils/workspaceSyncPresentation.d.ts +1 -1
  354. package/dist/utils/workspaceSyncPresentation.js +23 -17
  355. package/package.json +24 -4
  356. package/dist/ui/assets/AiIdentityRosterCard-BZM4aQnM.js +0 -1
  357. package/dist/ui/assets/AiProfilesModule-BbAEWtHH.js +0 -1
  358. package/dist/ui/assets/PlanningModule-B5DWQOGz.js +0 -1
  359. package/dist/ui/assets/TaskSettings-BeWAuyZj.js +0 -12
  360. package/dist/ui/assets/TaskforceAgentsModule-BifCYtjR.js +0 -21
  361. package/dist/ui/assets/TaskforceAgentsModule-D6IC0S7Q.css +0 -1
  362. package/dist/ui/assets/index-I5zhdtgt.js +0 -7
  363. 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 { resolveWorkflowRuntimeMutationCapability } from '../../sync/v3/durableWorkflowRuntimeMutationRouter.js';
31
- import { normalizeWorkflowAssignmentSyncRecord, WorkflowAssignmentSyncError, } from '../../sync/v3/workflowAssignmentSync.js';
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 workflowAssignment = payload.workflowAssignment === undefined
381
- ? undefined
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
- assertExactKeys(payload, payload.originActor === undefined ? ['items'] : ['items', 'originActor'], 'operation.payload');
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: { items, ...(originActor ? { originActor } : {}) },
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 ?? resolveWorkflowRuntimeMutationCapability({
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: core.listTaskRelationshipsForSync(workspaceId) }));
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 - Lightweight readiness signal for API + DB
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';
@@ -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 { createStandaloneServer } from '../server/index.js';
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?: typeof createStandaloneServer;
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
- server = options.createServer({
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 || createStandaloneServer,
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 turnRejectors;
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
  }