@taskforcehq/taskforce 0.3.329 → 0.3.330

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/dist/Taskforce.module.css +290 -45
  2. package/dist/components/features/AiProfilesModule.js +3 -5
  3. package/dist/components/features/TaskSettings.js +70 -14
  4. package/dist/components/features/TaskforceAgentsModule.d.ts +1 -2
  5. package/dist/components/features/TaskforceAgentsModule.js +586 -116
  6. package/dist/components/features/agentConnections/AgentConnectionControl.d.ts +15 -0
  7. package/dist/components/features/agentConnections/AgentConnectionControl.js +125 -0
  8. package/dist/components/features/agentConnections/ModelConnectionsPanel.d.ts +18 -0
  9. package/dist/components/features/agentConnections/ModelConnectionsPanel.js +393 -0
  10. package/dist/components/features/agentConnections/modelConnectionsApi.d.ts +65 -0
  11. package/dist/components/features/agentConnections/modelConnectionsApi.js +129 -0
  12. package/dist/components/features/taskforceAgentAssignments/AgentBehaviorAssignments.js +15 -24
  13. package/dist/components/features/taskforceAgentEditorModel.d.ts +2 -1
  14. package/dist/components/features/taskforceAgentEditorModel.js +3 -1
  15. package/dist/components/features/workflowManager/workflowManagerApi.d.ts +1 -1
  16. package/dist/components/features/workflowManager/workflowManagerApi.js +3 -0
  17. package/dist/components/task/TaskWorkflowAssignmentField.js +68 -10
  18. package/dist/components/views/StandaloneLayout.js +27 -26
  19. package/dist/components/views/standalone/modals/SyncStatusModal.d.ts +4 -3
  20. package/dist/components/views/standalone/modals/SyncStatusModal.js +33 -38
  21. package/dist/config/envSchema.js +48 -1
  22. package/dist/core/McpTokenService.d.ts +23 -1
  23. package/dist/core/McpTokenService.js +93 -10
  24. package/dist/core/TaskChecklistCommandService.d.ts +27 -0
  25. package/dist/core/TaskChecklistCommandService.js +83 -5
  26. package/dist/core/TaskLifecycleCommandService.d.ts +3 -1
  27. package/dist/core/TaskLifecycleCommandService.js +6 -2
  28. package/dist/core/Taskforce.d.ts +32 -0
  29. package/dist/core/Taskforce.js +125 -4
  30. package/dist/core/types.d.ts +8 -0
  31. package/dist/documentReviews/commandService.d.ts +2 -1
  32. package/dist/documentReviews/commandService.js +6 -3
  33. package/dist/hooks/sync/orchestratorShared.d.ts +1 -0
  34. package/dist/hooks/sync/orchestratorShared.js +2 -0
  35. package/dist/hooks/sync/useLocalSyncCoordinatorSnapshot.d.ts +3 -0
  36. package/dist/hooks/sync/useLocalSyncCoordinatorSnapshot.js +85 -9
  37. package/dist/hooks/sync/useSyncStatusControls.d.ts +4 -1
  38. package/dist/hooks/sync/useSyncStatusControls.js +47 -11
  39. package/dist/hooks/useSyncOrchestrator.d.ts +3 -0
  40. package/dist/hooks/useSyncOrchestrator.js +111 -2
  41. package/dist/hooks/useTaskData.d.ts +31 -1
  42. package/dist/hooks/useTaskData.js +29 -7
  43. package/dist/hooks/useTaskMutations.d.ts +3 -1
  44. package/dist/hooks/useTaskMutations.js +46 -12
  45. package/dist/hooks/useTaskforce.d.ts +2 -0
  46. package/dist/hooks/useTaskforce.js +11 -2
  47. package/dist/mcp/clientRegistry.d.ts +2 -2
  48. package/dist/mcp/clientRegistry.js +1 -1
  49. package/dist/mcp/documentAssetRegistrar.js +9 -6
  50. package/dist/mcp/durableTaskMutationRouter.d.ts +4 -1
  51. package/dist/mcp/durableTaskMutationRouter.js +10 -0
  52. package/dist/mcp/durableTaskRelationshipMutationRouter.js +4 -0
  53. package/dist/mcp/httpProtocolRouting.d.ts +10 -0
  54. package/dist/mcp/httpProtocolRouting.js +19 -0
  55. package/dist/mcp/localCliHealth.d.ts +2 -2
  56. package/dist/mcp/localCliHealth.js +2 -2
  57. package/dist/mcp/localServiceProxy.d.ts +1 -0
  58. package/dist/mcp/localServiceProxy.js +530 -68
  59. package/dist/mcp/planningAttachmentCommandAdapter.d.ts +3 -1
  60. package/dist/mcp/planningAttachmentCommandAdapter.js +20 -2
  61. package/dist/mcp/runtime.d.ts +54 -79
  62. package/dist/mcp/runtime.js +384 -97
  63. package/dist/mcp/taskPlanningRegistrar.js +23 -4
  64. package/dist/mcp/toolProfiles.d.ts +2 -0
  65. package/dist/mcp/toolProfiles.js +10 -0
  66. package/dist/mcp/toolRegistry.d.ts +1 -0
  67. package/dist/mcp/toolRegistry.js +1 -0
  68. package/dist/mcp/workflowExecutionRegistrar.js +4 -4
  69. package/dist/migrations/taskSchemaMigrations.d.ts +5 -0
  70. package/dist/migrations/taskSchemaMigrations.js +415 -0
  71. package/dist/runtime/appGates.d.ts +2 -1
  72. package/dist/runtime/appGates.js +7 -0
  73. package/dist/server/index.d.ts +3 -0
  74. package/dist/server/index.js +108 -11
  75. package/dist/server/localDatabaseIdentity.js +4 -1
  76. package/dist/server/localServiceLease.js +2 -1
  77. package/dist/server/localServiceSessions.d.ts +14 -17
  78. package/dist/server/localServiceSessions.js +308 -94
  79. package/dist/server/localWorkspaceSyncServerRuntime.js +12 -14
  80. package/dist/server/routes/admin.d.ts +4 -0
  81. package/dist/server/routes/admin.js +112 -3
  82. package/dist/server/routes/agents.d.ts +7 -0
  83. package/dist/server/routes/agents.js +277 -24
  84. package/dist/server/routes/billing.js +5 -1
  85. package/dist/server/routes/durableTaskHttpRouters.d.ts +2 -0
  86. package/dist/server/routes/executorPhaseAApprovals.d.ts +19 -0
  87. package/dist/server/routes/executorPhaseAApprovals.js +140 -0
  88. package/dist/server/routes/executorPhaseAIssuerRedemptions.d.ts +11 -0
  89. package/dist/server/routes/executorPhaseAIssuerRedemptions.js +24 -0
  90. package/dist/server/routes/githubReviewEvidence.d.ts +19 -0
  91. package/dist/server/routes/githubReviewEvidence.js +116 -0
  92. package/dist/server/routes/localService.d.ts +15 -4
  93. package/dist/server/routes/localService.js +136 -40
  94. package/dist/server/routes/modelConnections.d.ts +24 -0
  95. package/dist/server/routes/modelConnections.js +205 -0
  96. package/dist/server/routes/shared.d.ts +19 -0
  97. package/dist/server/routes/shared.js +95 -19
  98. package/dist/server/routes/sync.js +1 -0
  99. package/dist/server/routes/syncAuxRoutes.js +5 -1
  100. package/dist/server/routes/syncPushRoutes.d.ts +1 -0
  101. package/dist/server/routes/syncPushRoutes.js +1 -0
  102. package/dist/server/routes/syncV3FeedRoutes.js +10 -1
  103. package/dist/server/routes/syncV3OperationRoutes.js +35 -9
  104. package/dist/server/routes/tasks.js +21 -2
  105. package/dist/server/routes/workflows.js +9 -1
  106. package/dist/server/routes.js +59 -0
  107. package/dist/services/codexAppServerModelGateway.d.ts +54 -5
  108. package/dist/services/codexAppServerModelGateway.js +246 -21
  109. package/dist/services/codexDeviceCodeLoginManager.d.ts +39 -0
  110. package/dist/services/codexDeviceCodeLoginManager.js +265 -0
  111. package/dist/services/codexModelProviderConnectionLifecycle.d.ts +8 -0
  112. package/dist/services/codexModelProviderConnectionLifecycle.js +73 -0
  113. package/dist/services/executorPhaseAApprovalRuntime.d.ts +14 -0
  114. package/dist/services/executorPhaseAApprovalRuntime.js +24 -0
  115. package/dist/services/executorPhaseAApprovalService.d.ts +40 -0
  116. package/dist/services/executorPhaseAApprovalService.js +609 -0
  117. package/dist/services/executorPhaseADriftEvaluator.d.ts +78 -0
  118. package/dist/services/executorPhaseADriftEvaluator.js +93 -0
  119. package/dist/services/executorPhaseAIssuerCore.d.ts +126 -0
  120. package/dist/services/executorPhaseAIssuerCore.js +295 -0
  121. package/dist/services/executorPhaseAIssuerRedemptionService.d.ts +34 -0
  122. package/dist/services/executorPhaseAIssuerRedemptionService.js +158 -0
  123. package/dist/services/githubReviewEvidenceRuntime.d.ts +14 -0
  124. package/dist/services/githubReviewEvidenceRuntime.js +30 -0
  125. package/dist/services/githubReviewEvidenceService.d.ts +93 -0
  126. package/dist/services/githubReviewEvidenceService.js +336 -0
  127. package/dist/services/modelGateway.d.ts +7 -0
  128. package/dist/services/modelProviderConnectionService.d.ts +71 -0
  129. package/dist/services/modelProviderConnectionService.js +279 -0
  130. package/dist/services/modelProviderCredentialHome.d.ts +32 -0
  131. package/dist/services/modelProviderCredentialHome.js +271 -0
  132. package/dist/services/ownerScopedModelConnectionGateway.d.ts +12 -0
  133. package/dist/services/ownerScopedModelConnectionGateway.js +30 -0
  134. package/dist/services/taskforceAgentConnectionBindingService.d.ts +66 -0
  135. package/dist/services/taskforceAgentConnectionBindingService.js +185 -0
  136. package/dist/services/taskforceAgentMcpBridge.d.ts +1 -1
  137. package/dist/services/taskforceAgentMcpBridge.js +7 -24
  138. package/dist/shared/adminEdgeProxy.d.ts +5 -0
  139. package/dist/shared/adminEdgeProxy.js +94 -0
  140. package/dist/shared/adminProxySessionCookies.d.ts +16 -0
  141. package/dist/shared/adminProxySessionCookies.js +86 -0
  142. package/dist/shared/aiProfileColors.d.ts +31 -1
  143. package/dist/shared/aiProfileColors.js +14 -6
  144. package/dist/shared/executorPhaseAApprovalGoldenVector.json +269 -0
  145. package/dist/shared/executorPhaseAApprovalReceipt.d.ts +112 -0
  146. package/dist/shared/executorPhaseAApprovalReceipt.js +58 -0
  147. package/dist/shared/executorPhaseAApprovalTrustPolicy.json +10 -0
  148. package/dist/shared/executorPhaseADriftContracts.d.ts +37 -0
  149. package/dist/shared/executorPhaseADriftContracts.js +63 -0
  150. package/dist/shared/executorPhaseAIssuerContracts.d.ts +75 -0
  151. package/dist/shared/executorPhaseAIssuerContracts.js +90 -0
  152. package/dist/shared/executorPhaseARunAuthorization.d.ts +120 -0
  153. package/dist/shared/executorPhaseARunAuthorization.js +232 -0
  154. package/dist/shared/executorPhaseASchemaValidation.d.ts +7 -0
  155. package/dist/shared/executorPhaseASchemaValidation.js +53 -0
  156. package/dist/shared/executorPhaseASchemas/approval-receipt.schema.json +106 -0
  157. package/dist/shared/executorPhaseASchemas/drift-attestation.schema.json +54 -0
  158. package/dist/shared/executorPhaseASchemas/drift-request.schema.json +47 -0
  159. package/dist/shared/executorPhaseASchemas/foundation-manifest.schema.json +29 -0
  160. package/dist/shared/executorPhaseASchemas/issuer-audit-record.schema.json +24 -0
  161. package/dist/shared/executorPhaseASchemas/issuer-proof.schema.json +43 -0
  162. package/dist/shared/executorPhaseASchemas/issuer-redemption-request.schema.json +18 -0
  163. package/dist/shared/executorPhaseASchemas/issuer-redemption-response.schema.json +39 -0
  164. package/dist/shared/executorPhaseASchemas/logical-envelope.schema.json +149 -0
  165. package/dist/shared/executorPhaseASchemas/preflight-report.schema.json +216 -0
  166. package/dist/shared/executorPhaseASchemas/run-capability.schema.json +111 -0
  167. package/dist/shared/executorPhaseASchemas/sender-proof.schema.json +37 -0
  168. package/dist/shared/executorPhaseASchemas/workload-grant.schema.json +68 -0
  169. package/dist/shared/executorPhaseASchemas/workload-jwt-claims.schema.json +67 -0
  170. package/dist/shared/executorPhaseATiming.d.ts +1 -0
  171. package/dist/shared/executorPhaseATiming.js +1 -0
  172. package/dist/shared/planningIdentity.js +1 -1
  173. package/dist/shared/productLogoKeys.d.ts +2 -0
  174. package/dist/shared/productLogoKeys.js +18 -0
  175. package/dist/shared/taskforceAgentDefinition.d.ts +0 -1
  176. package/dist/shared/taskforceAgentDefinition.js +6 -9
  177. package/dist/shared/taskforceAgentModels.js +7 -3
  178. package/dist/shared/userFeatureGrants.d.ts +4 -0
  179. package/dist/shared/userFeatureGrants.js +7 -0
  180. package/dist/storage/executorPhaseAApprovalReceiptStore.d.ts +37 -0
  181. package/dist/storage/executorPhaseAApprovalReceiptStore.js +81 -0
  182. package/dist/storage/executorPhaseARunAuthorizationStore.d.ts +103 -0
  183. package/dist/storage/executorPhaseARunAuthorizationStore.js +492 -0
  184. package/dist/storage/githubReviewEvidenceInstallationStore.d.ts +26 -0
  185. package/dist/storage/githubReviewEvidenceInstallationStore.js +89 -0
  186. package/dist/storage/modelProviderConnectionStore.d.ts +99 -0
  187. package/dist/storage/modelProviderConnectionStore.js +446 -0
  188. package/dist/storage/postgresAdapter.d.ts +4 -0
  189. package/dist/storage/postgresAdapter.js +11 -0
  190. package/dist/storage/postgresWorker.js +9 -1
  191. package/dist/storage/postgresWorkerProtocol.d.ts +1 -0
  192. package/dist/storage/taskforceAgentConnectionBindingStore.d.ts +31 -0
  193. package/dist/storage/taskforceAgentConnectionBindingStore.js +84 -0
  194. package/dist/sync/coordinator/localSyncExecutionPermitStore.js +60 -29
  195. package/dist/sync/coordinator/localWorkspaceSyncPendingV2PushProgress.d.ts +10 -0
  196. package/dist/sync/coordinator/localWorkspaceSyncPendingV2PushProgress.js +29 -0
  197. package/dist/sync/coordinator/localWorkspaceSyncRunnerState.d.ts +15 -1
  198. package/dist/sync/coordinator/localWorkspaceSyncRunnerState.js +99 -2
  199. package/dist/sync/coordinator/workspaceSyncCredentialBroker.d.ts +1 -0
  200. package/dist/sync/coordinator/workspaceSyncCredentialBroker.js +33 -4
  201. package/dist/sync/engine/workspaceSyncContentLifecycleAdapter.d.ts +2 -1
  202. package/dist/sync/engine/workspaceSyncContentVersionStore.d.ts +38 -0
  203. package/dist/sync/engine/workspaceSyncContentVersionStore.js +50 -1
  204. package/dist/sync/engine/workspaceSyncEngineLifecyclePolicy.js +6 -6
  205. package/dist/sync/engine/workspaceSyncEnginePushCompletion.d.ts +14 -0
  206. package/dist/sync/engine/workspaceSyncEnginePushCompletion.js +84 -0
  207. package/dist/sync/engine/workspaceSyncEngineRecovery.js +1 -0
  208. package/dist/sync/engine/workspaceSyncEngineRuntime.d.ts +1 -0
  209. package/dist/sync/engine/workspaceSyncEngineRuntime.js +1 -0
  210. package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.js +112 -38
  211. package/dist/sync/engine/workspaceSyncEngineServerSnapshotReader.js +6 -0
  212. package/dist/sync/engine/workspaceSyncEngineTransfers.js +3 -1
  213. package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.d.ts +1 -0
  214. package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.js +29 -0
  215. package/dist/sync/syncApplyHandlers.d.ts +2 -0
  216. package/dist/sync/syncApplyHandlers.js +10 -1
  217. package/dist/sync/syncService.d.ts +15 -0
  218. package/dist/sync/syncService.js +83 -18
  219. package/dist/sync/taskforceAgentSyncAuthorization.d.ts +16 -0
  220. package/dist/sync/taskforceAgentSyncAuthorization.js +20 -0
  221. package/dist/sync/v3/combinedFeedCapability.js +4 -0
  222. package/dist/sync/v3/durableInitiativeMutationRouter.js +18 -10
  223. package/dist/sync/v3/durableOperationReplay.d.ts +14 -0
  224. package/dist/sync/v3/durableOperationReplay.js +18 -0
  225. package/dist/sync/v3/durableTaskAttachmentLinksMutationRouter.js +3 -0
  226. package/dist/sync/v3/durableTaskChecklistMutationRouter.d.ts +2 -1
  227. package/dist/sync/v3/durableTaskChecklistMutationRouter.js +58 -15
  228. package/dist/sync/v3/durableTaskCommentMutationRouter.js +3 -0
  229. package/dist/sync/v3/durableTaskHttpRootMutationRouter.d.ts +1 -1
  230. package/dist/sync/v3/durableTaskHttpRootMutationRouter.js +10 -0
  231. package/dist/sync/v3/durableTaxonomyMutationRouter.js +5 -0
  232. package/dist/sync/v3/durableWorkflowRuntimeMutationRouter.d.ts +11 -0
  233. package/dist/sync/v3/durableWorkflowRuntimeMutationRouter.js +39 -10
  234. package/dist/sync/v3/durableWorkstreamMutationRouter.js +18 -10
  235. package/dist/sync/v3/durableWorkstreamTaskOrderMutationRouter.js +16 -5
  236. package/dist/sync/v3/localOutboxDispatchRuntime.js +2 -2
  237. package/dist/sync/v3/localTaskChecklistOutboxHandler.js +16 -2
  238. package/dist/sync/v3/localTaskChecklistOutboxService.d.ts +4 -0
  239. package/dist/sync/v3/localTaskChecklistOutboxService.js +14 -1
  240. package/dist/sync/v3/localTaskStatusOutboxService.d.ts +8 -0
  241. package/dist/sync/v3/localTaskStatusOutboxService.js +219 -12
  242. package/dist/sync/v3/syncDurabilityStore.d.ts +34 -0
  243. package/dist/sync/v3/syncDurabilityStore.js +168 -2
  244. package/dist/sync/v3/taskChecklistMutationService.d.ts +11 -0
  245. package/dist/sync/v3/taskChecklistMutationService.js +44 -1
  246. package/dist/sync/v3/taskStatusMutationService.d.ts +29 -1
  247. package/dist/sync/v3/taskStatusMutationService.js +119 -3
  248. package/dist/sync/v3/workflowAssignmentSync.d.ts +5 -0
  249. package/dist/sync/v3/workflowAssignmentSync.js +27 -0
  250. package/dist/sync/v3/workspaceSyncJournalReader.js +1 -1
  251. package/dist/sync/v3/workspaceSyncOperationRetentionService.d.ts +16 -0
  252. package/dist/sync/v3/workspaceSyncOperationRetentionService.js +83 -0
  253. package/dist/sync/v3/workspaceSyncV3CloudOperationHandler.d.ts +1 -0
  254. package/dist/sync/v3/workspaceSyncV3CloudOperationHandler.js +9 -2
  255. package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.d.ts +7 -0
  256. package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.js +44 -32
  257. package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.d.ts +9 -5
  258. package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.js +54 -38
  259. package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.d.ts +10 -0
  260. package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.js +70 -31
  261. package/dist/sync/v3/workspaceSyncV3CombinedWireContract.d.ts +2 -1
  262. package/dist/sync/v3/workspaceSyncV3CombinedWireContract.js +16 -0
  263. package/dist/sync/v3/workspaceSyncV3CoverageRegistry.js +6 -0
  264. package/dist/sync/v3/workspaceSyncV3OperationProtocol.d.ts +3 -0
  265. package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.d.ts +5 -0
  266. package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.js +36 -2
  267. package/dist/sync/v3/workspaceSyncV3RepairSnapshotRetentionService.d.ts +17 -0
  268. package/dist/sync/v3/workspaceSyncV3RepairSnapshotRetentionService.js +64 -0
  269. package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverCoverage.d.ts +7 -0
  270. package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverCoverage.js +33 -0
  271. package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverWireContract.d.ts +7 -0
  272. package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverWireContract.js +8 -0
  273. package/dist/sync/workspaceRepair.d.ts +5 -2
  274. package/dist/sync/workspaceRepair.js +161 -6
  275. package/dist/sync/workspaceSyncModel.d.ts +21 -0
  276. package/dist/sync/workspaceSyncModel.js +35 -7
  277. package/dist/sync/workspaceSyncState.d.ts +1 -0
  278. package/dist/sync/workspaceSyncV2SnapshotBuilder.d.ts +6 -0
  279. package/dist/sync/workspaceSyncV2SnapshotBuilder.js +5 -0
  280. package/dist/ui/assets/AiIdentityRosterCard-OcSz1PkK.js +1 -0
  281. package/dist/ui/assets/AiProfilesModule-ByhYW5Xi.js +1 -0
  282. package/dist/ui/assets/{AnnotatedAttachmentWorkspace-B68Wg-RV.js → AnnotatedAttachmentWorkspace-BTM6nIg_.js} +1 -1
  283. package/dist/ui/assets/{AssetTraySortControl-C8Rztyal.js → AssetTraySortControl-DabEG8L4.js} +1 -1
  284. package/dist/ui/assets/{ContextAttachmentManager-Cj3c7X9y.js → ContextAttachmentManager-Coa8yVGM.js} +1 -1
  285. package/dist/ui/assets/{DocumentWorkspace-B5uvzems.js → DocumentWorkspace-BB0qhdix.js} +1 -1
  286. package/dist/ui/assets/{EntityActivityTimeline-BVFvCB5R.js → EntityActivityTimeline-CZ8x4UJE.js} +1 -1
  287. package/dist/ui/assets/{PlanningModule-B5DWQOGz.js → PlanningModule-pRPjR7v5.js} +1 -1
  288. package/dist/ui/assets/{PlansPage-AY4cGWco.js → PlansPage-D86pZSSl.js} +1 -1
  289. package/dist/ui/assets/{TaskContextUpload-DZxTVesW.js → TaskContextUpload-BVIkU9yT.js} +1 -1
  290. package/dist/ui/assets/TaskSettings-Cv1mNhv_.js +12 -0
  291. package/dist/ui/assets/TaskforceAgentsModule-b-8R25cJ.css +1 -0
  292. package/dist/ui/assets/TaskforceAgentsModule-gmH-PD2q.js +24 -0
  293. package/dist/ui/assets/{WorkflowManagerModule-DEr5di_r.js → WorkflowManagerModule-DbfnHJ-f.js} +1 -1
  294. package/dist/ui/assets/index-BZ-hdZSk.css +1 -0
  295. package/dist/ui/assets/index-CTsDBaef.js +7 -0
  296. package/dist/ui/assets/{vendor-icons-D9Lpw-j4.js → vendor-icons-Bsq-mcEn.js} +1 -1
  297. package/dist/ui/branding/logos/letterhead_dark.png +0 -0
  298. package/dist/ui/branding/logos/letterhead_light.png +0 -0
  299. package/dist/ui/branding/logos/signature_dark.png +0 -0
  300. package/dist/ui/branding/logos/signature_light.png +0 -0
  301. package/dist/ui/index.html +3 -3
  302. package/dist/utils/aiProfileDefaultLogo.js +16 -48
  303. package/dist/utils/httpSetCookie.d.ts +1 -0
  304. package/dist/utils/httpSetCookie.js +4 -1
  305. package/dist/utils/localRuntimeUrl.d.ts +1 -0
  306. package/dist/utils/localRuntimeUrl.js +14 -0
  307. package/dist/utils/productLogoRegistry.d.ts +2 -0
  308. package/dist/utils/productLogoRegistry.js +36 -0
  309. package/dist/utils/syncStatusPresentation.d.ts +4 -0
  310. package/dist/utils/syncStatusPresentation.js +17 -0
  311. package/dist/utils/taskEvents.d.ts +2 -0
  312. package/dist/utils/workspaceSyncPresentation.d.ts +1 -1
  313. package/dist/utils/workspaceSyncPresentation.js +23 -17
  314. package/package.json +22 -4
  315. package/dist/ui/assets/AiIdentityRosterCard-BZM4aQnM.js +0 -1
  316. package/dist/ui/assets/AiProfilesModule-BbAEWtHH.js +0 -1
  317. package/dist/ui/assets/TaskSettings-BeWAuyZj.js +0 -12
  318. package/dist/ui/assets/TaskforceAgentsModule-BifCYtjR.js +0 -21
  319. package/dist/ui/assets/TaskforceAgentsModule-D6IC0S7Q.css +0 -1
  320. package/dist/ui/assets/index-I5zhdtgt.js +0 -7
  321. package/dist/ui/assets/index-VRFsx3wz.css +0 -1
