@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.
- package/dist/adapters/agentHostPlatformBridge.d.ts.map +1 -1
- package/dist/adapters/agentHostPlatformBridge.js +96 -16
- package/dist/adapters/agentHostPlatformBridge.js.map +1 -1
- package/dist/adapters/hubAgentPlatformBridge.d.ts.map +1 -1
- package/dist/adapters/hubAgentPlatformBridge.js +2 -0
- package/dist/adapters/hubAgentPlatformBridge.js.map +1 -1
- package/dist/adapters/scopedBackupBridge.d.ts +4 -0
- package/dist/adapters/scopedBackupBridge.d.ts.map +1 -0
- package/dist/adapters/scopedBackupBridge.js +49 -0
- package/dist/adapters/scopedBackupBridge.js.map +1 -0
- package/dist/adapters/xenoAgentCompatibilityBridge.d.ts.map +1 -1
- package/dist/adapters/xenoAgentCompatibilityBridge.js +9 -1
- package/dist/adapters/xenoAgentCompatibilityBridge.js.map +1 -1
- package/dist/agent.css +13227 -0
- package/dist/components/agent/AgentIdentityGenerator.d.ts +16 -0
- package/dist/components/agent/AgentIdentityGenerator.d.ts.map +1 -0
- package/dist/components/agent/AgentIdentityGenerator.js +80 -0
- package/dist/components/agent/AgentIdentityGenerator.js.map +1 -0
- package/dist/components/agent/AgentInterface.d.ts +1 -0
- package/dist/components/agent/AgentInterface.d.ts.map +1 -1
- package/dist/components/agent/AgentInterface.js +1816 -643
- package/dist/components/agent/AgentInterface.js.map +1 -1
- package/dist/components/agent/AgentNotificationBanner.d.ts +10 -0
- package/dist/components/agent/AgentNotificationBanner.d.ts.map +1 -0
- package/dist/components/agent/AgentNotificationBanner.js +28 -0
- package/dist/components/agent/AgentNotificationBanner.js.map +1 -0
- package/dist/components/agent/AgentOnboarding.d.ts +16 -2
- package/dist/components/agent/AgentOnboarding.d.ts.map +1 -1
- package/dist/components/agent/AgentOnboarding.js +93 -201
- package/dist/components/agent/AgentOnboarding.js.map +1 -1
- package/dist/components/agent/AgentView.d.ts.map +1 -1
- package/dist/components/agent/AgentView.js +533 -308
- package/dist/components/agent/AgentView.js.map +1 -1
- package/dist/components/agent/AgentWorkbenchPanel.d.ts +3 -1
- package/dist/components/agent/AgentWorkbenchPanel.d.ts.map +1 -1
- package/dist/components/agent/AgentWorkbenchPanel.js +3 -2
- package/dist/components/agent/AgentWorkbenchPanel.js.map +1 -1
- package/dist/components/agent/AgentWorkspaceBrowserPanel.d.ts +4 -1
- package/dist/components/agent/AgentWorkspaceBrowserPanel.d.ts.map +1 -1
- package/dist/components/agent/AgentWorkspaceBrowserPanel.js +23 -195
- package/dist/components/agent/AgentWorkspaceBrowserPanel.js.map +1 -1
- package/dist/components/agent/AgentsWorkspaceView.d.ts +12 -0
- package/dist/components/agent/AgentsWorkspaceView.d.ts.map +1 -0
- package/dist/components/agent/AgentsWorkspaceView.js +129 -0
- package/dist/components/agent/AgentsWorkspaceView.js.map +1 -0
- package/dist/components/agent/DevelopmentCoordinationPanel.d.ts +7 -0
- package/dist/components/agent/DevelopmentCoordinationPanel.d.ts.map +1 -1
- package/dist/components/agent/DevelopmentCoordinationPanel.js +57 -49
- package/dist/components/agent/DevelopmentCoordinationPanel.js.map +1 -1
- package/dist/components/agent/KnowledgePanel.d.ts.map +1 -1
- package/dist/components/agent/KnowledgePanel.js +17 -67
- package/dist/components/agent/KnowledgePanel.js.map +1 -1
- package/dist/components/agent/LiveConversationCollaboration.d.ts +27 -0
- package/dist/components/agent/LiveConversationCollaboration.d.ts.map +1 -0
- package/dist/components/agent/LiveConversationCollaboration.js +127 -0
- package/dist/components/agent/LiveConversationCollaboration.js.map +1 -0
- package/dist/components/agent/MonacoDiffWorkbenchEditor.d.ts.map +1 -1
- package/dist/components/agent/MonacoDiffWorkbenchEditor.js +1 -1
- package/dist/components/agent/MonacoDiffWorkbenchEditor.js.map +1 -1
- package/dist/components/agent/MonacoWorkbenchEditor.d.ts.map +1 -1
- package/dist/components/agent/MonacoWorkbenchEditor.js +3 -3
- package/dist/components/agent/MonacoWorkbenchEditor.js.map +1 -1
- package/dist/components/agent/OwnedBrowserController.d.ts +55 -0
- package/dist/components/agent/OwnedBrowserController.d.ts.map +1 -0
- package/dist/components/agent/OwnedBrowserController.js +166 -0
- package/dist/components/agent/OwnedBrowserController.js.map +1 -0
- package/dist/components/agent/OwnedWorkforceView.d.ts +10 -0
- package/dist/components/agent/OwnedWorkforceView.d.ts.map +1 -0
- package/dist/components/agent/OwnedWorkforceView.js +256 -0
- package/dist/components/agent/OwnedWorkforceView.js.map +1 -0
- package/dist/components/agent/PluginManager.d.ts +34 -0
- package/dist/components/agent/PluginManager.d.ts.map +1 -1
- package/dist/components/agent/PluginManager.js +187 -126
- package/dist/components/agent/PluginManager.js.map +1 -1
- package/dist/components/agent/ProjectsWorkspaceView.d.ts +14 -0
- package/dist/components/agent/ProjectsWorkspaceView.d.ts.map +1 -0
- package/dist/components/agent/ProjectsWorkspaceView.js +176 -0
- package/dist/components/agent/ProjectsWorkspaceView.js.map +1 -0
- package/dist/components/agent/RunReviewPanel.d.ts +8 -13
- package/dist/components/agent/RunReviewPanel.d.ts.map +1 -1
- package/dist/components/agent/RunReviewPanel.js +120 -106
- package/dist/components/agent/RunReviewPanel.js.map +1 -1
- package/dist/components/agent/ScheduledWorkspaceView.d.ts +19 -0
- package/dist/components/agent/ScheduledWorkspaceView.d.ts.map +1 -0
- package/dist/components/agent/ScheduledWorkspaceView.js +150 -0
- package/dist/components/agent/ScheduledWorkspaceView.js.map +1 -0
- package/dist/components/agent/SdkSessionPanel.d.ts +25 -0
- package/dist/components/agent/SdkSessionPanel.d.ts.map +1 -0
- package/dist/components/agent/SdkSessionPanel.js +15 -0
- package/dist/components/agent/SdkSessionPanel.js.map +1 -0
- package/dist/components/agent/SlashCommandAutocomplete.d.ts +12 -0
- package/dist/components/agent/SlashCommandAutocomplete.d.ts.map +1 -0
- package/dist/components/agent/SlashCommandAutocomplete.js +33 -0
- package/dist/components/agent/SlashCommandAutocomplete.js.map +1 -0
- package/dist/components/agent/TeamsWorkspaceView.d.ts +12 -0
- package/dist/components/agent/TeamsWorkspaceView.d.ts.map +1 -0
- package/dist/components/agent/TeamsWorkspaceView.js +127 -0
- package/dist/components/agent/TeamsWorkspaceView.js.map +1 -0
- package/dist/components/agent/WorkspacePersistenceNotice.d.ts +3 -0
- package/dist/components/agent/WorkspacePersistenceNotice.d.ts.map +1 -0
- package/dist/components/agent/WorkspacePersistenceNotice.js +23 -0
- package/dist/components/agent/WorkspacePersistenceNotice.js.map +1 -0
- package/dist/components/agent/acp/AcpAgentConfigForm.d.ts +1 -0
- package/dist/components/agent/acp/AcpAgentConfigForm.d.ts.map +1 -1
- package/dist/components/agent/acp/AcpAgentConfigForm.js +47 -14
- package/dist/components/agent/acp/AcpAgentConfigForm.js.map +1 -1
- package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.js +1 -1
- package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.js.map +1 -1
- package/dist/components/agent/acp/AcpAgentManager.d.ts.map +1 -1
- package/dist/components/agent/acp/AcpAgentManager.js +18 -18
- package/dist/components/agent/acp/AcpAgentManager.js.map +1 -1
- package/dist/components/agent/acp/AcpAgentTestResultPanel.js +1 -1
- package/dist/components/agent/acp/AcpAgentTestResultPanel.js.map +1 -1
- package/dist/components/agent/acp/AcpApprovalPanel.js +2 -2
- package/dist/components/agent/acp/AcpApprovalPanel.js.map +1 -1
- package/dist/components/agent/acp/AcpCertificationPanel.js +1 -1
- package/dist/components/agent/acp/AcpCertificationPanel.js.map +1 -1
- package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.js +1 -1
- package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.js.map +1 -1
- package/dist/components/agent/acp/AcpProviderManagerPanel.js +1 -1
- package/dist/components/agent/acp/AcpProviderManagerPanel.js.map +1 -1
- package/dist/components/agent/acp/AcpProviderModelsPanel.js +1 -1
- package/dist/components/agent/acp/AcpProviderModelsPanel.js.map +1 -1
- package/dist/components/agent/acp/AcpSupportBundlePanel.js +1 -1
- package/dist/components/agent/acp/AcpSupportBundlePanel.js.map +1 -1
- package/dist/components/agent/collaborationWindow.d.ts +11 -0
- package/dist/components/agent/collaborationWindow.d.ts.map +1 -0
- package/dist/components/agent/collaborationWindow.js +10 -0
- package/dist/components/agent/collaborationWindow.js.map +1 -0
- package/dist/components/agent/conversationCollaborationAppendJournal.d.ts +25 -0
- package/dist/components/agent/conversationCollaborationAppendJournal.d.ts.map +1 -0
- package/dist/components/agent/conversationCollaborationAppendJournal.js +118 -0
- package/dist/components/agent/conversationCollaborationAppendJournal.js.map +1 -0
- package/dist/components/agent/conversationCollaborationController.d.ts +96 -0
- package/dist/components/agent/conversationCollaborationController.d.ts.map +1 -0
- package/dist/components/agent/conversationCollaborationController.js +597 -0
- package/dist/components/agent/conversationCollaborationController.js.map +1 -0
- package/dist/components/agent/destructiveConfirmation.d.ts +76 -0
- package/dist/components/agent/destructiveConfirmation.d.ts.map +1 -0
- package/dist/components/agent/destructiveConfirmation.js +231 -0
- package/dist/components/agent/destructiveConfirmation.js.map +1 -0
- package/dist/components/agent/developmentCoordinationController.d.ts +43 -0
- package/dist/components/agent/developmentCoordinationController.d.ts.map +1 -0
- package/dist/components/agent/developmentCoordinationController.js +94 -0
- package/dist/components/agent/developmentCoordinationController.js.map +1 -0
- package/dist/components/agent/developmentCoordinationProjection.d.ts +24 -0
- package/dist/components/agent/developmentCoordinationProjection.d.ts.map +1 -1
- package/dist/components/agent/developmentCoordinationProjection.js +34 -5
- package/dist/components/agent/developmentCoordinationProjection.js.map +1 -1
- package/dist/components/agent/editorOperationAuthority.d.ts +29 -0
- package/dist/components/agent/editorOperationAuthority.d.ts.map +1 -0
- package/dist/components/agent/editorOperationAuthority.js +73 -0
- package/dist/components/agent/editorOperationAuthority.js.map +1 -0
- package/dist/components/agent/knowledgePagination.d.ts +7 -0
- package/dist/components/agent/knowledgePagination.d.ts.map +1 -0
- package/dist/components/agent/knowledgePagination.js +7 -0
- package/dist/components/agent/knowledgePagination.js.map +1 -0
- package/dist/components/agent/knowledgePanelController.d.ts +32 -0
- package/dist/components/agent/knowledgePanelController.d.ts.map +1 -0
- package/dist/components/agent/knowledgePanelController.js +119 -0
- package/dist/components/agent/knowledgePanelController.js.map +1 -0
- package/dist/components/agent/monacoWorkbenchShared.js +1 -1
- package/dist/components/agent/onboardingModels.d.ts +31 -0
- package/dist/components/agent/onboardingModels.d.ts.map +1 -0
- package/dist/components/agent/onboardingModels.js +107 -0
- package/dist/components/agent/onboardingModels.js.map +1 -0
- package/dist/components/agent/personalConversationScope.d.ts +26 -0
- package/dist/components/agent/personalConversationScope.d.ts.map +1 -0
- package/dist/components/agent/personalConversationScope.js +43 -0
- package/dist/components/agent/personalConversationScope.js.map +1 -0
- package/dist/components/agent/reviewRequestScope.d.ts +16 -0
- package/dist/components/agent/reviewRequestScope.d.ts.map +1 -0
- package/dist/components/agent/reviewRequestScope.js +101 -0
- package/dist/components/agent/reviewRequestScope.js.map +1 -0
- package/dist/components/agent/scheduleCreationAttempt.d.ts +12 -0
- package/dist/components/agent/scheduleCreationAttempt.d.ts.map +1 -0
- package/dist/components/agent/scheduleCreationAttempt.js +30 -0
- package/dist/components/agent/scheduleCreationAttempt.js.map +1 -0
- package/dist/components/agent/settings/EntitySettingsLayout.d.ts +1 -1
- package/dist/components/agent/settings/EntitySettingsLayout.d.ts.map +1 -1
- package/dist/components/agent/settings/EntitySettingsLayout.js +64 -44
- package/dist/components/agent/settings/EntitySettingsLayout.js.map +1 -1
- package/dist/components/agent/settings/SettingsNavigation.d.ts.map +1 -1
- package/dist/components/agent/settings/SettingsNavigation.js +17 -17
- package/dist/components/agent/settings/SettingsNavigation.js.map +1 -1
- package/dist/components/agent/settings/entityArchiveState.d.ts +24 -0
- package/dist/components/agent/settings/entityArchiveState.d.ts.map +1 -0
- package/dist/components/agent/settings/entityArchiveState.js +12 -0
- package/dist/components/agent/settings/entityArchiveState.js.map +1 -0
- package/dist/components/agent/settings/sections/AccessMembersSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/AccessMembersSection.js +10 -25
- package/dist/components/agent/settings/sections/AccessMembersSection.js.map +1 -1
- package/dist/components/agent/settings/sections/AccountWorkspacePanel.d.ts +16 -0
- package/dist/components/agent/settings/sections/AccountWorkspacePanel.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/AccountWorkspacePanel.js +265 -0
- package/dist/components/agent/settings/sections/AccountWorkspacePanel.js.map +1 -0
- package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js +47 -32
- package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js.map +1 -1
- package/dist/components/agent/settings/sections/DangerZoneSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/DangerZoneSection.js +30 -6
- package/dist/components/agent/settings/sections/DangerZoneSection.js.map +1 -1
- package/dist/components/agent/settings/sections/DefaultAgentConfigSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/DefaultAgentConfigSection.js +47 -37
- package/dist/components/agent/settings/sections/DefaultAgentConfigSection.js.map +1 -1
- package/dist/components/agent/settings/sections/EnvironmentSecretsSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/EnvironmentSecretsSection.js +30 -43
- package/dist/components/agent/settings/sections/EnvironmentSecretsSection.js.map +1 -1
- package/dist/components/agent/settings/sections/ExportBackupSection.d.ts +3 -1
- package/dist/components/agent/settings/sections/ExportBackupSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/ExportBackupSection.js +14 -12
- package/dist/components/agent/settings/sections/ExportBackupSection.js.map +1 -1
- package/dist/components/agent/settings/sections/GeneralSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/GeneralSection.js +47 -4
- package/dist/components/agent/settings/sections/GeneralSection.js.map +1 -1
- package/dist/components/agent/settings/sections/IntegrationsSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/IntegrationsSection.js +14 -21
- package/dist/components/agent/settings/sections/IntegrationsSection.js.map +1 -1
- package/dist/components/agent/settings/sections/NotificationsSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/NotificationsSection.js +125 -20
- package/dist/components/agent/settings/sections/NotificationsSection.js.map +1 -1
- package/dist/components/agent/settings/sections/ResourceLimitsSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/ResourceLimitsSection.js +7 -7
- package/dist/components/agent/settings/sections/ResourceLimitsSection.js.map +1 -1
- package/dist/components/agent/settings/sections/SecurityComplianceSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/SecurityComplianceSection.js +5 -4
- package/dist/components/agent/settings/sections/SecurityComplianceSection.js.map +1 -1
- package/dist/components/agent/settings/sections/UsageAnalyticsSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/UsageAnalyticsSection.js +2 -3
- package/dist/components/agent/settings/sections/UsageAnalyticsSection.js.map +1 -1
- package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.js +39 -26
- package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.js.map +1 -1
- package/dist/components/agent/settings/sections/WorkspaceKeysPanel.d.ts +6 -0
- package/dist/components/agent/settings/sections/WorkspaceKeysPanel.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/WorkspaceKeysPanel.js +205 -0
- package/dist/components/agent/settings/sections/WorkspaceKeysPanel.js.map +1 -0
- package/dist/components/agent/settings/sections/environmentDraftAction.d.ts +3 -0
- package/dist/components/agent/settings/sections/environmentDraftAction.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/environmentDraftAction.js +6 -0
- package/dist/components/agent/settings/sections/environmentDraftAction.js.map +1 -0
- package/dist/components/agent/settings/sections/membershipOperationProjection.d.ts +3 -0
- package/dist/components/agent/settings/sections/membershipOperationProjection.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/membershipOperationProjection.js +9 -0
- package/dist/components/agent/settings/sections/membershipOperationProjection.js.map +1 -0
- package/dist/components/agent/settings/sections/workspaceKeyOperationProjection.d.ts +6 -0
- package/dist/components/agent/settings/sections/workspaceKeyOperationProjection.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/workspaceKeyOperationProjection.js +8 -0
- package/dist/components/agent/settings/sections/workspaceKeyOperationProjection.js.map +1 -0
- package/dist/components/agent/settings/shared/InAppConfirmationDialog.d.ts +25 -0
- package/dist/components/agent/settings/shared/InAppConfirmationDialog.d.ts.map +1 -0
- package/dist/components/agent/settings/shared/InAppConfirmationDialog.js +89 -0
- package/dist/components/agent/settings/shared/InAppConfirmationDialog.js.map +1 -0
- package/dist/components/agent/settings/shared/InputField.d.ts +1 -1
- package/dist/components/agent/settings/shared/InputField.d.ts.map +1 -1
- package/dist/components/agent/settings/shared/InputField.js +4 -3
- package/dist/components/agent/settings/shared/InputField.js.map +1 -1
- package/dist/components/agent/settings/shared/MembersTable.d.ts +3 -3
- package/dist/components/agent/settings/shared/MembersTable.d.ts.map +1 -1
- package/dist/components/agent/settings/shared/MembersTable.js +1 -1
- package/dist/components/agent/settings/shared/MembersTable.js.map +1 -1
- package/dist/components/agent/settings/shared/ScopedAuditPanel.d.ts +5 -0
- package/dist/components/agent/settings/shared/ScopedAuditPanel.d.ts.map +1 -0
- package/dist/components/agent/settings/shared/ScopedAuditPanel.js +70 -0
- package/dist/components/agent/settings/shared/ScopedAuditPanel.js.map +1 -0
- package/dist/components/agent/settings/shared/SettingsCard.d.ts +2 -1
- package/dist/components/agent/settings/shared/SettingsCard.d.ts.map +1 -1
- package/dist/components/agent/settings/shared/SettingsCard.js +2 -2
- package/dist/components/agent/settings/shared/SettingsCard.js.map +1 -1
- package/dist/components/agent/settings/shared/ToggleSwitch.d.ts.map +1 -1
- package/dist/components/agent/settings/shared/ToggleSwitch.js +1 -1
- package/dist/components/agent/settings/shared/ToggleSwitch.js.map +1 -1
- package/dist/components/agent/settings/shared/UsageChart.d.ts +10 -0
- package/dist/components/agent/settings/shared/UsageChart.d.ts.map +1 -1
- package/dist/components/agent/settings/shared/UsageChart.js +16 -10
- package/dist/components/agent/settings/shared/UsageChart.js.map +1 -1
- package/dist/components/agent/settings/shared/WorkspaceRulesControl.d.ts +8 -0
- package/dist/components/agent/settings/shared/WorkspaceRulesControl.d.ts.map +1 -0
- package/dist/components/agent/settings/shared/WorkspaceRulesControl.js +26 -0
- package/dist/components/agent/settings/shared/WorkspaceRulesControl.js.map +1 -0
- package/dist/components/agent/settings/shared/useScopedConfirmation.d.ts +8 -0
- package/dist/components/agent/settings/shared/useScopedConfirmation.d.ts.map +1 -0
- package/dist/components/agent/settings/shared/useScopedConfirmation.js +53 -0
- package/dist/components/agent/settings/shared/useScopedConfirmation.js.map +1 -0
- package/dist/components/agent/settings/shared/useSettingsConfirmation.d.ts +8 -0
- package/dist/components/agent/settings/shared/useSettingsConfirmation.d.ts.map +1 -0
- package/dist/components/agent/settings/shared/useSettingsConfirmation.js +51 -0
- package/dist/components/agent/settings/shared/useSettingsConfirmation.js.map +1 -0
- package/dist/components/agent/settings/shared/workspaceRulesController.d.ts +28 -0
- package/dist/components/agent/settings/shared/workspaceRulesController.d.ts.map +1 -0
- package/dist/components/agent/settings/shared/workspaceRulesController.js +82 -0
- package/dist/components/agent/settings/shared/workspaceRulesController.js.map +1 -0
- package/dist/components/agent/sidebarEntityPins.d.ts +11 -0
- package/dist/components/agent/sidebarEntityPins.d.ts.map +1 -0
- package/dist/components/agent/sidebarEntityPins.js +37 -0
- package/dist/components/agent/sidebarEntityPins.js.map +1 -0
- package/dist/components/agent/workspaceHierarchy.d.ts +24 -0
- package/dist/components/agent/workspaceHierarchy.d.ts.map +1 -0
- package/dist/components/agent/workspaceHierarchy.js +50 -0
- package/dist/components/agent/workspaceHierarchy.js.map +1 -0
- package/dist/components/product/XenoAgentProductHeader.d.ts +4 -2
- package/dist/components/product/XenoAgentProductHeader.d.ts.map +1 -1
- package/dist/components/product/XenoAgentProductHeader.js +22 -4
- package/dist/components/product/XenoAgentProductHeader.js.map +1 -1
- package/dist/components/product/XenoAgentSessionTabs.js +1 -1
- package/dist/components/product/XenoAgentSessionTabs.js.map +1 -1
- package/dist/components/product/XenoAgentWorkspaceSelector.d.ts +7 -0
- package/dist/components/product/XenoAgentWorkspaceSelector.d.ts.map +1 -0
- package/dist/components/product/XenoAgentWorkspaceSelector.js +237 -0
- package/dist/components/product/XenoAgentWorkspaceSelector.js.map +1 -0
- package/dist/components/workspace/WorkspaceCreationWizard.d.ts +6 -0
- package/dist/components/workspace/WorkspaceCreationWizard.d.ts.map +1 -0
- package/dist/components/workspace/WorkspaceCreationWizard.js +48 -0
- package/dist/components/workspace/WorkspaceCreationWizard.js.map +1 -0
- package/dist/hooks/useSidebarLayoutPreference.d.ts +29 -0
- package/dist/hooks/useSidebarLayoutPreference.d.ts.map +1 -0
- package/dist/hooks/useSidebarLayoutPreference.js +83 -0
- package/dist/hooks/useSidebarLayoutPreference.js.map +1 -0
- package/dist/hooks/useWorkspaceCreation.d.ts +8 -0
- package/dist/hooks/useWorkspaceCreation.d.ts.map +1 -0
- package/dist/hooks/useWorkspaceCreation.js +40 -0
- package/dist/hooks/useWorkspaceCreation.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/platformApiTypes.d.ts +77 -36
- package/dist/platformApiTypes.d.ts.map +1 -1
- package/dist/platformBridge.d.ts +4 -0
- package/dist/platformBridge.d.ts.map +1 -1
- package/dist/platformBridge.js +10 -0
- package/dist/platformBridge.js.map +1 -1
- package/dist/stores/agentChatStore.d.ts +120 -2
- package/dist/stores/agentChatStore.d.ts.map +1 -1
- package/dist/stores/agentChatStore.js +329 -35
- package/dist/stores/agentChatStore.js.map +1 -1
- package/dist/stores/agentCreationDefaults.d.ts +25 -0
- package/dist/stores/agentCreationDefaults.d.ts.map +1 -0
- package/dist/stores/agentCreationDefaults.js +11 -0
- package/dist/stores/agentCreationDefaults.js.map +1 -0
- package/dist/stores/entitySettingsStore.d.ts +37 -12
- package/dist/stores/entitySettingsStore.d.ts.map +1 -1
- package/dist/stores/entitySettingsStore.js +558 -585
- package/dist/stores/entitySettingsStore.js.map +1 -1
- package/dist/stores/suggestionStore.d.ts +9 -2
- package/dist/stores/suggestionStore.d.ts.map +1 -1
- package/dist/stores/suggestionStore.js +51 -24
- package/dist/stores/suggestionStore.js.map +1 -1
- package/dist/stores/workspaceCreationAttempt.d.ts +14 -0
- package/dist/stores/workspaceCreationAttempt.d.ts.map +1 -0
- package/dist/stores/workspaceCreationAttempt.js +35 -0
- package/dist/stores/workspaceCreationAttempt.js.map +1 -0
- package/dist/stores/workspaceReconciliation.d.ts +6 -0
- package/dist/stores/workspaceReconciliation.d.ts.map +1 -0
- package/dist/stores/workspaceReconciliation.js +33 -0
- package/dist/stores/workspaceReconciliation.js.map +1 -0
- package/dist/stores/workspaceStore.d.ts +44 -9
- package/dist/stores/workspaceStore.d.ts.map +1 -1
- package/dist/stores/workspaceStore.js +238 -99
- package/dist/stores/workspaceStore.js.map +1 -1
- package/dist/types/agentEditor.d.ts +1 -0
- package/dist/types/agentEditor.d.ts.map +1 -1
- package/dist/utils/advertisedReasoning.d.ts +25 -0
- package/dist/utils/advertisedReasoning.d.ts.map +1 -0
- package/dist/utils/advertisedReasoning.js +62 -0
- package/dist/utils/advertisedReasoning.js.map +1 -0
- package/dist/utils/clipboardCopy.d.ts +4 -0
- package/dist/utils/clipboardCopy.d.ts.map +1 -0
- package/dist/utils/clipboardCopy.js +27 -0
- package/dist/utils/clipboardCopy.js.map +1 -0
- package/dist/utils/providerCommandArgs.d.ts +11 -0
- package/dist/utils/providerCommandArgs.d.ts.map +1 -0
- package/dist/utils/providerCommandArgs.js +18 -0
- package/dist/utils/providerCommandArgs.js.map +1 -0
- package/dist/utils/rendererTeardown.d.ts +6 -0
- package/dist/utils/rendererTeardown.d.ts.map +1 -0
- package/dist/utils/rendererTeardown.js +18 -0
- package/dist/utils/rendererTeardown.js.map +1 -0
- package/package.json +20 -8
- 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":"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"}
|
|
@@ -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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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 (
|
|
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
|
|
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
|
|
81
|
-
values
|
|
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":";AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"AcpAgentConfigForm.js","sourceRoot":"","sources":["../../../../src/components/agent/acp/AcpAgentConfigForm.tsx"],"names":[],"mappings":"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"}
|