@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
package/README.md CHANGED
@@ -68,12 +68,17 @@ To confirm which workspace Taskforce is using:
68
68
  taskforce status
69
69
  ```
70
70
 
71
- To connect a local AI client through MCP, start the MCP server from the same workspace:
71
+ To connect a local AI client through MCP, run the MCP entrypoint from the same workspace:
72
72
 
73
73
  ```bash
74
74
  taskforce mcp
75
75
  ```
76
76
 
77
+ The command is a thin stdio adapter for the shared local Taskforce service. Multiple
78
+ local AI clients and `taskforce open` reuse one service process, which remains the sole
79
+ owner of the workspace SQLite database and local sync executor. Client configuration
80
+ does not require a streaming option or a cloud token.
81
+
77
82
  ## What Taskforce Includes
78
83
 
79
84
  ### Task Management
@@ -115,7 +120,7 @@ taskforce mcp
115
120
 
116
121
  Taskforce includes built-in MCP support so AI clients can work directly with your workspace.
117
122
 
118
- Local MCP is for AI clients running on the same machine as your workspace. It does not require a cloud token.
123
+ Local MCP is for AI clients running on the same machine as your workspace. It does not require a cloud token. Generated configurations use a shared-proxy stdio entrypoint; the Global CLI configuration launches `taskforce mcp`, while Local / npx configurations launch the corresponding packaged or source entrypoint. Each discovers or starts the same shared local service and forwards stdio MCP messages to it. Use `taskforce service status <project>` to inspect that service and `taskforce service stop <project> --drain` for a routine administrative stop after active clients disconnect.
119
124
 
120
125
  Cloud MCP is for hosted remote clients and uses token-based access.
121
126
 
@@ -4507,7 +4507,10 @@ button.projectName:focus-visible {
4507
4507
  background: #1e1e2e !important;
4508
4508
  padding: 14px 16px !important;
4509
4509
  border: none !important;
4510
- overflow-x: auto;
4510
+ overflow-x: hidden;
4511
+ white-space: pre-wrap;
4512
+ overflow-wrap: anywhere;
4513
+ word-break: break-word;
4511
4514
  border-radius: 0 !important;
4512
4515
  }
4513
4516
 
@@ -5626,6 +5629,246 @@ button.projectName:focus-visible {
5626
5629
  display: none;
5627
5630
  }
5628
5631
 
5632
+ .taskforceModelConnectionsRoot {
5633
+ display: grid;
5634
+ grid-template-columns: minmax(230px, 280px) minmax(0, 1fr);
5635
+ width: 100%;
5636
+ min-height: 0;
5637
+ }
5638
+
5639
+ .taskforceModelConnectionsRootExternalLibrary {
5640
+ grid-template-columns: minmax(0, 1fr);
5641
+ }
5642
+
5643
+ .taskforceModelConnectionsWorkspace {
5644
+ display: grid;
5645
+ gap: 1rem;
5646
+ width: min(100%, 920px);
5647
+ min-width: 0;
5648
+ padding: 18px clamp(18px, 3vw, 32px);
5649
+ box-sizing: border-box;
5650
+ align-content: start;
5651
+ }
5652
+
5653
+ .taskforceModelConnectionsHeader,
5654
+ .taskforceModelConnectionCardHeader,
5655
+ .taskforceModelConnectionActions,
5656
+ .taskforceModelConnectionCodeRow,
5657
+ .taskforceAgentConnectionControlHeader,
5658
+ .taskforceAgentConnectionBindingRow,
5659
+ .taskforceAgentConnectionCallout {
5660
+ display: flex;
5661
+ align-items: center;
5662
+ gap: 0.75rem;
5663
+ }
5664
+
5665
+ .taskforceModelConnectionsHeader,
5666
+ .taskforceModelConnectionCardHeader,
5667
+ .taskforceAgentConnectionControlHeader,
5668
+ .taskforceAgentConnectionCallout {
5669
+ justify-content: space-between;
5670
+ }
5671
+
5672
+ .taskforceModelConnectionsHeader > div,
5673
+ .taskforceModelConnectionCardHeader > div {
5674
+ display: grid;
5675
+ gap: 0.25rem;
5676
+ min-width: 0;
5677
+ }
5678
+
5679
+ .taskforceModelConnectionNameRow,
5680
+ .taskforceModelConnectionNameEditor {
5681
+ display: flex;
5682
+ align-items: center;
5683
+ gap: 0.375rem;
5684
+ min-width: 0;
5685
+ }
5686
+
5687
+ .taskforceModelConnectionCardHeader > .taskforceModelConnectionIdentity {
5688
+ display: flex;
5689
+ align-items: center;
5690
+ gap: 0.75rem;
5691
+ }
5692
+
5693
+ .taskforceModelConnectionIdentityText {
5694
+ display: grid;
5695
+ gap: 0.25rem;
5696
+ min-width: 0;
5697
+ }
5698
+
5699
+ .taskforceModelConnectionLogo {
5700
+ display: inline-flex;
5701
+ flex: 0 0 auto;
5702
+ width: 2.25rem;
5703
+ height: 2.25rem;
5704
+ align-items: center;
5705
+ justify-content: center;
5706
+ border: 1px solid var(--border-default);
5707
+ border-radius: var(--radius-md);
5708
+ background: var(--surface-elevated);
5709
+ }
5710
+
5711
+ .taskforceModelConnectionLogo img {
5712
+ display: block;
5713
+ width: 1.5rem;
5714
+ height: 1.5rem;
5715
+ object-fit: contain;
5716
+ }
5717
+
5718
+ .taskforceModelConnectionNameRow strong {
5719
+ overflow: hidden;
5720
+ text-overflow: ellipsis;
5721
+ white-space: nowrap;
5722
+ }
5723
+
5724
+ .taskforceModelConnectionNameEditor .input {
5725
+ min-width: 12rem;
5726
+ max-width: 24rem;
5727
+ }
5728
+
5729
+ .taskforceModelConnectionCard,
5730
+ .taskforceAgentConnectionControl {
5731
+ display: grid;
5732
+ gap: 0.75rem;
5733
+ padding: 1rem;
5734
+ border: 1px solid var(--border-default);
5735
+ border-radius: var(--radius-md);
5736
+ background: var(--surface-panel);
5737
+ }
5738
+
5739
+ .taskforceModelConnectionLogin {
5740
+ border-color: var(--status-warning);
5741
+ background: var(--surface-elevated);
5742
+ }
5743
+
5744
+ .taskforceModelConnectionCardHeader strong,
5745
+ .taskforceAgentConnectionControlHeader strong,
5746
+ .taskforceAgentConnectionControl > div:first-child strong {
5747
+ color: var(--text-title);
5748
+ font-size: 0.875rem;
5749
+ }
5750
+
5751
+ .taskforceModelConnectionCardHeader > div > span,
5752
+ .taskforceAgentConnectionControl > span,
5753
+ .taskforceAgentConnectionCallout > span,
5754
+ .taskforceModelConnectionsEmpty > span {
5755
+ color: var(--text-helper);
5756
+ font-size: 0.75rem;
5757
+ line-height: 1.45;
5758
+ }
5759
+
5760
+ .taskforceModelConnectionMeta {
5761
+ display: flex;
5762
+ flex-wrap: wrap;
5763
+ gap: 0.5rem 1rem;
5764
+ color: var(--text-secondary);
5765
+ font-size: 0.75rem;
5766
+ }
5767
+
5768
+ .taskforceModelConnectionActions {
5769
+ flex-wrap: wrap;
5770
+ }
5771
+
5772
+ .taskforceModelConnectionCodeRow {
5773
+ flex-wrap: wrap;
5774
+ }
5775
+
5776
+ .taskforceModelConnectionCodeRow code {
5777
+ min-width: 9rem;
5778
+ padding: 0.625rem 0.875rem;
5779
+ border: 1px solid var(--border-strong);
5780
+ border-radius: var(--radius-md);
5781
+ background: var(--surface-inset);
5782
+ color: var(--text-title);
5783
+ font-size: 1rem;
5784
+ font-weight: 700;
5785
+ text-align: center;
5786
+ }
5787
+
5788
+ .taskforceModelConnectionsLoading,
5789
+ .taskforceModelConnectionsEmpty {
5790
+ min-height: 12rem;
5791
+ display: flex;
5792
+ align-items: center;
5793
+ justify-content: center;
5794
+ color: var(--text-secondary);
5795
+ }
5796
+
5797
+ .taskforceModelConnectionsEmpty {
5798
+ flex-direction: column;
5799
+ gap: 0.5rem;
5800
+ border: 1px dashed var(--border-default);
5801
+ border-radius: var(--radius-md);
5802
+ background: var(--surface-inset);
5803
+ text-align: center;
5804
+ }
5805
+
5806
+ .taskforceModelConnectionsEmpty strong {
5807
+ color: var(--text-title);
5808
+ font-size: 0.875rem;
5809
+ }
5810
+
5811
+ .taskforceAgentConnectionControl {
5812
+ margin-top: 0.75rem;
5813
+ background: var(--surface-inset);
5814
+ }
5815
+
5816
+ .taskforceAgentConnectionControl > div:first-child,
5817
+ .taskforceAgentConnectionControlHeader > div {
5818
+ display: flex;
5819
+ align-items: center;
5820
+ gap: 0.5rem;
5821
+ }
5822
+
5823
+ .taskforceAgentConnectionBindingRow {
5824
+ align-items: flex-end;
5825
+ flex-wrap: wrap;
5826
+ }
5827
+
5828
+ .taskforceAgentConnectionBindingRow > label {
5829
+ flex: 1 1 16rem;
5830
+ }
5831
+
5832
+ @media (max-width: 720px) {
5833
+ .taskforceModelConnectionsRoot {
5834
+ grid-template-columns: minmax(0, 1fr);
5835
+ }
5836
+
5837
+ .taskforceModelConnectionsHeader,
5838
+ .taskforceModelConnectionCardHeader,
5839
+ .taskforceAgentConnectionControlHeader,
5840
+ .taskforceAgentConnectionCallout {
5841
+ align-items: stretch;
5842
+ flex-direction: column;
5843
+ }
5844
+
5845
+ .taskforceModelConnectionActions > button,
5846
+ .taskforceModelConnectionCodeRow > a,
5847
+ .taskforceModelConnectionCodeRow > button,
5848
+ .taskforceAgentConnectionBindingRow > button,
5849
+ .taskforceAgentConnectionCallout > button,
5850
+ .taskforceModelConnectionsHeader > button,
5851
+ .taskforceModelConnectionsWorkspace > .taskforceAgentTestError > button,
5852
+ .taskforceModelConnectionsWorkspace > .taskforceAgentTestNotice > button {
5853
+ flex: 1 1 auto;
5854
+ min-height: 44px;
5855
+ }
5856
+
5857
+ .taskforceModelConnectionsWorkspace > .taskforceAgentTestError,
5858
+ .taskforceModelConnectionsWorkspace > .taskforceAgentTestNotice {
5859
+ flex-wrap: wrap;
5860
+ }
5861
+
5862
+ .taskforceModelConnectionsWorkspace > .taskforceAgentTestError > span,
5863
+ .taskforceModelConnectionsWorkspace > .taskforceAgentTestNotice > span {
5864
+ flex: 1 1 calc(100% - 24px);
5865
+ }
5866
+
5867
+ .taskforceModelConnectionCodeRow > :global(button.tf-control-icon) {
5868
+ min-width: 44px;
5869
+ }
5870
+ }
5871
+
5629
5872
  .taskforceAgentBuilderEmpty {
5630
5873
  min-height: min(420px, 58vh);
5631
5874
  display: flex;
@@ -6084,7 +6327,7 @@ button.projectName:focus-visible {
6084
6327
  min-width: 0;
6085
6328
  }
6086
6329
 
6087
- .taskforceAgentOutputPanel {
6330
+ .taskforceAgentHeaderTestPanel {
6088
6331
  display: flex;
6089
6332
  flex-direction: column;
6090
6333
  gap: 10px;
@@ -6095,31 +6338,22 @@ button.projectName:focus-visible {
6095
6338
  padding: 12px;
6096
6339
  }
6097
6340
 
6098
- .taskforceAgentTestTitle {
6099
- display: flex;
6100
- align-items: center;
6101
- gap: 10px;
6102
- min-width: 0;
6103
- }
6104
-
6105
- .taskforceAgentTestTitle .taskforceAgentBuilderEmptyIcon {
6106
- width: 36px;
6107
- height: 36px;
6108
- flex: 0 0 auto;
6341
+ .taskforceAgentTestComposer {
6342
+ display: grid;
6343
+ grid-template-columns: minmax(0, 1fr) auto;
6344
+ align-items: end;
6345
+ gap: 8px;
6109
6346
  }
6110
6347
 
6111
- .taskforceAgentTestTitle > div {
6112
- display: flex;
6113
- flex-direction: column;
6114
- gap: 2px;
6115
- min-width: 0;
6348
+ .taskforceAgentTestComposer textarea {
6349
+ min-height: 92px;
6350
+ resize: vertical;
6116
6351
  }
6117
6352
 
6118
- .taskforceAgentTestTitle p {
6119
- margin: 0;
6120
- color: var(--text-secondary);
6121
- font-size: 11px;
6122
- line-height: 1.4;
6353
+ .taskforceAgentTestSendButton {
6354
+ width: 36px;
6355
+ height: 36px;
6356
+ margin-bottom: 0;
6123
6357
  }
6124
6358
 
6125
6359
  .taskforceAgentTestNotice,
@@ -6153,19 +6387,13 @@ button.projectName:focus-visible {
6153
6387
  color: var(--status-error);
6154
6388
  }
6155
6389
 
6156
- .taskforceAgentTestPending svg {
6157
- color: var(--accent-primary);
6158
- }
6159
-
6160
- .taskforceAgentTestActions {
6161
- display: flex;
6162
- justify-content: flex-end;
6163
- flex-wrap: wrap;
6164
- gap: 8px;
6390
+ .taskforceAgentRetryButton {
6391
+ flex: 0 0 auto;
6392
+ margin-left: auto;
6165
6393
  }
6166
6394
 
6167
- .taskforceAgentTestActions > button:first-child {
6168
- margin-right: auto;
6395
+ .taskforceAgentTestPending svg {
6396
+ color: var(--accent-primary);
6169
6397
  }
6170
6398
 
6171
6399
  .taskforceAgentTestRestriction {
@@ -6373,17 +6601,6 @@ button.projectName:focus-visible {
6373
6601
  padding: 12px 0;
6374
6602
  }
6375
6603
 
6376
- .taskforceAgentSignatureColorField > div:first-child {
6377
- display: flex;
6378
- flex-direction: column;
6379
- gap: 3px;
6380
- }
6381
-
6382
- .taskforceAgentSignatureColorField small {
6383
- color: var(--text-helper);
6384
- font-size: 11px;
6385
- }
6386
-
6387
6604
  .taskforceAgentSignatureColorField .aiProfileColorPicker {
6388
6605
  justify-content: flex-start;
6389
6606
  margin-top: 0;
@@ -6534,6 +6751,34 @@ button.projectName:focus-visible {
6534
6751
  background: color-mix(in srgb, var(--input-bg) 72%, transparent);
6535
6752
  }
6536
6753
 
6754
+ .taskforceAgentToolCopyButton {
6755
+ grid-column: 1 / -1;
6756
+ justify-self: end;
6757
+ display: inline-flex;
6758
+ align-items: center;
6759
+ gap: 5px;
6760
+ min-height: 26px;
6761
+ padding: 4px 7px;
6762
+ border: 1px solid var(--border-primary);
6763
+ border-radius: var(--radius-sm, 6px);
6764
+ background: var(--button-bg, var(--input-bg));
6765
+ color: var(--text-secondary);
6766
+ cursor: pointer;
6767
+ }
6768
+
6769
+ .taskforceAgentToolCopyButton:hover {
6770
+ color: var(--text-primary);
6771
+ border-color: var(--border-secondary, var(--border-primary));
6772
+ }
6773
+
6774
+ .taskforceAgentToolCopyButton span {
6775
+ color: currentColor;
6776
+ font-size: 11px;
6777
+ font-weight: 600;
6778
+ letter-spacing: 0;
6779
+ text-transform: none;
6780
+ }
6781
+
6537
6782
  .taskforceAgentToolDetailsGrid span {
6538
6783
  color: var(--text-helper);
6539
6784
  font-size: 10px;
@@ -11,9 +11,8 @@ import { buildVersionedAvatarUrl } from '../../utils/avatarDisplay';
11
11
  import { getAiProfileDefaultLogoUrl } from '../../utils/aiProfileDefaultLogo';
12
12
  import { dispatchTaskforceAiProfilesMutated, TASKFORCE_AI_PROFILES_MUTATED_EVENT, } from '../../utils/aiProfileEvents';
13
13
  import { getTaskforceManagedAgentId, isAiProfileAvatarGenerationEligible, } from '../../shared/aiProfileAvatarEligibility.js';
14
- import { AI_PROFILE_COLOR_TOKENS } from '../../shared/aiProfileColors.js';
14
+ import { AI_PROFILE_SIGNATURE_COLOR_OPTIONS } from '../../shared/aiProfileColors.js';
15
15
  import { AiIdentityRosterCard } from '../ui/AiIdentityRosterCard.js';
16
- import { COLOR_PALETTE } from '../../shared/colorPalette.js';
17
16
  import { AI_PROFILE_SURFACE_TYPES, formatAiProfileSurfaceTypeLabel, formatAiProfileSurfaceTypeSectionLabel, getAiProfileSurfaceTypeSection, parseAiProfileSurfaceType } from '../../shared/aiProfileSurfaceType.js';
18
17
  import { formatAiProfileSeatScopeLabel, parseAiProfileSeatScope } from '../../shared/aiProfileSeatScope.js';
19
18
  const AI_PROFILE_DISPLAY_SECTION_ORDER = [
@@ -716,9 +715,8 @@ export function AiProfilesModule({ workspaceId, runtimeMode = 'local', cloudAuth
716
715
  setAiAvatarError(null);
717
716
  setAiAvatarNotice(null);
718
717
  setAvatarEditorProfileId(selectedGroup.primaryProfile.id);
719
- } }), _jsxs("div", { className: styles.aiProfileDetailHeading, children: [_jsx("div", { className: styles.aiProfileDetailTitleRow, children: _jsx("h5", { className: styles.aiProfileDetailTitle, children: selectedGroup.primaryProfile.name }) }), _jsxs("div", { className: styles.aiProfileDetailMetaRow, children: [_jsxs("span", { className: styles.aiProfileDetailHandle, children: ["@", selectedGroup.primaryProfile.username] }), selectedGroup.profiles.length > 1 && (_jsxs("span", { className: styles.aiProfileDetailLinkedCount, children: [selectedGroup.profiles.length, " linked"] }))] }), _jsxs("div", { className: styles.aiProfileDetailRole, children: ["Role: ", selectedGroup.primaryProfile.role || 'Not set'] }), selectedGroup.primaryProfile.description && (_jsx("div", { className: styles.aiProfileDetailDescription, children: selectedGroup.primaryProfile.description })), _jsxs("div", { className: styles.aiProfileSignatureColor, children: [_jsx("span", { children: "Signature color" }), _jsxs("button", { type: "button", className: styles.aiProfileSignatureColorButton, onClick: () => setColorPickerOpen((open) => !open), disabled: colorBusy, "aria-expanded": colorPickerOpen, "aria-label": "Change signature color", children: [_jsx("span", { className: styles.aiProfileSignatureSwatch, style: { backgroundColor: selectedGroup.primaryProfile.color }, "aria-hidden": "true" }), _jsx("span", { children: selectedGroup.primaryProfile.color })] })] }), colorPickerOpen && (_jsxs("div", { className: styles.aiProfileColorPicker, "aria-label": "Signature color options", children: [AI_PROFILE_COLOR_TOKENS.map((token) => {
720
- const color = COLOR_PALETTE[token];
721
- return _jsx("button", { type: "button", className: styles.aiProfileColorOption, style: { backgroundColor: color }, "aria-label": `Use ${token}`, "aria-pressed": selectedGroup.primaryProfile.color.toLowerCase() === color.toLowerCase(), disabled: colorBusy, onClick: () => { void handleColorChange(selectedGroup, color); } }, token);
718
+ } }), _jsxs("div", { className: styles.aiProfileDetailHeading, children: [_jsx("div", { className: styles.aiProfileDetailTitleRow, children: _jsx("h5", { className: styles.aiProfileDetailTitle, children: selectedGroup.primaryProfile.name }) }), _jsxs("div", { className: styles.aiProfileDetailMetaRow, children: [_jsxs("span", { className: styles.aiProfileDetailHandle, children: ["@", selectedGroup.primaryProfile.username] }), selectedGroup.profiles.length > 1 && (_jsxs("span", { className: styles.aiProfileDetailLinkedCount, children: [selectedGroup.profiles.length, " linked"] }))] }), _jsxs("div", { className: styles.aiProfileDetailRole, children: ["Role: ", selectedGroup.primaryProfile.role || 'Not set'] }), selectedGroup.primaryProfile.description && (_jsx("div", { className: styles.aiProfileDetailDescription, children: selectedGroup.primaryProfile.description })), _jsxs("div", { className: styles.aiProfileSignatureColor, children: [_jsx("span", { children: "Signature color" }), _jsxs("button", { type: "button", className: styles.aiProfileSignatureColorButton, onClick: () => setColorPickerOpen((open) => !open), disabled: colorBusy, "aria-expanded": colorPickerOpen, "aria-label": "Change signature color", children: [_jsx("span", { className: styles.aiProfileSignatureSwatch, style: { backgroundColor: selectedGroup.primaryProfile.color }, "aria-hidden": "true" }), _jsx("span", { children: selectedGroup.primaryProfile.color })] })] }), colorPickerOpen && (_jsxs("div", { className: styles.aiProfileColorPicker, "aria-label": "Signature color options", children: [AI_PROFILE_SIGNATURE_COLOR_OPTIONS.map(({ name, value: color }) => {
719
+ return _jsx("button", { type: "button", className: styles.aiProfileColorOption, style: { backgroundColor: color }, "aria-label": `Use ${name}`, "aria-pressed": selectedGroup.primaryProfile.color.toLowerCase() === color.toLowerCase(), disabled: colorBusy, onClick: () => { void handleColorChange(selectedGroup, color); } }, color);
722
720
  }), _jsx("button", { type: "button", className: styles.secondaryHeaderBtn, disabled: colorBusy, onClick: () => { void handleColorChange(selectedGroup, undefined, true); }, children: "Reset" })] })), colorError && _jsx("div", { className: styles.aiProfileInlineError, children: colorError })] })] }), _jsxs("div", { className: styles.aiProfileDetailDataList, children: [_jsx("div", { className: styles.aiProfileDetailDataGroup, children: selectedProfileDataGroups.attributes.map((row) => (_jsxs("div", { className: styles.aiProfileDetailDataRow, children: [_jsx("span", { className: styles.aiProfileDetailDataLabel, children: row.label }), row.label === 'Category' && !isTaskforceManagedAiProfile(selectedGroup.primaryProfile) ? (_jsx("span", { className: styles.aiProfileDetailDataValue, children: _jsxs("select", { className: styles.aiProfileStatusSelect, "aria-label": "Agent category", value: selectedGroup.primaryProfile.surfaceType ?? '', disabled: aiProfileCategoryBusy, onChange: (event) => {
723
721
  void handleCategoryChange(selectedGroup, event.target.value);
724
722
  }, children: [_jsx("option", { value: "", children: "Unclassified" }), AI_PROFILE_SURFACE_TYPES.map((surfaceType) => (_jsx("option", { value: surfaceType, children: formatAiProfileSurfaceTypeLabel(surfaceType) }, surfaceType)))] }) })) : (_jsx("span", { className: styles.aiProfileDetailDataValue, children: row.value }))] }, row.label))) }), _jsx("div", { className: `${styles.aiProfileDetailDataGroup} ${styles.aiProfileDetailDateGroup}`, children: selectedProfileDataGroups.dates.map((row) => (_jsxs("div", { className: styles.aiProfileDetailDataRow, children: [_jsx("span", { className: styles.aiProfileDetailDataLabel, children: row.label }), row.label === 'Status' ? (_jsx("span", { className: styles.aiProfileDetailDataValue, children: _jsxs("select", { className: styles.aiProfileStatusSelect, "aria-label": "Agent roster status", value: selectedGroup.primaryProfile.archivedAt ? 'retired' : 'active', onChange: (event) => {