@@ -0,0 +1,269 @@
1
+ {
2
+ "schema": "taskforce.executor-phase-a-authorization-golden-vector/v4",
3
+ "cloudPublicKeySpkiBase64": "MCowBQYDK2VwAyEASGK8PgIza/iCcosylG6r+hAbUJ77ecVMmVAt9dO964w=",
4
+ "brokerPublicKeySpkiBase64": "MCowBQYDK2VwAyEAaT6jZmvWCBpuW1RZKO+YLOoH+OpN7zpRxaT+t5qozjE=",
5
+ "receipt": {
6
+ "payload": {
7
+ "schema": "taskforce.executor-phase-a-approval-receipt-payload/v3",
8
+ "receiptId": "approval-receipt-golden0002",
9
+ "issuer": "https://performance-app.taskforcehq.ai",
10
+ "audience": "taskforce-agent-executor-phase-a",
11
+ "environment": "performance",
12
+ "workspaceId": "workspace-019c771a-b6d7-7bc8-b837-c1133f3ba7a2",
13
+ "taskId": "task-62fecb296bbe07ca535b6e6630fc458f",
14
+ "taskReference": "T-1653",
15
+ "actorUserId": "user-01abc234def56789",
16
+ "runId": "phase-a-golden-0002",
17
+ "preflightSha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
18
+ "logicalEnvelopeSha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
19
+ "accountId": "123456789012",
20
+ "readPrincipalArn": "arn:aws:sts::123456789012:assumed-role/taskforce-phase-a-read/golden",
21
+ "mutationRoles": {
22
+ "bootstrap": "arn:aws:iam::123456789012:role/taskforce-phase-a-bootstrap",
23
+ "ami-build": "arn:aws:iam::123456789012:role/taskforce-phase-a-ami-build",
24
+ "provenance": "arn:aws:iam::123456789012:role/taskforce-phase-a-provenance",
25
+ "runtime": "arn:aws:iam::123456789012:role/taskforce-phase-a-runtime",
26
+ "cleanup": "arn:aws:iam::123456789012:role/taskforce-phase-a-cleanup"
27
+ },
28
+ "roleMapSha256": "6458f011cdb6e16971e797cab1b736b5e95df41795b54e3dba4e9af571f593b0",
29
+ "oidcIssuer": "https://phase-a-issuer.taskforcehq.ai",
30
+ "oidcAudience": "taskforce-agent-executor-phase-a",
31
+ "brokerPublicKeySpkiBase64": "MCowBQYDK2VwAyEAaT6jZmvWCBpuW1RZKO+YLOoH+OpN7zpRxaT+t5qozjE=",
32
+ "brokerKeyFingerprint": "5aeb974cc8feaf6f29fe953349d3bf7febd01a1ae9c467fd041ddaddae4337a1",
33
+ "region": "us-west-2",
34
+ "availabilityZone": "us-west-2a",
35
+ "budgets": {
36
+ "temporaryUsdMicros": 50000,
37
+ "alarmUsdMicros": 25000,
38
+ "foundationMonthlyCeilingUsdMicros": 100000000
39
+ },
40
+ "sourceCommit": "cccccccccccccccccccccccccccccccccccccccc",
41
+ "approvedAt": "2026-08-21T12:00:00Z",
42
+ "expiresAt": "2026-08-21T12:30:00Z",
43
+ "mutationDeadline": "2026-08-21T20:00:00Z",
44
+ "cleanupDeadline": "2026-08-21T22:00:00Z",
45
+ "receiptKind": "main",
46
+ "originalCapabilityId": null,
47
+ "residualInventorySha256": null
48
+ },
49
+ "envelope": {
50
+ "algorithm": "Ed25519",
51
+ "keyId": "phase-a-golden-2026",
52
+ "payloadSha256": "82067c52c778076a39e4b01fc00b9e4f207ab2b977e1041ef2b8660518781c7d",
53
+ "signature": "9aOuBv9FnCRDwlAXIPQfSvCmwhIbxvdEnv4upLctvyElViwSn2LVlWH3V3pt_CTA7CQawSCKdHYJWzYLJG5fCA"
54
+ }
55
+ },
56
+ "receiptSha256": "a1c322a8f19afa7bdab3b72e35383967a8803056bfe4cf5cd7cc9eebc2e20e32",
57
+ "runCapability": {
58
+ "payload": {
59
+ "schema": "taskforce.executor-phase-a-run-capability-payload/v1",
60
+ "capabilityId": "run-capability-golden0002",
61
+ "capabilityKind": "main",
62
+ "originalCapabilityId": null,
63
+ "receiptId": "approval-receipt-golden0002",
64
+ "receiptSha256": "a1c322a8f19afa7bdab3b72e35383967a8803056bfe4cf5cd7cc9eebc2e20e32",
65
+ "workspaceId": "workspace-019c771a-b6d7-7bc8-b837-c1133f3ba7a2",
66
+ "taskId": "task-62fecb296bbe07ca535b6e6630fc458f",
67
+ "actorUserId": "user-01abc234def56789",
68
+ "runId": "phase-a-golden-0002",
69
+ "accountId": "123456789012",
70
+ "region": "us-west-2",
71
+ "availabilityZone": "us-west-2a",
72
+ "sourceCommit": "cccccccccccccccccccccccccccccccccccccccc",
73
+ "preflightSha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
74
+ "logicalEnvelopeSha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
75
+ "budgetsSha256": "6096abf53672347efaf50c60d7c444cc7b628103f090e69951821fe4cef1cbaf",
76
+ "readPrincipalArn": "arn:aws:sts::123456789012:assumed-role/taskforce-phase-a-read/golden",
77
+ "mutationRoles": {
78
+ "bootstrap": "arn:aws:iam::123456789012:role/taskforce-phase-a-bootstrap",
79
+ "ami-build": "arn:aws:iam::123456789012:role/taskforce-phase-a-ami-build",
80
+ "provenance": "arn:aws:iam::123456789012:role/taskforce-phase-a-provenance",
81
+ "runtime": "arn:aws:iam::123456789012:role/taskforce-phase-a-runtime",
82
+ "cleanup": "arn:aws:iam::123456789012:role/taskforce-phase-a-cleanup"
83
+ },
84
+ "roleMapSha256": "6458f011cdb6e16971e797cab1b736b5e95df41795b54e3dba4e9af571f593b0",
85
+ "oidcIssuer": "https://phase-a-issuer.taskforcehq.ai",
86
+ "oidcAudience": "taskforce-agent-executor-phase-a",
87
+ "brokerPublicKeySpkiBase64": "MCowBQYDK2VwAyEAaT6jZmvWCBpuW1RZKO+YLOoH+OpN7zpRxaT+t5qozjE=",
88
+ "brokerKeyFingerprint": "5aeb974cc8feaf6f29fe953349d3bf7febd01a1ae9c467fd041ddaddae4337a1",
89
+ "allowedPhases": [
90
+ "bootstrap",
91
+ "ami-build",
92
+ "provenance",
93
+ "runtime",
94
+ "cleanup"
95
+ ],
96
+ "issuedAt": "2026-08-21T12:00:00Z",
97
+ "expiresAt": "2026-08-21T22:00:00Z",
98
+ "mutationDeadline": "2026-08-21T20:00:00Z",
99
+ "cleanupDeadline": "2026-08-21T22:00:00Z",
100
+ "residualInventorySha256": null
101
+ },
102
+ "envelope": {
103
+ "algorithm": "Ed25519",
104
+ "keyId": "phase-a-golden-2026",
105
+ "payloadSha256": "f5ed898a3d5b9ed46b98760b500f7d8b9322c87eaebb215eeabf95d7eae6163b",
106
+ "signature": "J_KBFtIXsk6A0N085d_Ok3Blcd-a01oPMkGI-qKHLH6IGquaKZJy56gdOuy1XZRfI6JNGEP2EyNU2mYyXRk9CQ"
107
+ }
108
+ },
109
+ "runCapabilitySha256": "d4d68e72837082ef85f7135a70f34925003d0a84e839e40138f1e66d15adab10",
110
+ "senderProof": {
111
+ "payload": {
112
+ "schema": "taskforce.executor-phase-a-sender-proof-payload/v1",
113
+ "capabilityId": "run-capability-golden0002",
114
+ "nonceId": "nonce-golden0002",
115
+ "requestSha256": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
116
+ "phase": "ami-build",
117
+ "createdAt": "2026-08-21T12:01:00Z",
118
+ "expiresAt": "2026-08-21T12:03:00Z"
119
+ },
120
+ "envelope": {
121
+ "algorithm": "Ed25519",
122
+ "keyId": "broker-key",
123
+ "brokerKeyFingerprint": "5aeb974cc8feaf6f29fe953349d3bf7febd01a1ae9c467fd041ddaddae4337a1",
124
+ "payloadSha256": "74aa7efa77735d794f852e15ebe4b5943eff85e81416cfa6e69cffeb85721710",
125
+ "signature": "cOKE81mY1809qetQs0PCzQDN8kPzR_Ee2xpciSJuGylyv-_8ihA9IyirHdMfX3rIBOTFFhYg_LpF2byYaEW1Aw"
126
+ }
127
+ },
128
+ "senderProofSha256": "7ef9d47f26a0a86bff6224b2b1b2b68e42fe6d2286519c24ddd0d4200f9f1b93",
129
+ "workloadGrant": {
130
+ "payload": {
131
+ "schema": "taskforce.executor-phase-a-workload-grant-payload/v1",
132
+ "grantId": "workload-grant-golden0002",
133
+ "capabilityId": "run-capability-golden0002",
134
+ "capabilitySha256": "d4d68e72837082ef85f7135a70f34925003d0a84e839e40138f1e66d15adab10",
135
+ "receiptId": "approval-receipt-golden0002",
136
+ "receiptSha256": "a1c322a8f19afa7bdab3b72e35383967a8803056bfe4cf5cd7cc9eebc2e20e32",
137
+ "workspaceId": "workspace-019c771a-b6d7-7bc8-b837-c1133f3ba7a2",
138
+ "taskId": "task-62fecb296bbe07ca535b6e6630fc458f",
139
+ "actorUserId": "user-01abc234def56789",
140
+ "runId": "phase-a-golden-0002",
141
+ "phase": "ami-build",
142
+ "roleArn": "arn:aws:iam::123456789012:role/taskforce-phase-a-ami-build",
143
+ "accountId": "123456789012",
144
+ "region": "us-west-2",
145
+ "sourceIdentity": "tfr.mAjqWDYqeRMM0vP2z-eOD8jFSpImdaXqMXlHnow5n0Q.ami-build",
146
+ "sessionTags": {
147
+ "TaskforceRun": "phase-a-golden-0002",
148
+ "TaskforceReceipt": "approval-receipt-golden0002",
149
+ "TaskforcePhase": "ami-build",
150
+ "TaskforceWorkspaceHash": "0ccf09445ddd740e3517b30c74f5b994dedc4f6e4cdcfa0ae2d0b7f8f6277e64",
151
+ "TaskforceSource": "cccccccccccccccccccccccccccccccccccccccc"
152
+ },
153
+ "brokerKeyFingerprint": "5aeb974cc8feaf6f29fe953349d3bf7febd01a1ae9c467fd041ddaddae4337a1",
154
+ "nonceId": "nonce-golden0002",
155
+ "senderProofSha256": "7ef9d47f26a0a86bff6224b2b1b2b68e42fe6d2286519c24ddd0d4200f9f1b93",
156
+ "policySha256": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
157
+ "issuedAt": "2026-08-21T12:01:00Z",
158
+ "expiresAt": "2026-08-21T12:03:00Z"
159
+ },
160
+ "envelope": {
161
+ "algorithm": "Ed25519",
162
+ "keyId": "phase-a-golden-2026",
163
+ "payloadSha256": "1f4c8fe624944220015a362db89ba1232e588d2b7154913edcbf6fe06c4d4d5b",
164
+ "signature": "NZyvkfxLipBpHiYfzau86G2hQjdnJVQWEb16umf2d6FiG449Gq1YvpGExNDFoWQwZfOGB1KYT48lafKuMsXOBQ"
165
+ }
166
+ },
167
+ "workloadGrantSha256": "e1c3f52460f10df2b56fe36102388e9b7471a578988e67319871baab6df671f3",
168
+ "cleanupReceipt": {
169
+ "payload": {
170
+ "schema": "taskforce.executor-phase-a-approval-receipt-payload/v3",
171
+ "receiptId": "approval-receipt-cleanupgolden0001",
172
+ "issuer": "https://performance-app.taskforcehq.ai",
173
+ "audience": "taskforce-agent-executor-phase-a",
174
+ "environment": "performance",
175
+ "workspaceId": "workspace-019c771a-b6d7-7bc8-b837-c1133f3ba7a2",
176
+ "taskId": "task-62fecb296bbe07ca535b6e6630fc458f",
177
+ "taskReference": "T-1653",
178
+ "actorUserId": "user-02abc234def56789",
179
+ "runId": "phase-a-golden-0002",
180
+ "preflightSha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
181
+ "logicalEnvelopeSha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
182
+ "accountId": "123456789012",
183
+ "readPrincipalArn": "arn:aws:sts::123456789012:assumed-role/taskforce-phase-a-read/golden",
184
+ "mutationRoles": {
185
+ "bootstrap": "arn:aws:iam::123456789012:role/taskforce-phase-a-bootstrap",
186
+ "ami-build": "arn:aws:iam::123456789012:role/taskforce-phase-a-ami-build",
187
+ "provenance": "arn:aws:iam::123456789012:role/taskforce-phase-a-provenance",
188
+ "runtime": "arn:aws:iam::123456789012:role/taskforce-phase-a-runtime",
189
+ "cleanup": "arn:aws:iam::123456789012:role/taskforce-phase-a-cleanup"
190
+ },
191
+ "roleMapSha256": "6458f011cdb6e16971e797cab1b736b5e95df41795b54e3dba4e9af571f593b0",
192
+ "oidcIssuer": "https://phase-a-issuer.taskforcehq.ai",
193
+ "oidcAudience": "taskforce-agent-executor-phase-a",
194
+ "brokerPublicKeySpkiBase64": "MCowBQYDK2VwAyEAaT6jZmvWCBpuW1RZKO+YLOoH+OpN7zpRxaT+t5qozjE=",
195
+ "brokerKeyFingerprint": "5aeb974cc8feaf6f29fe953349d3bf7febd01a1ae9c467fd041ddaddae4337a1",
196
+ "region": "us-west-2",
197
+ "availabilityZone": "us-west-2a",
198
+ "budgets": {
199
+ "temporaryUsdMicros": 50000,
200
+ "alarmUsdMicros": 25000,
201
+ "foundationMonthlyCeilingUsdMicros": 100000000
202
+ },
203
+ "sourceCommit": "cccccccccccccccccccccccccccccccccccccccc",
204
+ "approvedAt": "2026-08-21T13:00:00Z",
205
+ "expiresAt": "2026-08-21T14:00:00Z",
206
+ "mutationDeadline": "2026-08-21T13:00:00Z",
207
+ "cleanupDeadline": "2026-08-21T15:00:00Z",
208
+ "receiptKind": "cleanup-only",
209
+ "originalCapabilityId": "run-capability-golden0002",
210
+ "residualInventorySha256": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
211
+ },
212
+ "envelope": {
213
+ "algorithm": "Ed25519",
214
+ "keyId": "phase-a-golden-2026",
215
+ "payloadSha256": "f31f1c6f00bced512d3679d8640787bb7810302c8f3b2f8f96f49efb8670157d",
216
+ "signature": "GM96-VWTmBHsGQ-r5ybg2Dscz0f6gwzjhNlB0VGqtp4GUYa25Sz-DDzShhx09TmjQQHntCjAdVkAYvgRUkiTAQ"
217
+ }
218
+ },
219
+ "cleanupReceiptSha256": "f7ce22acc6d0f2aaafb2ab43ce4d997e4870e9f0590db7e8fa867759ce653fa5",
220
+ "cleanupRunCapability": {
221
+ "payload": {
222
+ "schema": "taskforce.executor-phase-a-run-capability-payload/v1",
223
+ "capabilityId": "run-capability-cleanupgolden0001",
224
+ "capabilityKind": "cleanup-only",
225
+ "originalCapabilityId": "run-capability-golden0002",
226
+ "receiptId": "approval-receipt-cleanupgolden0001",
227
+ "receiptSha256": "f7ce22acc6d0f2aaafb2ab43ce4d997e4870e9f0590db7e8fa867759ce653fa5",
228
+ "workspaceId": "workspace-019c771a-b6d7-7bc8-b837-c1133f3ba7a2",
229
+ "taskId": "task-62fecb296bbe07ca535b6e6630fc458f",
230
+ "actorUserId": "user-02abc234def56789",
231
+ "runId": "phase-a-golden-0002",
232
+ "accountId": "123456789012",
233
+ "region": "us-west-2",
234
+ "availabilityZone": "us-west-2a",
235
+ "sourceCommit": "cccccccccccccccccccccccccccccccccccccccc",
236
+ "preflightSha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
237
+ "logicalEnvelopeSha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
238
+ "budgetsSha256": "6096abf53672347efaf50c60d7c444cc7b628103f090e69951821fe4cef1cbaf",
239
+ "readPrincipalArn": "arn:aws:sts::123456789012:assumed-role/taskforce-phase-a-read/golden",
240
+ "mutationRoles": {
241
+ "bootstrap": "arn:aws:iam::123456789012:role/taskforce-phase-a-bootstrap",
242
+ "ami-build": "arn:aws:iam::123456789012:role/taskforce-phase-a-ami-build",
243
+ "provenance": "arn:aws:iam::123456789012:role/taskforce-phase-a-provenance",
244
+ "runtime": "arn:aws:iam::123456789012:role/taskforce-phase-a-runtime",
245
+ "cleanup": "arn:aws:iam::123456789012:role/taskforce-phase-a-cleanup"
246
+ },
247
+ "roleMapSha256": "6458f011cdb6e16971e797cab1b736b5e95df41795b54e3dba4e9af571f593b0",
248
+ "oidcIssuer": "https://phase-a-issuer.taskforcehq.ai",
249
+ "oidcAudience": "taskforce-agent-executor-phase-a",
250
+ "brokerPublicKeySpkiBase64": "MCowBQYDK2VwAyEAaT6jZmvWCBpuW1RZKO+YLOoH+OpN7zpRxaT+t5qozjE=",
251
+ "brokerKeyFingerprint": "5aeb974cc8feaf6f29fe953349d3bf7febd01a1ae9c467fd041ddaddae4337a1",
252
+ "allowedPhases": [
253
+ "cleanup"
254
+ ],
255
+ "issuedAt": "2026-08-21T13:00:00Z",
256
+ "expiresAt": "2026-08-21T15:00:00Z",
257
+ "mutationDeadline": "2026-08-21T13:00:00Z",
258
+ "cleanupDeadline": "2026-08-21T15:00:00Z",
259
+ "residualInventorySha256": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
260
+ },
261
+ "envelope": {
262
+ "algorithm": "Ed25519",
263
+ "keyId": "phase-a-golden-2026",
264
+ "payloadSha256": "194c405f18c5d69edd8ea128158c7df991fa097f7f05751c5f9280881fce79cc",
265
+ "signature": "h2gZo7wxFiUx8era21j7aCX9cPWTMOyTzSmpvSONnJpLymjAfb1M41Dut3q1_-29DJXlow48F3b1QLjcrBoGAg"
266
+ }
267
+ },
268
+ "cleanupRunCapabilitySha256": "456f1d2cb28415ada9557b232f36be6f9b633e48511aadec3c5d9950831812fa"
269
+ }
@@ -0,0 +1,112 @@
1
+ export declare const EXECUTOR_PHASE_A_PREFLIGHT_SCHEMA: "taskforce.executor-phase-a-preflight-report/v3";
2
+ export declare const EXECUTOR_PHASE_A_RECEIPT_PAYLOAD_SCHEMA: "taskforce.executor-phase-a-approval-receipt-payload/v3";
3
+ export declare const EXECUTOR_PHASE_A_TRUST_POLICY_SCHEMA: "taskforce.executor-phase-a-approval-trust-policy/v1";
4
+ export declare const EXECUTOR_PHASE_A_MAX_PREFLIGHT_BYTES: number;
5
+ export declare const EXECUTOR_PHASE_A_MAX_PREFLIGHT_AGE_MS: number;
6
+ export declare const EXECUTOR_PHASE_A_RECEIPT_TTL_MS: number;
7
+ export declare const EXECUTOR_PHASE_A_ISSUANCE_REQUEST_SCHEMA: "taskforce.executor-phase-a-approval-issuance-request/v1";
8
+ export declare const EXECUTOR_PHASE_A_MUTATION_TTL_MS: number;
9
+ export declare const EXECUTOR_PHASE_A_ORDINARY_CLEANUP_TTL_MS: number;
10
+ export declare const EXECUTOR_PHASE_A_PHASES: readonly ["bootstrap", "ami-build", "provenance", "runtime", "cleanup"];
11
+ export type ExecutorPhaseAPhase = typeof EXECUTOR_PHASE_A_PHASES[number];
12
+ export type ExecutorPhaseARoleMap = Record<ExecutorPhaseAPhase, string>;
13
+ export interface ExecutorPhaseAApprovalTrustKey {
14
+ keyId: string;
15
+ publicKeySpkiBase64: string;
16
+ status: 'active' | 'retired' | 'disabled';
17
+ validFrom: string;
18
+ validUntil: string;
19
+ }
20
+ export interface ExecutorPhaseAApprovalTrustPolicy {
21
+ schema: typeof EXECUTOR_PHASE_A_TRUST_POLICY_SCHEMA;
22
+ issuer: string;
23
+ audience: string;
24
+ environment: 'performance';
25
+ workspaceId: string;
26
+ taskId: string;
27
+ taskReference: 'T-1653';
28
+ keys: ExecutorPhaseAApprovalTrustKey[];
29
+ }
30
+ export interface ExecutorPhaseAPreflight {
31
+ schema: typeof EXECUTOR_PHASE_A_PREFLIGHT_SCHEMA;
32
+ runId: string;
33
+ collectedAt: string;
34
+ expiresAt: string;
35
+ status: 'pass';
36
+ failures: [];
37
+ approvalContext: {
38
+ environment: 'performance';
39
+ workspaceId: string;
40
+ taskId: string;
41
+ taskReference: 'T-1653';
42
+ };
43
+ target: {
44
+ accountId: string;
45
+ readPrincipalArn: string;
46
+ mutationRoles: ExecutorPhaseARoleMap;
47
+ oidcIssuer: string;
48
+ oidcAudience: string;
49
+ brokerPublicKeySpkiBase64: string;
50
+ brokerKeyFingerprint: string;
51
+ region: 'us-west-2';
52
+ availabilityZone: string;
53
+ [key: string]: unknown;
54
+ };
55
+ source: {
56
+ commit: string;
57
+ baselineCommit: string;
58
+ clean: true;
59
+ };
60
+ budgets: {
61
+ temporaryUsdMicros: number;
62
+ alarmUsdMicros: number;
63
+ foundationMonthlyCeilingUsdMicros: number;
64
+ };
65
+ logicalEnvelopeSha256: string;
66
+ [key: string]: unknown;
67
+ }
68
+ export interface ExecutorPhaseAApprovalReceiptPayload {
69
+ schema: typeof EXECUTOR_PHASE_A_RECEIPT_PAYLOAD_SCHEMA;
70
+ receiptId: string;
71
+ receiptKind: 'main' | 'cleanup-only';
72
+ originalCapabilityId: string | null;
73
+ residualInventorySha256: string | null;
74
+ issuer: string;
75
+ audience: string;
76
+ environment: 'performance';
77
+ workspaceId: string;
78
+ taskId: string;
79
+ taskReference: 'T-1653';
80
+ actorUserId: string;
81
+ runId: string;
82
+ preflightSha256: string;
83
+ logicalEnvelopeSha256: string;
84
+ accountId: string;
85
+ readPrincipalArn: string;
86
+ mutationRoles: ExecutorPhaseARoleMap;
87
+ roleMapSha256: string;
88
+ oidcIssuer: string;
89
+ oidcAudience: string;
90
+ brokerPublicKeySpkiBase64: string;
91
+ brokerKeyFingerprint: string;
92
+ region: 'us-west-2';
93
+ availabilityZone: string;
94
+ budgets: ExecutorPhaseAPreflight['budgets'];
95
+ sourceCommit: string;
96
+ approvedAt: string;
97
+ expiresAt: string;
98
+ mutationDeadline: string;
99
+ cleanupDeadline: string;
100
+ }
101
+ export interface ExecutorPhaseAApprovalReceipt {
102
+ payload: ExecutorPhaseAApprovalReceiptPayload;
103
+ envelope: {
104
+ algorithm: 'Ed25519';
105
+ keyId: string;
106
+ payloadSha256: string;
107
+ signature: string;
108
+ };
109
+ }
110
+ /** RFC 8785/JCS bytes using ECMAScript JSON number and string serialization. */
111
+ export declare function canonicalizeExecutorPhaseAJson(value: unknown): Buffer;
112
+ export declare function sha256ExecutorPhaseABytes(bytes: Uint8Array): string;
@@ -0,0 +1,58 @@
1
+ import { createHash } from 'crypto';
2
+ export const EXECUTOR_PHASE_A_PREFLIGHT_SCHEMA = 'taskforce.executor-phase-a-preflight-report/v3';
3
+ export const EXECUTOR_PHASE_A_RECEIPT_PAYLOAD_SCHEMA = 'taskforce.executor-phase-a-approval-receipt-payload/v3';
4
+ export const EXECUTOR_PHASE_A_TRUST_POLICY_SCHEMA = 'taskforce.executor-phase-a-approval-trust-policy/v1';
5
+ export const EXECUTOR_PHASE_A_MAX_PREFLIGHT_BYTES = 256 * 1024;
6
+ export const EXECUTOR_PHASE_A_MAX_PREFLIGHT_AGE_MS = 60 * 60 * 1000;
7
+ export const EXECUTOR_PHASE_A_RECEIPT_TTL_MS = 60 * 60 * 1000;
8
+ export const EXECUTOR_PHASE_A_ISSUANCE_REQUEST_SCHEMA = 'taskforce.executor-phase-a-approval-issuance-request/v1';
9
+ export const EXECUTOR_PHASE_A_MUTATION_TTL_MS = 8 * 60 * 60 * 1000;
10
+ export const EXECUTOR_PHASE_A_ORDINARY_CLEANUP_TTL_MS = 10 * 60 * 60 * 1000;
11
+ export const EXECUTOR_PHASE_A_PHASES = [
12
+ 'bootstrap',
13
+ 'ami-build',
14
+ 'provenance',
15
+ 'runtime',
16
+ 'cleanup',
17
+ ];
18
+ function canonicalizeValue(value) {
19
+ if (value === null)
20
+ return 'null';
21
+ if (typeof value === 'string') {
22
+ if (/[\uD800-\uDFFF]/u.test(value.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/gu, ''))) {
23
+ throw new TypeError('Canonical JSON strings must contain valid Unicode scalar values.');
24
+ }
25
+ return JSON.stringify(value);
26
+ }
27
+ if (typeof value === 'boolean')
28
+ return JSON.stringify(value);
29
+ if (typeof value === 'number') {
30
+ if (!Number.isFinite(value))
31
+ throw new TypeError('Canonical JSON numbers must be finite.');
32
+ return JSON.stringify(value);
33
+ }
34
+ if (Array.isArray(value))
35
+ return `[${value.map(canonicalizeValue).join(',')}]`;
36
+ if (typeof value === 'object') {
37
+ const record = value;
38
+ const keys = Object.keys(record).sort();
39
+ return `{${keys.map((key) => {
40
+ if (/[\uD800-\uDFFF]/u.test(key.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/gu, ''))) {
41
+ throw new TypeError('Canonical JSON object keys must contain valid Unicode scalar values.');
42
+ }
43
+ const child = record[key];
44
+ if (child === undefined || typeof child === 'function' || typeof child === 'symbol' || typeof child === 'bigint') {
45
+ throw new TypeError(`Unsupported canonical JSON value at ${key}.`);
46
+ }
47
+ return `${JSON.stringify(key)}:${canonicalizeValue(child)}`;
48
+ }).join(',')}}`;
49
+ }
50
+ throw new TypeError('Unsupported canonical JSON value.');
51
+ }
52
+ /** RFC 8785/JCS bytes using ECMAScript JSON number and string serialization. */
53
+ export function canonicalizeExecutorPhaseAJson(value) {
54
+ return Buffer.from(canonicalizeValue(value), 'utf8');
55
+ }
56
+ export function sha256ExecutorPhaseABytes(bytes) {
57
+ return createHash('sha256').update(bytes).digest('hex');
58
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "schema": "taskforce.executor-phase-a-approval-trust-policy/v1",
3
+ "issuer": "https://performance-app.taskforcehq.ai",
4
+ "audience": "taskforce-agent-executor-phase-a",
5
+ "environment": "performance",
6
+ "workspaceId": "workspace-019c771a-b6d7-7bc8-b837-c1133f3ba7a2",
7
+ "taskId": "task-62fecb296bbe07ca535b6e6630fc458f",
8
+ "taskReference": "T-1653",
9
+ "keys": []
10
+ }
@@ -0,0 +1,37 @@
1
+ import { type KeyObject } from 'node:crypto';
2
+ import type { VerifiedExecutorPhaseARunCapability } from './executorPhaseARunAuthorization.js';
3
+ export declare const EXECUTOR_PHASE_A_DRIFT_REQUEST_PAYLOAD_SCHEMA: "taskforce.executor-phase-a-drift-request-payload/v1";
4
+ export declare const EXECUTOR_PHASE_A_DRIFT_REQUEST_TTL_MS = 60000;
5
+ export interface ExecutorPhaseADriftRequest {
6
+ payload: {
7
+ schema: typeof EXECUTOR_PHASE_A_DRIFT_REQUEST_PAYLOAD_SCHEMA;
8
+ requestId: string;
9
+ capabilityId: string;
10
+ capabilitySha256: string;
11
+ receiptId: string;
12
+ receiptSha256: string;
13
+ workspaceId: string;
14
+ taskId: string;
15
+ runId: string;
16
+ accountId: string;
17
+ region: 'us-west-2';
18
+ sourceCommit: string;
19
+ logicalEnvelopeSha256: string;
20
+ budgetsSha256: string;
21
+ issuedAt: string;
22
+ expiresAt: string;
23
+ };
24
+ envelope: {
25
+ algorithm: 'Ed25519';
26
+ keyId: string;
27
+ payloadSha256: string;
28
+ signature: string;
29
+ };
30
+ }
31
+ declare const verifiedDriftRequestBrand: unique symbol;
32
+ export type VerifiedExecutorPhaseADriftRequest = ExecutorPhaseADriftRequest & {
33
+ readonly [verifiedDriftRequestBrand]: true;
34
+ };
35
+ export declare function assertVerifiedExecutorPhaseADriftRequest(request: VerifiedExecutorPhaseADriftRequest): void;
36
+ export declare function verifyExecutorPhaseADriftRequest(request: ExecutorPhaseADriftRequest, capability: VerifiedExecutorPhaseARunCapability, cloudPublicKey: KeyObject, now?: Date): VerifiedExecutorPhaseADriftRequest;
37
+ export {};
@@ -0,0 +1,63 @@
1
+ import { createHash, verify } from 'node:crypto';
2
+ import { canonicalizeExecutorPhaseAJson } from './executorPhaseAApprovalReceipt.js';
3
+ import { assertExecutorPhaseASchema } from './executorPhaseASchemaValidation.js';
4
+ import { EXECUTOR_PHASE_A_CROSS_SERVICE_CLOCK_SKEW_MS } from './executorPhaseATiming.js';
5
+ export const EXECUTOR_PHASE_A_DRIFT_REQUEST_PAYLOAD_SCHEMA = 'taskforce.executor-phase-a-drift-request-payload/v1';
6
+ export const EXECUTOR_PHASE_A_DRIFT_REQUEST_TTL_MS = 60_000;
7
+ const verifiedDriftRequestBrand = Symbol('verifiedExecutorPhaseADriftRequest');
8
+ const verifiedDriftRequests = new WeakSet();
9
+ function deepFreeze(value) {
10
+ if (!value || typeof value !== 'object' || Object.isFrozen(value))
11
+ return value;
12
+ for (const child of Object.values(value))
13
+ deepFreeze(child);
14
+ return Object.freeze(value);
15
+ }
16
+ export function assertVerifiedExecutorPhaseADriftRequest(request) {
17
+ if (!request || typeof request !== 'object' || !verifiedDriftRequests.has(request)) {
18
+ throw new TypeError('The drift collector requires a runtime-verified request.');
19
+ }
20
+ }
21
+ function timestamp(value, field) {
22
+ const parsed = Date.parse(value);
23
+ if (!Number.isFinite(parsed))
24
+ throw new TypeError(`${field} is invalid.`);
25
+ return parsed;
26
+ }
27
+ export function verifyExecutorPhaseADriftRequest(request, capability, cloudPublicKey, now = new Date()) {
28
+ assertExecutorPhaseASchema('driftRequest', request);
29
+ if (cloudPublicKey.asymmetricKeyType !== 'ed25519')
30
+ throw new TypeError('The drift request key must be Ed25519.');
31
+ const payloadBytes = canonicalizeExecutorPhaseAJson(request.payload);
32
+ const signature = Buffer.from(request.envelope.signature, 'base64url');
33
+ const issuedAt = timestamp(request.payload.issuedAt, 'driftRequest.issuedAt');
34
+ const expiresAt = timestamp(request.payload.expiresAt, 'driftRequest.expiresAt');
35
+ const nowMs = now.getTime();
36
+ const capabilitySha256 = createHash('sha256').update(canonicalizeExecutorPhaseAJson(capability)).digest('hex');
37
+ const payload = capability.payload;
38
+ if (request.envelope.payloadSha256 !== createHash('sha256').update(payloadBytes).digest('hex')
39
+ || signature.length !== 64 || signature.toString('base64url') !== request.envelope.signature
40
+ || !verify(null, payloadBytes, cloudPublicKey, signature)
41
+ || issuedAt > nowMs + EXECUTOR_PHASE_A_CROSS_SERVICE_CLOCK_SKEW_MS
42
+ || nowMs >= expiresAt + EXECUTOR_PHASE_A_CROSS_SERVICE_CLOCK_SKEW_MS
43
+ || expiresAt <= issuedAt
44
+ || expiresAt - issuedAt > EXECUTOR_PHASE_A_DRIFT_REQUEST_TTL_MS
45
+ || request.payload.capabilityId !== payload.capabilityId
46
+ || request.payload.capabilitySha256 !== capabilitySha256
47
+ || request.payload.receiptId !== payload.receiptId
48
+ || request.payload.receiptSha256 !== payload.receiptSha256
49
+ || request.payload.workspaceId !== payload.workspaceId
50
+ || request.payload.taskId !== payload.taskId
51
+ || request.payload.runId !== payload.runId
52
+ || request.payload.accountId !== payload.accountId
53
+ || request.payload.region !== payload.region
54
+ || request.payload.sourceCommit !== payload.sourceCommit
55
+ || request.payload.logicalEnvelopeSha256 !== payload.logicalEnvelopeSha256
56
+ || request.payload.budgetsSha256 !== payload.budgetsSha256) {
57
+ throw new TypeError('The drift request is stale, forged, or bound to another run capability.');
58
+ }
59
+ const verified = Object.assign(structuredClone(request), { [verifiedDriftRequestBrand]: true });
60
+ deepFreeze(verified);
61
+ verifiedDriftRequests.add(verified);
62
+ return verified;
63
+ }
@@ -0,0 +1,75 @@
1
+ import { type KeyObject } from 'node:crypto';
2
+ import { type ExecutorPhaseAApprovalReceipt } from './executorPhaseAApprovalReceipt.js';
3
+ import { type ExecutorPhaseARunCapability, type ExecutorPhaseASenderProof, type ExecutorPhaseAWorkloadGrant } from './executorPhaseARunAuthorization.js';
4
+ export declare const EXECUTOR_PHASE_A_ISSUER_REDEMPTION_PATH: "/api/taskforce/internal/executor/phase-a/redemptions";
5
+ export declare const EXECUTOR_PHASE_A_ISSUER_REDEMPTION_REQUEST_SCHEMA: "taskforce.executor-phase-a-issuer-redemption-request/v1";
6
+ export declare const EXECUTOR_PHASE_A_ISSUER_PROOF_PAYLOAD_SCHEMA: "taskforce.executor-phase-a-issuer-proof-payload/v1";
7
+ export declare const EXECUTOR_PHASE_A_ISSUER_PROOF_SCHEMA: "taskforce.executor-phase-a-issuer-proof/v1";
8
+ export declare const EXECUTOR_PHASE_A_ISSUER_PROOF_TYPE: "TF-ISSUER-PROOF";
9
+ export declare const EXECUTOR_PHASE_A_ISSUER_REDEMPTION_RESPONSE_PAYLOAD_SCHEMA: "taskforce.executor-phase-a-issuer-redemption-response-payload/v1";
10
+ export declare const EXECUTOR_PHASE_A_ISSUER_PROOF_DOMAIN: Buffer<ArrayBuffer>;
11
+ export declare const EXECUTOR_PHASE_A_ISSUER_PROOF_TTL_MS = 60000;
12
+ export interface ExecutorPhaseAIssuerProofPayload {
13
+ schema: typeof EXECUTOR_PHASE_A_ISSUER_PROOF_PAYLOAD_SCHEMA;
14
+ method: 'POST';
15
+ path: typeof EXECUTOR_PHASE_A_ISSUER_REDEMPTION_PATH;
16
+ requestSha256: string;
17
+ grantId: string;
18
+ grantSha256: string;
19
+ senderProofSha256: string;
20
+ requestId: string;
21
+ issuedAt: string;
22
+ expiresAt: string;
23
+ }
24
+ export interface ExecutorPhaseAIssuerProof {
25
+ payload: ExecutorPhaseAIssuerProofPayload;
26
+ envelope: {
27
+ schema: typeof EXECUTOR_PHASE_A_ISSUER_PROOF_SCHEMA;
28
+ typ: typeof EXECUTOR_PHASE_A_ISSUER_PROOF_TYPE;
29
+ algorithm: 'RS256';
30
+ keyId: string;
31
+ payloadSha256: string;
32
+ signature: string;
33
+ };
34
+ }
35
+ export interface ExecutorPhaseAIssuerRedemptionRequest {
36
+ schema: typeof EXECUTOR_PHASE_A_ISSUER_REDEMPTION_REQUEST_SCHEMA;
37
+ requestId: string;
38
+ approvalReceipt: ExecutorPhaseAApprovalReceipt;
39
+ runCapability: ExecutorPhaseARunCapability;
40
+ workloadGrant: ExecutorPhaseAWorkloadGrant;
41
+ senderProof: ExecutorPhaseASenderProof;
42
+ brokerRequestSha256: string;
43
+ expectedPolicySha256: string;
44
+ issuerProof: ExecutorPhaseAIssuerProof;
45
+ }
46
+ export interface ExecutorPhaseAIssuerRedemptionResponsePayload {
47
+ schema: typeof EXECUTOR_PHASE_A_ISSUER_REDEMPTION_RESPONSE_PAYLOAD_SCHEMA;
48
+ decision: 'redeemed';
49
+ requestId: string;
50
+ grantId: string;
51
+ grantSha256: string;
52
+ senderProofSha256: string;
53
+ auditSha256: string;
54
+ redeemedAt: string;
55
+ }
56
+ export interface ExecutorPhaseAIssuerRedemptionResponse {
57
+ payload: ExecutorPhaseAIssuerRedemptionResponsePayload;
58
+ envelope: {
59
+ algorithm: 'Ed25519';
60
+ keyId: string;
61
+ payloadSha256: string;
62
+ signature: string;
63
+ };
64
+ }
65
+ export interface ExecutorPhaseAIssuerProofTrustKey {
66
+ keyId: string;
67
+ publicKeySpkiBase64: string;
68
+ status: 'active' | 'retiring' | 'disabled';
69
+ validFrom: string;
70
+ validUntil: string;
71
+ }
72
+ export declare function executorPhaseAIssuerRedemptionIntentSha256(request: Pick<ExecutorPhaseAIssuerRedemptionRequest, 'requestId' | 'approvalReceipt' | 'runCapability' | 'workloadGrant' | 'senderProof' | 'brokerRequestSha256' | 'expectedPolicySha256'>): string;
73
+ export declare function executorPhaseAIssuerProofSignedBytes(payload: ExecutorPhaseAIssuerProofPayload): Buffer;
74
+ export declare function verifyExecutorPhaseAIssuerProof(request: ExecutorPhaseAIssuerRedemptionRequest, trustedKeys: readonly ExecutorPhaseAIssuerProofTrustKey[], now?: Date): KeyObject;
75
+ export declare function executorPhaseAIssuerRedemptionAuditSha256(payload: Omit<ExecutorPhaseAIssuerRedemptionResponsePayload, 'schema' | 'decision' | 'auditSha256'>): string;