@xenosystem/agent-interface-ui 0.1.3
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/LICENSE +67 -0
- package/dist/adapters/agentHostPlatformBridge.d.ts +24 -0
- package/dist/adapters/agentHostPlatformBridge.d.ts.map +1 -0
- package/dist/adapters/agentHostPlatformBridge.js +1244 -0
- package/dist/adapters/agentHostPlatformBridge.js.map +1 -0
- package/dist/adapters/hubAgentPlatformBridge.d.ts +17 -0
- package/dist/adapters/hubAgentPlatformBridge.d.ts.map +1 -0
- package/dist/adapters/hubAgentPlatformBridge.js +109 -0
- package/dist/adapters/hubAgentPlatformBridge.js.map +1 -0
- package/dist/adapters/xenoAgentCompatibilityBridge.d.ts +14 -0
- package/dist/adapters/xenoAgentCompatibilityBridge.d.ts.map +1 -0
- package/dist/adapters/xenoAgentCompatibilityBridge.js +237 -0
- package/dist/adapters/xenoAgentCompatibilityBridge.js.map +1 -0
- package/dist/adapters/xenoAgentHostCatalog.d.ts +40 -0
- package/dist/adapters/xenoAgentHostCatalog.d.ts.map +1 -0
- package/dist/adapters/xenoAgentHostCatalog.js +228 -0
- package/dist/adapters/xenoAgentHostCatalog.js.map +1 -0
- package/dist/components/agent/AIStatusIndicator.d.ts +25 -0
- package/dist/components/agent/AIStatusIndicator.d.ts.map +1 -0
- package/dist/components/agent/AIStatusIndicator.js +85 -0
- package/dist/components/agent/AIStatusIndicator.js.map +1 -0
- package/dist/components/agent/AgentInterface.d.ts +21 -0
- package/dist/components/agent/AgentInterface.d.ts.map +1 -0
- package/dist/components/agent/AgentInterface.js +7586 -0
- package/dist/components/agent/AgentInterface.js.map +1 -0
- package/dist/components/agent/AgentOnboarding.d.ts +16 -0
- package/dist/components/agent/AgentOnboarding.d.ts.map +1 -0
- package/dist/components/agent/AgentOnboarding.js +423 -0
- package/dist/components/agent/AgentOnboarding.js.map +1 -0
- package/dist/components/agent/AgentPtyTerminalPanel.d.ts +13 -0
- package/dist/components/agent/AgentPtyTerminalPanel.d.ts.map +1 -0
- package/dist/components/agent/AgentPtyTerminalPanel.js +129 -0
- package/dist/components/agent/AgentPtyTerminalPanel.js.map +1 -0
- package/dist/components/agent/AgentView.d.ts +143 -0
- package/dist/components/agent/AgentView.d.ts.map +1 -0
- package/dist/components/agent/AgentView.js +7250 -0
- package/dist/components/agent/AgentView.js.map +1 -0
- package/dist/components/agent/AgentWorkbenchCliPanel.d.ts +15 -0
- package/dist/components/agent/AgentWorkbenchCliPanel.d.ts.map +1 -0
- package/dist/components/agent/AgentWorkbenchCliPanel.js +275 -0
- package/dist/components/agent/AgentWorkbenchCliPanel.js.map +1 -0
- package/dist/components/agent/AgentWorkbenchPanel.d.ts +791 -0
- package/dist/components/agent/AgentWorkbenchPanel.d.ts.map +1 -0
- package/dist/components/agent/AgentWorkbenchPanel.js +584 -0
- package/dist/components/agent/AgentWorkbenchPanel.js.map +1 -0
- package/dist/components/agent/AgentWorkspaceBrowserPanel.d.ts +11 -0
- package/dist/components/agent/AgentWorkspaceBrowserPanel.d.ts.map +1 -0
- package/dist/components/agent/AgentWorkspaceBrowserPanel.js +198 -0
- package/dist/components/agent/AgentWorkspaceBrowserPanel.js.map +1 -0
- package/dist/components/agent/AssistantTurnStatusNotice.d.ts +16 -0
- package/dist/components/agent/AssistantTurnStatusNotice.d.ts.map +1 -0
- package/dist/components/agent/AssistantTurnStatusNotice.js +54 -0
- package/dist/components/agent/AssistantTurnStatusNotice.js.map +1 -0
- package/dist/components/agent/CommandToolCard.d.ts +11 -0
- package/dist/components/agent/CommandToolCard.d.ts.map +1 -0
- package/dist/components/agent/CommandToolCard.js +29 -0
- package/dist/components/agent/CommandToolCard.js.map +1 -0
- package/dist/components/agent/FleetPanel.d.ts +28 -0
- package/dist/components/agent/FleetPanel.d.ts.map +1 -0
- package/dist/components/agent/FleetPanel.js +175 -0
- package/dist/components/agent/FleetPanel.js.map +1 -0
- package/dist/components/agent/GhostTextArea.d.ts +13 -0
- package/dist/components/agent/GhostTextArea.d.ts.map +1 -0
- package/dist/components/agent/GhostTextArea.js +21 -0
- package/dist/components/agent/GhostTextArea.js.map +1 -0
- package/dist/components/agent/IntakePanel.d.ts +29 -0
- package/dist/components/agent/IntakePanel.d.ts.map +1 -0
- package/dist/components/agent/IntakePanel.js +81 -0
- package/dist/components/agent/IntakePanel.js.map +1 -0
- package/dist/components/agent/KnowledgePanel.d.ts +25 -0
- package/dist/components/agent/KnowledgePanel.d.ts.map +1 -0
- package/dist/components/agent/KnowledgePanel.js +99 -0
- package/dist/components/agent/KnowledgePanel.js.map +1 -0
- package/dist/components/agent/MonacoDiffWorkbenchEditor.d.ts +9 -0
- package/dist/components/agent/MonacoDiffWorkbenchEditor.d.ts.map +1 -0
- package/dist/components/agent/MonacoDiffWorkbenchEditor.js +204 -0
- package/dist/components/agent/MonacoDiffWorkbenchEditor.js.map +1 -0
- package/dist/components/agent/MonacoWorkbenchEditor.d.ts +15 -0
- package/dist/components/agent/MonacoWorkbenchEditor.d.ts.map +1 -0
- package/dist/components/agent/MonacoWorkbenchEditor.js +380 -0
- package/dist/components/agent/MonacoWorkbenchEditor.js.map +1 -0
- package/dist/components/agent/PermissionDialog.d.ts +34 -0
- package/dist/components/agent/PermissionDialog.d.ts.map +1 -0
- package/dist/components/agent/PermissionDialog.js +67 -0
- package/dist/components/agent/PermissionDialog.js.map +1 -0
- package/dist/components/agent/PluginManager.d.ts +20 -0
- package/dist/components/agent/PluginManager.d.ts.map +1 -0
- package/dist/components/agent/PluginManager.js +506 -0
- package/dist/components/agent/PluginManager.js.map +1 -0
- package/dist/components/agent/RunReviewPanel.d.ts +52 -0
- package/dist/components/agent/RunReviewPanel.d.ts.map +1 -0
- package/dist/components/agent/RunReviewPanel.js +236 -0
- package/dist/components/agent/RunReviewPanel.js.map +1 -0
- package/dist/components/agent/SessionsPanel.d.ts +30 -0
- package/dist/components/agent/SessionsPanel.d.ts.map +1 -0
- package/dist/components/agent/SessionsPanel.js +247 -0
- package/dist/components/agent/SessionsPanel.js.map +1 -0
- package/dist/components/agent/acp/AcpAgentConfigForm.d.ts +19 -0
- package/dist/components/agent/acp/AcpAgentConfigForm.d.ts.map +1 -0
- package/dist/components/agent/acp/AcpAgentConfigForm.js +85 -0
- package/dist/components/agent/acp/AcpAgentConfigForm.js.map +1 -0
- package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.d.ts +10 -0
- package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.d.ts.map +1 -0
- package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.js +80 -0
- package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.js.map +1 -0
- package/dist/components/agent/acp/AcpAgentManager.d.ts +3 -0
- package/dist/components/agent/acp/AcpAgentManager.d.ts.map +1 -0
- package/dist/components/agent/acp/AcpAgentManager.js +152 -0
- package/dist/components/agent/acp/AcpAgentManager.js.map +1 -0
- package/dist/components/agent/acp/AcpAgentTestResultPanel.d.ts +9 -0
- package/dist/components/agent/acp/AcpAgentTestResultPanel.d.ts.map +1 -0
- package/dist/components/agent/acp/AcpAgentTestResultPanel.js +24 -0
- package/dist/components/agent/acp/AcpAgentTestResultPanel.js.map +1 -0
- package/dist/components/agent/acp/AcpApprovalPanel.d.ts +29 -0
- package/dist/components/agent/acp/AcpApprovalPanel.d.ts.map +1 -0
- package/dist/components/agent/acp/AcpApprovalPanel.js +37 -0
- package/dist/components/agent/acp/AcpApprovalPanel.js.map +1 -0
- package/dist/components/agent/acp/AcpCertificationPanel.d.ts +10 -0
- package/dist/components/agent/acp/AcpCertificationPanel.d.ts.map +1 -0
- package/dist/components/agent/acp/AcpCertificationPanel.js +41 -0
- package/dist/components/agent/acp/AcpCertificationPanel.js.map +1 -0
- package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.d.ts +11 -0
- package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.d.ts.map +1 -0
- package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.js +32 -0
- package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.js.map +1 -0
- package/dist/components/agent/acp/AcpProviderManagerPanel.d.ts +7 -0
- package/dist/components/agent/acp/AcpProviderManagerPanel.d.ts.map +1 -0
- package/dist/components/agent/acp/AcpProviderManagerPanel.js +69 -0
- package/dist/components/agent/acp/AcpProviderManagerPanel.js.map +1 -0
- package/dist/components/agent/acp/AcpProviderModelsPanel.d.ts +7 -0
- package/dist/components/agent/acp/AcpProviderModelsPanel.d.ts.map +1 -0
- package/dist/components/agent/acp/AcpProviderModelsPanel.js +108 -0
- package/dist/components/agent/acp/AcpProviderModelsPanel.js.map +1 -0
- package/dist/components/agent/acp/AcpSupportBundlePanel.d.ts +8 -0
- package/dist/components/agent/acp/AcpSupportBundlePanel.d.ts.map +1 -0
- package/dist/components/agent/acp/AcpSupportBundlePanel.js +56 -0
- package/dist/components/agent/acp/AcpSupportBundlePanel.js.map +1 -0
- package/dist/components/agent/compactionSummary.d.ts +28 -0
- package/dist/components/agent/compactionSummary.d.ts.map +1 -0
- package/dist/components/agent/compactionSummary.js +41 -0
- package/dist/components/agent/compactionSummary.js.map +1 -0
- package/dist/components/agent/monacoWorkbenchShared.d.ts +13 -0
- package/dist/components/agent/monacoWorkbenchShared.d.ts.map +1 -0
- package/dist/components/agent/monacoWorkbenchShared.js +226 -0
- package/dist/components/agent/monacoWorkbenchShared.js.map +1 -0
- package/dist/components/agent/settings/EntitySettingsLayout.d.ts +61 -0
- package/dist/components/agent/settings/EntitySettingsLayout.d.ts.map +1 -0
- package/dist/components/agent/settings/EntitySettingsLayout.js +72 -0
- package/dist/components/agent/settings/EntitySettingsLayout.js.map +1 -0
- package/dist/components/agent/settings/SettingsNavigation.d.ts +8 -0
- package/dist/components/agent/settings/SettingsNavigation.d.ts.map +1 -0
- package/dist/components/agent/settings/SettingsNavigation.js +39 -0
- package/dist/components/agent/settings/SettingsNavigation.js.map +1 -0
- package/dist/components/agent/settings/sections/AccessMembersSection.d.ts +3 -0
- package/dist/components/agent/settings/sections/AccessMembersSection.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/AccessMembersSection.js +31 -0
- package/dist/components/agent/settings/sections/AccessMembersSection.js.map +1 -0
- package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.d.ts +25 -0
- package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js +56 -0
- package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js.map +1 -0
- package/dist/components/agent/settings/sections/DangerZoneSection.d.ts +3 -0
- package/dist/components/agent/settings/sections/DangerZoneSection.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/DangerZoneSection.js +19 -0
- package/dist/components/agent/settings/sections/DangerZoneSection.js.map +1 -0
- package/dist/components/agent/settings/sections/DefaultAgentConfigSection.d.ts +3 -0
- package/dist/components/agent/settings/sections/DefaultAgentConfigSection.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/DefaultAgentConfigSection.js +66 -0
- package/dist/components/agent/settings/sections/DefaultAgentConfigSection.js.map +1 -0
- package/dist/components/agent/settings/sections/EnvironmentSecretsSection.d.ts +3 -0
- package/dist/components/agent/settings/sections/EnvironmentSecretsSection.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/EnvironmentSecretsSection.js +87 -0
- package/dist/components/agent/settings/sections/EnvironmentSecretsSection.js.map +1 -0
- package/dist/components/agent/settings/sections/ExportBackupSection.d.ts +3 -0
- package/dist/components/agent/settings/sections/ExportBackupSection.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/ExportBackupSection.js +23 -0
- package/dist/components/agent/settings/sections/ExportBackupSection.js.map +1 -0
- package/dist/components/agent/settings/sections/GeneralSection.d.ts +3 -0
- package/dist/components/agent/settings/sections/GeneralSection.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/GeneralSection.js +15 -0
- package/dist/components/agent/settings/sections/GeneralSection.js.map +1 -0
- package/dist/components/agent/settings/sections/IntegrationsSection.d.ts +3 -0
- package/dist/components/agent/settings/sections/IntegrationsSection.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/IntegrationsSection.js +40 -0
- package/dist/components/agent/settings/sections/IntegrationsSection.js.map +1 -0
- package/dist/components/agent/settings/sections/NotificationsSection.d.ts +3 -0
- package/dist/components/agent/settings/sections/NotificationsSection.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/NotificationsSection.js +28 -0
- package/dist/components/agent/settings/sections/NotificationsSection.js.map +1 -0
- package/dist/components/agent/settings/sections/ResourceLimitsSection.d.ts +3 -0
- package/dist/components/agent/settings/sections/ResourceLimitsSection.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/ResourceLimitsSection.js +17 -0
- package/dist/components/agent/settings/sections/ResourceLimitsSection.js.map +1 -0
- package/dist/components/agent/settings/sections/SecurityComplianceSection.d.ts +3 -0
- package/dist/components/agent/settings/sections/SecurityComplianceSection.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/SecurityComplianceSection.js +28 -0
- package/dist/components/agent/settings/sections/SecurityComplianceSection.js.map +1 -0
- package/dist/components/agent/settings/sections/UsageAnalyticsSection.d.ts +3 -0
- package/dist/components/agent/settings/sections/UsageAnalyticsSection.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/UsageAnalyticsSection.js +17 -0
- package/dist/components/agent/settings/sections/UsageAnalyticsSection.js.map +1 -0
- package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.d.ts +54 -0
- package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.d.ts.map +1 -0
- package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.js +333 -0
- package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.js.map +1 -0
- package/dist/components/agent/settings/shared/CheckboxField.d.ts +13 -0
- package/dist/components/agent/settings/shared/CheckboxField.d.ts.map +1 -0
- package/dist/components/agent/settings/shared/CheckboxField.js +8 -0
- package/dist/components/agent/settings/shared/CheckboxField.js.map +1 -0
- package/dist/components/agent/settings/shared/InputField.d.ts +15 -0
- package/dist/components/agent/settings/shared/InputField.d.ts.map +1 -0
- package/dist/components/agent/settings/shared/InputField.js +7 -0
- package/dist/components/agent/settings/shared/InputField.js.map +1 -0
- package/dist/components/agent/settings/shared/MembersTable.d.ts +11 -0
- package/dist/components/agent/settings/shared/MembersTable.d.ts.map +1 -0
- package/dist/components/agent/settings/shared/MembersTable.js +7 -0
- package/dist/components/agent/settings/shared/MembersTable.js.map +1 -0
- package/dist/components/agent/settings/shared/SettingRow.d.ts +11 -0
- package/dist/components/agent/settings/shared/SettingRow.d.ts.map +1 -0
- package/dist/components/agent/settings/shared/SettingRow.js +6 -0
- package/dist/components/agent/settings/shared/SettingRow.js.map +1 -0
- package/dist/components/agent/settings/shared/SettingsCard.d.ts +11 -0
- package/dist/components/agent/settings/shared/SettingsCard.d.ts.map +1 -0
- package/dist/components/agent/settings/shared/SettingsCard.js +8 -0
- package/dist/components/agent/settings/shared/SettingsCard.js.map +1 -0
- package/dist/components/agent/settings/shared/ToggleSwitch.d.ts +8 -0
- package/dist/components/agent/settings/shared/ToggleSwitch.d.ts.map +1 -0
- package/dist/components/agent/settings/shared/ToggleSwitch.js +6 -0
- package/dist/components/agent/settings/shared/ToggleSwitch.js.map +1 -0
- package/dist/components/agent/settings/shared/UsageChart.d.ts +12 -0
- package/dist/components/agent/settings/shared/UsageChart.d.ts.map +1 -0
- package/dist/components/agent/settings/shared/UsageChart.js +16 -0
- package/dist/components/agent/settings/shared/UsageChart.js.map +1 -0
- package/dist/components/agent/toolCardDisplay.d.ts +24 -0
- package/dist/components/agent/toolCardDisplay.d.ts.map +1 -0
- package/dist/components/agent/toolCardDisplay.js +85 -0
- package/dist/components/agent/toolCardDisplay.js.map +1 -0
- package/dist/components/product/XenoAgentProductHeader.d.ts +18 -0
- package/dist/components/product/XenoAgentProductHeader.d.ts.map +1 -0
- package/dist/components/product/XenoAgentProductHeader.js +25 -0
- package/dist/components/product/XenoAgentProductHeader.js.map +1 -0
- package/dist/components/product/XenoAgentSessionTabs.d.ts +18 -0
- package/dist/components/product/XenoAgentSessionTabs.d.ts.map +1 -0
- package/dist/components/product/XenoAgentSessionTabs.js +103 -0
- package/dist/components/product/XenoAgentSessionTabs.js.map +1 -0
- package/dist/components/ui/CodeBlock.d.ts +8 -0
- package/dist/components/ui/CodeBlock.d.ts.map +1 -0
- package/dist/components/ui/CodeBlock.js +89 -0
- package/dist/components/ui/CodeBlock.js.map +1 -0
- package/dist/components/ui/XenoLogo.d.ts +11 -0
- package/dist/components/ui/XenoLogo.d.ts.map +1 -0
- package/dist/components/ui/XenoLogo.js +9 -0
- package/dist/components/ui/XenoLogo.js.map +1 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +127 -0
- package/dist/index.js.map +1 -0
- package/dist/platformApiTypes.d.ts +3992 -0
- package/dist/platformApiTypes.d.ts.map +1 -0
- package/dist/platformApiTypes.js +2 -0
- package/dist/platformApiTypes.js.map +1 -0
- package/dist/platformBridge.d.ts +9 -0
- package/dist/platformBridge.d.ts.map +1 -0
- package/dist/platformBridge.js +19 -0
- package/dist/platformBridge.js.map +1 -0
- package/dist/providerSelector.d.ts +28 -0
- package/dist/providerSelector.d.ts.map +1 -0
- package/dist/providerSelector.js +104 -0
- package/dist/providerSelector.js.map +1 -0
- package/dist/services/connectionMode.d.ts +13 -0
- package/dist/services/connectionMode.d.ts.map +1 -0
- package/dist/services/connectionMode.js +31 -0
- package/dist/services/connectionMode.js.map +1 -0
- package/dist/sessionTabs.d.ts +48 -0
- package/dist/sessionTabs.d.ts.map +1 -0
- package/dist/sessionTabs.js +106 -0
- package/dist/sessionTabs.js.map +1 -0
- package/dist/stores/acpAgentStore.d.ts +264 -0
- package/dist/stores/acpAgentStore.d.ts.map +1 -0
- package/dist/stores/acpAgentStore.js +825 -0
- package/dist/stores/acpAgentStore.js.map +1 -0
- package/dist/stores/agentChatStore.d.ts +529 -0
- package/dist/stores/agentChatStore.d.ts.map +1 -0
- package/dist/stores/agentChatStore.js +5309 -0
- package/dist/stores/agentChatStore.js.map +1 -0
- package/dist/stores/agentIdeStore.d.ts +9 -0
- package/dist/stores/agentIdeStore.d.ts.map +1 -0
- package/dist/stores/agentIdeStore.js +8 -0
- package/dist/stores/agentIdeStore.js.map +1 -0
- package/dist/stores/agentSearchStore.d.ts +174 -0
- package/dist/stores/agentSearchStore.d.ts.map +1 -0
- package/dist/stores/agentSearchStore.js +305 -0
- package/dist/stores/agentSearchStore.js.map +1 -0
- package/dist/stores/authStore.d.ts +26 -0
- package/dist/stores/authStore.d.ts.map +1 -0
- package/dist/stores/authStore.js +163 -0
- package/dist/stores/authStore.js.map +1 -0
- package/dist/stores/entitySettingsStore.d.ts +236 -0
- package/dist/stores/entitySettingsStore.d.ts.map +1 -0
- package/dist/stores/entitySettingsStore.js +916 -0
- package/dist/stores/entitySettingsStore.js.map +1 -0
- package/dist/stores/permissionStore.d.ts +25 -0
- package/dist/stores/permissionStore.d.ts.map +1 -0
- package/dist/stores/permissionStore.js +58 -0
- package/dist/stores/permissionStore.js.map +1 -0
- package/dist/stores/suggestionStore.d.ts +29 -0
- package/dist/stores/suggestionStore.d.ts.map +1 -0
- package/dist/stores/suggestionStore.js +160 -0
- package/dist/stores/suggestionStore.js.map +1 -0
- package/dist/stores/tabStore.d.ts +30 -0
- package/dist/stores/tabStore.d.ts.map +1 -0
- package/dist/stores/tabStore.js +252 -0
- package/dist/stores/tabStore.js.map +1 -0
- package/dist/stores/themeStore.d.ts +13 -0
- package/dist/stores/themeStore.d.ts.map +1 -0
- package/dist/stores/themeStore.js +77 -0
- package/dist/stores/themeStore.js.map +1 -0
- package/dist/stores/workspaceStore.d.ts +175 -0
- package/dist/stores/workspaceStore.d.ts.map +1 -0
- package/dist/stores/workspaceStore.js +694 -0
- package/dist/stores/workspaceStore.js.map +1 -0
- package/dist/stores/xenoChatStore.d.ts +88 -0
- package/dist/stores/xenoChatStore.d.ts.map +1 -0
- package/dist/stores/xenoChatStore.js +572 -0
- package/dist/stores/xenoChatStore.js.map +1 -0
- package/dist/toolCardProjection.d.ts +33 -0
- package/dist/toolCardProjection.d.ts.map +1 -0
- package/dist/toolCardProjection.js +62 -0
- package/dist/toolCardProjection.js.map +1 -0
- package/dist/types/agentEditor.d.ts +39 -0
- package/dist/types/agentEditor.d.ts.map +1 -0
- package/dist/types/agentEditor.js +2 -0
- package/dist/types/agentEditor.js.map +1 -0
- package/dist/types/agentRuntimeProvider.d.ts +2 -0
- package/dist/types/agentRuntimeProvider.d.ts.map +1 -0
- package/dist/types/agentRuntimeProvider.js +2 -0
- package/dist/types/agentRuntimeProvider.js.map +1 -0
- package/dist/utils/acpExecutionAuthority.d.ts +18 -0
- package/dist/utils/acpExecutionAuthority.d.ts.map +1 -0
- package/dist/utils/acpExecutionAuthority.js +22 -0
- package/dist/utils/acpExecutionAuthority.js.map +1 -0
- package/dist/utils/agentAttachedContextPrompt.d.ts +2 -0
- package/dist/utils/agentAttachedContextPrompt.d.ts.map +1 -0
- package/dist/utils/agentAttachedContextPrompt.js +2 -0
- package/dist/utils/agentAttachedContextPrompt.js.map +1 -0
- package/dist/utils/agentModelContext.d.ts +2 -0
- package/dist/utils/agentModelContext.d.ts.map +1 -0
- package/dist/utils/agentModelContext.js +2 -0
- package/dist/utils/agentModelContext.js.map +1 -0
- package/dist/utils/agentReasoningEffort.d.ts +3 -0
- package/dist/utils/agentReasoningEffort.d.ts.map +1 -0
- package/dist/utils/agentReasoningEffort.js +2 -0
- package/dist/utils/agentReasoningEffort.js.map +1 -0
- package/dist/utils/agentRuntimeProvider.d.ts +3 -0
- package/dist/utils/agentRuntimeProvider.d.ts.map +1 -0
- package/dist/utils/agentRuntimeProvider.js +2 -0
- package/dist/utils/agentRuntimeProvider.js.map +1 -0
- package/dist/utils/cloudModels.d.ts +3 -0
- package/dist/utils/cloudModels.d.ts.map +1 -0
- package/dist/utils/cloudModels.js +181 -0
- package/dist/utils/cloudModels.js.map +1 -0
- package/dist/utils/conversationRuntime.d.ts +3 -0
- package/dist/utils/conversationRuntime.d.ts.map +1 -0
- package/dist/utils/conversationRuntime.js +2 -0
- package/dist/utils/conversationRuntime.js.map +1 -0
- package/dist/utils/fileCreateIntent.d.ts +16 -0
- package/dist/utils/fileCreateIntent.d.ts.map +1 -0
- package/dist/utils/fileCreateIntent.js +123 -0
- package/dist/utils/fileCreateIntent.js.map +1 -0
- package/dist/utils/legacyAgentRuntimeEvents.d.ts +2 -0
- package/dist/utils/legacyAgentRuntimeEvents.d.ts.map +1 -0
- package/dist/utils/legacyAgentRuntimeEvents.js +2 -0
- package/dist/utils/legacyAgentRuntimeEvents.js.map +1 -0
- package/dist/utils/markdownWindowsPaths.d.ts +2 -0
- package/dist/utils/markdownWindowsPaths.d.ts.map +1 -0
- package/dist/utils/markdownWindowsPaths.js +2 -0
- package/dist/utils/markdownWindowsPaths.js.map +1 -0
- package/dist/utils/workspaceSelectionContinuation.d.ts +2 -0
- package/dist/utils/workspaceSelectionContinuation.d.ts.map +1 -0
- package/dist/utils/workspaceSelectionContinuation.js +2 -0
- package/dist/utils/workspaceSelectionContinuation.js.map +1 -0
- package/package.json +53 -0
- package/src/agent.css +1156 -0
- package/src/foundation.css +62 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FleetPanel โ ADE ยง9 step 6, rendered.
|
|
3
|
+
*
|
|
4
|
+
* The step where the workspace stops being an agent WINDOW and becomes a view
|
|
5
|
+
* over many runs at once. `fleet.view` composes what three subsystems know;
|
|
6
|
+
* `projectFleetBoard` decides what may be claimed and in what order; this
|
|
7
|
+
* renders it and does no judging of its own.
|
|
8
|
+
*
|
|
9
|
+
* That split is the same one `RunReviewPanel` uses, for the same reason: an
|
|
10
|
+
* honesty rule written in a component is enforced by whoever writes the next
|
|
11
|
+
* component. The only decisions here are visual.
|
|
12
|
+
*
|
|
13
|
+
* ๐ด **The notice renders ABOVE the rows, not beside them.** A fleet board is
|
|
14
|
+
* scanned, and a caveat placed next to a list is read after the list โ by which
|
|
15
|
+
* point the reader has already concluded the fleet is fine. Where the board is
|
|
16
|
+
* not the whole picture, that is the first thing on the screen.
|
|
17
|
+
*
|
|
18
|
+
* Design: monochromatic, rectangles only, no circles โ `DESIGN_SYSTEM.md`.
|
|
19
|
+
*/
|
|
20
|
+
import React from 'react';
|
|
21
|
+
export interface FleetPanelProps {
|
|
22
|
+
/** Paths each run has claimed, when the caller knows them. Advisory only โ
|
|
23
|
+
* contested paths are computed from OBSERVED diffs, because nothing forces an
|
|
24
|
+
* agent to claim before writing. */
|
|
25
|
+
claimedPathsByRun?: Record<string, string[]>;
|
|
26
|
+
}
|
|
27
|
+
export declare function FleetPanel({ claimedPathsByRun }: FleetPanelProps): React.ReactElement;
|
|
28
|
+
//# sourceMappingURL=FleetPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FleetPanel.d.ts","sourceRoot":"","sources":["../../../src/components/agent/FleetPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAA2C,MAAM,OAAO,CAAA;AAsB/D,MAAM,WAAW,eAAe;IAC9B;;yCAEqC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;CAC7C;AAED,wBAAgB,UAAU,CAAC,EAAE,iBAAiB,EAAE,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAkVrF"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* FleetPanel โ ADE ยง9 step 6, rendered.
|
|
4
|
+
*
|
|
5
|
+
* The step where the workspace stops being an agent WINDOW and becomes a view
|
|
6
|
+
* over many runs at once. `fleet.view` composes what three subsystems know;
|
|
7
|
+
* `projectFleetBoard` decides what may be claimed and in what order; this
|
|
8
|
+
* renders it and does no judging of its own.
|
|
9
|
+
*
|
|
10
|
+
* That split is the same one `RunReviewPanel` uses, for the same reason: an
|
|
11
|
+
* honesty rule written in a component is enforced by whoever writes the next
|
|
12
|
+
* component. The only decisions here are visual.
|
|
13
|
+
*
|
|
14
|
+
* ๐ด **The notice renders ABOVE the rows, not beside them.** A fleet board is
|
|
15
|
+
* scanned, and a caveat placed next to a list is read after the list โ by which
|
|
16
|
+
* point the reader has already concluded the fleet is fine. Where the board is
|
|
17
|
+
* not the whole picture, that is the first thing on the screen.
|
|
18
|
+
*
|
|
19
|
+
* Design: monochromatic, rectangles only, no circles โ `DESIGN_SYSTEM.md`.
|
|
20
|
+
*/
|
|
21
|
+
import React, { useCallback, useEffect, useState } from 'react';
|
|
22
|
+
import { AlertTriangle, GitBranch, RefreshCw } from 'lucide-react';
|
|
23
|
+
import { projectFleetBoard } from '@xenosystem/agent-interface-core';
|
|
24
|
+
import { getAgentPlatformBridge } from '../../platformBridge';
|
|
25
|
+
/**
|
|
26
|
+
* The bridge, or null when this surface has none configured.
|
|
27
|
+
*
|
|
28
|
+
* `getAgentPlatformBridge()` throws when unconfigured, which is right for a
|
|
29
|
+
* caller that cannot proceed and wrong here: a fleet board that cannot reach the
|
|
30
|
+
* host should say so, not take the surface down.
|
|
31
|
+
*/
|
|
32
|
+
function tryBridge() {
|
|
33
|
+
try {
|
|
34
|
+
return getAgentPlatformBridge();
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export function FleetPanel({ claimedPathsByRun }) {
|
|
41
|
+
const [board, setBoard] = useState(null);
|
|
42
|
+
/**
|
|
43
|
+
* Messages withheld from one run, awaiting this reader (ยง6 `hold`).
|
|
44
|
+
*
|
|
45
|
+
* Opened per run rather than fetched for all of them: the fleet row
|
|
46
|
+
* carries the COUNT, and the text is a deliberate second request โ the
|
|
47
|
+
* event feed that feeds this board carries ids and counts and never
|
|
48
|
+
* message bytes.
|
|
49
|
+
*/
|
|
50
|
+
const [held, setHeld] = useState(null);
|
|
51
|
+
const [heldBusy, setHeldBusy] = useState(false);
|
|
52
|
+
const [busy, setBusy] = useState(false);
|
|
53
|
+
const [unreachable, setUnreachable] = useState(false);
|
|
54
|
+
const refresh = useCallback(async () => {
|
|
55
|
+
const bridge = tryBridge();
|
|
56
|
+
if (!bridge?.fleet) {
|
|
57
|
+
// Distinct from an empty fleet. "No runs" and "cannot ask" are different
|
|
58
|
+
// facts, and a board that showed both as an empty list would have a person
|
|
59
|
+
// waiting for runs that were never going to appear.
|
|
60
|
+
setUnreachable(true);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
setBusy(true);
|
|
64
|
+
try {
|
|
65
|
+
const view = await bridge.fleet.view({ ...(claimedPathsByRun ? { claimedPathsByRun } : {}) });
|
|
66
|
+
setUnreachable(false);
|
|
67
|
+
setBoard(projectFleetBoard(view));
|
|
68
|
+
}
|
|
69
|
+
finally {
|
|
70
|
+
setBusy(false);
|
|
71
|
+
}
|
|
72
|
+
}, [claimedPathsByRun]);
|
|
73
|
+
const openHeld = useCallback(async (runId) => {
|
|
74
|
+
const bridge = tryBridge();
|
|
75
|
+
const list = bridge?.agent?.listHeldMessages;
|
|
76
|
+
// OPTIONAL, so an older host with no coordination surface degrades to
|
|
77
|
+
// showing nothing rather than throwing at a board that rendered fine.
|
|
78
|
+
if (!list)
|
|
79
|
+
return;
|
|
80
|
+
const result = await list({ runId });
|
|
81
|
+
setHeld({
|
|
82
|
+
runId,
|
|
83
|
+
available: result.available,
|
|
84
|
+
...(result.reason === undefined ? {} : { reason: result.reason }),
|
|
85
|
+
messages: result.held.map((message) => ({
|
|
86
|
+
id: message.id,
|
|
87
|
+
fromRunId: message.fromRunId,
|
|
88
|
+
text: message.text,
|
|
89
|
+
})),
|
|
90
|
+
});
|
|
91
|
+
}, []);
|
|
92
|
+
const approveHeld = useCallback(async (messageId) => {
|
|
93
|
+
const bridge = tryBridge();
|
|
94
|
+
const release = bridge?.agent?.releaseHeldMessage;
|
|
95
|
+
if (!release || !held)
|
|
96
|
+
return;
|
|
97
|
+
setHeldBusy(true);
|
|
98
|
+
try {
|
|
99
|
+
const result = await release({ runId: held.runId, messageId });
|
|
100
|
+
// ๐ด `expired` is an ORDINARY outcome, not a failure: a second
|
|
101
|
+
// reader may have approved it, or the run may have ended. Reported
|
|
102
|
+
// verbatim rather than reworded, and the list is re-read either way so
|
|
103
|
+
// the board never shows an approval that did not happen.
|
|
104
|
+
if (result.status !== 'delivered') {
|
|
105
|
+
setHeld((current) => (current
|
|
106
|
+
? { ...current, reason: result.reason ?? `That message was ${result.status}.` }
|
|
107
|
+
: current));
|
|
108
|
+
}
|
|
109
|
+
await openHeld(held.runId);
|
|
110
|
+
await refresh();
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
setHeldBusy(false);
|
|
114
|
+
}
|
|
115
|
+
}, [held, openHeld]);
|
|
116
|
+
/**
|
|
117
|
+
* Pins or clears this run's inbound policy โ ยง6's override.
|
|
118
|
+
*
|
|
119
|
+
* ๐ด BOTH reads are refreshed: the held list, because pinning `accept` does
|
|
120
|
+
* not release what is already held and a panel that stopped showing them
|
|
121
|
+
* would imply it did; and the board, because the row badge is where the pin
|
|
122
|
+
* becomes visible at all. One screen, two reads โ refresh both or the surface
|
|
123
|
+
* disagrees with the host.
|
|
124
|
+
*/
|
|
125
|
+
const pinPolicy = useCallback(async (policy) => {
|
|
126
|
+
const bridge = tryBridge();
|
|
127
|
+
const set = bridge?.agent?.setInboundPolicy;
|
|
128
|
+
// OPTIONAL for the same reason as the calls above: an older host without
|
|
129
|
+
// this method degrades to a panel that cannot pin, not to a thrown board.
|
|
130
|
+
if (!set || !held)
|
|
131
|
+
return;
|
|
132
|
+
setHeldBusy(true);
|
|
133
|
+
try {
|
|
134
|
+
const result = await set({ runId: held.runId, policy });
|
|
135
|
+
if (!result.ok) {
|
|
136
|
+
setHeld((current) => (current
|
|
137
|
+
? { ...current, reason: result.reason ?? 'That policy could not be set.' }
|
|
138
|
+
: current));
|
|
139
|
+
}
|
|
140
|
+
await openHeld(held.runId);
|
|
141
|
+
await refresh();
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
setHeldBusy(false);
|
|
145
|
+
}
|
|
146
|
+
}, [held, openHeld, refresh]);
|
|
147
|
+
useEffect(() => { void refresh(); }, [refresh]);
|
|
148
|
+
/**
|
|
149
|
+
* Keeps the board live โ ADE ยง5.2/ยง5.4.
|
|
150
|
+
*
|
|
151
|
+
* ๐ด Read once, this board is accurate for an instant. Every fact on it
|
|
152
|
+
* moves without the reader touching anything: a run takes a claim, two runs
|
|
153
|
+
* collide, a diff grows, a run stops on a permission prompt. A person decides
|
|
154
|
+
* whether work is safe to land from this, and a stale board answers that
|
|
155
|
+
* question with yesterday's state while looking current.
|
|
156
|
+
*/
|
|
157
|
+
useEffect(() => {
|
|
158
|
+
const bridge = tryBridge();
|
|
159
|
+
if (!bridge?.fleet?.subscribeChanged)
|
|
160
|
+
return;
|
|
161
|
+
return bridge.fleet.subscribeChanged(() => { void refresh(); });
|
|
162
|
+
}, [refresh]);
|
|
163
|
+
return (_jsxs("div", { className: "xeno-fleet", "data-testid": "fleet-panel", children: [_jsxs("header", { className: "xeno-fleet__header", children: [_jsxs("h2", { children: [_jsx(GitBranch, { size: 14, "aria-hidden": true }), " Fleet"] }), _jsx("button", { type: "button", onClick: () => void refresh(), disabled: busy, "aria-label": "Refresh fleet", children: _jsx(RefreshCw, { size: 14, "aria-hidden": true }) })] }), unreachable ? (_jsx("p", { className: "xeno-fleet__notice", "data-testid": "fleet-unreachable", children: "This surface cannot reach the Agent host, so there is no fleet to show." })) : board === null ? (_jsx("p", { className: "xeno-fleet__notice", children: "Loading the fleet\u2026" })) : (_jsxs(_Fragment, { children: [board.notice && (_jsxs("p", { className: "xeno-fleet__notice", "data-testid": "fleet-notice", children: [_jsx(AlertTriangle, { size: 14, "aria-hidden": true }), " ", board.notice] })), board.liveCollisions.length > 0 && (_jsxs("section", { className: "xeno-fleet__collisions", "data-testid": "fleet-collisions", children: [_jsx("h3", { children: "Blocked now" }), _jsx("ul", { children: board.liveCollisions.map((collision) => (_jsxs("li", { children: [_jsx("span", { children: collision.wantedByRunId }), _jsx("span", { children: "wants" }), _jsx("span", { children: collision.scope }), _jsxs("span", { children: ["held by ", collision.heldByRunId] })] }, `${collision.wantedByRunId}-${collision.scope}`))) })] })), board.rows.length === 0 ? (_jsx("p", { className: "xeno-fleet__notice", children: "No runs yet." })) : (_jsx("ol", { className: "xeno-fleet__runs", "data-testid": "fleet-runs", children: board.rows.map((row) => (_jsxs("li", { "data-attention": row.attention, "data-working": row.working ? 'true' : undefined, children: [_jsx("span", { className: "xeno-fleet__run-id", children: row.runId }), row.intakeItemId && (_jsxs("span", { className: "xeno-fleet__origin", "data-testid": "fleet-origin", children: ["from ", row.intakeItemId] })), _jsx("span", { className: "xeno-fleet__headline", children: row.headline }), row.claims.length > 0 && (_jsxs("span", { className: "xeno-fleet__claims", children: ["holds ", row.claims.join(', ')] })), row.heldMessages !== undefined && row.heldMessages > 0 && (_jsxs("button", { type: "button", className: "xeno-fleet__held", onClick: () => void openHeld(row.runId), "data-testid": "fleet-held-open", children: [row.heldMessages, " awaiting your approval"] })), row.inboundPolicy !== undefined && (_jsxs("span", { className: "xeno-fleet__policy", "data-testid": "fleet-policy", children: ["inbound pinned: ", row.inboundPolicy] })), row.isolation !== undefined && (_jsx("span", { className: "xeno-fleet__isolation", "data-testid": "fleet-isolation", "data-isolation": row.isolation, children: row.isolation === 'sandboxed'
|
|
164
|
+
? `contained${row.isolationMechanism ? ` (${row.isolationMechanism})` : ''}`
|
|
165
|
+
: row.isolation === 'none'
|
|
166
|
+
? 'not contained'
|
|
167
|
+
: 'containment unknown' })), row.changes && row.diffTrustworthy && (_jsxs("span", { className: "xeno-fleet__changes", children: ["+", row.changes.added, " ~", row.changes.modified, " -", row.changes.deleted] }))] }, row.runId))) })), held && (
|
|
168
|
+
/**
|
|
169
|
+
* ๐ด ยง6: a held message is "surfaced to the human for approval".
|
|
170
|
+
* Until this existed the hold had an exit in the protocol and no
|
|
171
|
+
* door in any surface โ which is why nothing ever set the policy.
|
|
172
|
+
*/
|
|
173
|
+
_jsxs("section", { className: "xeno-fleet__held-panel", "data-testid": "fleet-held", children: [_jsxs("h3", { children: ["Awaiting your approval \u2014 ", held.runId] }), !held.available && (_jsx("p", { className: "xeno-fleet__notice", "data-testid": "fleet-held-unavailable", children: held.reason ?? 'This host is not coordinating runs.' })), held.available && held.reason && (_jsx("p", { className: "xeno-fleet__notice", children: held.reason })), held.available && held.messages.length === 0 ? (_jsx("p", { className: "xeno-fleet__notice", children: "Nothing is waiting for this run." })) : (_jsx("ol", { children: held.messages.map((message) => (_jsxs("li", { "data-testid": "fleet-held-message", children: [_jsxs("span", { className: "xeno-fleet__held-from", children: ["from ", message.fromRunId] }), _jsx("span", { className: "xeno-fleet__held-text", children: message.text }), _jsx("button", { type: "button", disabled: heldBusy, onClick: () => void approveHeld(message.id), "data-testid": "fleet-held-approve", title: "Deliver this message to the run", children: "Approve" })] }, message.id))) })), held.available && (_jsxs("div", { className: "xeno-fleet__policy-controls", "data-testid": "fleet-policy-controls", children: [_jsx("button", { type: "button", disabled: heldBusy, onClick: () => void pinPolicy('hold'), "data-testid": "fleet-policy-hold", title: "Withhold every inbound message for this run until you approve it", children: "Hold all inbound" }), _jsx("button", { type: "button", disabled: heldBusy, onClick: () => void pinPolicy('accept'), "data-testid": "fleet-policy-accept", title: "Accept every inbound message for this run, overriding the derived rule", children: "Accept all inbound" }), _jsx("button", { type: "button", disabled: heldBusy, onClick: () => void pinPolicy(null), "data-testid": "fleet-policy-clear", title: "Return this run to the derived rule: hold only what moves trust upward", children: "Use the derived rule" })] }))] })), board.resolvedCollisions.length > 0 && (_jsxs("section", { className: "xeno-fleet__history", "data-testid": "fleet-resolved", children: [_jsx("h3", { children: "Resolved collisions" }), _jsx("ul", { children: board.resolvedCollisions.map((collision) => (_jsxs("li", { children: [collision.wantedByRunId, " waited on ", collision.scope] }, `${collision.wantedByRunId}-${collision.scope}-${collision.at}`))) })] }))] }))] }));
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=FleetPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FleetPanel.js","sourceRoot":"","sources":["../../../src/components/agent/FleetPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface GhostTextAreaProps {
|
|
2
|
+
value: string;
|
|
3
|
+
onChange: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;
|
|
4
|
+
onKeyDown: (e: React.KeyboardEvent<HTMLTextAreaElement>) => void;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
rows?: number;
|
|
8
|
+
effectiveGhostText: string;
|
|
9
|
+
onAcceptGhost: () => void;
|
|
10
|
+
}
|
|
11
|
+
export declare const GhostTextArea: import("react").ForwardRefExoticComponent<GhostTextAreaProps & import("react").RefAttributes<HTMLTextAreaElement>>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=GhostTextArea.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GhostTextArea.d.ts","sourceRoot":"","sources":["../../../src/components/agent/GhostTextArea.tsx"],"names":[],"mappings":"AAEA,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAA;IAC7D,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAA;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B;AAED,eAAO,MAAM,aAAa,oHAiDzB,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef, useRef } from 'react';
|
|
3
|
+
export const GhostTextArea = forwardRef(function GhostTextArea({ value, onChange, onKeyDown, disabled, placeholder, rows, effectiveGhostText, onAcceptGhost }, ref) {
|
|
4
|
+
const overlayRef = useRef(null);
|
|
5
|
+
const minRows = Math.max(rows ?? 1, 1);
|
|
6
|
+
const minHeightClass = minRows >= 2 ? 'min-h-[56px]' : 'min-h-[40px]';
|
|
7
|
+
const textAreaChromeClass = `w-full px-2 py-1.5 text-[13px] leading-relaxed ${minHeightClass}`;
|
|
8
|
+
const handleKeyDown = (e) => {
|
|
9
|
+
if (e.key === 'Tab' && !e.shiftKey && !e.ctrlKey && !e.altKey && effectiveGhostText) {
|
|
10
|
+
e.preventDefault();
|
|
11
|
+
onAcceptGhost();
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
onKeyDown(e);
|
|
15
|
+
};
|
|
16
|
+
return (_jsxs("div", { className: "relative", children: [effectiveGhostText && (_jsxs("div", { ref: overlayRef, "aria-hidden": true, className: `absolute inset-0 ${textAreaChromeClass} pointer-events-none whitespace-pre-wrap break-words overflow-hidden`, children: [_jsx("span", { className: "invisible", children: value }), _jsx("span", { className: "text-white/15", children: effectiveGhostText })] })), _jsx("textarea", { ref: ref, rows: rows, value: value, onChange: onChange, onKeyDown: handleKeyDown, onScroll: (event) => {
|
|
17
|
+
if (overlayRef.current)
|
|
18
|
+
overlayRef.current.scrollTop = event.currentTarget.scrollTop;
|
|
19
|
+
}, disabled: disabled, placeholder: placeholder, "aria-label": "Message input", className: `${textAreaChromeClass} bg-transparent text-white placeholder-white/20 focus:outline-none resize-none hide-scrollbar disabled:opacity-30 disabled:cursor-not-allowed relative z-10` })] }));
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=GhostTextArea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GhostTextArea.js","sourceRoot":"","sources":["../../../src/components/agent/GhostTextArea.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAa1C,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CACrC,SAAS,aAAa,CACpB,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE,aAAa,EAAE,EAC9F,GAAG;IAEH,MAAM,UAAU,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAA;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,MAAM,cAAc,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAA;IACrE,MAAM,mBAAmB,GAAG,kDAAkD,cAAc,EAAE,CAAA;IAE9F,MAAM,aAAa,GAAG,CAAC,CAA2C,EAAE,EAAE;QACpE,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,kBAAkB,EAAE,CAAC;YACpF,CAAC,CAAC,cAAc,EAAE,CAAA;YAClB,aAAa,EAAE,CAAA;YACf,OAAM;QACR,CAAC;QACD,SAAS,CAAC,CAAC,CAAC,CAAA;IACd,CAAC,CAAA;IAED,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,aAEtB,kBAAkB,IAAI,CACrB,eACE,GAAG,EAAE,UAAU,uBAEf,SAAS,EAAE,oBAAoB,mBAAmB,sEAAsE,aAExH,eAAM,SAAS,EAAC,WAAW,YAAE,KAAK,GAAQ,EAC1C,eAAM,SAAS,EAAC,eAAe,YAAE,kBAAkB,GAAQ,IACvD,CACP,EACD,mBACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,IAAI,UAAU,CAAC,OAAO;wBAAE,UAAU,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAA;gBACtF,CAAC,EACD,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,gBACb,eAAe,EAC1B,SAAS,EAAE,GAAG,mBAAmB,6JAA6J,GAC9L,IACE,CACP,CAAA;AACH,CAAC,CACF,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IntakePanel โ ADE ยง5.1, rendered.
|
|
3
|
+
*
|
|
4
|
+
* The first pillar of the developer's loop: work arriving from a tracker, a
|
|
5
|
+
* TODO, a plan document, another agent. `projectIntakeBoard` decides what may be
|
|
6
|
+
* claimed about each item and what may be offered; this renders it.
|
|
7
|
+
*
|
|
8
|
+
* ๐ด **The notice renders ABOVE the list.** An inbox missing items reads as "no
|
|
9
|
+
* more work" โ the same reason the fleet board puts its notice first. A caveat
|
|
10
|
+
* under a list is read after the reader has already decided there is nothing to
|
|
11
|
+
* do.
|
|
12
|
+
*
|
|
13
|
+
* ๐ด **Refusals are shown VERBATIM.** The host names who holds an item and which
|
|
14
|
+
* run has it; re-wording that here would be a second source of truth about who
|
|
15
|
+
* is doing what.
|
|
16
|
+
*
|
|
17
|
+
* Design: monochromatic, rectangles only, no circles โ `DESIGN_SYSTEM.md`.
|
|
18
|
+
*/
|
|
19
|
+
import React from 'react';
|
|
20
|
+
export interface IntakePanelProps {
|
|
21
|
+
/** Identifies THIS client for claiming. Two surfaces must not share it, or
|
|
22
|
+
* exactly-once degrades to first-surface-wins-forever. */
|
|
23
|
+
clientId: string;
|
|
24
|
+
/** Where a dispatched item's work should run. Absent, dispatch is unavailable
|
|
25
|
+
* rather than guessing a run id. */
|
|
26
|
+
runId?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function IntakePanel({ clientId, runId }: IntakePanelProps): React.ReactElement;
|
|
29
|
+
//# sourceMappingURL=IntakePanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IntakePanel.d.ts","sourceRoot":"","sources":["../../../src/components/agent/IntakePanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAA2C,MAAM,OAAO,CAAA;AAe/D,MAAM,WAAW,gBAAgB;IAC/B;+DAC2D;IAC3D,QAAQ,EAAE,MAAM,CAAA;IAChB;yCACqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAkHrF"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* IntakePanel โ ADE ยง5.1, rendered.
|
|
4
|
+
*
|
|
5
|
+
* The first pillar of the developer's loop: work arriving from a tracker, a
|
|
6
|
+
* TODO, a plan document, another agent. `projectIntakeBoard` decides what may be
|
|
7
|
+
* claimed about each item and what may be offered; this renders it.
|
|
8
|
+
*
|
|
9
|
+
* ๐ด **The notice renders ABOVE the list.** An inbox missing items reads as "no
|
|
10
|
+
* more work" โ the same reason the fleet board puts its notice first. A caveat
|
|
11
|
+
* under a list is read after the reader has already decided there is nothing to
|
|
12
|
+
* do.
|
|
13
|
+
*
|
|
14
|
+
* ๐ด **Refusals are shown VERBATIM.** The host names who holds an item and which
|
|
15
|
+
* run has it; re-wording that here would be a second source of truth about who
|
|
16
|
+
* is doing what.
|
|
17
|
+
*
|
|
18
|
+
* Design: monochromatic, rectangles only, no circles โ `DESIGN_SYSTEM.md`.
|
|
19
|
+
*/
|
|
20
|
+
import React, { useCallback, useEffect, useState } from 'react';
|
|
21
|
+
import { AlertTriangle, Inbox, RefreshCw } from 'lucide-react';
|
|
22
|
+
import { projectIntakeBoard } from '@xenosystem/agent-interface-core';
|
|
23
|
+
import { getAgentPlatformBridge } from '../../platformBridge';
|
|
24
|
+
function tryBridge() {
|
|
25
|
+
try {
|
|
26
|
+
return getAgentPlatformBridge();
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export function IntakePanel({ clientId, runId }) {
|
|
33
|
+
const [board, setBoard] = useState(null);
|
|
34
|
+
const [busy, setBusy] = useState(false);
|
|
35
|
+
const [refusal, setRefusal] = useState(null);
|
|
36
|
+
const refresh = useCallback(async () => {
|
|
37
|
+
const bridge = tryBridge();
|
|
38
|
+
if (!bridge?.intake) {
|
|
39
|
+
setBoard(projectIntakeBoard({ available: false, items: [], complete: false, failedSources: [], reason: 'This surface cannot reach the Agent host.' }, clientId));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
setBusy(true);
|
|
43
|
+
try {
|
|
44
|
+
setBoard(projectIntakeBoard(await bridge.intake.list({}), clientId));
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
setBusy(false);
|
|
48
|
+
}
|
|
49
|
+
}, [clientId]);
|
|
50
|
+
useEffect(() => { void refresh(); }, [refresh]);
|
|
51
|
+
/** One shape for every action: run it, show any refusal verbatim, re-read. */
|
|
52
|
+
const act = useCallback(async (run) => {
|
|
53
|
+
const bridge = tryBridge();
|
|
54
|
+
if (!bridge?.intake)
|
|
55
|
+
return;
|
|
56
|
+
setBusy(true);
|
|
57
|
+
try {
|
|
58
|
+
const result = await run(bridge);
|
|
59
|
+
setRefusal(result.ok ? null : result.reason ?? 'That did not work.');
|
|
60
|
+
}
|
|
61
|
+
finally {
|
|
62
|
+
setBusy(false);
|
|
63
|
+
await refresh();
|
|
64
|
+
}
|
|
65
|
+
}, [refresh]);
|
|
66
|
+
return (_jsxs("div", { className: "xeno-intake", "data-testid": "intake-panel", children: [_jsxs("header", { className: "xeno-intake__header", children: [_jsxs("h2", { children: [_jsx(Inbox, { size: 14, "aria-hidden": true }), " Intake"] }), _jsx("button", { type: "button", onClick: () => void refresh(), disabled: busy, "aria-label": "Refresh intake", children: _jsx(RefreshCw, { size: 14, "aria-hidden": true }) })] }), board?.notice && (_jsxs("p", { className: "xeno-intake__notice", "data-testid": "intake-notice", children: [_jsx(AlertTriangle, { size: 14, "aria-hidden": true }), " ", board.notice] })), board === null ? (_jsx("p", { className: "xeno-intake__notice", children: "Loading the inbox\u2026" })) : board.rows.length === 0 ? (
|
|
67
|
+
// Only honest when the inbox was actually read. When it was not, the
|
|
68
|
+
// notice above already says so and this line does not appear alone.
|
|
69
|
+
_jsx("p", { className: "xeno-intake__notice", children: board.trustworthy ? 'Nothing waiting.' : '' })) : (_jsxs(_Fragment, { children: [_jsxs("p", { className: "xeno-intake__summary", "data-testid": "intake-free-count", children: [board.freeCount, " waiting to be picked up"] }), _jsx("ol", { className: "xeno-intake__items", "data-testid": "intake-items", children: board.rows.map((row) => (_jsxs("li", { "data-availability": row.availability, children: [_jsx("span", { className: "xeno-intake__source", children: row.sourceId }), _jsx("span", { className: "xeno-intake__title", children: row.title }), _jsx("span", { className: "xeno-intake__headline", children: row.headline }), _jsxs("div", { className: "xeno-intake__actions", children: [_jsx("button", { type: "button",
|
|
70
|
+
/* Advice only โ the host arbitrates and refuses a second
|
|
71
|
+
claimant by name. */
|
|
72
|
+
disabled: busy || !row.canClaim, onClick: () => void act((bridge) => bridge.intake.claim({ itemId: row.id, clientId })), "data-testid": `intake-claim-${row.id}`, children: "Claim" }), _jsx("button", { type: "button",
|
|
73
|
+
/* Dispatch needs a run to dispatch INTO. Without one the
|
|
74
|
+
control is unavailable rather than inventing a run id. */
|
|
75
|
+
disabled: busy || !row.canDispatch || !runId, onClick: () => void act((bridge) => bridge.intake.dispatch({
|
|
76
|
+
itemId: row.id,
|
|
77
|
+
clientId,
|
|
78
|
+
runId: runId,
|
|
79
|
+
})), children: "Dispatch" }), _jsx("button", { type: "button", disabled: busy || !row.canRelease, onClick: () => void act((bridge) => bridge.intake.release({ itemId: row.id, clientId })), children: "Hand back" })] })] }, row.id))) })] })), refusal && _jsx("p", { className: "xeno-intake__notice", "data-testid": "intake-refusal", children: refusal })] }));
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=IntakePanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IntakePanel.js","sourceRoot":"","sources":["../../../src/components/agent/IntakePanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KnowledgePanel โ ADE ยง5.8, rendered.
|
|
3
|
+
*
|
|
4
|
+
* What this workspace has learned, and what it used to believe.
|
|
5
|
+
* `projectKnowledgeBoard` decides which facts are current and what must be said
|
|
6
|
+
* about the store; this renders it.
|
|
7
|
+
*
|
|
8
|
+
* ๐ด **The durability warning is first, not a footnote.** A panel that rendered
|
|
9
|
+
* facts identically whether or not they survive a restart invites someone to
|
|
10
|
+
* teach the workspace something important and lose it on close.
|
|
11
|
+
*
|
|
12
|
+
* ๐ด **History is shown APART from current facts.** The store keeps a replaced
|
|
13
|
+
* fact deliberately โ "when did this change?" is a real question โ but a list
|
|
14
|
+
* mixing them tells a reader the workspace holds two contradictory beliefs.
|
|
15
|
+
*
|
|
16
|
+
* Design: monochromatic, rectangles only, no circles โ `DESIGN_SYSTEM.md`.
|
|
17
|
+
*/
|
|
18
|
+
import React from 'react';
|
|
19
|
+
export interface KnowledgePanelProps {
|
|
20
|
+
workspaceId: string;
|
|
21
|
+
/** Recorded as provenance on anything added here. */
|
|
22
|
+
runId: string;
|
|
23
|
+
}
|
|
24
|
+
export declare function KnowledgePanel({ workspaceId, runId }: KnowledgePanelProps): React.ReactElement;
|
|
25
|
+
//# sourceMappingURL=KnowledgePanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KnowledgePanel.d.ts","sourceRoot":"","sources":["../../../src/components/agent/KnowledgePanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAA2C,MAAM,OAAO,CAAA;AAe/D,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,cAAc,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,mBAAmB,GAAG,KAAK,CAAC,YAAY,CAsJ9F"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* KnowledgePanel โ ADE ยง5.8, rendered.
|
|
4
|
+
*
|
|
5
|
+
* What this workspace has learned, and what it used to believe.
|
|
6
|
+
* `projectKnowledgeBoard` decides which facts are current and what must be said
|
|
7
|
+
* about the store; this renders it.
|
|
8
|
+
*
|
|
9
|
+
* ๐ด **The durability warning is first, not a footnote.** A panel that rendered
|
|
10
|
+
* facts identically whether or not they survive a restart invites someone to
|
|
11
|
+
* teach the workspace something important and lose it on close.
|
|
12
|
+
*
|
|
13
|
+
* ๐ด **History is shown APART from current facts.** The store keeps a replaced
|
|
14
|
+
* fact deliberately โ "when did this change?" is a real question โ but a list
|
|
15
|
+
* mixing them tells a reader the workspace holds two contradictory beliefs.
|
|
16
|
+
*
|
|
17
|
+
* Design: monochromatic, rectangles only, no circles โ `DESIGN_SYSTEM.md`.
|
|
18
|
+
*/
|
|
19
|
+
import React, { useCallback, useEffect, useState } from 'react';
|
|
20
|
+
import { AlertTriangle, BookOpen, Pin, RefreshCw } from 'lucide-react';
|
|
21
|
+
import { projectKnowledgeBoard } from '@xenosystem/agent-interface-core';
|
|
22
|
+
import { getAgentPlatformBridge } from '../../platformBridge';
|
|
23
|
+
function tryBridge() {
|
|
24
|
+
try {
|
|
25
|
+
return getAgentPlatformBridge();
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export function KnowledgePanel({ workspaceId, runId }) {
|
|
32
|
+
const [board, setBoard] = useState(null);
|
|
33
|
+
const [busy, setBusy] = useState(false);
|
|
34
|
+
const [showHistory, setShowHistory] = useState(false);
|
|
35
|
+
const [subject, setSubject] = useState('');
|
|
36
|
+
const [fact, setFact] = useState('');
|
|
37
|
+
const [problem, setProblem] = useState(null);
|
|
38
|
+
const refresh = useCallback(async () => {
|
|
39
|
+
const bridge = tryBridge();
|
|
40
|
+
if (!bridge?.knowledge) {
|
|
41
|
+
setBoard(projectKnowledgeBoard({
|
|
42
|
+
available: false,
|
|
43
|
+
entries: [],
|
|
44
|
+
durable: false,
|
|
45
|
+
reason: 'This surface cannot reach the Agent host.',
|
|
46
|
+
}));
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
setBusy(true);
|
|
50
|
+
try {
|
|
51
|
+
setBoard(projectKnowledgeBoard(await bridge.knowledge.list({ workspaceId })));
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
setBusy(false);
|
|
55
|
+
}
|
|
56
|
+
}, [workspaceId]);
|
|
57
|
+
useEffect(() => { void refresh(); }, [refresh]);
|
|
58
|
+
const record = useCallback(async (pinned) => {
|
|
59
|
+
const bridge = tryBridge();
|
|
60
|
+
if (!bridge?.knowledge)
|
|
61
|
+
return;
|
|
62
|
+
setBusy(true);
|
|
63
|
+
try {
|
|
64
|
+
const result = await bridge.knowledge.record({
|
|
65
|
+
workspaceId,
|
|
66
|
+
subject,
|
|
67
|
+
fact,
|
|
68
|
+
...(pinned ? { pinned: true } : {}),
|
|
69
|
+
runId,
|
|
70
|
+
});
|
|
71
|
+
// The host's refusal verbatim โ it already says what is missing.
|
|
72
|
+
setProblem(result.ok ? null : result.reason ?? 'That fact could not be recorded.');
|
|
73
|
+
if (result.ok) {
|
|
74
|
+
setSubject('');
|
|
75
|
+
setFact('');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
finally {
|
|
79
|
+
setBusy(false);
|
|
80
|
+
await refresh();
|
|
81
|
+
}
|
|
82
|
+
}, [workspaceId, runId, subject, fact, refresh]);
|
|
83
|
+
const forget = useCallback(async (entryId) => {
|
|
84
|
+
const bridge = tryBridge();
|
|
85
|
+
if (!bridge?.knowledge)
|
|
86
|
+
return;
|
|
87
|
+
setBusy(true);
|
|
88
|
+
try {
|
|
89
|
+
const result = await bridge.knowledge.forget({ workspaceId, entryId });
|
|
90
|
+
setProblem(result.ok ? null : result.reason ?? null);
|
|
91
|
+
}
|
|
92
|
+
finally {
|
|
93
|
+
setBusy(false);
|
|
94
|
+
await refresh();
|
|
95
|
+
}
|
|
96
|
+
}, [workspaceId, refresh]);
|
|
97
|
+
return (_jsxs("div", { className: "xeno-knowledge", "data-testid": "knowledge-panel", children: [_jsxs("header", { className: "xeno-knowledge__header", children: [_jsxs("h2", { children: [_jsx(BookOpen, { size: 14, "aria-hidden": true }), " Knowledge"] }), _jsx("button", { type: "button", onClick: () => void refresh(), disabled: busy, "aria-label": "Refresh knowledge", children: _jsx(RefreshCw, { size: 14, "aria-hidden": true }) })] }), board?.notice && (_jsxs("p", { className: "xeno-knowledge__notice", "data-testid": "knowledge-notice", children: [_jsx(AlertTriangle, { size: 14, "aria-hidden": true }), " ", board.notice] })), board === null ? (_jsx("p", { className: "xeno-knowledge__notice", children: "Loading what this workspace knows\u2026" })) : (_jsxs(_Fragment, { children: [board.current.length === 0 ? (_jsx("p", { className: "xeno-knowledge__notice", children: "This workspace has not learned anything yet." })) : (_jsx("ul", { className: "xeno-knowledge__current", "data-testid": "knowledge-current", children: board.current.map((row) => (_jsxs("li", { "data-pinned": row.pinned ? 'true' : undefined, children: [row.pinned && _jsx(Pin, { size: 12, "aria-hidden": true }), _jsx("span", { className: "xeno-knowledge__subject", children: row.subject }), _jsx("span", { className: "xeno-knowledge__fact", children: row.fact }), _jsx("span", { className: "xeno-knowledge__provenance", children: row.provenance }), _jsx("button", { type: "button", disabled: busy, onClick: () => void forget(row.id), children: "Forget" })] }, row.id))) })), _jsxs("section", { className: "xeno-knowledge__record", children: [_jsx("input", { value: subject, onChange: (event) => setSubject(event.target.value), placeholder: "subject, e.g. build.package-manager", "aria-label": "Subject" }), _jsx("input", { value: fact, onChange: (event) => setFact(event.target.value), placeholder: "what is true about it", "aria-label": "Fact" }), _jsx("button", { type: "button", disabled: busy, onClick: () => void record(false), children: "Record" }), _jsx("button", { type: "button", disabled: busy, onClick: () => void record(true), children: "Record pinned" })] }), board.history.length > 0 && (_jsxs("section", { className: "xeno-knowledge__history", "data-testid": "knowledge-history", children: [_jsx("button", { type: "button", onClick: () => setShowHistory((shown) => !shown), children: showHistory ? 'Hide' : `Show ${board.history.length} superseded fact(s)` }), showHistory && (_jsx("ul", { children: board.history.map((row) => (_jsxs("li", { children: [_jsx("span", { children: row.subject }), _jsx("span", { children: row.fact }), _jsx("span", { children: row.provenance })] }, row.id))) }))] }))] })), problem && _jsx("p", { className: "xeno-knowledge__notice", "data-testid": "knowledge-problem", children: problem })] }));
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=KnowledgePanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KnowledgePanel.js","sourceRoot":"","sources":["../../../src/components/agent/KnowledgePanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ConversationEditorDiff } from '../../types/agentEditor';
|
|
2
|
+
export default function MonacoDiffWorkbenchEditor({ diff, rootDirectory, layoutKey, statusMessage, onOpenFile, }: {
|
|
3
|
+
diff: ConversationEditorDiff | null;
|
|
4
|
+
rootDirectory: string | null;
|
|
5
|
+
layoutKey?: string;
|
|
6
|
+
statusMessage?: string | null;
|
|
7
|
+
onOpenFile?: (path: string) => void;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=MonacoDiffWorkbenchEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MonacoDiffWorkbenchEditor.d.ts","sourceRoot":"","sources":["../../../src/components/agent/MonacoDiffWorkbenchEditor.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAUrE,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,IAAI,EACJ,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,GACX,EAAE;IACD,IAAI,EAAE,sBAAsB,GAAG,IAAI,CAAA;IACnC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACpC,+BA6QA"}
|