@xenosystem/agent-interface-ui 0.1.25 → 0.1.27

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 (380) hide show
  1. package/dist/adapters/agentHostPlatformBridge.d.ts.map +1 -1
  2. package/dist/adapters/agentHostPlatformBridge.js +96 -16
  3. package/dist/adapters/agentHostPlatformBridge.js.map +1 -1
  4. package/dist/adapters/hubAgentPlatformBridge.d.ts.map +1 -1
  5. package/dist/adapters/hubAgentPlatformBridge.js +2 -0
  6. package/dist/adapters/hubAgentPlatformBridge.js.map +1 -1
  7. package/dist/adapters/scopedBackupBridge.d.ts +4 -0
  8. package/dist/adapters/scopedBackupBridge.d.ts.map +1 -0
  9. package/dist/adapters/scopedBackupBridge.js +49 -0
  10. package/dist/adapters/scopedBackupBridge.js.map +1 -0
  11. package/dist/adapters/xenoAgentCompatibilityBridge.d.ts.map +1 -1
  12. package/dist/adapters/xenoAgentCompatibilityBridge.js +9 -1
  13. package/dist/adapters/xenoAgentCompatibilityBridge.js.map +1 -1
  14. package/dist/agent.css +13227 -0
  15. package/dist/components/agent/AgentIdentityGenerator.d.ts +16 -0
  16. package/dist/components/agent/AgentIdentityGenerator.d.ts.map +1 -0
  17. package/dist/components/agent/AgentIdentityGenerator.js +80 -0
  18. package/dist/components/agent/AgentIdentityGenerator.js.map +1 -0
  19. package/dist/components/agent/AgentInterface.d.ts +1 -0
  20. package/dist/components/agent/AgentInterface.d.ts.map +1 -1
  21. package/dist/components/agent/AgentInterface.js +1816 -643
  22. package/dist/components/agent/AgentInterface.js.map +1 -1
  23. package/dist/components/agent/AgentNotificationBanner.d.ts +10 -0
  24. package/dist/components/agent/AgentNotificationBanner.d.ts.map +1 -0
  25. package/dist/components/agent/AgentNotificationBanner.js +28 -0
  26. package/dist/components/agent/AgentNotificationBanner.js.map +1 -0
  27. package/dist/components/agent/AgentOnboarding.d.ts +16 -2
  28. package/dist/components/agent/AgentOnboarding.d.ts.map +1 -1
  29. package/dist/components/agent/AgentOnboarding.js +93 -201
  30. package/dist/components/agent/AgentOnboarding.js.map +1 -1
  31. package/dist/components/agent/AgentView.d.ts.map +1 -1
  32. package/dist/components/agent/AgentView.js +533 -308
  33. package/dist/components/agent/AgentView.js.map +1 -1
  34. package/dist/components/agent/AgentWorkbenchPanel.d.ts +3 -1
  35. package/dist/components/agent/AgentWorkbenchPanel.d.ts.map +1 -1
  36. package/dist/components/agent/AgentWorkbenchPanel.js +3 -2
  37. package/dist/components/agent/AgentWorkbenchPanel.js.map +1 -1
  38. package/dist/components/agent/AgentWorkspaceBrowserPanel.d.ts +4 -1
  39. package/dist/components/agent/AgentWorkspaceBrowserPanel.d.ts.map +1 -1
  40. package/dist/components/agent/AgentWorkspaceBrowserPanel.js +23 -195
  41. package/dist/components/agent/AgentWorkspaceBrowserPanel.js.map +1 -1
  42. package/dist/components/agent/AgentsWorkspaceView.d.ts +12 -0
  43. package/dist/components/agent/AgentsWorkspaceView.d.ts.map +1 -0
  44. package/dist/components/agent/AgentsWorkspaceView.js +129 -0
  45. package/dist/components/agent/AgentsWorkspaceView.js.map +1 -0
  46. package/dist/components/agent/DevelopmentCoordinationPanel.d.ts +7 -0
  47. package/dist/components/agent/DevelopmentCoordinationPanel.d.ts.map +1 -1
  48. package/dist/components/agent/DevelopmentCoordinationPanel.js +57 -49
  49. package/dist/components/agent/DevelopmentCoordinationPanel.js.map +1 -1
  50. package/dist/components/agent/KnowledgePanel.d.ts.map +1 -1
  51. package/dist/components/agent/KnowledgePanel.js +17 -67
  52. package/dist/components/agent/KnowledgePanel.js.map +1 -1
  53. package/dist/components/agent/LiveConversationCollaboration.d.ts +27 -0
  54. package/dist/components/agent/LiveConversationCollaboration.d.ts.map +1 -0
  55. package/dist/components/agent/LiveConversationCollaboration.js +127 -0
  56. package/dist/components/agent/LiveConversationCollaboration.js.map +1 -0
  57. package/dist/components/agent/MonacoDiffWorkbenchEditor.d.ts.map +1 -1
  58. package/dist/components/agent/MonacoDiffWorkbenchEditor.js +1 -1
  59. package/dist/components/agent/MonacoDiffWorkbenchEditor.js.map +1 -1
  60. package/dist/components/agent/MonacoWorkbenchEditor.d.ts.map +1 -1
  61. package/dist/components/agent/MonacoWorkbenchEditor.js +3 -3
  62. package/dist/components/agent/MonacoWorkbenchEditor.js.map +1 -1
  63. package/dist/components/agent/OwnedBrowserController.d.ts +55 -0
  64. package/dist/components/agent/OwnedBrowserController.d.ts.map +1 -0
  65. package/dist/components/agent/OwnedBrowserController.js +166 -0
  66. package/dist/components/agent/OwnedBrowserController.js.map +1 -0
  67. package/dist/components/agent/OwnedWorkforceView.d.ts +10 -0
  68. package/dist/components/agent/OwnedWorkforceView.d.ts.map +1 -0
  69. package/dist/components/agent/OwnedWorkforceView.js +256 -0
  70. package/dist/components/agent/OwnedWorkforceView.js.map +1 -0
  71. package/dist/components/agent/PluginManager.d.ts +34 -0
  72. package/dist/components/agent/PluginManager.d.ts.map +1 -1
  73. package/dist/components/agent/PluginManager.js +187 -126
  74. package/dist/components/agent/PluginManager.js.map +1 -1
  75. package/dist/components/agent/ProjectsWorkspaceView.d.ts +14 -0
  76. package/dist/components/agent/ProjectsWorkspaceView.d.ts.map +1 -0
  77. package/dist/components/agent/ProjectsWorkspaceView.js +176 -0
  78. package/dist/components/agent/ProjectsWorkspaceView.js.map +1 -0
  79. package/dist/components/agent/RunReviewPanel.d.ts +8 -13
  80. package/dist/components/agent/RunReviewPanel.d.ts.map +1 -1
  81. package/dist/components/agent/RunReviewPanel.js +120 -106
  82. package/dist/components/agent/RunReviewPanel.js.map +1 -1
  83. package/dist/components/agent/ScheduledWorkspaceView.d.ts +19 -0
  84. package/dist/components/agent/ScheduledWorkspaceView.d.ts.map +1 -0
  85. package/dist/components/agent/ScheduledWorkspaceView.js +150 -0
  86. package/dist/components/agent/ScheduledWorkspaceView.js.map +1 -0
  87. package/dist/components/agent/SdkSessionPanel.d.ts +25 -0
  88. package/dist/components/agent/SdkSessionPanel.d.ts.map +1 -0
  89. package/dist/components/agent/SdkSessionPanel.js +15 -0
  90. package/dist/components/agent/SdkSessionPanel.js.map +1 -0
  91. package/dist/components/agent/SlashCommandAutocomplete.d.ts +12 -0
  92. package/dist/components/agent/SlashCommandAutocomplete.d.ts.map +1 -0
  93. package/dist/components/agent/SlashCommandAutocomplete.js +33 -0
  94. package/dist/components/agent/SlashCommandAutocomplete.js.map +1 -0
  95. package/dist/components/agent/TeamsWorkspaceView.d.ts +12 -0
  96. package/dist/components/agent/TeamsWorkspaceView.d.ts.map +1 -0
  97. package/dist/components/agent/TeamsWorkspaceView.js +127 -0
  98. package/dist/components/agent/TeamsWorkspaceView.js.map +1 -0
  99. package/dist/components/agent/WorkspacePersistenceNotice.d.ts +3 -0
  100. package/dist/components/agent/WorkspacePersistenceNotice.d.ts.map +1 -0
  101. package/dist/components/agent/WorkspacePersistenceNotice.js +23 -0
  102. package/dist/components/agent/WorkspacePersistenceNotice.js.map +1 -0
  103. package/dist/components/agent/acp/AcpAgentConfigForm.d.ts +1 -0
  104. package/dist/components/agent/acp/AcpAgentConfigForm.d.ts.map +1 -1
  105. package/dist/components/agent/acp/AcpAgentConfigForm.js +47 -14
  106. package/dist/components/agent/acp/AcpAgentConfigForm.js.map +1 -1
  107. package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.js +1 -1
  108. package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.js.map +1 -1
  109. package/dist/components/agent/acp/AcpAgentManager.d.ts.map +1 -1
  110. package/dist/components/agent/acp/AcpAgentManager.js +18 -18
  111. package/dist/components/agent/acp/AcpAgentManager.js.map +1 -1
  112. package/dist/components/agent/acp/AcpAgentTestResultPanel.js +1 -1
  113. package/dist/components/agent/acp/AcpAgentTestResultPanel.js.map +1 -1
  114. package/dist/components/agent/acp/AcpApprovalPanel.js +2 -2
  115. package/dist/components/agent/acp/AcpApprovalPanel.js.map +1 -1
  116. package/dist/components/agent/acp/AcpCertificationPanel.js +1 -1
  117. package/dist/components/agent/acp/AcpCertificationPanel.js.map +1 -1
  118. package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.js +1 -1
  119. package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.js.map +1 -1
  120. package/dist/components/agent/acp/AcpProviderManagerPanel.js +1 -1
  121. package/dist/components/agent/acp/AcpProviderManagerPanel.js.map +1 -1
  122. package/dist/components/agent/acp/AcpProviderModelsPanel.js +1 -1
  123. package/dist/components/agent/acp/AcpProviderModelsPanel.js.map +1 -1
  124. package/dist/components/agent/acp/AcpSupportBundlePanel.js +1 -1
  125. package/dist/components/agent/acp/AcpSupportBundlePanel.js.map +1 -1
  126. package/dist/components/agent/collaborationWindow.d.ts +11 -0
  127. package/dist/components/agent/collaborationWindow.d.ts.map +1 -0
  128. package/dist/components/agent/collaborationWindow.js +10 -0
  129. package/dist/components/agent/collaborationWindow.js.map +1 -0
  130. package/dist/components/agent/conversationCollaborationAppendJournal.d.ts +25 -0
  131. package/dist/components/agent/conversationCollaborationAppendJournal.d.ts.map +1 -0
  132. package/dist/components/agent/conversationCollaborationAppendJournal.js +118 -0
  133. package/dist/components/agent/conversationCollaborationAppendJournal.js.map +1 -0
  134. package/dist/components/agent/conversationCollaborationController.d.ts +96 -0
  135. package/dist/components/agent/conversationCollaborationController.d.ts.map +1 -0
  136. package/dist/components/agent/conversationCollaborationController.js +597 -0
  137. package/dist/components/agent/conversationCollaborationController.js.map +1 -0
  138. package/dist/components/agent/destructiveConfirmation.d.ts +76 -0
  139. package/dist/components/agent/destructiveConfirmation.d.ts.map +1 -0
  140. package/dist/components/agent/destructiveConfirmation.js +231 -0
  141. package/dist/components/agent/destructiveConfirmation.js.map +1 -0
  142. package/dist/components/agent/developmentCoordinationController.d.ts +43 -0
  143. package/dist/components/agent/developmentCoordinationController.d.ts.map +1 -0
  144. package/dist/components/agent/developmentCoordinationController.js +94 -0
  145. package/dist/components/agent/developmentCoordinationController.js.map +1 -0
  146. package/dist/components/agent/developmentCoordinationProjection.d.ts +24 -0
  147. package/dist/components/agent/developmentCoordinationProjection.d.ts.map +1 -1
  148. package/dist/components/agent/developmentCoordinationProjection.js +34 -5
  149. package/dist/components/agent/developmentCoordinationProjection.js.map +1 -1
  150. package/dist/components/agent/editorOperationAuthority.d.ts +29 -0
  151. package/dist/components/agent/editorOperationAuthority.d.ts.map +1 -0
  152. package/dist/components/agent/editorOperationAuthority.js +73 -0
  153. package/dist/components/agent/editorOperationAuthority.js.map +1 -0
  154. package/dist/components/agent/knowledgePagination.d.ts +7 -0
  155. package/dist/components/agent/knowledgePagination.d.ts.map +1 -0
  156. package/dist/components/agent/knowledgePagination.js +7 -0
  157. package/dist/components/agent/knowledgePagination.js.map +1 -0
  158. package/dist/components/agent/knowledgePanelController.d.ts +32 -0
  159. package/dist/components/agent/knowledgePanelController.d.ts.map +1 -0
  160. package/dist/components/agent/knowledgePanelController.js +119 -0
  161. package/dist/components/agent/knowledgePanelController.js.map +1 -0
  162. package/dist/components/agent/monacoWorkbenchShared.js +1 -1
  163. package/dist/components/agent/onboardingModels.d.ts +31 -0
  164. package/dist/components/agent/onboardingModels.d.ts.map +1 -0
  165. package/dist/components/agent/onboardingModels.js +107 -0
  166. package/dist/components/agent/onboardingModels.js.map +1 -0
  167. package/dist/components/agent/personalConversationScope.d.ts +26 -0
  168. package/dist/components/agent/personalConversationScope.d.ts.map +1 -0
  169. package/dist/components/agent/personalConversationScope.js +43 -0
  170. package/dist/components/agent/personalConversationScope.js.map +1 -0
  171. package/dist/components/agent/reviewRequestScope.d.ts +16 -0
  172. package/dist/components/agent/reviewRequestScope.d.ts.map +1 -0
  173. package/dist/components/agent/reviewRequestScope.js +101 -0
  174. package/dist/components/agent/reviewRequestScope.js.map +1 -0
  175. package/dist/components/agent/scheduleCreationAttempt.d.ts +12 -0
  176. package/dist/components/agent/scheduleCreationAttempt.d.ts.map +1 -0
  177. package/dist/components/agent/scheduleCreationAttempt.js +30 -0
  178. package/dist/components/agent/scheduleCreationAttempt.js.map +1 -0
  179. package/dist/components/agent/settings/EntitySettingsLayout.d.ts +1 -1
  180. package/dist/components/agent/settings/EntitySettingsLayout.d.ts.map +1 -1
  181. package/dist/components/agent/settings/EntitySettingsLayout.js +64 -44
  182. package/dist/components/agent/settings/EntitySettingsLayout.js.map +1 -1
  183. package/dist/components/agent/settings/SettingsNavigation.d.ts.map +1 -1
  184. package/dist/components/agent/settings/SettingsNavigation.js +17 -17
  185. package/dist/components/agent/settings/SettingsNavigation.js.map +1 -1
  186. package/dist/components/agent/settings/entityArchiveState.d.ts +24 -0
  187. package/dist/components/agent/settings/entityArchiveState.d.ts.map +1 -0
  188. package/dist/components/agent/settings/entityArchiveState.js +12 -0
  189. package/dist/components/agent/settings/entityArchiveState.js.map +1 -0
  190. package/dist/components/agent/settings/sections/AccessMembersSection.d.ts.map +1 -1
  191. package/dist/components/agent/settings/sections/AccessMembersSection.js +10 -25
  192. package/dist/components/agent/settings/sections/AccessMembersSection.js.map +1 -1
  193. package/dist/components/agent/settings/sections/AccountWorkspacePanel.d.ts +16 -0
  194. package/dist/components/agent/settings/sections/AccountWorkspacePanel.d.ts.map +1 -0
  195. package/dist/components/agent/settings/sections/AccountWorkspacePanel.js +265 -0
  196. package/dist/components/agent/settings/sections/AccountWorkspacePanel.js.map +1 -0
  197. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.d.ts.map +1 -1
  198. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js +47 -32
  199. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js.map +1 -1
  200. package/dist/components/agent/settings/sections/DangerZoneSection.d.ts.map +1 -1
  201. package/dist/components/agent/settings/sections/DangerZoneSection.js +30 -6
  202. package/dist/components/agent/settings/sections/DangerZoneSection.js.map +1 -1
  203. package/dist/components/agent/settings/sections/DefaultAgentConfigSection.d.ts.map +1 -1
  204. package/dist/components/agent/settings/sections/DefaultAgentConfigSection.js +47 -37
  205. package/dist/components/agent/settings/sections/DefaultAgentConfigSection.js.map +1 -1
  206. package/dist/components/agent/settings/sections/EnvironmentSecretsSection.d.ts.map +1 -1
  207. package/dist/components/agent/settings/sections/EnvironmentSecretsSection.js +30 -43
  208. package/dist/components/agent/settings/sections/EnvironmentSecretsSection.js.map +1 -1
  209. package/dist/components/agent/settings/sections/ExportBackupSection.d.ts +3 -1
  210. package/dist/components/agent/settings/sections/ExportBackupSection.d.ts.map +1 -1
  211. package/dist/components/agent/settings/sections/ExportBackupSection.js +14 -12
  212. package/dist/components/agent/settings/sections/ExportBackupSection.js.map +1 -1
  213. package/dist/components/agent/settings/sections/GeneralSection.d.ts.map +1 -1
  214. package/dist/components/agent/settings/sections/GeneralSection.js +47 -4
  215. package/dist/components/agent/settings/sections/GeneralSection.js.map +1 -1
  216. package/dist/components/agent/settings/sections/IntegrationsSection.d.ts.map +1 -1
  217. package/dist/components/agent/settings/sections/IntegrationsSection.js +14 -21
  218. package/dist/components/agent/settings/sections/IntegrationsSection.js.map +1 -1
  219. package/dist/components/agent/settings/sections/NotificationsSection.d.ts.map +1 -1
  220. package/dist/components/agent/settings/sections/NotificationsSection.js +125 -20
  221. package/dist/components/agent/settings/sections/NotificationsSection.js.map +1 -1
  222. package/dist/components/agent/settings/sections/ResourceLimitsSection.d.ts.map +1 -1
  223. package/dist/components/agent/settings/sections/ResourceLimitsSection.js +7 -7
  224. package/dist/components/agent/settings/sections/ResourceLimitsSection.js.map +1 -1
  225. package/dist/components/agent/settings/sections/SecurityComplianceSection.d.ts.map +1 -1
  226. package/dist/components/agent/settings/sections/SecurityComplianceSection.js +5 -4
  227. package/dist/components/agent/settings/sections/SecurityComplianceSection.js.map +1 -1
  228. package/dist/components/agent/settings/sections/UsageAnalyticsSection.d.ts.map +1 -1
  229. package/dist/components/agent/settings/sections/UsageAnalyticsSection.js +2 -3
  230. package/dist/components/agent/settings/sections/UsageAnalyticsSection.js.map +1 -1
  231. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.d.ts.map +1 -1
  232. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.js +39 -26
  233. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.js.map +1 -1
  234. package/dist/components/agent/settings/sections/WorkspaceKeysPanel.d.ts +6 -0
  235. package/dist/components/agent/settings/sections/WorkspaceKeysPanel.d.ts.map +1 -0
  236. package/dist/components/agent/settings/sections/WorkspaceKeysPanel.js +205 -0
  237. package/dist/components/agent/settings/sections/WorkspaceKeysPanel.js.map +1 -0
  238. package/dist/components/agent/settings/sections/environmentDraftAction.d.ts +3 -0
  239. package/dist/components/agent/settings/sections/environmentDraftAction.d.ts.map +1 -0
  240. package/dist/components/agent/settings/sections/environmentDraftAction.js +6 -0
  241. package/dist/components/agent/settings/sections/environmentDraftAction.js.map +1 -0
  242. package/dist/components/agent/settings/sections/membershipOperationProjection.d.ts +3 -0
  243. package/dist/components/agent/settings/sections/membershipOperationProjection.d.ts.map +1 -0
  244. package/dist/components/agent/settings/sections/membershipOperationProjection.js +9 -0
  245. package/dist/components/agent/settings/sections/membershipOperationProjection.js.map +1 -0
  246. package/dist/components/agent/settings/sections/workspaceKeyOperationProjection.d.ts +6 -0
  247. package/dist/components/agent/settings/sections/workspaceKeyOperationProjection.d.ts.map +1 -0
  248. package/dist/components/agent/settings/sections/workspaceKeyOperationProjection.js +8 -0
  249. package/dist/components/agent/settings/sections/workspaceKeyOperationProjection.js.map +1 -0
  250. package/dist/components/agent/settings/shared/InAppConfirmationDialog.d.ts +25 -0
  251. package/dist/components/agent/settings/shared/InAppConfirmationDialog.d.ts.map +1 -0
  252. package/dist/components/agent/settings/shared/InAppConfirmationDialog.js +89 -0
  253. package/dist/components/agent/settings/shared/InAppConfirmationDialog.js.map +1 -0
  254. package/dist/components/agent/settings/shared/InputField.d.ts +1 -1
  255. package/dist/components/agent/settings/shared/InputField.d.ts.map +1 -1
  256. package/dist/components/agent/settings/shared/InputField.js +4 -3
  257. package/dist/components/agent/settings/shared/InputField.js.map +1 -1
  258. package/dist/components/agent/settings/shared/MembersTable.d.ts +3 -3
  259. package/dist/components/agent/settings/shared/MembersTable.d.ts.map +1 -1
  260. package/dist/components/agent/settings/shared/MembersTable.js +1 -1
  261. package/dist/components/agent/settings/shared/MembersTable.js.map +1 -1
  262. package/dist/components/agent/settings/shared/ScopedAuditPanel.d.ts +5 -0
  263. package/dist/components/agent/settings/shared/ScopedAuditPanel.d.ts.map +1 -0
  264. package/dist/components/agent/settings/shared/ScopedAuditPanel.js +70 -0
  265. package/dist/components/agent/settings/shared/ScopedAuditPanel.js.map +1 -0
  266. package/dist/components/agent/settings/shared/SettingsCard.d.ts +2 -1
  267. package/dist/components/agent/settings/shared/SettingsCard.d.ts.map +1 -1
  268. package/dist/components/agent/settings/shared/SettingsCard.js +2 -2
  269. package/dist/components/agent/settings/shared/SettingsCard.js.map +1 -1
  270. package/dist/components/agent/settings/shared/ToggleSwitch.d.ts.map +1 -1
  271. package/dist/components/agent/settings/shared/ToggleSwitch.js +1 -1
  272. package/dist/components/agent/settings/shared/ToggleSwitch.js.map +1 -1
  273. package/dist/components/agent/settings/shared/UsageChart.d.ts +10 -0
  274. package/dist/components/agent/settings/shared/UsageChart.d.ts.map +1 -1
  275. package/dist/components/agent/settings/shared/UsageChart.js +16 -10
  276. package/dist/components/agent/settings/shared/UsageChart.js.map +1 -1
  277. package/dist/components/agent/settings/shared/WorkspaceRulesControl.d.ts +8 -0
  278. package/dist/components/agent/settings/shared/WorkspaceRulesControl.d.ts.map +1 -0
  279. package/dist/components/agent/settings/shared/WorkspaceRulesControl.js +26 -0
  280. package/dist/components/agent/settings/shared/WorkspaceRulesControl.js.map +1 -0
  281. package/dist/components/agent/settings/shared/useScopedConfirmation.d.ts +8 -0
  282. package/dist/components/agent/settings/shared/useScopedConfirmation.d.ts.map +1 -0
  283. package/dist/components/agent/settings/shared/useScopedConfirmation.js +53 -0
  284. package/dist/components/agent/settings/shared/useScopedConfirmation.js.map +1 -0
  285. package/dist/components/agent/settings/shared/useSettingsConfirmation.d.ts +8 -0
  286. package/dist/components/agent/settings/shared/useSettingsConfirmation.d.ts.map +1 -0
  287. package/dist/components/agent/settings/shared/useSettingsConfirmation.js +51 -0
  288. package/dist/components/agent/settings/shared/useSettingsConfirmation.js.map +1 -0
  289. package/dist/components/agent/settings/shared/workspaceRulesController.d.ts +28 -0
  290. package/dist/components/agent/settings/shared/workspaceRulesController.d.ts.map +1 -0
  291. package/dist/components/agent/settings/shared/workspaceRulesController.js +82 -0
  292. package/dist/components/agent/settings/shared/workspaceRulesController.js.map +1 -0
  293. package/dist/components/agent/sidebarEntityPins.d.ts +11 -0
  294. package/dist/components/agent/sidebarEntityPins.d.ts.map +1 -0
  295. package/dist/components/agent/sidebarEntityPins.js +37 -0
  296. package/dist/components/agent/sidebarEntityPins.js.map +1 -0
  297. package/dist/components/agent/workspaceHierarchy.d.ts +24 -0
  298. package/dist/components/agent/workspaceHierarchy.d.ts.map +1 -0
  299. package/dist/components/agent/workspaceHierarchy.js +50 -0
  300. package/dist/components/agent/workspaceHierarchy.js.map +1 -0
  301. package/dist/components/product/XenoAgentProductHeader.d.ts +4 -2
  302. package/dist/components/product/XenoAgentProductHeader.d.ts.map +1 -1
  303. package/dist/components/product/XenoAgentProductHeader.js +22 -4
  304. package/dist/components/product/XenoAgentProductHeader.js.map +1 -1
  305. package/dist/components/product/XenoAgentSessionTabs.js +1 -1
  306. package/dist/components/product/XenoAgentSessionTabs.js.map +1 -1
  307. package/dist/components/product/XenoAgentWorkspaceSelector.d.ts +7 -0
  308. package/dist/components/product/XenoAgentWorkspaceSelector.d.ts.map +1 -0
  309. package/dist/components/product/XenoAgentWorkspaceSelector.js +237 -0
  310. package/dist/components/product/XenoAgentWorkspaceSelector.js.map +1 -0
  311. package/dist/components/workspace/WorkspaceCreationWizard.d.ts +6 -0
  312. package/dist/components/workspace/WorkspaceCreationWizard.d.ts.map +1 -0
  313. package/dist/components/workspace/WorkspaceCreationWizard.js +48 -0
  314. package/dist/components/workspace/WorkspaceCreationWizard.js.map +1 -0
  315. package/dist/hooks/useSidebarLayoutPreference.d.ts +29 -0
  316. package/dist/hooks/useSidebarLayoutPreference.d.ts.map +1 -0
  317. package/dist/hooks/useSidebarLayoutPreference.js +83 -0
  318. package/dist/hooks/useSidebarLayoutPreference.js.map +1 -0
  319. package/dist/hooks/useWorkspaceCreation.d.ts +8 -0
  320. package/dist/hooks/useWorkspaceCreation.d.ts.map +1 -0
  321. package/dist/hooks/useWorkspaceCreation.js +40 -0
  322. package/dist/hooks/useWorkspaceCreation.js.map +1 -0
  323. package/dist/index.d.ts +3 -0
  324. package/dist/index.d.ts.map +1 -1
  325. package/dist/index.js +3 -0
  326. package/dist/index.js.map +1 -1
  327. package/dist/platformApiTypes.d.ts +77 -36
  328. package/dist/platformApiTypes.d.ts.map +1 -1
  329. package/dist/platformBridge.d.ts +4 -0
  330. package/dist/platformBridge.d.ts.map +1 -1
  331. package/dist/platformBridge.js +10 -0
  332. package/dist/platformBridge.js.map +1 -1
  333. package/dist/stores/agentChatStore.d.ts +120 -2
  334. package/dist/stores/agentChatStore.d.ts.map +1 -1
  335. package/dist/stores/agentChatStore.js +329 -35
  336. package/dist/stores/agentChatStore.js.map +1 -1
  337. package/dist/stores/agentCreationDefaults.d.ts +25 -0
  338. package/dist/stores/agentCreationDefaults.d.ts.map +1 -0
  339. package/dist/stores/agentCreationDefaults.js +11 -0
  340. package/dist/stores/agentCreationDefaults.js.map +1 -0
  341. package/dist/stores/entitySettingsStore.d.ts +37 -12
  342. package/dist/stores/entitySettingsStore.d.ts.map +1 -1
  343. package/dist/stores/entitySettingsStore.js +558 -585
  344. package/dist/stores/entitySettingsStore.js.map +1 -1
  345. package/dist/stores/suggestionStore.d.ts +9 -2
  346. package/dist/stores/suggestionStore.d.ts.map +1 -1
  347. package/dist/stores/suggestionStore.js +51 -24
  348. package/dist/stores/suggestionStore.js.map +1 -1
  349. package/dist/stores/workspaceCreationAttempt.d.ts +14 -0
  350. package/dist/stores/workspaceCreationAttempt.d.ts.map +1 -0
  351. package/dist/stores/workspaceCreationAttempt.js +35 -0
  352. package/dist/stores/workspaceCreationAttempt.js.map +1 -0
  353. package/dist/stores/workspaceReconciliation.d.ts +6 -0
  354. package/dist/stores/workspaceReconciliation.d.ts.map +1 -0
  355. package/dist/stores/workspaceReconciliation.js +33 -0
  356. package/dist/stores/workspaceReconciliation.js.map +1 -0
  357. package/dist/stores/workspaceStore.d.ts +44 -9
  358. package/dist/stores/workspaceStore.d.ts.map +1 -1
  359. package/dist/stores/workspaceStore.js +238 -99
  360. package/dist/stores/workspaceStore.js.map +1 -1
  361. package/dist/types/agentEditor.d.ts +1 -0
  362. package/dist/types/agentEditor.d.ts.map +1 -1
  363. package/dist/utils/advertisedReasoning.d.ts +25 -0
  364. package/dist/utils/advertisedReasoning.d.ts.map +1 -0
  365. package/dist/utils/advertisedReasoning.js +62 -0
  366. package/dist/utils/advertisedReasoning.js.map +1 -0
  367. package/dist/utils/clipboardCopy.d.ts +4 -0
  368. package/dist/utils/clipboardCopy.d.ts.map +1 -0
  369. package/dist/utils/clipboardCopy.js +27 -0
  370. package/dist/utils/clipboardCopy.js.map +1 -0
  371. package/dist/utils/providerCommandArgs.d.ts +11 -0
  372. package/dist/utils/providerCommandArgs.d.ts.map +1 -0
  373. package/dist/utils/providerCommandArgs.js +18 -0
  374. package/dist/utils/providerCommandArgs.js.map +1 -0
  375. package/dist/utils/rendererTeardown.d.ts +6 -0
  376. package/dist/utils/rendererTeardown.d.ts.map +1 -0
  377. package/dist/utils/rendererTeardown.js +18 -0
  378. package/dist/utils/rendererTeardown.js.map +1 -0
  379. package/package.json +20 -8
  380. package/src/agent.css +39 -9
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ export interface SdkSessionPanelProps {
3
+ open: boolean;
4
+ onOpenChange(open: boolean): void;
5
+ workingDirectory: string;
6
+ attachedId?: string;
7
+ sessions: Array<Record<string, unknown>>;
8
+ loading: boolean;
9
+ busy: boolean;
10
+ status: string | null;
11
+ unavailableReason?: string;
12
+ canList: boolean;
13
+ canAttach: boolean;
14
+ canDetach: boolean;
15
+ canDelete: boolean;
16
+ canClean: boolean;
17
+ onReload(): void;
18
+ onAttach(id: string): void;
19
+ onDetach(): void;
20
+ onDelete(id: string): void;
21
+ onClean(): void;
22
+ }
23
+ /** Shared AgentView session surface. Rows come only from the scoped host listing. */
24
+ export declare function SdkSessionPanel(props: SdkSessionPanelProps): React.JSX.Element;
25
+ //# sourceMappingURL=SdkSessionPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SdkSessionPanel.d.ts","sourceRoot":"","sources":["../../../src/components/agent/SdkSessionPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;IAChD,gBAAgB,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC7C,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAChG,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;IAC/F,QAAQ,IAAI,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,IAAI,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,IAAI,IAAI,CAAA;CAC5G;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,qBA+B1D"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ /** Shared AgentView session surface. Rows come only from the scoped host listing. */
4
+ export function SdkSessionPanel(props) {
5
+ const locked = props.busy || props.loading || !!props.unavailableReason;
6
+ const control = 'h-7 rounded px-2 text-[11px] text-white/65 hover:bg-white/[0.08] disabled:cursor-not-allowed disabled:opacity-35';
7
+ return _jsxs("div", { className: "relative", children: [_jsx("button", { type: "button", className: control, "aria-expanded": props.open, "aria-controls": "agent-sdk-sessions", onClick: () => props.onOpenChange(!props.open), children: "SDK sessions" }), props.open && _jsxs("section", { id: "agent-sdk-sessions", "aria-label": "SDK sessions", className: "absolute bottom-full right-0 z-[45] mb-2 w-[420px] max-w-[calc(100vw-32px)] rounded-md border border-white/[0.10] bg-[#111115] p-3 shadow-xl", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx("h2", { className: "text-[12px] font-medium text-white/80", children: "SDK sessions" }), _jsx("button", { type: "button", className: control, "aria-label": "Close SDK sessions", onClick: () => props.onOpenChange(false), children: "Close" })] }), _jsx("p", { className: "break-all text-[11px] text-white/45", children: props.workingDirectory || 'No conversation workspace selected.' }), _jsxs("p", { className: "mt-1 break-all text-[11px] text-white/65", children: ["Attached: ", props.attachedId || 'None'] }), props.unavailableReason && _jsx("p", { role: "status", className: "mt-2 text-[11px] text-amber-200", children: props.unavailableReason }), !props.canList && _jsx("p", { role: "status", className: "mt-2 text-[11px] text-amber-200", children: "This host does not advertise SDK session listing." }), props.status && _jsx("p", { role: "status", className: "mt-2 break-words text-[11px] text-white/65", children: props.status }), _jsxs("div", { className: "my-2 flex flex-wrap gap-1", children: [_jsx("button", { type: "button", className: control, disabled: !props.canList || props.loading || props.busy, onClick: props.onReload, children: "Reload sessions" }), _jsx("button", { type: "button", className: control, disabled: locked || !props.canDetach || !props.attachedId, onClick: props.onDetach, children: "Detach session" }), _jsx("button", { type: "button", className: control, disabled: locked || !props.canClean || !props.canList || !props.workingDirectory, onClick: props.onClean, children: "Clean old sessions" })] }), _jsx("div", { className: "max-h-64 space-y-1 overflow-auto", children: props.loading ? _jsx("p", { className: "text-[11px] text-white/40", children: "Loading sessions..." }) : props.sessions.length === 0 ? _jsx("p", { className: "text-[11px] text-white/40", children: "No SDK sessions returned for this workspace." }) : props.sessions.map((session, index) => {
8
+ const id = typeof session.id === 'string' ? session.id : typeof session.sessionId === 'string' ? session.sessionId : '';
9
+ if (!id)
10
+ return null;
11
+ const attached = id === props.attachedId;
12
+ return _jsxs("div", { className: "flex items-center gap-2 rounded border border-white/[0.06] px-2 py-1", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("p", { className: "break-all text-[11px] text-white/70", children: [id, attached ? ' (attached)' : ''] }), typeof session.title === 'string' && _jsx("p", { className: "truncate text-[10px] text-white/40", children: session.title })] }), _jsx("button", { type: "button", className: control, "aria-label": `Attach SDK session ${id}`, disabled: locked || !props.canAttach || attached, onClick: () => props.onAttach(id), children: "Attach" }), _jsx("button", { type: "button", className: control, "aria-label": `Delete SDK session ${id}`, title: attached ? 'Detach this session before deleting it.' : undefined, disabled: locked || !props.canDelete || attached, onClick: () => props.onDelete(id), children: "Delete" })] }, `${id}:${index}`);
13
+ }) })] })] });
14
+ }
15
+ //# sourceMappingURL=SdkSessionPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SdkSessionPanel.js","sourceRoot":"","sources":["../../../src/components/agent/SdkSessionPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import type { AcpAvailableCommand } from '@xenosystem/agent-interface-contract';
3
+ interface SlashCommandAutocompleteProps {
4
+ commands: AcpAvailableCommand[];
5
+ filter: string;
6
+ selectedIndex: number;
7
+ onSelect: (commandName: string) => void;
8
+ onClose: () => void;
9
+ }
10
+ export declare const SlashCommandAutocomplete: React.FC<SlashCommandAutocompleteProps>;
11
+ export {};
12
+ //# sourceMappingURL=SlashCommandAutocomplete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlashCommandAutocomplete.d.ts","sourceRoot":"","sources":["../../../src/components/agent/SlashCommandAutocomplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAEhD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAE/E,UAAU,6BAA6B;IACrC,QAAQ,EAAE,mBAAmB,EAAE,CAAA;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CA+F5E,CAAA"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React, { useEffect, useRef } from 'react';
3
+ import { Terminal, Sparkles, X } from 'lucide-react';
4
+ export const SlashCommandAutocomplete = ({ commands, filter, selectedIndex, onSelect, onClose, }) => {
5
+ const containerRef = useRef(null);
6
+ const cleanFilter = filter.startsWith('/') ? filter.slice(1).toLowerCase() : filter.toLowerCase();
7
+ const filtered = commands.filter((cmd) => {
8
+ const nameWithoutSlash = cmd.name.startsWith('/') ? cmd.name.slice(1).toLowerCase() : cmd.name.toLowerCase();
9
+ return nameWithoutSlash.includes(cleanFilter) || (cmd.description && cmd.description.toLowerCase().includes(cleanFilter));
10
+ });
11
+ useEffect(() => {
12
+ if (containerRef.current) {
13
+ const activeEl = containerRef.current.querySelector('[data-selected="true"]');
14
+ if (activeEl) {
15
+ activeEl.scrollIntoView({ block: 'nearest' });
16
+ }
17
+ }
18
+ }, [selectedIndex]);
19
+ if (filtered.length === 0)
20
+ return null;
21
+ return (_jsxs("div", { ref: containerRef, className: "absolute bottom-full left-0 right-0 z-50 mb-2 max-h-64 overflow-y-auto rounded-lg border border-white/[0.12] bg-[#1a1b26]/95 backdrop-blur-md shadow-2xl p-1.5 text-[12px]", role: "listbox", "aria-label": "Slash commands", children: [_jsxs("div", { className: "px-2 py-1 text-[10px] font-semibold uppercase tracking-wider text-white/40 flex items-center justify-between border-b border-white/[0.06] mb-1", children: [_jsx("span", { children: "Commands & Skills" }), _jsx("span", { className: "font-normal lowercase tracking-normal opacity-60", children: "\u2191\u2193 to navigate \u00B7 \u21B5 or Tab to select" }), _jsx("button", { type: "button", "aria-label": "Dismiss slash command suggestions", onClick: onClose, className: "p-1 text-white/50 hover:text-white", children: _jsx(X, { size: 12 }) })] }), _jsx("div", { className: "flex flex-col gap-0.5", children: filtered.map((cmd, idx) => {
22
+ const isSelected = idx === selectedIndex;
23
+ const originBadge = cmd.origin === 'provider'
24
+ ? { label: 'CLI', bg: 'bg-cyan-500/15 text-cyan-300 border-cyan-500/30' }
25
+ : cmd.origin === 'skill'
26
+ ? { label: 'Skill', bg: 'bg-purple-500/15 text-purple-300 border-purple-500/30' }
27
+ : { label: 'Command', bg: 'bg-white/10 text-white/60 border-white/15' };
28
+ return (_jsxs("button", { type: "button", "data-selected": isSelected ? 'true' : 'false', onClick: () => onSelect(cmd.name), className: `flex items-center justify-between gap-3 rounded px-2.5 py-1.5 text-left transition-colors cursor-pointer ${isSelected
29
+ ? 'bg-white/[0.12] text-white'
30
+ : 'text-white/80 hover:bg-white/[0.06] hover:text-white'}`, role: "option", "aria-selected": isSelected, children: [_jsxs("div", { className: "flex items-center gap-2 min-w-0 flex-1", children: [_jsx("div", { className: `shrink-0 ${isSelected ? 'text-white' : 'text-white/40'}`, children: cmd.origin === 'skill' ? (_jsx(Sparkles, { className: "h-3.5 w-3.5" })) : (_jsx(Terminal, { className: "h-3.5 w-3.5" })) }), _jsx("span", { className: "font-mono font-medium text-white shrink-0", children: cmd.name.startsWith('/') ? cmd.name : `/${cmd.name}` }), cmd.description && (_jsx("span", { className: "min-w-0 truncate text-white/50 text-[11px]", children: cmd.description }))] }), _jsx("span", { className: `shrink-0 rounded border px-1.5 py-0.2 text-[9px] font-medium ${originBadge.bg}`, children: originBadge.label })] }, cmd.name));
31
+ }) })] }));
32
+ };
33
+ //# sourceMappingURL=SlashCommandAutocomplete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlashCommandAutocomplete.js","sourceRoot":"","sources":["../../../src/components/agent/SlashCommandAutocomplete.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import type { Workspace } from '../../stores/workspaceStore.js';
3
+ export interface TeamsWorkspaceViewProps {
4
+ workspaces: Workspace[];
5
+ activeWorkspaceScope?: string | null;
6
+ onSelectAgent: (agentId: string) => void;
7
+ onSelectConversation: (agentId: string, conversationId: string) => void;
8
+ onOpenTeamSettings?: (teamId: string) => void;
9
+ onBackToChat: () => void;
10
+ }
11
+ export declare const TeamsWorkspaceView: React.FC<TeamsWorkspaceViewProps>;
12
+ //# sourceMappingURL=TeamsWorkspaceView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamsWorkspaceView.d.ts","sourceRoot":"","sources":["../../../src/components/agent/TeamsWorkspaceView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAchD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAO/D,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,SAAS,EAAE,CAAA;IACvB,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAA;IACvE,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA4fhE,CAAA"}
@@ -0,0 +1,127 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React, { useState, useMemo } from 'react';
3
+ import { Users, Plus, Bot, MessageSquare, Settings, Trash2, Search, Building2, Folder, X, ChevronRight, } from 'lucide-react';
4
+ import { useWorkspaceStore } from '../../stores/workspaceStore.js';
5
+ import { useAgentChatStore } from '../../stores/agentChatStore.js';
6
+ import { onboardingModelKey, onboardingRuntimeSelection, useOnboardingModels } from './onboardingModels.js';
7
+ import { useWorkspaceCreation } from '../../hooks/useWorkspaceCreation.js';
8
+ import { useScopedConfirmation } from './settings/shared/useScopedConfirmation.js';
9
+ export const TeamsWorkspaceView = ({ workspaces, activeWorkspaceScope, onSelectAgent, onSelectConversation, onOpenTeamSettings, onBackToChat, }) => {
10
+ const [searchQuery, setSearchQuery] = useState('');
11
+ const [isAddTeamModalOpen, setIsAddTeamModalOpen] = useState(false);
12
+ const [isAddAgentModalOpen, setIsAddAgentModalOpen] = useState(false);
13
+ const [selectedTeamForAgent, setSelectedTeamForAgent] = useState(null);
14
+ // Form states for adding team
15
+ const [newTeamName, setNewTeamName] = useState('');
16
+ const [newTeamDescription, setNewTeamDescription] = useState('');
17
+ // Form states for adding agent
18
+ const [newAgentName, setNewAgentName] = useState('');
19
+ const [newAgentModel, setNewAgentModel] = useState('');
20
+ const { models: availableModels, loading: modelsLoading, errors: modelErrors } = useOnboardingModels();
21
+ const [deployError, setDeployError] = useState(null);
22
+ const [newAgentSystemPrompt, setNewAgentSystemPrompt] = useState('');
23
+ const conversations = useAgentChatStore((s) => s.conversations);
24
+ // Determine current active workspace
25
+ const currentWorkspace = useMemo(() => {
26
+ if (activeWorkspaceScope) {
27
+ const match = workspaces.find((w) => w.id === activeWorkspaceScope);
28
+ return match && !match.isArchived ? match : null;
29
+ }
30
+ return workspaces.find((w) => !w.isArchived) || null;
31
+ }, [workspaces, activeWorkspaceScope]);
32
+ const { requestConfirmation, confirmation } = useScopedConfirmation(currentWorkspace, activeWorkspaceScope || '');
33
+ // Teams in current workspace
34
+ const teams = useMemo(() => {
35
+ if (!currentWorkspace?.teams)
36
+ return [];
37
+ return currentWorkspace.teams;
38
+ }, [currentWorkspace]);
39
+ // Filtered teams
40
+ const filteredTeams = useMemo(() => {
41
+ if (!searchQuery.trim())
42
+ return teams;
43
+ const q = searchQuery.toLowerCase();
44
+ return teams.filter((t) => t.name.toLowerCase().includes(q) ||
45
+ (t.description && t.description.toLowerCase().includes(q)) ||
46
+ t.agents.some((a) => a.name.toLowerCase().includes(q)));
47
+ }, [teams, searchQuery]);
48
+ // Aggregate metrics
49
+ const totalAgents = useMemo(() => {
50
+ return teams.reduce((acc, t) => acc + (t.agents?.length || 0), 0);
51
+ }, [teams]);
52
+ const totalProjects = useMemo(() => {
53
+ return currentWorkspace?.directories?.length || 0;
54
+ }, [currentWorkspace]);
55
+ const totalSessions = useMemo(() => {
56
+ if (!currentWorkspace)
57
+ return 0;
58
+ const allChats = Object.values(conversations);
59
+ const agentIds = new Set(teams.flatMap((t) => t.agents.map((a) => a.id)));
60
+ return allChats.filter((c) => agentIds.has(c.agentId) || c.workspaceId === currentWorkspace.id).length;
61
+ }, [conversations, currentWorkspace, teams]);
62
+ const teamCreation = useWorkspaceCreation(`${currentWorkspace?.id}:${isAddTeamModalOpen}`);
63
+ const agentCreation = useWorkspaceCreation(`${currentWorkspace?.id}:${isAddAgentModalOpen}`);
64
+ const handleCreateTeam = async (e) => {
65
+ e.preventDefault();
66
+ if (teamCreation.busy)
67
+ return;
68
+ if (!currentWorkspace || currentWorkspace.isArchived || !newTeamName.trim())
69
+ return;
70
+ const id = await teamCreation.run(() => useWorkspaceStore.getState().addTeam(currentWorkspace.id, newTeamName.trim(), newTeamDescription), (workspaces, id) => workspaces.some(w => w.id === currentWorkspace.id && !w.isArchived && w.teams.some(t => t.id === id && !t.isArchived)));
71
+ if (!id)
72
+ return;
73
+ setNewTeamName('');
74
+ setNewTeamDescription('');
75
+ setIsAddTeamModalOpen(false);
76
+ };
77
+ const handleDeleteTeam = (teamId, teamName) => {
78
+ if (!currentWorkspace)
79
+ return;
80
+ const original = useWorkspaceStore.getState().workspaces.find(w => w.id === currentWorkspace.id);
81
+ requestConfirmation('Delete team', `Delete team "${teamName}" and all of its configurations?`, 'Delete team', () => {
82
+ const latest = useWorkspaceStore.getState().workspaces.find(w => w.id === currentWorkspace.id);
83
+ if (!original || latest !== original || latest.isArchived || !latest.teams.some(t => t.id === teamId)) {
84
+ throw new Error('The team or workspace changed. Review its current state before deleting it.');
85
+ }
86
+ return useWorkspaceStore.getState().deleteTeam(currentWorkspace.id, teamId);
87
+ });
88
+ };
89
+ const handleCreateAgent = async (e) => {
90
+ e.preventDefault();
91
+ if (agentCreation.busy)
92
+ return;
93
+ if (!currentWorkspace || !selectedTeamForAgent || !newAgentName.trim())
94
+ return;
95
+ if (currentWorkspace.isArchived || !currentWorkspace.teams.some(t => t.id === selectedTeamForAgent && !t.isArchived)) {
96
+ setDeployError('Select an active workspace and team.');
97
+ return;
98
+ }
99
+ const selected = availableModels.find(m => onboardingModelKey(m) === newAgentModel);
100
+ if (!agentCreation.pending && !selected) {
101
+ setDeployError('Select an available model.');
102
+ return;
103
+ }
104
+ setDeployError(null);
105
+ const id = await agentCreation.run(() => useWorkspaceStore.getState().addAgent(currentWorkspace.id, selectedTeamForAgent, newAgentName.trim(), selected.id, newAgentSystemPrompt, undefined, onboardingRuntimeSelection(selected)), (workspaces, id) => workspaces.some(w => w.id === currentWorkspace.id && !w.isArchived && w.teams.some(t => t.id === selectedTeamForAgent && !t.isArchived && t.agents.some(a => a.id === id))));
106
+ if (!id)
107
+ return;
108
+ setNewAgentName('');
109
+ setNewAgentSystemPrompt('');
110
+ setSelectedTeamForAgent(null);
111
+ setIsAddAgentModalOpen(false);
112
+ };
113
+ const handleStartTeamChat = (team) => {
114
+ const targetAgent = team.agents[0];
115
+ if (targetAgent) {
116
+ onSelectAgent(targetAgent.id);
117
+ }
118
+ };
119
+ if (!currentWorkspace) {
120
+ return (_jsx("div", { className: "flex-1 h-full flex items-center justify-center bg-[#08080a] text-white p-6", children: _jsxs("div", { className: "text-center space-y-2", children: [_jsx(Building2, { className: "w-8 h-8 text-[#57575e] mx-auto" }), _jsx("h2", { className: "text-[14px] font-medium text-[#d8d8de]", children: "No workspace found" }), _jsx("p", { className: "text-[12px] text-[#7f7f86]", children: "Create a workspace to manage teams and agents." })] }) }));
121
+ }
122
+ return (_jsxs("div", { className: "flex-1 h-full overflow-y-auto bg-[#08080a] text-white p-5 select-none hide-scrollbar relative", children: [confirmation, _jsxs("div", { className: "max-w-6xl mx-auto space-y-4", children: [_jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between gap-3 pb-3 border-b border-white/[0.06]", children: [_jsxs("div", { children: [_jsx("div", { className: "flex items-center gap-2", children: _jsx("span", { className: "text-[10px] font-semibold uppercase tracking-[0.12em] text-[#7f7f86]", children: "ORGANIZATIONAL SQUADS" }) }), _jsxs("h1", { className: "text-[18px] font-semibold tracking-tight text-white mt-0.5", children: [currentWorkspace.name, " Teams"] }), _jsxs("p", { className: "text-[12px] text-[#7f7f86] mt-0.5", children: ["Autonomous teams and fleet members operating inside workspace \u201C", currentWorkspace.name, "\u201D."] })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("button", { type: "button", onClick: onBackToChat, className: "h-7 px-2.5 rounded-[4px] text-[11.5px] text-[#a8a8b1] hover:text-white hover:bg-white/[0.06] transition-colors cursor-pointer", children: "Back to Chat" }), _jsxs("button", { type: "button", onClick: () => setIsAddTeamModalOpen(true), className: "h-7 px-3 rounded-[4px] bg-[#242428] hover:bg-[#2e2e34] text-[#d8d8de] hover:text-white border border-white/[0.08] font-medium text-[11.5px] flex items-center gap-1.5 transition-all cursor-pointer shadow-sm", children: [_jsx(Plus, { className: "w-3.5 h-3.5" }), _jsx("span", { children: "Add Team" })] })] })] }), _jsxs("div", { className: "grid grid-cols-2 sm:grid-cols-4 gap-2.5", children: [_jsxs("div", { className: "bg-[#08080a] border border-white/[0.06] rounded-[6px] p-1 flex flex-col gap-[2px]", children: [_jsxs("div", { className: "bg-[#18181a] rounded-t-[4px] px-2.5 py-1 flex items-center justify-between", children: [_jsx("span", { className: "text-[9px] font-semibold uppercase tracking-[0.12em] text-[#7f7f86]", children: "TEAMS" }), _jsx(Users, { className: "w-3 h-3 text-[#a8a8b1]" })] }), _jsxs("div", { className: "bg-[#111113] rounded-b-[4px] px-2.5 py-1.5", children: [_jsx("div", { className: "text-[18px] font-semibold tracking-tight text-white", children: teams.length }), _jsx("div", { className: "text-[10px] text-[#7f7f86]", children: "Active squads" })] })] }), _jsxs("div", { className: "bg-[#08080a] border border-white/[0.06] rounded-[6px] p-1 flex flex-col gap-[2px]", children: [_jsxs("div", { className: "bg-[#18181a] rounded-t-[4px] px-2.5 py-1 flex items-center justify-between", children: [_jsx("span", { className: "text-[9px] font-semibold uppercase tracking-[0.12em] text-[#7f7f86]", children: "FLEET AGENTS" }), _jsx(Bot, { className: "w-3 h-3 text-[#a8a8b1]" })] }), _jsxs("div", { className: "bg-[#111113] rounded-b-[4px] px-2.5 py-1.5", children: [_jsx("div", { className: "text-[18px] font-semibold tracking-tight text-white", children: totalAgents }), _jsx("div", { className: "text-[10px] text-[#7f7f86]", children: "Assigned members" })] })] }), _jsxs("div", { className: "bg-[#08080a] border border-white/[0.06] rounded-[6px] p-1 flex flex-col gap-[2px]", children: [_jsxs("div", { className: "bg-[#18181a] rounded-t-[4px] px-2.5 py-1 flex items-center justify-between", children: [_jsx("span", { className: "text-[9px] font-semibold uppercase tracking-[0.12em] text-[#7f7f86]", children: "PROJECTS" }), _jsx(Folder, { className: "w-3 h-3 text-[#a8a8b1]" })] }), _jsxs("div", { className: "bg-[#111113] rounded-b-[4px] px-2.5 py-1.5", children: [_jsx("div", { className: "text-[18px] font-semibold tracking-tight text-white", children: totalProjects }), _jsx("div", { className: "text-[10px] text-[#7f7f86]", children: "Connected codebases" })] })] }), _jsxs("div", { className: "bg-[#08080a] border border-white/[0.06] rounded-[6px] p-1 flex flex-col gap-[2px]", children: [_jsxs("div", { className: "bg-[#18181a] rounded-t-[4px] px-2.5 py-1 flex items-center justify-between", children: [_jsx("span", { className: "text-[9px] font-semibold uppercase tracking-[0.12em] text-[#7f7f86]", children: "SESSIONS" }), _jsx(MessageSquare, { className: "w-3 h-3 text-[#a8a8b1]" })] }), _jsxs("div", { className: "bg-[#111113] rounded-b-[4px] px-2.5 py-1.5", children: [_jsx("div", { className: "text-[18px] font-semibold tracking-tight text-white", children: totalSessions }), _jsx("div", { className: "text-[10px] text-[#7f7f86]", children: "Team conversations" })] })] })] }), _jsxs("div", { className: "relative", children: [_jsx(Search, { className: "w-3.5 h-3.5 absolute left-3 top-1/2 -translate-y-1/2 text-[#7f7f86] pointer-events-none" }), _jsx("input", { type: "text", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), placeholder: `Filter ${currentWorkspace.name} teams...`, className: "w-full h-8 pl-9 pr-3 rounded-[5px] bg-[#111113] border border-white/[0.06] text-[12px] text-white placeholder-[#57575e] focus:outline-none focus:border-white/[0.2] transition-colors" })] }), filteredTeams.length === 0 ? (_jsxs("div", { className: "p-8 text-center rounded-[6px] bg-[#111113] border border-white/[0.06] space-y-2", children: [_jsx(Users, { className: "w-6 h-6 text-[#57575e] mx-auto" }), _jsx("h3", { className: "text-[13px] font-medium text-[#d8d8de]", children: "No teams found" }), _jsx("p", { className: "text-[11.5px] text-[#7f7f86] max-w-sm mx-auto", children: searchQuery ? `No teams matched "${searchQuery}".` : 'Create your first team in this workspace to organize agents and projects.' }), !searchQuery && (_jsxs("button", { type: "button", onClick: () => setIsAddTeamModalOpen(true), className: "h-7 px-3 rounded-[4px] bg-[#242428] hover:bg-[#2e2e34] text-[#d8d8de] hover:text-white border border-white/[0.08] text-[11.5px] font-medium transition-colors cursor-pointer mt-1 inline-flex items-center gap-1.5", children: [_jsx(Plus, { className: "w-3.5 h-3.5" }), _jsx("span", { children: "Add Team" })] }))] })) : (_jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-2.5", children: filteredTeams.map((team) => (_jsxs("div", { className: "group flex flex-col bg-[#08080a] border border-white/[0.06] hover:border-white/[0.16] rounded-[6px] p-1 gap-[2px] transition-all duration-150", children: [_jsxs("div", { className: "bg-[#18181a] rounded-t-[4px] px-2.5 py-1.5 flex items-center justify-between gap-2", children: [_jsxs("div", { className: "flex items-center gap-2 min-w-0", children: [_jsx(Users, { className: "w-3.5 h-3.5 text-[#a8a8b1] flex-shrink-0" }), _jsx("h3", { className: "text-[12.5px] font-medium text-white truncate", children: team.name })] }), _jsxs("div", { className: "flex items-center gap-0.5", children: [_jsx("button", { type: "button", onClick: () => {
123
+ setSelectedTeamForAgent(team.id);
124
+ setIsAddAgentModalOpen(true);
125
+ }, className: "p-1 rounded-[3px] text-[#7f7f86] hover:text-[#d8d8de] hover:bg-white/[0.06] transition-colors", title: "Add Agent to Team", children: _jsx(Plus, { className: "w-3 h-3" }) }), _jsx("button", { type: "button", onClick: () => onOpenTeamSettings?.(team.id), className: "p-1 rounded-[3px] text-[#7f7f86] hover:text-[#d8d8de] hover:bg-white/[0.06] transition-colors", title: "Team Settings", children: _jsx(Settings, { className: "w-3 h-3" }) }), _jsx("button", { type: "button", onClick: () => handleDeleteTeam(team.id, team.name), className: "p-1 rounded-[3px] text-[#7f7f86] hover:text-rose-400 hover:bg-rose-500/10 transition-colors", title: "Delete Team", children: _jsx(Trash2, { className: "w-3 h-3" }) })] })] }), _jsxs("div", { className: "bg-[#111113] px-2.5 py-2 flex flex-col justify-between flex-1 gap-2", children: [_jsx("p", { className: "text-[11.5px] text-[#a8a8b1] leading-relaxed", children: team.description || `Autonomous squad with ${team.agents.length} assigned member agents.` }), _jsxs("div", { className: "space-y-1", children: [_jsxs("div", { className: "text-[9.5px] font-semibold text-[#7f7f86] uppercase tracking-[0.1em]", children: ["Members (", team.agents.length, ")"] }), team.agents.length === 0 ? (_jsx("div", { className: "text-[11px] text-[#57575e] italic", children: "No agents assigned yet" })) : (_jsx("div", { className: "flex flex-wrap gap-1", children: team.agents.map((agent) => (_jsxs("button", { type: "button", onClick: () => onSelectAgent(agent.id), className: "inline-flex items-center gap-1.5 px-2 py-0.5 rounded-[3px] bg-[#0c0c0e] hover:bg-white/[0.08] border border-white/[0.03] text-[11px] text-[#d8d8de] hover:text-white transition-colors cursor-pointer", title: `Chat with ${agent.name}`, children: [_jsx(Bot, { className: "w-2.5 h-2.5 text-[#a8a8b1]" }), _jsx("span", { className: "truncate max-w-[110px]", children: agent.name }), _jsx("span", { className: "text-[9px] text-[#57575e] font-mono", children: agent.model ? agent.model.split('-').slice(0, 2).join('-') : 'lead' })] }, agent.id))) }))] })] }), _jsxs("div", { className: "bg-[#161618] rounded-b-[4px] px-2.5 py-1.5 flex items-center justify-between", children: [_jsxs("span", { className: "text-[10px] text-[#57575e] font-mono", children: ["ID: ", team.id.slice(0, 8)] }), _jsxs("button", { type: "button", onClick: () => handleStartTeamChat(team), disabled: team.agents.length === 0, className: "h-6 px-2.5 rounded-[3px] bg-[#242428] hover:bg-[#2e2e34] text-[#d8d8de] hover:text-white border border-white/[0.08] text-[11px] font-medium inline-flex items-center gap-1 transition-colors cursor-pointer disabled:opacity-40 disabled:cursor-not-allowed", children: [_jsx(MessageSquare, { className: "w-3 h-3" }), _jsx("span", { children: "Start Team Chat" })] })] })] }, team.id))) })), isAddTeamModalOpen && (_jsx("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-black/75 backdrop-blur-xs p-4", children: _jsxs("div", { className: "w-full max-w-md bg-[#08080a] border border-white/[0.08] rounded-[6px] p-1.5 flex flex-col gap-[2px] shadow-2xl", children: [_jsxs("div", { className: "bg-[#18181a] rounded-t-[4px] px-3 py-2 flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Users, { className: "w-3.5 h-3.5 text-[#a8a8b1]" }), _jsx("span", { className: "text-[13px] font-medium text-white", children: "Create Squad" })] }), _jsx("button", { type: "button", onClick: () => setIsAddTeamModalOpen(false), className: "p-1 rounded-[3px] text-[#7f7f86] hover:text-white hover:bg-white/[0.06]", children: _jsx(X, { className: "w-3.5 h-3.5" }) })] }), _jsxs("form", { onSubmit: handleCreateTeam, children: [_jsxs("fieldset", { disabled: teamCreation.pending || teamCreation.busy, className: "min-w-0 bg-[#111113] px-3 py-3 space-y-2.5", children: [_jsxs("div", { className: "space-y-1", children: [_jsx("label", { className: "text-[11.5px] text-[#a8a8b1]", children: "Team Name" }), _jsx("input", { type: "text", required: true, value: newTeamName, onChange: (e) => setNewTeamName(e.target.value), placeholder: "e.g. Core Engineering, Design, QA", className: "w-full h-8 px-2.5 rounded-[4px] bg-[#0c0c0e] border border-white/[0.06] text-[12px] text-white focus:outline-none focus:border-white/20" })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("label", { className: "text-[11.5px] text-[#a8a8b1]", children: "Description (Optional)" }), _jsx("input", { type: "text", value: newTeamDescription, onChange: (e) => setNewTeamDescription(e.target.value), placeholder: "Mission, responsibilities, or focus area", className: "w-full h-8 px-2.5 rounded-[4px] bg-[#0c0c0e] border border-white/[0.06] text-[12px] text-white focus:outline-none focus:border-white/20" })] })] }), teamCreation.error && _jsxs("p", { role: "alert", className: "p-3 text-[11px] text-amber-300", children: [teamCreation.error, " Your draft is retained; retry saves the same team."] }), _jsxs("div", { className: "bg-[#161618] rounded-b-[4px] px-3 py-2 flex items-center justify-end gap-2", children: [_jsx("button", { type: "button", onClick: () => setIsAddTeamModalOpen(false), className: "h-6.5 px-2.5 rounded-[3px] text-[11.5px] text-[#7f7f86] hover:text-[#d8d8de] hover:bg-white/[0.06]", children: "Cancel" }), _jsx("button", { type: "submit", disabled: teamCreation.busy, className: "h-6.5 px-3 rounded-[3px] bg-[#242428] hover:bg-[#2e2e34] text-[#d8d8de] hover:text-white border border-white/[0.08] text-[11.5px] font-medium", children: teamCreation.busy ? 'Saving team...' : teamCreation.pending ? 'Retry saving team' : 'Create Squad' })] })] })] }) })), isAddAgentModalOpen && (_jsx("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-black/75 backdrop-blur-xs p-4", children: _jsxs("div", { className: "w-full max-w-md bg-[#08080a] border border-white/[0.08] rounded-[6px] p-1.5 flex flex-col gap-[2px] shadow-2xl", children: [_jsxs("div", { className: "bg-[#18181a] rounded-t-[4px] px-3 py-2 flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Bot, { className: "w-3.5 h-3.5 text-[#a8a8b1]" }), _jsx("span", { className: "text-[13px] font-medium text-white", children: "Deploy Agent to Squad" })] }), _jsx("button", { type: "button", onClick: () => setIsAddAgentModalOpen(false), className: "p-1 rounded-[3px] text-[#7f7f86] hover:text-white hover:bg-white/[0.06]", children: _jsx(X, { className: "w-3.5 h-3.5" }) })] }), _jsxs("form", { onSubmit: handleCreateAgent, children: [_jsxs("fieldset", { disabled: agentCreation.pending || agentCreation.busy, className: "min-w-0 bg-[#111113] px-3 py-3 space-y-2.5", children: [_jsxs("div", { className: "space-y-1", children: [_jsx("label", { className: "text-[11.5px] text-[#a8a8b1]", children: "Agent Name" }), _jsx("input", { type: "text", required: true, value: newAgentName, onChange: (e) => setNewAgentName(e.target.value), placeholder: "e.g. Lead Architect, Refactor Agent", className: "w-full h-8 px-2.5 rounded-[4px] bg-[#0c0c0e] border border-white/[0.06] text-[12px] text-white focus:outline-none focus:border-white/20" })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("label", { className: "text-[11.5px] text-[#a8a8b1]", children: "Model" }), _jsxs("select", { value: newAgentModel, onChange: (e) => setNewAgentModel(e.target.value), className: "w-full h-8 px-2 rounded-[4px] bg-[#0c0c0e] border border-white/[0.06] text-[12px] text-white focus:outline-none focus:border-white/20", children: [_jsx("option", { value: "", children: modelsLoading ? 'Loading available models...' : 'Select an available model...' }), availableModels.map(m => _jsxs("option", { value: onboardingModelKey(m), children: [m.name, " (", m.source, " \u00B7 ", m.provider, ")"] }, onboardingModelKey(m)))] }), modelErrors.cloud && _jsx("p", { role: "status", className: "text-[11px] text-amber-300", children: modelErrors.cloud }), modelErrors.local && _jsx("p", { role: "status", className: "text-[11px] text-amber-300", children: modelErrors.local }), modelErrors.acp && _jsx("p", { role: "status", className: "text-[11px] text-amber-300", children: modelErrors.acp }), deployError && _jsx("p", { role: "alert", className: "text-[11px] text-amber-300", children: deployError })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("label", { className: "text-[11.5px] text-[#a8a8b1]", children: "Operational Prompt (Optional)" }), _jsx("textarea", { rows: 3, value: newAgentSystemPrompt, onChange: (e) => setNewAgentSystemPrompt(e.target.value), placeholder: "Rules, directives, operational focus...", className: "w-full px-2.5 py-1.5 rounded-[4px] bg-[#0c0c0e] border border-white/[0.06] text-[12px] text-white focus:outline-none focus:border-white/20 resize-none" })] })] }), agentCreation.error && _jsxs("p", { role: "alert", className: "p-3 text-[11px] text-amber-300", children: [agentCreation.error, " Your draft is retained; retry saves the same agent."] }), _jsxs("div", { className: "bg-[#161618] rounded-b-[4px] px-3 py-2 flex items-center justify-end gap-2", children: [_jsx("button", { type: "button", onClick: () => setIsAddAgentModalOpen(false), className: "h-6.5 px-2.5 rounded-[3px] text-[11.5px] text-[#7f7f86] hover:text-[#d8d8de] hover:bg-white/[0.06]", children: "Cancel" }), _jsx("button", { type: "submit", disabled: agentCreation.busy || (!agentCreation.pending && (modelsLoading || !availableModels.some(m => onboardingModelKey(m) === newAgentModel))), className: "h-6.5 px-3 rounded-[3px] bg-[#242428] hover:bg-[#2e2e34] text-[#d8d8de] hover:text-white border border-white/[0.08] text-[11.5px] font-medium", children: agentCreation.busy ? 'Saving agent...' : agentCreation.pending ? 'Retry saving agent' : modelsLoading ? 'Loading models...' : 'Deploy Agent' })] })] })] }) }))] })] }));
126
+ };
127
+ //# sourceMappingURL=TeamsWorkspaceView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamsWorkspaceView.js","sourceRoot":"","sources":["../../../src/components/agent/TeamsWorkspaceView.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAChD,OAAO,EACL,KAAK,EACL,IAAI,EACJ,GAAG,EACH,aAAa,EACb,QAAQ,EACR,MAAM,EACN,MAAM,EACN,SAAS,EACT,MAAM,EACN,CAAC,EACD,YAAY,GACb,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3G,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAA;AAWlF,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,EACpE,UAAU,EACV,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,GACb,EAAE,EAAE;IACH,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAClD,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnE,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrE,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IAErF,8BAA8B;IAC9B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAClD,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAEhE,+BAA+B;IAC/B,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IACpD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IACtD,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,mBAAmB,EAAE,CAAA;IACtG,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACnE,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAEpE,MAAM,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;IAE/D,qCAAqC;IACrC,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,IAAI,oBAAoB,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,oBAAoB,CAAC,CAAA;YACnE,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;QAClD,CAAC;QACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,CAAA;IACtD,CAAC,EAAE,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC,CAAA;IACtC,MAAM,EAAE,mBAAmB,EAAE,YAAY,EAAE,GAAG,qBAAqB,CAAC,gBAAgB,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAA;IAEjH,6BAA6B;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,IAAI,CAAC,gBAAgB,EAAE,KAAK;YAAE,OAAO,EAAE,CAAA;QACvC,OAAO,gBAAgB,CAAC,KAAK,CAAA;IAC/B,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAEtB,iBAAiB;IACjB,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YAAE,OAAO,KAAK,CAAA;QACrC,MAAM,CAAC,GAAG,WAAW,CAAC,WAAW,EAAE,CAAA;QACnC,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC1D,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CACzD,CAAA;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAA;IAExB,oBAAoB;IACpB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;QAC/B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACnE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEX,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,OAAO,gBAAgB,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC,CAAA;IACnD,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAEtB,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,IAAI,CAAC,gBAAgB;YAAE,OAAO,CAAC,CAAA;QAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAC7C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACzE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,gBAAgB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAA;IAC7G,CAAC,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAA;IAE5C,MAAM,YAAY,GAAG,oBAAoB,CAAC,GAAG,gBAAgB,EAAE,EAAE,IAAI,kBAAkB,EAAE,CAAC,CAAA;IAC1F,MAAM,aAAa,GAAG,oBAAoB,CAAC,GAAG,gBAAgB,EAAE,EAAE,IAAI,mBAAmB,EAAE,CAAC,CAAA;IAC5F,MAAM,gBAAgB,GAAG,KAAK,EAAE,CAAkB,EAAE,EAAE;QACpD,CAAC,CAAC,cAAc,EAAE,CAAA;QAClB,IAAI,YAAY,CAAC,IAAI;YAAE,OAAM;QAC7B,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YAAE,OAAM;QACnF,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,EACvI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC7I,IAAI,CAAC,EAAE;YAAE,OAAM;QACf,cAAc,CAAC,EAAE,CAAC,CAAA;QAClB,qBAAqB,CAAC,EAAE,CAAC,CAAA;QACzB,qBAAqB,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAE,EAAE;QAC5D,IAAI,CAAC,gBAAgB;YAAE,OAAM;QAC7B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,gBAAgB,CAAC,EAAE,CAAC,CAAA;QAChG,mBAAmB,CAAC,aAAa,EAAE,gBAAgB,QAAQ,kCAAkC,EAAE,aAAa,EAAE,GAAG,EAAE;YACjH,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,gBAAgB,CAAC,EAAE,CAAC,CAAA;YAC9F,IAAI,CAAC,QAAQ,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;gBACtG,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAA;YAChG,CAAC;YACD,OAAO,iBAAiB,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QAC7E,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,iBAAiB,GAAG,KAAK,EAAE,CAAkB,EAAE,EAAE;QACrD,CAAC,CAAC,cAAc,EAAE,CAAA;QAClB,IAAI,aAAa,CAAC,IAAI;YAAE,OAAM;QAC9B,IAAI,CAAC,gBAAgB,IAAI,CAAC,oBAAoB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;YAAE,OAAM;QAC9E,IAAI,gBAAgB,CAAC,UAAU,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,oBAAoB,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;YACrH,cAAc,CAAC,sCAAsC,CAAC,CAAC;YAAC,OAAM;QAChE,CAAC;QACD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAA;QACnF,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YAAC,cAAc,CAAC,4BAA4B,CAAC,CAAC;YAAC,OAAM;QAAC,CAAC;QACjG,cAAc,CAAC,IAAI,CAAC,CAAA;QACpB,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC5E,gBAAgB,CAAC,EAAE,EACnB,oBAAoB,EACpB,YAAY,CAAC,IAAI,EAAE,EACnB,QAAS,CAAC,EAAE,EACZ,oBAAoB,EACpB,SAAS,EACT,0BAA0B,CAAC,QAAS,CAAC,CACtC,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,oBAAoB,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACnM,IAAI,CAAC,EAAE;YAAE,OAAM;QACf,eAAe,CAAC,EAAE,CAAC,CAAA;QACnB,uBAAuB,CAAC,EAAE,CAAC,CAAA;QAC3B,uBAAuB,CAAC,IAAI,CAAC,CAAA;QAC7B,sBAAsB,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,MAAM,mBAAmB,GAAG,CAAC,IAAuB,EAAE,EAAE;QACtD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAClC,IAAI,WAAW,EAAE,CAAC;YAChB,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC,CAAA;IAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,CACL,cAAK,SAAS,EAAC,4EAA4E,YACzF,eAAK,SAAS,EAAC,uBAAuB,aACpC,KAAC,SAAS,IAAC,SAAS,EAAC,gCAAgC,GAAG,EACxD,aAAI,SAAS,EAAC,wCAAwC,mCAAwB,EAC9E,YAAG,SAAS,EAAC,4BAA4B,+DAAmD,IACxF,GACF,CACP,CAAA;IACH,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,+FAA+F,aAC3G,YAAY,EACb,eAAK,SAAS,EAAC,6BAA6B,aAE1C,eAAK,SAAS,EAAC,mGAAmG,aAChH,0BACE,cAAK,SAAS,EAAC,yBAAyB,YACtC,eAAM,SAAS,EAAC,sEAAsE,sCAE/E,GACH,EACN,cAAI,SAAS,EAAC,4DAA4D,aACvE,gBAAgB,CAAC,IAAI,cACnB,EACL,aAAG,SAAS,EAAC,mCAAmC,qFACwB,gBAAgB,CAAC,IAAI,eACzF,IACA,EAEN,eAAK,SAAS,EAAC,yBAAyB,aACtC,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,YAAY,EACrB,SAAS,EAAC,+HAA+H,6BAGlI,EACT,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAC1C,SAAS,EAAC,+MAA+M,aAEzN,KAAC,IAAI,IAAC,SAAS,EAAC,aAAa,GAAG,EAChC,sCAAqB,IACd,IACL,IACF,EAGN,eAAK,SAAS,EAAC,yCAAyC,aACtD,eAAK,SAAS,EAAC,mFAAmF,aAChG,eAAK,SAAS,EAAC,4EAA4E,aACzF,eAAM,SAAS,EAAC,qEAAqE,sBAAa,EAClG,KAAC,KAAK,IAAC,SAAS,EAAC,wBAAwB,GAAG,IACxC,EACN,eAAK,SAAS,EAAC,4CAA4C,aACzD,cAAK,SAAS,EAAC,qDAAqD,YAAE,KAAK,CAAC,MAAM,GAAO,EACzF,cAAK,SAAS,EAAC,4BAA4B,8BAAoB,IAC3D,IACF,EAEN,eAAK,SAAS,EAAC,mFAAmF,aAChG,eAAK,SAAS,EAAC,4EAA4E,aACzF,eAAM,SAAS,EAAC,qEAAqE,6BAAoB,EACzG,KAAC,GAAG,IAAC,SAAS,EAAC,wBAAwB,GAAG,IACtC,EACN,eAAK,SAAS,EAAC,4CAA4C,aACzD,cAAK,SAAS,EAAC,qDAAqD,YAAE,WAAW,GAAO,EACxF,cAAK,SAAS,EAAC,4BAA4B,iCAAuB,IAC9D,IACF,EAEN,eAAK,SAAS,EAAC,mFAAmF,aAChG,eAAK,SAAS,EAAC,4EAA4E,aACzF,eAAM,SAAS,EAAC,qEAAqE,yBAAgB,EACrG,KAAC,MAAM,IAAC,SAAS,EAAC,wBAAwB,GAAG,IACzC,EACN,eAAK,SAAS,EAAC,4CAA4C,aACzD,cAAK,SAAS,EAAC,qDAAqD,YAAE,aAAa,GAAO,EAC1F,cAAK,SAAS,EAAC,4BAA4B,oCAA0B,IACjE,IACF,EAEN,eAAK,SAAS,EAAC,mFAAmF,aAChG,eAAK,SAAS,EAAC,4EAA4E,aACzF,eAAM,SAAS,EAAC,qEAAqE,yBAAgB,EACrG,KAAC,aAAa,IAAC,SAAS,EAAC,wBAAwB,GAAG,IAChD,EACN,eAAK,SAAS,EAAC,4CAA4C,aACzD,cAAK,SAAS,EAAC,qDAAqD,YAAE,aAAa,GAAO,EAC1F,cAAK,SAAS,EAAC,4BAA4B,mCAAyB,IAChE,IACF,IACF,EAGN,eAAK,SAAS,EAAC,UAAU,aACvB,KAAC,MAAM,IAAC,SAAS,EAAC,yFAAyF,GAAG,EAC9G,gBACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC/C,WAAW,EAAE,UAAU,gBAAgB,CAAC,IAAI,WAAW,EACvD,SAAS,EAAC,uLAAuL,GACjM,IACE,EAGL,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC5B,eAAK,SAAS,EAAC,iFAAiF,aAC9F,KAAC,KAAK,IAAC,SAAS,EAAC,gCAAgC,GAAG,EACpD,aAAI,SAAS,EAAC,wCAAwC,+BAAoB,EAC1E,YAAG,SAAS,EAAC,+CAA+C,YACzD,WAAW,CAAC,CAAC,CAAC,qBAAqB,WAAW,IAAI,CAAC,CAAC,CAAC,2EAA2E,GAC/H,EACH,CAAC,WAAW,IAAI,CACf,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAC1C,SAAS,EAAC,oNAAoN,aAE9N,KAAC,IAAI,IAAC,SAAS,EAAC,aAAa,GAAG,EAChC,sCAAqB,IACd,CACV,IACG,CACP,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,yCAAyC,YACrD,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC3B,eAEE,SAAS,EAAC,+IAA+I,aAGzJ,eAAK,SAAS,EAAC,oFAAoF,aACjG,eAAK,SAAS,EAAC,iCAAiC,aAC9C,KAAC,KAAK,IAAC,SAAS,EAAC,0CAA0C,GAAG,EAC9D,aAAI,SAAS,EAAC,+CAA+C,YAAE,IAAI,CAAC,IAAI,GAAM,IAC1E,EAEN,eAAK,SAAS,EAAC,2BAA2B,aACxC,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE;wDACZ,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;wDAChC,sBAAsB,CAAC,IAAI,CAAC,CAAA;oDAC9B,CAAC,EACD,SAAS,EAAC,+FAA+F,EACzG,KAAK,EAAC,mBAAmB,YAEzB,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,GAAG,GACrB,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAC5C,SAAS,EAAC,+FAA+F,EACzG,KAAK,EAAC,eAAe,YAErB,KAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,GAAG,GACzB,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EACnD,SAAS,EAAC,6FAA6F,EACvG,KAAK,EAAC,aAAa,YAEnB,KAAC,MAAM,IAAC,SAAS,EAAC,SAAS,GAAG,GACvB,IACL,IACF,EAGN,eAAK,SAAS,EAAC,qEAAqE,aAClF,YAAG,SAAS,EAAC,8CAA8C,YACxD,IAAI,CAAC,WAAW,IAAI,yBAAyB,IAAI,CAAC,MAAM,CAAC,MAAM,0BAA0B,GACxF,EAGJ,eAAK,SAAS,EAAC,WAAW,aACxB,eAAK,SAAS,EAAC,sEAAsE,0BACzE,IAAI,CAAC,MAAM,CAAC,MAAM,SACxB,EACL,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC1B,cAAK,SAAS,EAAC,mCAAmC,uCAA6B,CAChF,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,sBAAsB,YAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC1B,kBAEE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,EACtC,SAAS,EAAC,uMAAuM,EACjN,KAAK,EAAE,aAAa,KAAK,CAAC,IAAI,EAAE,aAEhC,KAAC,GAAG,IAAC,SAAS,EAAC,4BAA4B,GAAG,EAC9C,eAAM,SAAS,EAAC,wBAAwB,YAAE,KAAK,CAAC,IAAI,GAAQ,EAC5D,eAAM,SAAS,EAAC,qCAAqC,YAClD,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAC/D,KAVF,KAAK,CAAC,EAAE,CAWN,CACV,CAAC,GACE,CACP,IACG,IACF,EAGN,eAAK,SAAS,EAAC,8EAA8E,aAC3F,gBAAM,SAAS,EAAC,sCAAsC,qBAC/C,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IACnB,EACP,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EACxC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAClC,SAAS,EAAC,6PAA6P,aAEvQ,KAAC,aAAa,IAAC,SAAS,EAAC,SAAS,GAAG,EACrC,6CAA4B,IACrB,IACL,KA1FD,IAAI,CAAC,EAAE,CA2FR,CACP,CAAC,GACE,CACP,EAGA,kBAAkB,IAAI,CACrB,cAAK,SAAS,EAAC,sFAAsF,YACnG,eAAK,SAAS,EAAC,gHAAgH,aAC7H,eAAK,SAAS,EAAC,0EAA0E,aACvF,eAAK,SAAS,EAAC,yBAAyB,aACtC,KAAC,KAAK,IAAC,SAAS,EAAC,4BAA4B,GAAG,EAChD,eAAM,SAAS,EAAC,oCAAoC,6BAAoB,IACpE,EACN,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAC3C,SAAS,EAAC,yEAAyE,YAEnF,KAAC,CAAC,IAAC,SAAS,EAAC,aAAa,GAAG,GACtB,IACL,EAEN,gBAAM,QAAQ,EAAE,gBAAgB,aAC9B,oBAAU,QAAQ,EAAE,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,SAAS,EAAC,4CAA4C,aACnH,eAAK,SAAS,EAAC,WAAW,aACxB,gBAAO,SAAS,EAAC,8BAA8B,0BAAkB,EACjE,gBACE,IAAI,EAAC,MAAM,EACX,QAAQ,QACR,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC/C,WAAW,EAAC,mCAAmC,EAC/C,SAAS,EAAC,yIAAyI,GACnJ,IACE,EAEN,eAAK,SAAS,EAAC,WAAW,aACxB,gBAAO,SAAS,EAAC,8BAA8B,uCAA+B,EAC9E,gBACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,kBAAkB,EACzB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACtD,WAAW,EAAC,0CAA0C,EACtD,SAAS,EAAC,yIAAyI,GACnJ,IACE,IACG,EACV,YAAY,CAAC,KAAK,IAAI,aAAG,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,gCAAgC,aAAE,YAAY,CAAC,KAAK,2DAAwD,EAE7J,eAAK,SAAS,EAAC,4EAA4E,aACzF,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAC3C,SAAS,EAAC,oGAAoG,uBAGvG,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,YAAY,CAAC,IAAI,EAC3B,SAAS,EAAC,+IAA+I,YAExJ,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,cAAc,GAC5F,IACL,IACD,IACH,GACF,CACP,EAGA,mBAAmB,IAAI,CACtB,cAAK,SAAS,EAAC,sFAAsF,YACnG,eAAK,SAAS,EAAC,gHAAgH,aAC7H,eAAK,SAAS,EAAC,0EAA0E,aACvF,eAAK,SAAS,EAAC,yBAAyB,aACtC,KAAC,GAAG,IAAC,SAAS,EAAC,4BAA4B,GAAG,EAC9C,eAAM,SAAS,EAAC,oCAAoC,sCAA6B,IAC7E,EACN,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAC5C,SAAS,EAAC,yEAAyE,YAEnF,KAAC,CAAC,IAAC,SAAS,EAAC,aAAa,GAAG,GACtB,IACL,EAEN,gBAAM,QAAQ,EAAE,iBAAiB,aAC/B,oBAAU,QAAQ,EAAE,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,SAAS,EAAC,4CAA4C,aACrH,eAAK,SAAS,EAAC,WAAW,aACxB,gBAAO,SAAS,EAAC,8BAA8B,2BAAmB,EAClE,gBACE,IAAI,EAAC,MAAM,EACX,QAAQ,QACR,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAChD,WAAW,EAAC,qCAAqC,EACjD,SAAS,EAAC,yIAAyI,GACnJ,IACE,EAEN,eAAK,SAAS,EAAC,WAAW,aACxB,gBAAO,SAAS,EAAC,8BAA8B,sBAAc,EAC7D,kBACE,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACjD,SAAS,EAAC,uIAAuI,aAEjJ,iBAAQ,KAAK,EAAC,EAAE,YAAE,aAAa,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,8BAA8B,GAAU,EACzG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAoC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,aAAG,CAAC,CAAC,IAAI,QAAI,CAAC,CAAC,MAAM,cAAK,CAAC,CAAC,QAAQ,UAAvF,kBAAkB,CAAC,CAAC,CAAC,CAA6E,CAAC,IACnI,EACR,WAAW,CAAC,KAAK,IAAI,YAAG,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,4BAA4B,YAAE,WAAW,CAAC,KAAK,GAAK,EACpG,WAAW,CAAC,KAAK,IAAI,YAAG,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,4BAA4B,YAAE,WAAW,CAAC,KAAK,GAAK,EACpG,WAAW,CAAC,GAAG,IAAI,YAAG,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,4BAA4B,YAAE,WAAW,CAAC,GAAG,GAAK,EAChG,WAAW,IAAI,YAAG,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,4BAA4B,YAAE,WAAW,GAAK,IACpF,EAEN,eAAK,SAAS,EAAC,WAAW,aACxB,gBAAO,SAAS,EAAC,8BAA8B,8CAAsC,EACrF,mBACE,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACxD,WAAW,EAAC,yCAAyC,EACrD,SAAS,EAAC,wJAAwJ,GAClK,IACE,IACG,EACV,aAAa,CAAC,KAAK,IAAI,aAAG,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,gCAAgC,aAAE,aAAa,CAAC,KAAK,4DAAyD,EAEhK,eAAK,SAAS,EAAC,4EAA4E,aACzF,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAC5C,SAAS,EAAC,oGAAoG,uBAGvG,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,EAClJ,SAAS,EAAC,+IAA+I,YAExJ,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,cAAc,GACtI,IACL,IACD,IACH,GACF,CACP,IACG,IACF,CACP,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare function WorkspacePersistenceNotice(): React.JSX.Element;
3
+ //# sourceMappingURL=WorkspacePersistenceNotice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkspacePersistenceNotice.d.ts","sourceRoot":"","sources":["../../../src/components/agent/WorkspacePersistenceNotice.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AA4BlD,wBAAgB,0BAA0B,sBAYzC"}
@@ -0,0 +1,23 @@
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import React, { useEffect, useState } from 'react';
3
+ import { useWorkspaceStore } from '../../stores/workspaceStore.js';
4
+ /** Workspace edits are shared by every surface, not just the settings page. */
5
+ function WorkspacePersistenceBody() {
6
+ const status = useWorkspaceStore(s => s.persistenceStatus);
7
+ const error = useWorkspaceStore(s => s.persistenceError);
8
+ const retry = useWorkspaceStore(s => s.retryPersistence);
9
+ const discard = useWorkspaceStore(s => s.discardUnsavedWorkspaceChanges);
10
+ const [confirmReload, setConfirmReload] = useState(false);
11
+ useEffect(() => { setConfirmReload(false); }, [error, status]);
12
+ if (status !== 'error' || !error)
13
+ return null;
14
+ return _jsxs("section", { role: "alert", "aria-label": "Unsaved workspace changes", className: "flex-shrink-0 border-b border-red-400/20 bg-[#181113] px-4 py-2 text-[12px] text-red-200", children: [_jsxs("p", { className: "break-words", children: ["Workspace changes are not saved: ", error] }), _jsxs("div", { className: "mt-1 flex flex-wrap gap-x-4 gap-y-2", children: [_jsx("button", { type: "button", onClick: retry, className: "underline", children: "Retry save" }), !confirmReload && _jsx("button", { type: "button", onClick: () => setConfirmReload(true), className: "underline", children: "Reload saved state\u2026" })] }), confirmReload && _jsxs("div", { className: "mt-2", children: [_jsx("p", { children: "Reloading discards this window's unsaved workspace edits. Other windows' saved changes will be kept." }), _jsxs("div", { className: "mt-1 flex flex-wrap gap-x-4 gap-y-2", children: [_jsx("button", { type: "button", onClick: () => { setConfirmReload(false); void discard(); }, className: "underline", children: "Discard local edits and reload" }), _jsx("button", { type: "button", onClick: () => setConfirmReload(false), className: "underline", children: "Keep editing" })] })] })] });
15
+ }
16
+ export function WorkspacePersistenceNotice() {
17
+ const error = useWorkspaceStore(s => s.lifecycleError);
18
+ const busy = useWorkspaceStore(s => s.lifecycleBusy);
19
+ const message = useWorkspaceStore(s => s.lifecycleMessage);
20
+ const retry = useWorkspaceStore(s => s.retryLifecycle);
21
+ return _jsxs(_Fragment, { children: [_jsx(WorkspacePersistenceBody, {}), (error || busy || message) && _jsxs("section", { role: error ? 'alert' : 'status', "aria-label": "Workspace lifecycle", className: "flex-shrink-0 border-b border-white/10 bg-[#181113] px-4 py-2 text-xs text-white/80", children: [_jsx("p", { children: error || (busy ? 'Waiting for host lifecycle acknowledgement…' : message) }), error && _jsx("button", { type: "button", disabled: busy, onClick: () => { void retry(); }, className: "underline", children: "Retry lifecycle operation" })] })] });
22
+ }
23
+ //# sourceMappingURL=WorkspacePersistenceNotice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkspacePersistenceNotice.js","sourceRoot":"","sources":["../../../src/components/agent/WorkspacePersistenceNotice.tsx"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ interface AcpAgentConfigFormProps {
11
11
  }
12
12
  export declare function AcpAgentConfigForm({ agent, saving, error, onSave }: AcpAgentConfigFormProps): React.JSX.Element;
13
13
  export declare function parseListText(value: string): string[];
14
+ export declare function argumentReplacement(editing: boolean, replace: boolean, text: string): Pick<AcpAgentSaveInput, 'args'>;
14
15
  export declare function parseEnvText(value: string): {
15
16
  values: Record<string, string>;
16
17
  error?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"AcpAgentConfigForm.d.ts","sourceRoot":"","sources":["../../../../src/components/agent/acp/AcpAgentConfigForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAEvF,UAAU,uBAAuB;IAC/B,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;IAC1B,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACpF;AAED,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,uBAAuB,qBAqL3F;AAYD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAKrD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAY9F"}
1
+ {"version":3,"file":"AcpAgentConfigForm.d.ts","sourceRoot":"","sources":["../../../../src/components/agent/acp/AcpAgentConfigForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAEvF,UAAU,uBAAuB;IAC/B,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;IAC1B,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACpF;AAED,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,uBAAuB,qBA4M3F;AAYD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAKrD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAErH;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAa9F"}
@@ -1,20 +1,27 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React, { useEffect, useState } from 'react';
2
+ import React, { useEffect, useRef, useState } from 'react';
3
3
  export function AcpAgentConfigForm({ agent, saving, error, onSave }) {
4
4
  const [id, setId] = useState('');
5
5
  const [name, setName] = useState('');
6
6
  const [command, setCommand] = useState('');
7
7
  const [argsText, setArgsText] = useState('');
8
+ const [replaceArgs, setReplaceArgs] = useState(false);
8
9
  const [cwd, setCwd] = useState('');
9
10
  const [envText, setEnvText] = useState('');
10
11
  const [enabled, setEnabled] = useState(false);
11
12
  const [trustLevel, setTrustLevel] = useState('restricted');
12
13
  const [localError, setLocalError] = useState(null);
14
+ const [pending, setPending] = useState(false);
15
+ const generation = useRef(0);
16
+ const submitting = useRef(false);
13
17
  useEffect(() => {
14
18
  setId(agent?.id || '');
15
19
  setName(agent?.name || '');
16
20
  setCommand('');
17
- setArgsText(agent?.args?.join('\n') || '');
21
+ generation.current += 1;
22
+ // Registry views contain redacted arguments. They must never be saved back.
23
+ setArgsText('');
24
+ setReplaceArgs(false);
18
25
  setCwd('');
19
26
  setEnvText('');
20
27
  setEnabled(agent?.enabled === true);
@@ -24,6 +31,9 @@ export function AcpAgentConfigForm({ agent, saving, error, onSave }) {
24
31
  const isEditing = !!agent;
25
32
  const submit = async (event) => {
26
33
  event.preventDefault();
34
+ if (saving || submitting.current)
35
+ return;
36
+ const submittedGeneration = generation.current;
27
37
  const cleanId = id.trim();
28
38
  const cleanName = name.trim();
29
39
  if (!cleanId || !cleanName) {
@@ -40,7 +50,7 @@ export function AcpAgentConfigForm({ agent, saving, error, onSave }) {
40
50
  name: cleanName,
41
51
  enabled,
42
52
  trustLevel,
43
- args: parseListText(argsText),
53
+ ...argumentReplacement(isEditing, replaceArgs, argsText),
44
54
  };
45
55
  if (command.trim())
46
56
  payload.command = command.trim();
@@ -48,15 +58,33 @@ export function AcpAgentConfigForm({ agent, saving, error, onSave }) {
48
58
  payload.cwd = cwd.trim();
49
59
  if (Object.keys(env.values).length > 0)
50
60
  payload.env = env.values;
51
- const result = await onSave(payload);
52
- if (result.success) {
53
- setCommand('');
54
- setCwd('');
55
- setEnvText('');
56
- setLocalError(null);
61
+ submitting.current = true;
62
+ setPending(true);
63
+ try {
64
+ const result = await onSave(payload);
65
+ if (submittedGeneration !== generation.current)
66
+ return;
67
+ if (result.success) {
68
+ setCommand('');
69
+ setCwd('');
70
+ setEnvText('');
71
+ setArgsText('');
72
+ setReplaceArgs(false);
73
+ setLocalError(null);
74
+ }
75
+ else
76
+ setLocalError(result.error || 'ACP configuration was not saved.');
77
+ }
78
+ catch {
79
+ if (submittedGeneration === generation.current)
80
+ setLocalError('ACP configuration could not be saved. Your input has been retained.');
81
+ }
82
+ finally {
83
+ submitting.current = false;
84
+ setPending(false);
57
85
  }
58
86
  };
59
- return (_jsxs("form", { onSubmit: submit, className: "min-h-0 space-y-3", children: [_jsxs("div", { className: "rounded border border-white/[0.06] bg-black/20 px-3 py-2", children: [_jsx("p", { className: "text-[10px] uppercase tracking-[0.14em] text-white/44", children: "Endpoint config" }), _jsx("p", { className: "mt-1 text-[10px] leading-relaxed text-white/30", children: "Command and arguments stay redacted after save. Approval and certification decide whether this endpoint can run." })] }), _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-2", children: [_jsx(Field, { label: "Agent id", helper: "Stable registry id. Use lowercase names for portable configs.", children: _jsx("input", { value: id, onChange: (event) => setId(event.target.value), disabled: isEditing, placeholder: "fixture-normal", className: "acp-form-input" }) }), _jsx(Field, { label: "Display name", helper: "Visible name in the ACP Agent Manager.", children: _jsx("input", { value: name, onChange: (event) => setName(event.target.value), placeholder: "Fixture ACP normal", className: "acp-form-input" }) })] }), _jsx(Field, { label: isEditing ? 'Command path replacement' : 'Command path', helper: isEditing ? `Stored command is redacted as ${agent?.command || 'command'}. Leave blank to preserve it.` : 'Absolute executable path only. Shell commands are rejected by backend validation.', children: _jsx("input", { value: command, onChange: (event) => setCommand(event.target.value), placeholder: isEditing ? 'Leave blank to preserve stored command' : 'C:\\Program Files\\Agent\\agent.exe', className: "acp-form-input font-mono text-[11px]" }) }), _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-2", children: [_jsx(Field, { label: "Args", helper: "One argument per line. Structured list only, not a shell command string.", children: _jsx("textarea", { value: argsText, onChange: (event) => setArgsText(event.target.value), rows: 4, placeholder: "--mode=normal", className: "acp-form-input resize-none font-mono text-[11px]" }) }), _jsx(Field, { label: "Working directory", helper: isEditing ? 'Leave blank to preserve stored cwd. Must be absolute if provided.' : 'Optional absolute cwd.', children: _jsx("input", { value: cwd, onChange: (event) => setCwd(event.target.value), placeholder: isEditing ? 'Leave blank to preserve cwd' : 'C:\\Users\\you\\project', className: "acp-form-input font-mono text-[11px]" }) })] }), _jsx(Field, { label: "Environment", helper: "Env keys only are shown after save. Non-secret fixture/config values only; raw tokens and keys are rejected.", children: _jsx("textarea", { value: envText, onChange: (event) => setEnvText(event.target.value), rows: 3, placeholder: "XENO_ACP_FIXTURE_MODE=normal", className: "acp-form-input resize-none font-mono text-[11px]" }) }), agent?.envKeys?.length ? (_jsxs("div", { className: "rounded border border-white/[0.05] bg-black/20 px-3 py-2", children: [_jsx("p", { className: "text-[10px] uppercase tracking-[0.14em] text-white/24", children: "Env keys only" }), _jsx("div", { className: "mt-1 flex flex-wrap gap-1.5", children: agent.envKeys.map((key) => (_jsx("span", { className: "rounded-[3px] bg-white/[0.06] px-1.5 py-0.5 font-mono text-[10px] text-white/48", children: key }, key))) })] })) : null, _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-2", children: [_jsxs("label", { className: "flex items-center justify-between rounded border border-white/[0.06] bg-black/20 px-3 py-2", children: [_jsxs("span", { children: [_jsx("span", { className: "block text-[10px] uppercase tracking-[0.14em] text-white/28", children: "Enabled" }), _jsx("span", { className: "block text-[10px] text-white/32", children: "Disabled configs cannot be tested or launched." })] }), _jsx("input", { type: "checkbox", checked: enabled, onChange: (event) => setEnabled(event.target.checked), className: "h-4 w-4 accent-white" })] }), _jsx(Field, { label: "Trust level", helper: "Restricted is the default. Workspace still stays under XENO policy.", children: _jsxs("select", { value: trustLevel, onChange: (event) => setTrustLevel(event.target.value === 'workspace' ? 'workspace' : 'restricted'), className: "acp-form-input", children: [_jsx("option", { value: "restricted", children: "restricted" }), _jsx("option", { value: "workspace", children: "workspace" })] }) })] }), (localError || error) && (_jsx("div", { className: "rounded border border-[#4b1f24] bg-[#1a0f12] px-3 py-2 text-[11px] leading-relaxed text-[#ffb0b0]", children: localError || error })), _jsx("button", { type: "submit", disabled: saving, className: "h-8 w-full rounded-[4px] bg-white/[0.09] px-3 text-[10px] uppercase tracking-[0.13em] text-white/72 transition-transform hover:bg-white/[0.13] active:translate-y-[1px] disabled:opacity-35", children: saving ? 'Saving...' : isEditing ? 'Save ACP agent' : 'Create ACP agent' })] }));
87
+ return (_jsx("form", { onSubmit: submit, className: "min-h-0 space-y-3", children: _jsxs("fieldset", { disabled: saving || pending, className: "space-y-3", children: [_jsxs("div", { className: "rounded border border-white/[0.06] bg-black/20 px-3 py-2", children: [_jsx("p", { className: "text-[10px] uppercase tracking-[0.14em] text-white/44", children: "Endpoint config" }), _jsx("p", { className: "mt-1 text-[10px] leading-relaxed text-white/30", children: "Command and arguments stay redacted after save. Approval and certification decide whether this endpoint can run." })] }), _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-2", children: [_jsx(Field, { label: "Agent id", helper: "Stable registry id. Use lowercase names for portable configs.", children: _jsx("input", { value: id, onChange: (event) => setId(event.target.value), disabled: isEditing, placeholder: "my-acp-agent", className: "acp-form-input" }) }), _jsx(Field, { label: "Display name", helper: "Visible name in the ACP Agent Manager.", children: _jsx("input", { value: name, onChange: (event) => setName(event.target.value), placeholder: "My ACP agent", className: "acp-form-input" }) })] }), _jsx(Field, { label: isEditing ? 'Command path replacement' : 'Command path', helper: isEditing ? `Stored command is redacted as ${agent?.command || 'command'}. Leave blank to preserve it.` : 'Absolute executable path only. Shell commands are rejected by backend validation.', children: _jsx("input", { value: command, onChange: (event) => setCommand(event.target.value), placeholder: isEditing ? 'Leave blank to preserve stored command' : 'C:\\Program Files\\Agent\\agent.exe', className: "acp-form-input font-mono text-[11px]" }) }), _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-2", children: [_jsx(Field, { label: "Args", helper: isEditing ? 'Stored arguments are redacted. Explicitly replace the complete list; an empty replacement removes all arguments.' : 'One argument per line. Use arguments documented by your ACP executable.', children: _jsx("textarea", { value: argsText, onChange: (event) => setArgsText(event.target.value), disabled: isEditing && !replaceArgs, rows: 4, placeholder: isEditing ? 'Stored arguments will be preserved' : 'One argument per line', className: "acp-form-input resize-none font-mono text-[11px]" }) }), _jsx(Field, { label: "Working directory", helper: isEditing ? 'Leave blank to preserve stored cwd. Must be absolute if provided.' : 'Optional absolute cwd.', children: _jsx("input", { value: cwd, onChange: (event) => setCwd(event.target.value), placeholder: isEditing ? 'Leave blank to preserve cwd' : 'C:\\Users\\you\\project', className: "acp-form-input font-mono text-[11px]" }) })] }), isEditing && _jsxs("label", { className: "flex items-center gap-2 text-[11px] text-white/60", children: [_jsx("input", { type: "checkbox", checked: replaceArgs, onChange: event => setReplaceArgs(event.target.checked) }), "Replace stored arguments"] }), _jsx(Field, { label: "Environment", helper: "Only non-secret configuration values belong here. Enter the complete replacement environment; leaving it blank preserves stored values. Raw tokens and keys are rejected.", children: _jsx("textarea", { value: envText, onChange: (event) => setEnvText(event.target.value), rows: 3, placeholder: "VARIABLE_NAME=value", className: "acp-form-input resize-none font-mono text-[11px]" }) }), agent?.envKeys?.length ? (_jsxs("div", { className: "rounded border border-white/[0.05] bg-black/20 px-3 py-2", children: [_jsx("p", { className: "text-[10px] uppercase tracking-[0.14em] text-white/24", children: "Env keys only" }), _jsx("div", { className: "mt-1 flex flex-wrap gap-1.5", children: agent.envKeys.map((key) => (_jsx("span", { className: "rounded-[3px] bg-white/[0.06] px-1.5 py-0.5 font-mono text-[10px] text-white/48", children: key }, key))) })] })) : null, _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-2", children: [_jsxs("label", { className: "flex items-center justify-between rounded border border-white/[0.06] bg-black/20 px-3 py-2", children: [_jsxs("span", { children: [_jsx("span", { className: "block text-[10px] uppercase tracking-[0.14em] text-white/28", children: "Enabled" }), _jsx("span", { className: "block text-[10px] text-white/32", children: "Disabled configs cannot be tested or launched." })] }), _jsx("input", { type: "checkbox", checked: enabled, onChange: (event) => setEnabled(event.target.checked), className: "h-4 w-4 accent-white" })] }), _jsx(Field, { label: "Trust level", helper: "Restricted is the default. Workspace still stays under XENO policy.", children: _jsxs("select", { value: trustLevel, onChange: (event) => setTrustLevel(event.target.value === 'workspace' ? 'workspace' : 'restricted'), className: "acp-form-input", children: [_jsx("option", { value: "restricted", children: "restricted" }), _jsx("option", { value: "workspace", children: "workspace" })] }) })] }), (localError || error) && (_jsx("div", { role: "alert", className: "rounded border border-[#4b1f24] bg-[#1a0f12] px-3 py-2 text-[11px] leading-relaxed text-[#ffb0b0]", children: localError || error })), _jsx("button", { type: "submit", disabled: saving || pending, className: "h-8 w-full rounded-[4px] bg-white/[0.09] px-3 text-[10px] uppercase tracking-[0.13em] text-white/72 transition-transform hover:bg-white/[0.13] active:translate-y-[1px] disabled:opacity-35", children: saving || pending ? 'Saving...' : isEditing ? 'Save ACP agent' : 'Create ACP agent' })] }) }));
60
88
  }
61
89
  function Field({ label, helper, children }) {
62
90
  return (_jsxs("label", { className: "block", children: [_jsx("span", { className: "block text-[10px] uppercase tracking-[0.14em] text-white/30", children: label }), _jsx("span", { className: "mb-1 mt-0.5 block text-[10px] leading-relaxed text-white/24", children: helper }), children] }));
@@ -67,18 +95,23 @@ export function parseListText(value) {
67
95
  .map((item) => item.trim())
68
96
  .filter(Boolean);
69
97
  }
98
+ export function argumentReplacement(editing, replace, text) {
99
+ return !editing || replace ? { args: parseListText(text) } : {};
100
+ }
70
101
  export function parseEnvText(value) {
71
102
  const values = {};
72
103
  const lines = parseListText(value);
73
- for (const line of lines) {
104
+ for (const [lineIndex, line] of lines.entries()) {
74
105
  const index = line.indexOf('=');
75
106
  if (index <= 0)
76
- return { values: {}, error: `Invalid env entry: ${line}` };
107
+ return { values: {}, error: `Invalid environment entry on line ${lineIndex + 1}; expected NAME=value.` };
77
108
  const key = line.slice(0, index).trim();
78
109
  const itemValue = line.slice(index + 1);
79
110
  if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key))
80
- return { values: {}, error: `Invalid env key: ${key}` };
81
- values[key] = itemValue;
111
+ return { values: {}, error: `Invalid environment name on line ${lineIndex + 1}.` };
112
+ if (Object.keys(values).some(existing => existing.toUpperCase() === key.toUpperCase()))
113
+ return { values: {}, error: `Duplicate environment name on line ${lineIndex + 1}.` };
114
+ Object.defineProperty(values, key, { value: itemValue, enumerable: true, configurable: true, writable: true });
82
115
  }
83
116
  return { values };
84
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AcpAgentConfigForm.js","sourceRoot":"","sources":["../../../../src/components/agent/acp/AcpAgentConfigForm.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AcpAgentConfigForm.js","sourceRoot":"","sources":["../../../../src/components/agent/acp/AcpAgentConfigForm.tsx"],"names":[],"mappings":"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"}