@agent-native/core 0.30.6 → 0.31.1
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/a2a/client.d.ts +2 -0
- package/dist/a2a/client.d.ts.map +1 -1
- package/dist/a2a/client.js +7 -5
- package/dist/a2a/client.js.map +1 -1
- package/dist/a2a/handlers.d.ts.map +1 -1
- package/dist/a2a/handlers.js +3 -0
- package/dist/a2a/handlers.js.map +1 -1
- package/dist/a2a/server.d.ts.map +1 -1
- package/dist/a2a/server.js.map +1 -1
- package/dist/a2a/task-store.d.ts.map +1 -1
- package/dist/a2a/task-store.js +5 -1
- package/dist/a2a/task-store.js.map +1 -1
- package/dist/action.js +22 -4
- package/dist/action.js.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.js +5 -0
- package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
- package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
- package/dist/agent/engine/anthropic-engine.js +0 -7
- package/dist/agent/engine/anthropic-engine.js.map +1 -1
- package/dist/agent/engine/builder-engine.d.ts.map +1 -1
- package/dist/agent/engine/builder-engine.js +4 -0
- package/dist/agent/engine/builder-engine.js.map +1 -1
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/agent/engine/translate-ai-sdk.d.ts.map +1 -1
- package/dist/agent/engine/translate-ai-sdk.js +5 -3
- package/dist/agent/engine/translate-ai-sdk.js.map +1 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +31 -4
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +21 -8
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +5 -1
- package/dist/agent/run-store.js.map +1 -1
- package/dist/agent/tool-search.js.map +1 -1
- package/dist/application-state/store.d.ts.map +1 -1
- package/dist/application-state/store.js +18 -7
- package/dist/application-state/store.js.map +1 -1
- package/dist/brand-kit/brand-signals.d.ts +31 -0
- package/dist/brand-kit/brand-signals.d.ts.map +1 -0
- package/dist/brand-kit/brand-signals.js +101 -0
- package/dist/brand-kit/brand-signals.js.map +1 -0
- package/dist/brand-kit/index.d.ts +21 -0
- package/dist/brand-kit/index.d.ts.map +1 -0
- package/dist/brand-kit/index.js +34 -0
- package/dist/brand-kit/index.js.map +1 -0
- package/dist/brand-kit/types.d.ts +103 -0
- package/dist/brand-kit/types.d.ts.map +1 -0
- package/dist/brand-kit/types.js +17 -0
- package/dist/brand-kit/types.js.map +1 -0
- package/dist/browser-sessions/store.d.ts.map +1 -1
- package/dist/browser-sessions/store.js +6 -1
- package/dist/browser-sessions/store.js.map +1 -1
- package/dist/chat-threads/store.d.ts.map +1 -1
- package/dist/chat-threads/store.js +6 -2
- package/dist/chat-threads/store.js.map +1 -1
- package/dist/checkpoints/store.d.ts.map +1 -1
- package/dist/checkpoints/store.js +5 -1
- package/dist/checkpoints/store.js.map +1 -1
- package/dist/cli/code-agent-executor.d.ts.map +1 -1
- package/dist/cli/code-agent-executor.js.map +1 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +0 -1
- package/dist/cli/create.js.map +1 -1
- package/dist/client/AgentNative.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +18 -20
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +69 -17
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/IframeEmbed.d.ts.map +1 -1
- package/dist/client/IframeEmbed.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +1 -1
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/RunStuckBanner.js.map +1 -1
- package/dist/client/agent-chat.d.ts +0 -3
- package/dist/client/agent-chat.d.ts.map +1 -1
- package/dist/client/agent-chat.js +0 -3
- package/dist/client/agent-chat.js.map +1 -1
- package/dist/client/builder-mark.d.ts.map +1 -1
- package/dist/client/builder-mark.js.map +1 -1
- package/dist/client/components/CodeRequiredDialog.js +0 -7
- package/dist/client/components/CodeRequiredDialog.js.map +1 -1
- package/dist/client/components/MissingKeyCard.d.ts.map +1 -1
- package/dist/client/components/MissingKeyCard.js.map +1 -1
- package/dist/client/composer/PromptComposer.d.ts.map +1 -1
- package/dist/client/composer/PromptComposer.js +6 -3
- package/dist/client/composer/PromptComposer.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +5 -0
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/composer/VoiceButton.d.ts.map +1 -1
- package/dist/client/composer/VoiceButton.js +9 -0
- package/dist/client/composer/VoiceButton.js.map +1 -1
- package/dist/client/composer/extensions/FileReference.d.ts.map +1 -1
- package/dist/client/composer/extensions/FileReference.js.map +1 -1
- package/dist/client/composer/extensions/MentionReference.d.ts.map +1 -1
- package/dist/client/composer/extensions/MentionReference.js.map +1 -1
- package/dist/client/composer/extensions/SkillReference.d.ts.map +1 -1
- package/dist/client/composer/extensions/SkillReference.js.map +1 -1
- package/dist/client/composer/use-file-search.d.ts.map +1 -1
- package/dist/client/composer/use-file-search.js +14 -3
- package/dist/client/composer/use-file-search.js.map +1 -1
- package/dist/client/conversation/AgentConversation.js +8 -6
- package/dist/client/conversation/AgentConversation.js.map +1 -1
- package/dist/client/conversation/use-near-bottom-autoscroll.d.ts.map +1 -1
- package/dist/client/conversation/use-near-bottom-autoscroll.js +133 -35
- package/dist/client/conversation/use-near-bottom-autoscroll.js.map +1 -1
- package/dist/client/db-admin/DbAdminPage.js.map +1 -1
- package/dist/client/db-admin/EditableCell.js +1 -1
- package/dist/client/db-admin/EditableCell.js.map +1 -1
- package/dist/client/dev-overlay/DevOverlay.d.ts +0 -2
- package/dist/client/dev-overlay/DevOverlay.d.ts.map +1 -1
- package/dist/client/dev-overlay/DevOverlay.js +1 -2
- package/dist/client/dev-overlay/DevOverlay.js.map +1 -1
- package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -1
- package/dist/client/extensions/EmbeddedExtension.js +19 -0
- package/dist/client/extensions/EmbeddedExtension.js.map +1 -1
- package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionViewer.js +11 -3
- package/dist/client/extensions/ExtensionViewer.js.map +1 -1
- package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -1
- package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
- package/dist/client/mcp-app-host.d.ts.map +1 -1
- package/dist/client/mcp-app-host.js +25 -3
- package/dist/client/mcp-app-host.js.map +1 -1
- package/dist/client/mcp-apps/McpAppRenderer.d.ts.map +1 -1
- package/dist/client/mcp-apps/McpAppRenderer.js +1 -1
- package/dist/client/mcp-apps/McpAppRenderer.js.map +1 -1
- package/dist/client/notifications/NotificationsBell.js.map +1 -1
- package/dist/client/onboarding/SetupButton.d.ts.map +1 -1
- package/dist/client/onboarding/SetupButton.js +6 -0
- package/dist/client/onboarding/SetupButton.js.map +1 -1
- package/dist/client/progress/RunsTray.js.map +1 -1
- package/dist/client/resources/McpServerDetail.d.ts.map +1 -1
- package/dist/client/resources/McpServerDetail.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +0 -1
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/settings/AgentsSection.d.ts.map +1 -1
- package/dist/client/settings/AgentsSection.js +1 -1
- package/dist/client/settings/AgentsSection.js.map +1 -1
- package/dist/client/settings/AutomationsSection.js.map +1 -1
- package/dist/client/settings/SettingsPanel.js +2 -2
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/sharing/ShareButton.d.ts.map +1 -1
- package/dist/client/sharing/ShareButton.js +0 -4
- package/dist/client/sharing/ShareButton.js.map +1 -1
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +13 -3
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/client/terminal/AgentTerminal.d.ts.map +1 -1
- package/dist/client/terminal/AgentTerminal.js +1 -1
- package/dist/client/terminal/AgentTerminal.js.map +1 -1
- package/dist/client/use-agent-chat.d.ts.map +1 -1
- package/dist/client/use-agent-chat.js +20 -4
- package/dist/client/use-agent-chat.js.map +1 -1
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js +39 -25
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/client/use-db-sync.d.ts.map +1 -1
- package/dist/client/use-db-sync.js +24 -0
- package/dist/client/use-db-sync.js.map +1 -1
- package/dist/client/use-dev-mode.d.ts.map +1 -1
- package/dist/client/use-dev-mode.js +25 -9
- package/dist/client/use-dev-mode.js.map +1 -1
- package/dist/client/use-run-stuck-detection.d.ts.map +1 -1
- package/dist/client/use-run-stuck-detection.js +7 -1
- package/dist/client/use-run-stuck-detection.js.map +1 -1
- package/dist/client/useProductionAgent.d.ts.map +1 -1
- package/dist/client/useProductionAgent.js +6 -2
- package/dist/client/useProductionAgent.js.map +1 -1
- package/dist/collab/agent-presence.d.ts +0 -3
- package/dist/collab/agent-presence.d.ts.map +1 -1
- package/dist/collab/agent-presence.js +3 -5
- package/dist/collab/agent-presence.js.map +1 -1
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/awareness.js +11 -1
- package/dist/collab/awareness.js.map +1 -1
- package/dist/collab/client-struct.js.map +1 -1
- package/dist/collab/storage.d.ts.map +1 -1
- package/dist/collab/storage.js +5 -1
- package/dist/collab/storage.js.map +1 -1
- package/dist/collab/ydoc-manager.d.ts.map +1 -1
- package/dist/collab/ydoc-manager.js +35 -8
- package/dist/collab/ydoc-manager.js.map +1 -1
- package/dist/deploy/build.js +0 -5
- package/dist/deploy/build.js.map +1 -1
- package/dist/extensions/content-patch.js +1 -1
- package/dist/extensions/content-patch.js.map +1 -1
- package/dist/extensions/fetch-tool.d.ts.map +1 -1
- package/dist/extensions/fetch-tool.js +4 -1
- package/dist/extensions/fetch-tool.js.map +1 -1
- package/dist/extensions/routes.js +12 -12
- package/dist/extensions/routes.js.map +1 -1
- package/dist/extensions/slots/store.d.ts.map +1 -1
- package/dist/extensions/slots/store.js +5 -1
- package/dist/extensions/slots/store.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts.map +1 -1
- package/dist/file-upload/actions/upload-image.js +39 -4
- package/dist/file-upload/actions/upload-image.js.map +1 -1
- package/dist/integrations/a2a-continuations-store.d.ts.map +1 -1
- package/dist/integrations/a2a-continuations-store.js +5 -1
- package/dist/integrations/a2a-continuations-store.js.map +1 -1
- package/dist/integrations/adapters/email.d.ts.map +1 -1
- package/dist/integrations/adapters/email.js +5 -2
- package/dist/integrations/adapters/email.js.map +1 -1
- package/dist/integrations/adapters/slack.d.ts.map +1 -1
- package/dist/integrations/adapters/slack.js.map +1 -1
- package/dist/integrations/google-docs-poller.d.ts.map +1 -1
- package/dist/integrations/google-docs-poller.js +16 -5
- package/dist/integrations/google-docs-poller.js.map +1 -1
- package/dist/integrations/pending-tasks-retry-job.d.ts.map +1 -1
- package/dist/integrations/pending-tasks-retry-job.js +6 -2
- package/dist/integrations/pending-tasks-retry-job.js.map +1 -1
- package/dist/integrations/pending-tasks-store.d.ts.map +1 -1
- package/dist/integrations/pending-tasks-store.js +5 -1
- package/dist/integrations/pending-tasks-store.js.map +1 -1
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +14 -3
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/integrations/remote-commands-store.d.ts.map +1 -1
- package/dist/integrations/remote-commands-store.js +5 -1
- package/dist/integrations/remote-commands-store.js.map +1 -1
- package/dist/integrations/remote-devices-store.d.ts.map +1 -1
- package/dist/integrations/remote-devices-store.js +5 -1
- package/dist/integrations/remote-devices-store.js.map +1 -1
- package/dist/integrations/remote-push-store.d.ts.map +1 -1
- package/dist/integrations/remote-push-store.js +5 -1
- package/dist/integrations/remote-push-store.js.map +1 -1
- package/dist/integrations/remote-retry-job.js +1 -1
- package/dist/integrations/remote-retry-job.js.map +1 -1
- package/dist/integrations/remote-run-events-store.d.ts.map +1 -1
- package/dist/integrations/remote-run-events-store.js +5 -1
- package/dist/integrations/remote-run-events-store.js.map +1 -1
- package/dist/integrations/thread-mapping-store.d.ts.map +1 -1
- package/dist/integrations/thread-mapping-store.js +5 -1
- package/dist/integrations/thread-mapping-store.js.map +1 -1
- package/dist/integrations/webhook-handler.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.js +10 -1
- package/dist/integrations/webhook-handler.js.map +1 -1
- package/dist/jobs/scheduler.d.ts.map +1 -1
- package/dist/jobs/scheduler.js +31 -15
- package/dist/jobs/scheduler.js.map +1 -1
- package/dist/jobs/tools.d.ts.map +1 -1
- package/dist/jobs/tools.js +4 -1
- package/dist/jobs/tools.js.map +1 -1
- package/dist/mcp/build-server.d.ts.map +1 -1
- package/dist/mcp/build-server.js +24 -9
- package/dist/mcp/build-server.js.map +1 -1
- package/dist/mcp/connect-store.d.ts +3 -4
- package/dist/mcp/connect-store.d.ts.map +1 -1
- package/dist/mcp/connect-store.js +5 -5
- package/dist/mcp/connect-store.js.map +1 -1
- package/dist/mcp-client/routes.js +6 -1
- package/dist/mcp-client/routes.js.map +1 -1
- package/dist/notifications/channels.d.ts.map +1 -1
- package/dist/notifications/channels.js +3 -2
- package/dist/notifications/channels.js.map +1 -1
- package/dist/oauth-tokens/store.d.ts.map +1 -1
- package/dist/oauth-tokens/store.js +5 -1
- package/dist/oauth-tokens/store.js.map +1 -1
- package/dist/observability/evals.d.ts.map +1 -1
- package/dist/observability/evals.js +7 -7
- package/dist/observability/evals.js.map +1 -1
- package/dist/observability/traces.d.ts.map +1 -1
- package/dist/observability/traces.js +15 -5
- package/dist/observability/traces.js.map +1 -1
- package/dist/org/accept-pending.js +1 -1
- package/dist/org/accept-pending.js.map +1 -1
- package/dist/org/handlers.d.ts.map +1 -1
- package/dist/org/handlers.js +3 -2
- package/dist/org/handlers.js.map +1 -1
- package/dist/progress/store.d.ts.map +1 -1
- package/dist/progress/store.js +11 -1
- package/dist/progress/store.js.map +1 -1
- package/dist/resources/handlers.d.ts +5 -5
- package/dist/resources/handlers.d.ts.map +1 -1
- package/dist/resources/handlers.js +0 -2
- package/dist/resources/handlers.js.map +1 -1
- package/dist/resources/store.d.ts.map +1 -1
- package/dist/resources/store.js +23 -13
- package/dist/resources/store.js.map +1 -1
- package/dist/scripts/db/query.d.ts.map +1 -1
- package/dist/scripts/db/query.js +1 -2
- package/dist/scripts/db/query.js.map +1 -1
- package/dist/scripts/db/schema.js.map +1 -1
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +10 -3
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +3 -6
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +13 -9
- package/dist/server/auth.js.map +1 -1
- package/dist/server/better-auth-instance.d.ts.map +1 -1
- package/dist/server/better-auth-instance.js +0 -3
- package/dist/server/better-auth-instance.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +1 -2
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/create-server.d.ts.map +1 -1
- package/dist/server/create-server.js +0 -23
- package/dist/server/create-server.js.map +1 -1
- package/dist/server/google-oauth.d.ts.map +1 -1
- package/dist/server/google-oauth.js +0 -3
- package/dist/server/google-oauth.js.map +1 -1
- package/dist/server/identity-sso-store.d.ts.map +1 -1
- package/dist/server/identity-sso-store.js +14 -3
- package/dist/server/identity-sso-store.js.map +1 -1
- package/dist/server/poll.d.ts.map +1 -1
- package/dist/server/poll.js +67 -18
- package/dist/server/poll.js.map +1 -1
- package/dist/server/schema-prompt.js +1 -1
- package/dist/server/schema-prompt.js.map +1 -1
- package/dist/server/security-headers.d.ts +5 -4
- package/dist/server/security-headers.d.ts.map +1 -1
- package/dist/server/security-headers.js +5 -4
- package/dist/server/security-headers.js.map +1 -1
- package/dist/settings/store.d.ts.map +1 -1
- package/dist/settings/store.js +5 -1
- package/dist/settings/store.js.map +1 -1
- package/dist/sharing/access.d.ts.map +1 -1
- package/dist/sharing/access.js +25 -4
- package/dist/sharing/access.js.map +1 -1
- package/dist/sharing/actions/set-resource-visibility.d.ts.map +1 -1
- package/dist/sharing/actions/set-resource-visibility.js +8 -1
- package/dist/sharing/actions/set-resource-visibility.js.map +1 -1
- package/dist/triggers/actions.d.ts.map +1 -1
- package/dist/triggers/actions.js +1 -2
- package/dist/triggers/actions.js.map +1 -1
- package/dist/triggers/dispatcher.d.ts.map +1 -1
- package/dist/triggers/dispatcher.js +36 -8
- package/dist/triggers/dispatcher.js.map +1 -1
- package/dist/usage/store.d.ts.map +1 -1
- package/dist/usage/store.js +5 -1
- package/dist/usage/store.js.map +1 -1
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +7 -5
- package/dist/vite/client.js.map +1 -1
- package/package.json +3 -2
- package/dist/client/conversation/AgentConversation.spec.d.ts +0 -2
- package/dist/client/conversation/AgentConversation.spec.d.ts.map +0 -1
- package/dist/client/conversation/AgentConversation.spec.js +0 -69
- package/dist/client/conversation/AgentConversation.spec.js.map +0 -1
- package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.d.ts +0 -2
- package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.d.ts.map +0 -1
- package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.js +0 -110
- package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.js.map +0 -1
- package/dist/client/extensions/AgentNativeExtensionFrame.spec.d.ts +0 -2
- package/dist/client/extensions/AgentNativeExtensionFrame.spec.d.ts.map +0 -1
- package/dist/client/extensions/AgentNativeExtensionFrame.spec.js +0 -68
- package/dist/client/extensions/AgentNativeExtensionFrame.spec.js.map +0 -1
- package/dist/client/extensions/ExtensionViewer.spec.d.ts +0 -2
- package/dist/client/extensions/ExtensionViewer.spec.d.ts.map +0 -1
- package/dist/client/extensions/ExtensionViewer.spec.js +0 -94
- package/dist/client/extensions/ExtensionViewer.spec.js.map +0 -1
- package/dist/client/guided-questions.flow.spec.d.ts +0 -2
- package/dist/client/guided-questions.flow.spec.d.ts.map +0 -1
- package/dist/client/guided-questions.flow.spec.js +0 -147
- package/dist/client/guided-questions.flow.spec.js.map +0 -1
- package/dist/client/settings/useBuilderStatus.spec.d.ts +0 -2
- package/dist/client/settings/useBuilderStatus.spec.d.ts.map +0 -1
- package/dist/client/settings/useBuilderStatus.spec.js +0 -487
- package/dist/client/settings/useBuilderStatus.spec.js.map +0 -1
- package/dist/client/sharing/ShareButton.spec.d.ts +0 -2
- package/dist/client/sharing/ShareButton.spec.d.ts.map +0 -1
- package/dist/client/sharing/ShareButton.spec.js +0 -196
- package/dist/client/sharing/ShareButton.spec.js.map +0 -1
- package/dist/client/use-chat-models.spec.d.ts +0 -2
- package/dist/client/use-chat-models.spec.d.ts.map +0 -1
- package/dist/client/use-chat-models.spec.js +0 -39
- package/dist/client/use-chat-models.spec.js.map +0 -1
- package/dist/client/use-chat-threads.spec.d.ts +0 -2
- package/dist/client/use-chat-threads.spec.d.ts.map +0 -1
- package/dist/client/use-chat-threads.spec.js +0 -760
- package/dist/client/use-chat-threads.spec.js.map +0 -1
- package/dist/client/use-db-sync.spec.d.ts +0 -2
- package/dist/client/use-db-sync.spec.d.ts.map +0 -1
- package/dist/client/use-db-sync.spec.js +0 -107
- package/dist/client/use-db-sync.spec.js.map +0 -1
- package/dist/server/script-discovery.d.ts +0 -6
- package/dist/server/script-discovery.d.ts.map +0 -1
- package/dist/server/script-discovery.js +0 -6
- package/dist/server/script-discovery.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunsTray.js","sourceRoot":"","sources":["../../../src/client/progress/RunsTray.tsx"],"names":[],"mappings":"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","sourcesContent":["import { agentNativePath } from \"../api-path.js\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { IconLoader2, IconCheck, IconX, IconClock } from \"@tabler/icons-react\";\nimport { usePausingInterval } from \"../use-pausing-interval.js\";\nimport type { AgentRun, ProgressStatus } from \"../../progress/types.js\";\n\ntype AgentRunDto = AgentRun;\n\ninterface RunsTrayProps {\n /** Poll interval in ms. 0 disables. Default 3000. */\n pollMs?: number;\n /** Max runs to show in the dropdown. Default 5. */\n limit?: number;\n /** Hide the trigger entirely when no active runs. Default true. */\n hideWhenIdle?: boolean;\n className?: string;\n}\n\n/**\n * Header-bar progress indicator. Shows a spinner icon with a count badge\n * when runs are active; opens a dropdown with live progress bars for each.\n * Same inline-header pattern as <NotificationsBell /> — drop it into the\n * header, no floating overlay over the main content.\n */\nexport function RunsTray({\n pollMs = 3000,\n limit = 5,\n hideWhenIdle = true,\n className,\n}: RunsTrayProps) {\n const [runs, setRuns] = useState<AgentRunDto[]>([]);\n const [open, setOpen] = useState(false);\n const menuRef = useRef<HTMLDivElement | null>(null);\n\n const refresh = useCallback(async () => {\n try {\n const res = await fetch(\n agentNativePath(`/_agent-native/runs?active=true&limit=${limit}`),\n );\n if (!res.ok) return;\n const rows = (await res.json()) as AgentRunDto[];\n setRuns(rows);\n } catch {\n // best-effort\n }\n }, [limit]);\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n usePausingInterval(refresh, pollMs);\n\n const dismissRun = useCallback(\n async (runId: string) => {\n setRuns((current) => current.filter((run) => run.id !== runId));\n try {\n const res = await fetch(\n agentNativePath(`/_agent-native/runs/${runId}`),\n {\n method: \"DELETE\",\n headers: { \"X-Agent-Native-CSRF\": \"1\" },\n },\n );\n if (!res.ok) throw new Error(`Dismiss failed (${res.status})`);\n } catch {\n refresh();\n }\n },\n [refresh],\n );\n\n useEffect(() => {\n if (!open) return;\n const onDocClick = (e: MouseEvent) => {\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", onDocClick);\n return () => document.removeEventListener(\"mousedown\", onDocClick);\n }, [open]);\n\n // Close the dropdown when the last active run finishes.\n useEffect(() => {\n if (runs.length === 0 && open) setOpen(false);\n }, [runs.length, open]);\n\n const hasRuns = runs.length > 0;\n if (!hasRuns && hideWhenIdle) return null;\n\n return (\n <div\n ref={menuRef}\n className={\n \"an-runs-tray relative inline-flex\" + (className ? ` ${className}` : \"\")\n }\n >\n <button\n type=\"button\"\n aria-label={\n hasRuns\n ? `${runs.length} active run${runs.length > 1 ? \"s\" : \"\"}`\n : \"No active runs\"\n }\n aria-expanded={open}\n onClick={() => setOpen((v) => !v)}\n className=\"an-runs-tray__trigger relative inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground hover:bg-accent/40 hover:text-foreground\"\n >\n <IconLoader2\n size={18}\n className={hasRuns ? \"animate-spin text-primary\" : \"\"}\n aria-hidden\n />\n {hasRuns ? (\n <span\n aria-hidden\n className=\"an-runs-tray__badge absolute -right-0.5 -top-0.5 rounded-full bg-primary px-1 text-[10px] leading-[14px] font-medium text-primary-foreground\"\n >\n {runs.length > 9 ? \"9+\" : runs.length}\n </span>\n ) : null}\n </button>\n {open && hasRuns ? (\n <div\n role=\"menu\"\n className=\"an-runs-tray__menu absolute right-0 top-full z-50 mt-2 w-80 rounded-md border border-border bg-popover text-popover-foreground shadow-lg\"\n >\n <div className=\"border-b border-border px-3 py-2 text-sm font-medium\">\n {runs.length} active run{runs.length > 1 ? \"s\" : \"\"}\n </div>\n <div className=\"max-h-96 divide-y divide-border overflow-y-auto\">\n {runs.map((r) => (\n <RunRow key={r.id} run={r} onDismiss={dismissRun} />\n ))}\n </div>\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction RunRow({\n run,\n onDismiss,\n}: {\n run: AgentRunDto;\n onDismiss: (runId: string) => void;\n}) {\n return (\n <div className=\"flex flex-col gap-1 px-3 py-2 text-sm\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"truncate font-medium text-foreground\">\n {run.title}\n </span>\n <div className=\"flex shrink-0 items-center gap-1\">\n <StatusGlyph status={run.status} />\n <button\n type=\"button\"\n aria-label={`Dismiss ${run.title}`}\n className=\"inline-flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:bg-accent/60 hover:text-foreground\"\n onClick={() => onDismiss(run.id)}\n >\n <IconX size={13} aria-hidden />\n </button>\n </div>\n </div>\n {run.step ? (\n <span className=\"truncate text-xs text-muted-foreground\">\n {run.step}\n </span>\n ) : null}\n {run.percent != null ? (\n <div className=\"mt-0.5 h-1 w-full overflow-hidden rounded bg-muted\">\n <div\n className=\"h-full bg-primary transition-all\"\n style={{ width: `${run.percent}%` }}\n />\n </div>\n ) : (\n <div className=\"mt-0.5 h-1 w-full overflow-hidden rounded bg-muted\">\n <div className=\"h-full w-1/3 animate-pulse bg-primary/60\" />\n </div>\n )}\n </div>\n );\n}\n\n// dark: variants only where there's no semantic token for the colour\n// (e.g. success green isn't in shadcn's default palette).\nconst STATUS_GLYPHS: Record<\n ProgressStatus,\n { Icon: typeof IconLoader2; className: string }\n> = {\n running: { Icon: IconLoader2, className: \"text-primary\" },\n succeeded: {\n Icon: IconCheck,\n className: \"text-green-600 dark:text-green-400\",\n },\n failed: { Icon: IconX, className: \"text-destructive\" },\n cancelled: { Icon: IconClock, className: \"text-muted-foreground\" },\n};\n\nfunction StatusGlyph({ status }: { status: ProgressStatus }) {\n const { Icon, className } = STATUS_GLYPHS[status];\n const spinClass = status === \"running\" ? \" animate-spin\" : \"\";\n return <Icon size={14} className={`${className}${spinClass}`} aria-hidden />;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RunsTray.js","sourceRoot":"","sources":["../../../src/client/progress/RunsTray.tsx"],"names":[],"mappings":"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","sourcesContent":["import { agentNativePath } from \"../api-path.js\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { IconLoader2, IconCheck, IconX, IconClock } from \"@tabler/icons-react\";\nimport { usePausingInterval } from \"../use-pausing-interval.js\";\nimport type { AgentRun, ProgressStatus } from \"../../progress/types.js\";\n\ntype AgentRunDto = AgentRun;\n\ninterface RunsTrayProps {\n /** Poll interval in ms. 0 disables. Default 3000. */\n pollMs?: number;\n /** Max runs to show in the dropdown. Default 5. */\n limit?: number;\n /** Hide the trigger entirely when no active runs. Default true. */\n hideWhenIdle?: boolean;\n className?: string;\n}\n\n/**\n * Header-bar progress indicator. Shows a spinner icon with a count badge\n * when runs are active; opens a dropdown with live progress bars for each.\n * Same inline-header pattern as <NotificationsBell /> — drop it into the\n * header, no floating overlay over the main content.\n */\nexport function RunsTray({\n pollMs = 3000,\n limit = 5,\n hideWhenIdle = true,\n className,\n}: RunsTrayProps) {\n const [runs, setRuns] = useState<AgentRunDto[]>([]);\n const [open, setOpen] = useState(false);\n const menuRef = useRef<HTMLDivElement | null>(null);\n\n const refresh = useCallback(async () => {\n try {\n const res = await fetch(\n agentNativePath(`/_agent-native/runs?active=true&limit=${limit}`),\n );\n if (!res.ok) return;\n const rows = (await res.json()) as AgentRunDto[];\n setRuns(rows);\n } catch {\n // best-effort\n }\n }, [limit]);\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n usePausingInterval(refresh, pollMs);\n\n const dismissRun = useCallback(\n async (runId: string) => {\n setRuns((current) => current.filter((run) => run.id !== runId));\n try {\n const res = await fetch(\n agentNativePath(`/_agent-native/runs/${runId}`),\n {\n method: \"DELETE\",\n headers: { \"X-Agent-Native-CSRF\": \"1\" },\n },\n );\n if (!res.ok) throw new Error(`Dismiss failed (${res.status})`);\n } catch {\n refresh();\n }\n },\n [refresh],\n );\n\n useEffect(() => {\n if (!open) return;\n const onDocClick = (e: MouseEvent) => {\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", onDocClick);\n return () => document.removeEventListener(\"mousedown\", onDocClick);\n }, [open]);\n\n // Close the dropdown when the last active run finishes.\n useEffect(() => {\n if (runs.length === 0 && open) setOpen(false);\n }, [runs.length, open]);\n\n const hasRuns = runs.length > 0;\n if (!hasRuns && hideWhenIdle) return null;\n\n return (\n <div\n ref={menuRef}\n className={\n \"an-runs-tray relative inline-flex\" + (className ? ` ${className}` : \"\")\n }\n >\n <button\n type=\"button\"\n aria-label={\n hasRuns\n ? `${runs.length} active run${runs.length > 1 ? \"s\" : \"\"}`\n : \"No active runs\"\n }\n aria-expanded={open}\n onClick={() => setOpen((v) => !v)}\n className=\"an-runs-tray__trigger relative inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground hover:bg-accent/40 hover:text-foreground\"\n >\n <IconLoader2\n size={18}\n className={hasRuns ? \"animate-spin text-primary\" : \"\"}\n aria-hidden\n />\n {hasRuns ? (\n <span\n aria-hidden\n className=\"an-runs-tray__badge absolute -right-0.5 -top-0.5 rounded-full bg-primary px-1 text-[10px] leading-[14px] font-medium text-primary-foreground\"\n >\n {runs.length > 9 ? \"9+\" : runs.length}\n </span>\n ) : null}\n </button>\n {open && hasRuns ? (\n <div\n role=\"menu\"\n className=\"an-runs-tray__menu absolute right-0 top-full z-50 mt-2 w-80 rounded-md border border-border bg-popover text-popover-foreground shadow-lg\"\n >\n <div className=\"border-b border-border px-3 py-2 text-sm font-medium\">\n {runs.length} active run{runs.length > 1 ? \"s\" : \"\"}\n </div>\n <div className=\"max-h-96 divide-y divide-border overflow-y-auto\">\n {runs.map((r) => (\n <RunRow key={r.id} run={r} onDismiss={dismissRun} />\n ))}\n </div>\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction RunRow({\n run,\n onDismiss,\n}: {\n run: AgentRunDto;\n onDismiss: (runId: string) => void;\n}) {\n return (\n <div className=\"flex flex-col gap-1 px-3 py-2 text-sm\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"truncate font-medium text-foreground\">\n {run.title}\n </span>\n <div className=\"flex shrink-0 items-center gap-1\">\n <StatusGlyph status={run.status} />\n <button\n type=\"button\"\n aria-label={`Dismiss ${run.title}`}\n className=\"inline-flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:bg-accent/60 hover:text-foreground\"\n onClick={() => onDismiss(run.id)}\n >\n <IconX size={13} aria-hidden />\n </button>\n </div>\n </div>\n {run.step ? (\n <span className=\"truncate text-xs text-muted-foreground\">\n {run.step}\n </span>\n ) : null}\n {run.percent != null ? (\n <div className=\"mt-0.5 h-1 w-full overflow-hidden rounded bg-muted\">\n <div\n className=\"h-full bg-primary transition-all\"\n style={{ width: `${run.percent}%` }}\n />\n </div>\n ) : (\n <div className=\"mt-0.5 h-1 w-full overflow-hidden rounded bg-muted\">\n <div className=\"h-full w-1/3 animate-pulse bg-primary/60\" />\n </div>\n )}\n </div>\n );\n}\n\n// dark: variants only where there's no semantic token for the colour\n// (e.g. success green isn't in shadcn's default palette).\nconst STATUS_GLYPHS: Record<\n ProgressStatus,\n { Icon: typeof IconLoader2; className: string }\n> = {\n running: { Icon: IconLoader2, className: \"text-primary\" },\n succeeded: {\n Icon: IconCheck,\n className: \"text-green-600 dark:text-green-400\",\n },\n failed: { Icon: IconX, className: \"text-destructive\" },\n cancelled: { Icon: IconClock, className: \"text-muted-foreground\" },\n};\n\nfunction StatusGlyph({ status }: { status: ProgressStatus }) {\n const { Icon, className } = STATUS_GLYPHS[status];\n const spinClass = status === \"running\" ? \" animate-spin\" : \"\";\n return <Icon size={14} className={`${className}${spinClass}`} aria-hidden />;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpServerDetail.d.ts","sourceRoot":"","sources":["../../../src/client/resources/McpServerDetail.tsx"],"names":[],"mappings":"AAmBA,OAAO,
|
|
1
|
+
{"version":3,"file":"McpServerDetail.d.ts","sourceRoot":"","sources":["../../../src/client/resources/McpServerDetail.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAAE,KAAK,SAAS,EAAyB,MAAM,sBAAsB,CAAC;AAE7E,UAAU,oBAAoB;IAC5B,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CAwH/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpServerDetail.js","sourceRoot":"","sources":["../../../src/client/resources/McpServerDetail.tsx"],"names":[],"mappings":"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","sourcesContent":["import { agentNativePath } from \"../api-path.js\";\n/**\n * Detail view for a virtual MCP server entry in the Workspace tree.\n *\n * Shown when the user clicks an `mcp-servers/<name>.json` entry. Servers\n * aren't editable in-place — today the server endpoints only support\n * create + delete, matching the Settings UX they replaced. Users can\n * delete and recreate if they need to change a URL or headers.\n */\n\nimport React, { useState } from \"react\";\nimport {\n IconPlugConnected,\n IconAlertTriangle,\n IconLoader2,\n IconCheck,\n IconTestPipe,\n} from \"@tabler/icons-react\";\nimport { cn } from \"../utils.js\";\nimport {\n testMcpServerUrl,\n type McpServer,\n type TestMcpUrlResult,\n} from \"./use-mcp-servers.js\";\n\ninterface McpServerDetailProps {\n server: McpServer;\n}\n\nexport function McpServerDetail({ server }: McpServerDetailProps) {\n const [testing, setTesting] = useState(false);\n const [testResult, setTestResult] = useState<TestMcpUrlResult | null>(null);\n\n const headers = server.headers ? Object.keys(server.headers) : [];\n\n const runTest = async () => {\n setTesting(true);\n setTestResult(null);\n try {\n // We don't have the real header values client-side (redacted). The\n // test-existing endpoint uses the stored headers, but there's no\n // convenient way to hit it from here without the server id + scope,\n // which we do have — so wire that up.\n const res = await fetch(\n agentNativePath(\n `/_agent-native/mcp/servers/${encodeURIComponent(server.id)}/test?scope=${server.scope}`,\n ),\n {\n method: \"POST\",\n credentials: \"include\",\n headers: { \"Content-Type\": \"application/json\" },\n },\n );\n const body = (await res.json().catch(() => ({}))) as TestMcpUrlResult;\n setTestResult(body.ok ? body : { ok: false, error: body.error });\n } catch (err: any) {\n setTestResult({ ok: false, error: err?.message ?? String(err) });\n } finally {\n setTesting(false);\n }\n };\n\n return (\n <div className=\"flex h-full flex-col overflow-y-auto\">\n <div className=\"px-4 py-4\">\n <div className=\"mb-3 flex items-center gap-2\">\n <IconPlugConnected className=\"h-4 w-4 text-muted-foreground\" />\n <h2 className=\"text-[14px] font-medium text-foreground\">\n {server.name}\n </h2>\n <StatusBadge server={server} />\n </div>\n\n {server.description && (\n <p className=\"mb-4 text-[12px] leading-relaxed text-muted-foreground\">\n {server.description}\n </p>\n )}\n\n <dl className=\"space-y-3\">\n <Field label=\"Scope\">\n <div className=\"space-y-0.5\">\n <span className=\"text-[12px] text-foreground\">\n {server.scope === \"user\" ? \"Personal\" : \"Organization\"}\n </span>\n <p className=\"text-[11px] leading-relaxed text-muted-foreground\">\n {server.scope === \"user\"\n ? \"Only available to you. Best for private or staging connections.\"\n : \"Shared with the active organization. Best for vetted team connections.\"}\n </p>\n </div>\n </Field>\n\n <Field label=\"URL\">\n <code className=\"rounded bg-muted px-1.5 py-0.5 text-[11px] text-foreground break-all\">\n {server.url}\n </code>\n </Field>\n\n {headers.length > 0 && (\n <Field label=\"Headers\">\n <ul className=\"space-y-1\">\n {headers.map((k) => (\n <li\n key={k}\n className=\"flex items-center gap-2 text-[11px] text-muted-foreground\"\n >\n <code className=\"rounded bg-muted px-1.5 py-0.5 text-foreground\">\n {k}\n </code>\n <span className=\"italic\">(hidden)</span>\n </li>\n ))}\n </ul>\n </Field>\n )}\n\n <Field label=\"Tools\">\n <ToolsSummary server={server} />\n </Field>\n </dl>\n\n <div className=\"mt-5 flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={runTest}\n disabled={testing}\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-md border border-border bg-background px-2.5 py-1 text-[11px] font-medium text-foreground hover:bg-accent\",\n testing && \"opacity-60\",\n )}\n >\n {testing ? (\n <IconLoader2 className=\"h-3 w-3 animate-spin\" />\n ) : (\n <IconTestPipe className=\"h-3 w-3\" />\n )}\n Test connection\n </button>\n {testResult && <TestResultLine result={testResult} />}\n </div>\n\n <p className=\"mt-6 rounded-md border border-border bg-muted/40 p-2.5 text-[11px] leading-relaxed text-muted-foreground\">\n To change the URL, headers, or description, delete this entry and add\n a new server. Edits in place aren't supported yet.\n </p>\n </div>\n </div>\n );\n}\n\nfunction Field({\n label,\n children,\n}: {\n label: string;\n children: React.ReactNode;\n}) {\n return (\n <div>\n <dt className=\"mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground/70\">\n {label}\n </dt>\n <dd>{children}</dd>\n </div>\n );\n}\n\nfunction StatusBadge({ server }: { server: McpServer }) {\n if (server.status.state === \"connected\") {\n return (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-green-500/10 px-2 py-0.5 text-[10px] font-medium text-green-600 dark:text-green-400\">\n <span className=\"h-1.5 w-1.5 rounded-full bg-green-500\" />\n Connected\n </span>\n );\n }\n if (server.status.state === \"error\") {\n return (\n <span\n className=\"inline-flex items-center gap-1 rounded-full bg-red-500/10 px-2 py-0.5 text-[10px] font-medium text-red-600 dark:text-red-400\"\n title={server.status.error}\n >\n <IconAlertTriangle className=\"h-2.5 w-2.5\" />\n Error\n </span>\n );\n }\n return (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground\">\n <span className=\"h-1.5 w-1.5 rounded-full bg-muted-foreground/50\" />\n Connecting…\n </span>\n );\n}\n\nfunction ToolsSummary({ server }: { server: McpServer }) {\n if (server.status.state === \"connected\") {\n return (\n <span className=\"text-[12px] text-foreground\">\n {server.status.toolCount} tool\n {server.status.toolCount === 1 ? \"\" : \"s\"} exposed\n </span>\n );\n }\n if (server.status.state === \"error\") {\n return (\n <span className=\"text-[12px] text-red-600 dark:text-red-400\">\n {server.status.error}\n </span>\n );\n }\n return (\n <span className=\"text-[12px] text-muted-foreground\">\n Not connected yet — try the Test button.\n </span>\n );\n}\n\nfunction TestResultLine({ result }: { result: TestMcpUrlResult }) {\n if (result.ok) {\n return (\n <span className=\"inline-flex items-center gap-1 text-[11px] text-green-600 dark:text-green-400\">\n <IconCheck className=\"h-3 w-3\" />\n {result.toolCount} tool{result.toolCount === 1 ? \"\" : \"s\"} available\n </span>\n );\n }\n return (\n <span className=\"text-[11px] text-red-600 dark:text-red-400\">\n {result.error ?? \"Failed\"}\n </span>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"McpServerDetail.js","sourceRoot":"","sources":["../../../src/client/resources/McpServerDetail.tsx"],"names":[],"mappings":"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","sourcesContent":["import { agentNativePath } from \"../api-path.js\";\n/**\n * Detail view for a virtual MCP server entry in the Workspace tree.\n *\n * Shown when the user clicks an `mcp-servers/<name>.json` entry. Servers\n * aren't editable in-place — today the server endpoints only support\n * create + delete, matching the Settings UX they replaced. Users can\n * delete and recreate if they need to change a URL or headers.\n */\n\nimport React, { useState } from \"react\";\nimport {\n IconPlugConnected,\n IconAlertTriangle,\n IconLoader2,\n IconCheck,\n IconTestPipe,\n} from \"@tabler/icons-react\";\nimport { cn } from \"../utils.js\";\nimport { type McpServer, type TestMcpUrlResult } from \"./use-mcp-servers.js\";\n\ninterface McpServerDetailProps {\n server: McpServer;\n}\n\nexport function McpServerDetail({ server }: McpServerDetailProps) {\n const [testing, setTesting] = useState(false);\n const [testResult, setTestResult] = useState<TestMcpUrlResult | null>(null);\n\n const headers = server.headers ? Object.keys(server.headers) : [];\n\n const runTest = async () => {\n setTesting(true);\n setTestResult(null);\n try {\n // We don't have the real header values client-side (redacted). The\n // test-existing endpoint uses the stored headers, but there's no\n // convenient way to hit it from here without the server id + scope,\n // which we do have — so wire that up.\n const res = await fetch(\n agentNativePath(\n `/_agent-native/mcp/servers/${encodeURIComponent(server.id)}/test?scope=${server.scope}`,\n ),\n {\n method: \"POST\",\n credentials: \"include\",\n headers: { \"Content-Type\": \"application/json\" },\n },\n );\n const body = (await res.json().catch(() => ({}))) as TestMcpUrlResult;\n setTestResult(body.ok ? body : { ok: false, error: body.error });\n } catch (err: any) {\n setTestResult({ ok: false, error: err?.message ?? String(err) });\n } finally {\n setTesting(false);\n }\n };\n\n return (\n <div className=\"flex h-full flex-col overflow-y-auto\">\n <div className=\"px-4 py-4\">\n <div className=\"mb-3 flex items-center gap-2\">\n <IconPlugConnected className=\"h-4 w-4 text-muted-foreground\" />\n <h2 className=\"text-[14px] font-medium text-foreground\">\n {server.name}\n </h2>\n <StatusBadge server={server} />\n </div>\n\n {server.description && (\n <p className=\"mb-4 text-[12px] leading-relaxed text-muted-foreground\">\n {server.description}\n </p>\n )}\n\n <dl className=\"space-y-3\">\n <Field label=\"Scope\">\n <div className=\"space-y-0.5\">\n <span className=\"text-[12px] text-foreground\">\n {server.scope === \"user\" ? \"Personal\" : \"Organization\"}\n </span>\n <p className=\"text-[11px] leading-relaxed text-muted-foreground\">\n {server.scope === \"user\"\n ? \"Only available to you. Best for private or staging connections.\"\n : \"Shared with the active organization. Best for vetted team connections.\"}\n </p>\n </div>\n </Field>\n\n <Field label=\"URL\">\n <code className=\"rounded bg-muted px-1.5 py-0.5 text-[11px] text-foreground break-all\">\n {server.url}\n </code>\n </Field>\n\n {headers.length > 0 && (\n <Field label=\"Headers\">\n <ul className=\"space-y-1\">\n {headers.map((k) => (\n <li\n key={k}\n className=\"flex items-center gap-2 text-[11px] text-muted-foreground\"\n >\n <code className=\"rounded bg-muted px-1.5 py-0.5 text-foreground\">\n {k}\n </code>\n <span className=\"italic\">(hidden)</span>\n </li>\n ))}\n </ul>\n </Field>\n )}\n\n <Field label=\"Tools\">\n <ToolsSummary server={server} />\n </Field>\n </dl>\n\n <div className=\"mt-5 flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={runTest}\n disabled={testing}\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-md border border-border bg-background px-2.5 py-1 text-[11px] font-medium text-foreground hover:bg-accent\",\n testing && \"opacity-60\",\n )}\n >\n {testing ? (\n <IconLoader2 className=\"h-3 w-3 animate-spin\" />\n ) : (\n <IconTestPipe className=\"h-3 w-3\" />\n )}\n Test connection\n </button>\n {testResult && <TestResultLine result={testResult} />}\n </div>\n\n <p className=\"mt-6 rounded-md border border-border bg-muted/40 p-2.5 text-[11px] leading-relaxed text-muted-foreground\">\n To change the URL, headers, or description, delete this entry and add\n a new server. Edits in place aren't supported yet.\n </p>\n </div>\n </div>\n );\n}\n\nfunction Field({\n label,\n children,\n}: {\n label: string;\n children: React.ReactNode;\n}) {\n return (\n <div>\n <dt className=\"mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground/70\">\n {label}\n </dt>\n <dd>{children}</dd>\n </div>\n );\n}\n\nfunction StatusBadge({ server }: { server: McpServer }) {\n if (server.status.state === \"connected\") {\n return (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-green-500/10 px-2 py-0.5 text-[10px] font-medium text-green-600 dark:text-green-400\">\n <span className=\"h-1.5 w-1.5 rounded-full bg-green-500\" />\n Connected\n </span>\n );\n }\n if (server.status.state === \"error\") {\n return (\n <span\n className=\"inline-flex items-center gap-1 rounded-full bg-red-500/10 px-2 py-0.5 text-[10px] font-medium text-red-600 dark:text-red-400\"\n title={server.status.error}\n >\n <IconAlertTriangle className=\"h-2.5 w-2.5\" />\n Error\n </span>\n );\n }\n return (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground\">\n <span className=\"h-1.5 w-1.5 rounded-full bg-muted-foreground/50\" />\n Connecting…\n </span>\n );\n}\n\nfunction ToolsSummary({ server }: { server: McpServer }) {\n if (server.status.state === \"connected\") {\n return (\n <span className=\"text-[12px] text-foreground\">\n {server.status.toolCount} tool\n {server.status.toolCount === 1 ? \"\" : \"s\"} exposed\n </span>\n );\n }\n if (server.status.state === \"error\") {\n return (\n <span className=\"text-[12px] text-red-600 dark:text-red-400\">\n {server.status.error}\n </span>\n );\n }\n return (\n <span className=\"text-[12px] text-muted-foreground\">\n Not connected yet — try the Test button.\n </span>\n );\n}\n\nfunction TestResultLine({ result }: { result: TestMcpUrlResult }) {\n if (result.ok) {\n return (\n <span className=\"inline-flex items-center gap-1 text-[11px] text-green-600 dark:text-green-400\">\n <IconCheck className=\"h-3 w-3\" />\n {result.toolCount} tool{result.toolCount === 1 ? \"\" : \"s\"} available\n </span>\n );\n }\n return (\n <span className=\"text-[11px] text-red-600 dark:text-red-400\">\n {result.error ?? \"Failed\"}\n </span>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourcesPanel.d.ts","sourceRoot":"","sources":["../../../src/client/resources/ResourcesPanel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ResourcesPanel.d.ts","sourceRoot":"","sources":["../../../src/client/resources/ResourcesPanel.tsx"],"names":[],"mappings":"AAosCA,wBAAgB,cAAc,4CA+uB7B"}
|
|
@@ -559,7 +559,6 @@ Workspace resources are for files users intentionally add, edit, or manage. Agen
|
|
|
559
559
|
`;
|
|
560
560
|
const WORKSPACE_RESOURCE_OWNER = "__workspace__";
|
|
561
561
|
const SHARED_RESOURCE_OWNER = "__shared__";
|
|
562
|
-
// BuilderBrowserCard moved to settings/BrowserSection.tsx
|
|
563
562
|
export function ResourcesPanel() {
|
|
564
563
|
const { data: org } = useOrg();
|
|
565
564
|
// Non-admin org members get read-only access to organization resources.
|