@agent-native/core 0.15.12 → 0.16.0
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/README.md +37 -0
- package/dist/agent/app-model-defaults.d.ts +37 -0
- package/dist/agent/app-model-defaults.d.ts.map +1 -0
- package/dist/agent/app-model-defaults.js +136 -0
- package/dist/agent/app-model-defaults.js.map +1 -0
- package/dist/agent/engine/registry.d.ts +12 -7
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js +28 -8
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/agent/production-agent.d.ts +2 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +3 -1
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/browser-sessions/actions.d.ts +7 -0
- package/dist/browser-sessions/actions.d.ts.map +1 -0
- package/dist/browser-sessions/actions.js +223 -0
- package/dist/browser-sessions/actions.js.map +1 -0
- package/dist/browser-sessions/routes.d.ts +7 -0
- package/dist/browser-sessions/routes.d.ts.map +1 -0
- package/dist/browser-sessions/routes.js +159 -0
- package/dist/browser-sessions/routes.js.map +1 -0
- package/dist/browser-sessions/store.d.ts +33 -0
- package/dist/browser-sessions/store.d.ts.map +1 -0
- package/dist/browser-sessions/store.js +506 -0
- package/dist/browser-sessions/store.js.map +1 -0
- package/dist/browser-sessions/types.d.ts +68 -0
- package/dist/browser-sessions/types.d.ts.map +1 -0
- package/dist/browser-sessions/types.js +2 -0
- package/dist/browser-sessions/types.js.map +1 -0
- package/dist/cli/code-agent-commands.d.ts +36 -0
- package/dist/cli/code-agent-commands.d.ts.map +1 -0
- package/dist/cli/code-agent-commands.js +192 -0
- package/dist/cli/code-agent-commands.js.map +1 -0
- package/dist/cli/code-agent-connector.d.ts +17 -0
- package/dist/cli/code-agent-connector.d.ts.map +1 -0
- package/dist/cli/code-agent-connector.js +724 -0
- package/dist/cli/code-agent-connector.js.map +1 -0
- package/dist/cli/code-agent-executor.d.ts +31 -0
- package/dist/cli/code-agent-executor.d.ts.map +1 -0
- package/dist/cli/code-agent-executor.js +921 -0
- package/dist/cli/code-agent-executor.js.map +1 -0
- package/dist/cli/code-agent-runs.d.ts +102 -0
- package/dist/cli/code-agent-runs.d.ts.map +1 -0
- package/dist/cli/code-agent-runs.js +277 -0
- package/dist/cli/code-agent-runs.js.map +1 -0
- package/dist/cli/code.d.ts +66 -0
- package/dist/cli/code.d.ts.map +1 -0
- package/dist/cli/code.js +1306 -0
- package/dist/cli/code.js.map +1 -0
- package/dist/cli/create.d.ts +2 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +11 -1
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/index.js +26 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/migrate.d.ts +27 -0
- package/dist/cli/migrate.d.ts.map +1 -1
- package/dist/cli/migrate.js +1328 -20
- package/dist/cli/migrate.js.map +1 -1
- package/dist/cli/templates-meta.d.ts.map +1 -1
- package/dist/cli/templates-meta.js +27 -3
- package/dist/cli/templates-meta.js.map +1 -1
- package/dist/cli/workspacify.d.ts +2 -0
- package/dist/cli/workspacify.d.ts.map +1 -1
- package/dist/cli/workspacify.js +2 -1
- package/dist/cli/workspacify.js.map +1 -1
- package/dist/client/AgentNative.d.ts +32 -0
- package/dist/client/AgentNative.d.ts.map +1 -0
- package/dist/client/AgentNative.js +79 -0
- package/dist/client/AgentNative.js.map +1 -0
- package/dist/client/AgentNativeEmbedded.d.ts +47 -0
- package/dist/client/AgentNativeEmbedded.d.ts.map +1 -0
- package/dist/client/AgentNativeEmbedded.js +148 -0
- package/dist/client/AgentNativeEmbedded.js.map +1 -0
- package/dist/client/AgentNativeFrame.d.ts +25 -0
- package/dist/client/AgentNativeFrame.d.ts.map +1 -0
- package/dist/client/AgentNativeFrame.js +68 -0
- package/dist/client/AgentNativeFrame.js.map +1 -0
- package/dist/client/AgentPanel.d.ts +19 -2
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +15 -4
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +79 -48
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +2 -1
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/NewWorkspaceAppFlow.d.ts.map +1 -1
- package/dist/client/NewWorkspaceAppFlow.js +3 -2
- package/dist/client/NewWorkspaceAppFlow.js.map +1 -1
- package/dist/client/browser-session-bridge.d.ts +44 -0
- package/dist/client/browser-session-bridge.d.ts.map +1 -0
- package/dist/client/browser-session-bridge.js +339 -0
- package/dist/client/browser-session-bridge.js.map +1 -0
- package/dist/client/client-action.d.ts +7 -0
- package/dist/client/client-action.d.ts.map +1 -0
- package/dist/client/client-action.js +4 -0
- package/dist/client/client-action.js.map +1 -0
- package/dist/client/components/ui/tooltip.d.ts.map +1 -1
- package/dist/client/components/ui/tooltip.js +1 -1
- package/dist/client/components/ui/tooltip.js.map +1 -1
- package/dist/client/composer/AgentComposerFrame.d.ts +17 -0
- package/dist/client/composer/AgentComposerFrame.d.ts.map +1 -0
- package/dist/client/composer/AgentComposerFrame.js +14 -0
- package/dist/client/composer/AgentComposerFrame.js.map +1 -0
- package/dist/client/composer/MentionPopover.d.ts.map +1 -1
- package/dist/client/composer/MentionPopover.js +2 -2
- package/dist/client/composer/MentionPopover.js.map +1 -1
- package/dist/client/composer/PromptComposer.d.ts +35 -2
- package/dist/client/composer/PromptComposer.d.ts.map +1 -1
- package/dist/client/composer/PromptComposer.js +31 -17
- package/dist/client/composer/PromptComposer.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts +20 -2
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +112 -22
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/composer/index.d.ts +3 -2
- package/dist/client/composer/index.d.ts.map +1 -1
- package/dist/client/composer/index.js +1 -0
- package/dist/client/composer/index.js.map +1 -1
- package/dist/client/composer/types.d.ts +1 -0
- package/dist/client/composer/types.d.ts.map +1 -1
- package/dist/client/composer/types.js.map +1 -1
- package/dist/client/extensions/AgentNativeExtensionFrame.d.ts +58 -0
- package/dist/client/extensions/AgentNativeExtensionFrame.d.ts.map +1 -0
- package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.d.ts +2 -0
- package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.d.ts.map +1 -0
- package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.js +110 -0
- package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.js.map +1 -0
- package/dist/client/extensions/AgentNativeExtensionFrame.js +354 -0
- package/dist/client/extensions/AgentNativeExtensionFrame.js.map +1 -0
- package/dist/client/extensions/AgentNativeExtensionFrame.spec.d.ts +2 -0
- package/dist/client/extensions/AgentNativeExtensionFrame.spec.d.ts.map +1 -0
- package/dist/client/extensions/AgentNativeExtensionFrame.spec.js +68 -0
- package/dist/client/extensions/AgentNativeExtensionFrame.spec.js.map +1 -0
- package/dist/client/extensions/agent-native-extension-runtime.d.ts +69 -0
- package/dist/client/extensions/agent-native-extension-runtime.d.ts.map +1 -0
- package/dist/client/extensions/agent-native-extension-runtime.js +348 -0
- package/dist/client/extensions/agent-native-extension-runtime.js.map +1 -0
- package/dist/client/extensions/index.d.ts +2 -0
- package/dist/client/extensions/index.d.ts.map +1 -1
- package/dist/client/extensions/index.js +2 -0
- package/dist/client/extensions/index.js.map +1 -1
- package/dist/client/extensions/portable-extension.d.ts +86 -0
- package/dist/client/extensions/portable-extension.d.ts.map +1 -0
- package/dist/client/extensions/portable-extension.js +480 -0
- package/dist/client/extensions/portable-extension.js.map +1 -0
- package/dist/client/host-bridge.d.ts +266 -0
- package/dist/client/host-bridge.d.ts.map +1 -0
- package/dist/client/host-bridge.js +745 -0
- package/dist/client/host-bridge.js.map +1 -0
- package/dist/client/host-tools.d.ts +40 -0
- package/dist/client/host-tools.d.ts.map +1 -0
- package/dist/client/host-tools.js +94 -0
- package/dist/client/host-tools.js.map +1 -0
- package/dist/client/index.d.ts +13 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +11 -2
- package/dist/client/index.js.map +1 -1
- package/dist/client/resources/BuiltinCapabilityDetail.d.ts +10 -0
- package/dist/client/resources/BuiltinCapabilityDetail.d.ts.map +1 -0
- package/dist/client/resources/BuiltinCapabilityDetail.js +51 -0
- package/dist/client/resources/BuiltinCapabilityDetail.js.map +1 -0
- package/dist/client/resources/ResourceEditor.d.ts +3 -1
- package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
- package/dist/client/resources/ResourceEditor.js +40 -17
- package/dist/client/resources/ResourceEditor.js.map +1 -1
- package/dist/client/resources/ResourceTree.d.ts.map +1 -1
- package/dist/client/resources/ResourceTree.js +23 -2
- package/dist/client/resources/ResourceTree.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +77 -17
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/resources/index.d.ts +1 -0
- package/dist/client/resources/index.d.ts.map +1 -1
- package/dist/client/resources/index.js +1 -0
- package/dist/client/resources/index.js.map +1 -1
- package/dist/client/resources/use-builtin-capabilities.d.ts +62 -0
- package/dist/client/resources/use-builtin-capabilities.d.ts.map +1 -0
- package/dist/client/resources/use-builtin-capabilities.js +54 -0
- package/dist/client/resources/use-builtin-capabilities.js.map +1 -0
- package/dist/client/resources/use-resources.d.ts +30 -2
- package/dist/client/resources/use-resources.d.ts.map +1 -1
- package/dist/client/resources/use-resources.js +42 -1
- package/dist/client/resources/use-resources.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +151 -2
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/use-chat-models.d.ts.map +1 -1
- package/dist/client/use-chat-models.js +20 -0
- package/dist/client/use-chat-models.js.map +1 -1
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js +46 -2
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/client/use-chat-threads.spec.js +77 -0
- package/dist/client/use-chat-threads.spec.js.map +1 -1
- package/dist/code-agents/index.d.ts +4 -0
- package/dist/code-agents/index.d.ts.map +1 -0
- package/dist/code-agents/index.js +4 -0
- package/dist/code-agents/index.js.map +1 -0
- package/dist/connections/catalog.d.ts +134 -0
- package/dist/connections/catalog.d.ts.map +1 -0
- package/dist/connections/catalog.js +180 -0
- package/dist/connections/catalog.js.map +1 -0
- package/dist/connections/index.d.ts +2 -0
- package/dist/connections/index.d.ts.map +1 -0
- package/dist/connections/index.js +2 -0
- package/dist/connections/index.js.map +1 -0
- package/dist/extensions/change-marker.d.ts +10 -0
- package/dist/extensions/change-marker.d.ts.map +1 -0
- package/dist/extensions/change-marker.js +42 -0
- package/dist/extensions/change-marker.js.map +1 -0
- package/dist/extensions/routes.d.ts.map +1 -1
- package/dist/extensions/routes.js +1 -7
- package/dist/extensions/routes.js.map +1 -1
- package/dist/extensions/schema.d.ts +1 -0
- package/dist/extensions/schema.d.ts.map +1 -1
- package/dist/extensions/schema.js +1 -0
- package/dist/extensions/schema.js.map +1 -1
- package/dist/extensions/slots/routes.js +1 -1
- package/dist/extensions/slots/routes.js.map +1 -1
- package/dist/extensions/store.d.ts +3 -0
- package/dist/extensions/store.d.ts.map +1 -1
- package/dist/extensions/store.js +112 -4
- package/dist/extensions/store.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/adapters/telegram.d.ts.map +1 -1
- package/dist/integrations/adapters/telegram.js +1 -0
- package/dist/integrations/adapters/telegram.js.map +1 -1
- package/dist/integrations/index.d.ts +5 -1
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/index.js +4 -1
- package/dist/integrations/index.js.map +1 -1
- package/dist/integrations/plugin.d.ts +8 -0
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +760 -32
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/integrations/remote-commands-store.d.ts +36 -0
- package/dist/integrations/remote-commands-store.d.ts.map +1 -0
- package/dist/integrations/remote-commands-store.js +273 -0
- package/dist/integrations/remote-commands-store.js.map +1 -0
- package/dist/integrations/remote-devices-store.d.ts +43 -0
- package/dist/integrations/remote-devices-store.d.ts.map +1 -0
- package/dist/integrations/remote-devices-store.js +315 -0
- package/dist/integrations/remote-devices-store.js.map +1 -0
- package/dist/integrations/remote-push-store.d.ts +37 -0
- package/dist/integrations/remote-push-store.d.ts.map +1 -0
- package/dist/integrations/remote-push-store.js +299 -0
- package/dist/integrations/remote-push-store.js.map +1 -0
- package/dist/integrations/remote-retry-job.d.ts +7 -0
- package/dist/integrations/remote-retry-job.d.ts.map +1 -0
- package/dist/integrations/remote-retry-job.js +45 -0
- package/dist/integrations/remote-retry-job.js.map +1 -0
- package/dist/integrations/remote-run-events-store.d.ts +18 -0
- package/dist/integrations/remote-run-events-store.d.ts.map +1 -0
- package/dist/integrations/remote-run-events-store.js +82 -0
- package/dist/integrations/remote-run-events-store.js.map +1 -0
- package/dist/integrations/remote-types.d.ts +101 -0
- package/dist/integrations/remote-types.d.ts.map +1 -0
- package/dist/integrations/remote-types.js +2 -0
- package/dist/integrations/remote-types.js.map +1 -0
- package/dist/integrations/webhook-handler.d.ts +2 -0
- package/dist/integrations/webhook-handler.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.js +4 -1
- package/dist/integrations/webhook-handler.js.map +1 -1
- package/dist/jobs/scheduler.d.ts +4 -2
- package/dist/jobs/scheduler.d.ts.map +1 -1
- package/dist/jobs/scheduler.js +9 -3
- package/dist/jobs/scheduler.js.map +1 -1
- package/dist/mcp-client/builtin-capabilities.d.ts +20 -0
- package/dist/mcp-client/builtin-capabilities.d.ts.map +1 -0
- package/dist/mcp-client/builtin-capabilities.js +75 -0
- package/dist/mcp-client/builtin-capabilities.js.map +1 -0
- package/dist/mcp-client/builtin-store.d.ts +10 -0
- package/dist/mcp-client/builtin-store.d.ts.map +1 -0
- package/dist/mcp-client/builtin-store.js +55 -0
- package/dist/mcp-client/builtin-store.js.map +1 -0
- package/dist/mcp-client/index.d.ts +3 -1
- package/dist/mcp-client/index.d.ts.map +1 -1
- package/dist/mcp-client/index.js +3 -1
- package/dist/mcp-client/index.js.map +1 -1
- package/dist/mcp-client/routes.d.ts +28 -0
- package/dist/mcp-client/routes.d.ts.map +1 -1
- package/dist/mcp-client/routes.js +195 -1
- package/dist/mcp-client/routes.js.map +1 -1
- package/dist/org/context.d.ts.map +1 -1
- package/dist/org/context.js +34 -0
- package/dist/org/context.js.map +1 -1
- package/dist/resources/handlers.d.ts +4 -0
- package/dist/resources/handlers.d.ts.map +1 -1
- package/dist/resources/handlers.js +46 -7
- package/dist/resources/handlers.js.map +1 -1
- package/dist/resources/script-helpers.d.ts +8 -1
- package/dist/resources/script-helpers.d.ts.map +1 -1
- package/dist/resources/script-helpers.js +18 -8
- package/dist/resources/script-helpers.js.map +1 -1
- package/dist/resources/store.d.ts +19 -0
- package/dist/resources/store.d.ts.map +1 -1
- package/dist/resources/store.js +86 -3
- package/dist/resources/store.js.map +1 -1
- package/dist/scripts/agent-engines/list-agent-engines.d.ts +1 -1
- package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -1
- package/dist/scripts/agent-engines/list-agent-engines.js +18 -7
- package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
- package/dist/scripts/agent-engines/manage-agent-engine.d.ts.map +1 -1
- package/dist/scripts/agent-engines/manage-agent-engine.js +100 -7
- package/dist/scripts/agent-engines/manage-agent-engine.js.map +1 -1
- package/dist/scripts/resources/delete.d.ts.map +1 -1
- package/dist/scripts/resources/delete.js +4 -1
- package/dist/scripts/resources/delete.js.map +1 -1
- package/dist/scripts/resources/effective.d.ts +11 -0
- package/dist/scripts/resources/effective.d.ts.map +1 -0
- package/dist/scripts/resources/effective.js +54 -0
- package/dist/scripts/resources/effective.js.map +1 -0
- package/dist/scripts/resources/index.d.ts.map +1 -1
- package/dist/scripts/resources/index.js +1 -0
- package/dist/scripts/resources/index.js.map +1 -1
- package/dist/scripts/resources/list.d.ts +1 -1
- package/dist/scripts/resources/list.d.ts.map +1 -1
- package/dist/scripts/resources/list.js +17 -5
- package/dist/scripts/resources/list.js.map +1 -1
- package/dist/scripts/resources/read.d.ts +1 -1
- package/dist/scripts/resources/read.d.ts.map +1 -1
- package/dist/scripts/resources/read.js +20 -5
- package/dist/scripts/resources/read.js.map +1 -1
- package/dist/scripts/resources/write.d.ts.map +1 -1
- package/dist/scripts/resources/write.js +4 -1
- package/dist/scripts/resources/write.js.map +1 -1
- package/dist/scripts/runner.d.ts +11 -1
- package/dist/scripts/runner.d.ts.map +1 -1
- package/dist/scripts/runner.js +75 -27
- package/dist/scripts/runner.js.map +1 -1
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +5 -0
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +24 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +608 -54
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +2 -0
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/embedded.d.ts +72 -0
- package/dist/server/embedded.d.ts.map +1 -0
- package/dist/server/embedded.js +119 -0
- package/dist/server/embedded.js.map +1 -0
- package/dist/server/index.d.ts +8 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +7 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/poll.d.ts.map +1 -1
- package/dist/server/poll.js +184 -13
- package/dist/server/poll.js.map +1 -1
- package/dist/server/resources-plugin.d.ts.map +1 -1
- package/dist/server/resources-plugin.js +11 -2
- package/dist/server/resources-plugin.js.map +1 -1
- package/dist/sharing/actions/extension-change.d.ts +4 -0
- package/dist/sharing/actions/extension-change.d.ts.map +1 -0
- package/dist/sharing/actions/extension-change.js +13 -0
- package/dist/sharing/actions/extension-change.js.map +1 -0
- package/dist/sharing/actions/set-resource-visibility.d.ts.map +1 -1
- package/dist/sharing/actions/set-resource-visibility.js +3 -0
- package/dist/sharing/actions/set-resource-visibility.js.map +1 -1
- package/dist/sharing/actions/share-resource.d.ts.map +1 -1
- package/dist/sharing/actions/share-resource.js +4 -0
- package/dist/sharing/actions/share-resource.js.map +1 -1
- package/dist/sharing/actions/unshare-resource.d.ts.map +1 -1
- package/dist/sharing/actions/unshare-resource.js +3 -0
- package/dist/sharing/actions/unshare-resource.js.map +1 -1
- package/dist/templates/default/AGENTS.md +3 -3
- package/dist/templates/workspace-core/AGENTS.md +7 -0
- package/dist/templates/workspace-root/AGENTS.md +7 -0
- package/dist/templates/workspace-root/README.md +25 -0
- package/dist/triggers/dispatcher.d.ts +3 -1
- package/dist/triggers/dispatcher.d.ts.map +1 -1
- package/dist/triggers/dispatcher.js +9 -3
- package/dist/triggers/dispatcher.js.map +1 -1
- package/dist/workspace-connections/index.d.ts +2 -0
- package/dist/workspace-connections/index.d.ts.map +1 -0
- package/dist/workspace-connections/index.js +2 -0
- package/dist/workspace-connections/index.js.map +1 -0
- package/dist/workspace-connections/store.d.ts +229 -0
- package/dist/workspace-connections/store.d.ts.map +1 -0
- package/dist/workspace-connections/store.js +938 -0
- package/dist/workspace-connections/store.js.map +1 -0
- package/docs/content/agent-teams.md +6 -0
- package/docs/content/cloneable-saas.md +1 -0
- package/docs/content/code-agents-ui.md +261 -0
- package/docs/content/dispatch.md +40 -3
- package/docs/content/embedding-sdk.md +459 -0
- package/docs/content/faq.md +1 -0
- package/docs/content/getting-started.md +1 -0
- package/docs/content/mcp-clients.md +41 -3
- package/docs/content/migration-workbench.md +237 -54
- package/docs/content/multi-app-workspace.md +41 -0
- package/docs/content/multi-tenancy.md +1 -1
- package/docs/content/template-brain.md +418 -0
- package/docs/content/template-dispatch.md +30 -0
- package/docs/content/workspace-connections.md +509 -0
- package/docs/content/workspace-management.md +12 -12
- package/docs/content/workspace.md +180 -40
- package/package.json +7 -2
- package/src/templates/default/AGENTS.md +3 -3
- package/src/templates/workspace-core/AGENTS.md +7 -0
- package/src/templates/workspace-root/AGENTS.md +7 -0
- package/src/templates/workspace-root/README.md +25 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuiltinCapabilityDetail.js","sourceRoot":"","sources":["../../../src/client/resources/BuiltinCapabilityDetail.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport {\n IconAlertTriangle,\n IconBrowser,\n IconCheck,\n IconDeviceDesktop,\n IconLoader2,\n IconPlugConnected,\n} from \"@tabler/icons-react\";\nimport { cn } from \"../utils.js\";\nimport type { McpServerScope } from \"./use-mcp-servers.js\";\nimport {\n useToggleBuiltinCapability,\n type BuiltinCapability,\n type BuiltinCapabilityStatus,\n} from \"./use-builtin-capabilities.js\";\n\ninterface BuiltinCapabilityDetailProps {\n capability: BuiltinCapability;\n scope: McpServerScope;\n canEditOrg: boolean;\n}\n\nexport function BuiltinCapabilityDetail({\n capability,\n scope,\n canEditOrg,\n}: BuiltinCapabilityDetailProps) {\n const toggle = useToggleBuiltinCapability();\n const enabled = capability.enabled[scope];\n const status = capability.status[scope];\n const canToggle =\n capability.available &&\n (scope === \"user\" || canEditOrg) &&\n !toggle.isPending;\n const isBrowser = capability.exclusiveGroup === \"browser\";\n\n const onToggle = () => {\n if (!canToggle) return;\n toggle.mutate({ id: capability.id, scope, enabled: !enabled });\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 {isBrowser ? (\n <IconBrowser className=\"h-4 w-4 text-muted-foreground\" />\n ) : (\n <IconDeviceDesktop className=\"h-4 w-4 text-muted-foreground\" />\n )}\n <h2 className=\"min-w-0 flex-1 truncate text-[14px] font-medium text-foreground\">\n {capability.name}\n </h2>\n <StatusBadge enabled={enabled} status={status} />\n </div>\n\n <p className=\"mb-4 text-[12px] leading-relaxed text-muted-foreground\">\n {capability.description}\n </p>\n\n <div className=\"mb-4 rounded-md border border-border bg-muted/30 p-3\">\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"min-w-0\">\n <div className=\"text-[12px] font-medium text-foreground\">\n {scope === \"user\" ? \"Personal\" : \"Organization\"} access\n </div>\n <p className=\"mt-0.5 text-[11px] leading-relaxed text-muted-foreground\">\n {scope === \"user\"\n ? \"Available only to your agent sessions.\"\n : \"Available to agents in the active organization.\"}\n </p>\n </div>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={enabled}\n disabled={!canToggle}\n onClick={onToggle}\n className={cn(\n \"relative inline-flex h-5 w-9 shrink-0 items-center rounded-full border border-transparent transition-colors\",\n enabled ? \"bg-primary\" : \"bg-muted-foreground/25\",\n !canToggle && \"cursor-not-allowed opacity-60\",\n )}\n >\n <span\n className={cn(\n \"block h-4 w-4 rounded-full bg-background shadow-sm transition-transform\",\n enabled ? \"translate-x-4\" : \"translate-x-0.5\",\n )}\n />\n </button>\n </div>\n\n {toggle.isPending && (\n <div className=\"mt-2 inline-flex items-center gap-1 text-[11px] text-muted-foreground\">\n <IconLoader2 className=\"h-3 w-3 animate-spin\" />\n Updating tools…\n </div>\n )}\n {toggle.error && (\n <div className=\"mt-2 text-[11px] text-red-600 dark:text-red-400\">\n {toggle.error instanceof Error\n ? toggle.error.message\n : \"Could not update this capability.\"}\n </div>\n )}\n </div>\n\n <dl className=\"space-y-3\">\n <Field label=\"Command\">\n <code className=\"rounded bg-muted px-1.5 py-0.5 text-[11px] text-foreground break-all\">\n {capability.command} {capability.args.join(\" \")}\n </code>\n </Field>\n\n {capability.notes && (\n <Field label=\"Requirements\">\n <p className=\"text-[12px] leading-relaxed text-muted-foreground\">\n {capability.notes}\n </p>\n </Field>\n )}\n\n {!capability.available && (\n <Field label=\"Availability\">\n <p className=\"text-[12px] leading-relaxed text-red-600 dark:text-red-400\">\n {capability.unavailableReason ?? \"Not available on this host.\"}\n </p>\n </Field>\n )}\n\n <Field label=\"Tools\">\n <ToolsSummary enabled={enabled} status={status} />\n </Field>\n </dl>\n\n {capability.id === \"computer-use\" && (\n <p className=\"mt-6 rounded-md border border-border bg-muted/40 p-2.5 text-[11px] leading-relaxed text-muted-foreground\">\n macOS may ask for Screen Recording and Accessibility permission\n before the tools can control local apps. The agent should still ask\n before taking sensitive desktop actions.\n </p>\n )}\n\n {capability.id === \"browser-chrome-devtools\" && (\n <p className=\"mt-6 rounded-md border border-border bg-muted/40 p-2.5 text-[11px] leading-relaxed text-muted-foreground\">\n Chrome DevTools attaches to your live Chrome profile when remote\n debugging is available, so it can verify pages that rely on your\n existing login.\n </p>\n )}\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({\n enabled,\n status,\n}: {\n enabled: boolean;\n status?: BuiltinCapabilityStatus;\n}) {\n if (!enabled) {\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 Off\n </span>\n );\n }\n if (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 <IconCheck className=\"h-2.5 w-2.5\" />\n Connected\n </span>\n );\n }\n if (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={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 <IconPlugConnected className=\"h-2.5 w-2.5\" />\n Ready\n </span>\n );\n}\n\nfunction ToolsSummary({\n enabled,\n status,\n}: {\n enabled: boolean;\n status?: BuiltinCapabilityStatus;\n}) {\n if (!enabled) {\n return (\n <span className=\"text-[12px] text-muted-foreground\">\n Disabled. Toggle it on to expose MCP tools to the agent.\n </span>\n );\n }\n if (status?.state === \"connected\") {\n return (\n <span className=\"text-[12px] text-foreground\">\n {status.toolCount} tool{status.toolCount === 1 ? \"\" : \"s\"} exposed\n </span>\n );\n }\n if (status?.state === \"error\") {\n return (\n <span className=\"text-[12px] text-red-600 dark:text-red-400\">\n {status.error}\n </span>\n );\n }\n return (\n <span className=\"text-[12px] text-muted-foreground\">\n Enabled. Tools will appear after the MCP manager connects.\n </span>\n );\n}\n"]}
|
|
@@ -9,6 +9,8 @@ export interface ResourceEditorProps {
|
|
|
9
9
|
onSaveStatusChange?: (status: "idle" | "saving" | "saved") => void;
|
|
10
10
|
/** When true, the editor's internal toolbar row is hidden */
|
|
11
11
|
hideToolbar?: boolean;
|
|
12
|
+
/** When true, content can be viewed and selected but not modified */
|
|
13
|
+
readOnly?: boolean;
|
|
12
14
|
}
|
|
13
|
-
export declare function ResourceEditor({ resource, onSave, view: controlledView, onViewChange, onSaveStatusChange, hideToolbar, }: ResourceEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export declare function ResourceEditor({ resource, onSave, view: controlledView, onViewChange, onSaveStatusChange, hideToolbar, readOnly, }: ResourceEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
14
16
|
//# sourceMappingURL=ResourceEditor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceEditor.d.ts","sourceRoot":"","sources":["../../../src/client/resources/ResourceEditor.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAiBnD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,qFAAqF;IACrF,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,KAAK,IAAI,CAAC;IAC9C,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,KAAK,IAAI,CAAC;IACnE,6DAA6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ResourceEditor.d.ts","sourceRoot":"","sources":["../../../src/client/resources/ResourceEditor.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAiBnD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,qFAAqF;IACrF,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,KAAK,IAAI,CAAC;IAC9C,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,KAAK,IAAI,CAAC;IACnE,6DAA6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAskCD,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,MAAM,EACN,IAAI,EAAE,cAAc,EACpB,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,QAAQ,GACT,EAAE,mBAAmB,2CAgMrB"}
|
|
@@ -36,9 +36,11 @@ const FM_INPUT_STYLE = {
|
|
|
36
36
|
width: "100%",
|
|
37
37
|
padding: 0,
|
|
38
38
|
};
|
|
39
|
-
function FrontmatterBar({ resourcePath, frontmatter, onChange, }) {
|
|
39
|
+
function FrontmatterBar({ resourcePath, frontmatter, onChange, readOnly, }) {
|
|
40
40
|
const getField = (key) => getFrontmatterValue(frontmatter, key) ?? "";
|
|
41
41
|
const updateField = (key, value) => {
|
|
42
|
+
if (readOnly)
|
|
43
|
+
return;
|
|
42
44
|
const exists = frontmatter.fields.some((f) => f.key === key);
|
|
43
45
|
const newFields = exists
|
|
44
46
|
? frontmatter.fields.map((f) => (f.key === key ? { ...f, value } : f))
|
|
@@ -66,7 +68,7 @@ function FrontmatterBar({ resourcePath, frontmatter, onChange, }) {
|
|
|
66
68
|
fontSize: 12,
|
|
67
69
|
lineHeight: 1.5,
|
|
68
70
|
color: "hsl(var(--muted-foreground))",
|
|
69
|
-
}, children: [_jsxs("div", { style: { display: "flex", alignItems: "center", gap: 6 }, children: [_jsx("input", { value: name, onChange: (e) => updateField("name", e.target.value), placeholder: isCustomAgent ? "Agent name" : "Skill name", style: {
|
|
71
|
+
}, children: [_jsxs("div", { style: { display: "flex", alignItems: "center", gap: 6 }, children: [_jsx("input", { value: name, onChange: (e) => updateField("name", e.target.value), readOnly: readOnly, placeholder: isCustomAgent ? "Agent name" : "Skill name", style: {
|
|
70
72
|
...FM_INPUT_STYLE,
|
|
71
73
|
fontWeight: 600,
|
|
72
74
|
color: "hsl(var(--foreground))",
|
|
@@ -92,14 +94,14 @@ function FrontmatterBar({ resourcePath, frontmatter, onChange, }) {
|
|
|
92
94
|
? "none"
|
|
93
95
|
: "1px dashed hsl(var(--border))",
|
|
94
96
|
fontWeight: 500,
|
|
95
|
-
}, children: [_jsx("input", { type: "checkbox", checked: isUserInvocable, onChange: (e) => updateField("user-invocable", e.target.checked ? "true" : "false"), style: { display: "none" } }), "/", name || "command"] })) : null, isCustomAgent ? (_jsxs("select", { value: model, onChange: (e) => updateField("model", e.target.value), style: {
|
|
97
|
+
}, children: [_jsx("input", { type: "checkbox", checked: isUserInvocable, disabled: readOnly, onChange: (e) => updateField("user-invocable", e.target.checked ? "true" : "false"), style: { display: "none" } }), "/", name || "command"] })) : null, isCustomAgent ? (_jsxs("select", { value: model, disabled: readOnly, onChange: (e) => updateField("model", e.target.value), style: {
|
|
96
98
|
borderRadius: 4,
|
|
97
99
|
border: "1px solid hsl(var(--border))",
|
|
98
100
|
background: "hsl(var(--background))",
|
|
99
101
|
color: "hsl(var(--foreground))",
|
|
100
102
|
fontSize: 11,
|
|
101
103
|
padding: "2px 6px",
|
|
102
|
-
}, children: [_jsx("option", { value: "inherit", children: "Default model" }), _jsx("option", { value: "claude-sonnet-4-6", children: "Claude Sonnet 4.6" }), _jsx("option", { value: "claude-haiku-4-5-20251001", children: "Claude Haiku 4.5" })] })) : null] }), _jsx("input", { value: description, onChange: (e) => updateField("description", e.target.value), placeholder: isCustomAgent
|
|
104
|
+
}, children: [_jsx("option", { value: "inherit", children: "Default model" }), _jsx("option", { value: "claude-sonnet-4-6", children: "Claude Sonnet 4.6" }), _jsx("option", { value: "claude-haiku-4-5-20251001", children: "Claude Haiku 4.5" })] })) : null] }), _jsx("input", { value: description, readOnly: readOnly, onChange: (e) => updateField("description", e.target.value), placeholder: isCustomAgent
|
|
103
105
|
? "Description — what this agent should handle"
|
|
104
106
|
: "Description — what this skill does", style: {
|
|
105
107
|
...FM_INPUT_STYLE,
|
|
@@ -115,7 +117,7 @@ function FrontmatterBar({ resourcePath, frontmatter, onChange, }) {
|
|
|
115
117
|
fontSize: 10,
|
|
116
118
|
color: "hsl(var(--muted-foreground))",
|
|
117
119
|
minWidth: 28,
|
|
118
|
-
}, children: "Tools" }), _jsxs("select", { value: tools, onChange: (e) => updateField("tools", e.target.value), style: {
|
|
120
|
+
}, children: "Tools" }), _jsxs("select", { value: tools, disabled: readOnly, onChange: (e) => updateField("tools", e.target.value), style: {
|
|
119
121
|
borderRadius: 4,
|
|
120
122
|
border: "1px solid hsl(var(--border))",
|
|
121
123
|
background: "hsl(var(--background))",
|
|
@@ -487,7 +489,7 @@ const shStyles = `
|
|
|
487
489
|
.sh-num { color: #fca5a5; }
|
|
488
490
|
.sh-lit { color: #c4b5fd; }
|
|
489
491
|
`;
|
|
490
|
-
function SyntaxHighlightEditor({ value, onChange, language: _language, }) {
|
|
492
|
+
function SyntaxHighlightEditor({ value, onChange, language: _language, readOnly, }) {
|
|
491
493
|
const textareaRef = useRef(null);
|
|
492
494
|
const preRef = useRef(null);
|
|
493
495
|
const highlighted = useMemo(() => highlightJson(value), [value]);
|
|
@@ -518,7 +520,10 @@ function SyntaxHighlightEditor({ value, onChange, language: _language, }) {
|
|
|
518
520
|
pointerEvents: "none",
|
|
519
521
|
color: "hsl(var(--muted-foreground))",
|
|
520
522
|
background: "transparent",
|
|
521
|
-
}, dangerouslySetInnerHTML: { __html: highlighted + "\n" } }), _jsx("textarea", { ref: textareaRef, value: value, onChange: (e) =>
|
|
523
|
+
}, dangerouslySetInnerHTML: { __html: highlighted + "\n" } }), _jsx("textarea", { ref: textareaRef, value: value, onChange: (e) => {
|
|
524
|
+
if (!readOnly)
|
|
525
|
+
onChange(e.target.value);
|
|
526
|
+
}, onScroll: syncScroll, readOnly: readOnly, spellCheck: false, style: {
|
|
522
527
|
...sharedStyle,
|
|
523
528
|
position: "absolute",
|
|
524
529
|
inset: 0,
|
|
@@ -533,7 +538,7 @@ function SyntaxHighlightEditor({ value, onChange, language: _language, }) {
|
|
|
533
538
|
WebkitTextFillColor: "transparent",
|
|
534
539
|
} })] })] }));
|
|
535
540
|
}
|
|
536
|
-
function VisualMarkdownEditor({ content, onChange, resourcePath, }) {
|
|
541
|
+
function VisualMarkdownEditor({ content, onChange, resourcePath, readOnly, }) {
|
|
537
542
|
const isSettingContent = useRef(false);
|
|
538
543
|
const onChangeRef = useRef(onChange);
|
|
539
544
|
onChangeRef.current = onChange;
|
|
@@ -575,12 +580,15 @@ function VisualMarkdownEditor({ content, onChange, resourcePath, }) {
|
|
|
575
580
|
}),
|
|
576
581
|
],
|
|
577
582
|
content: parsed?.body ?? content,
|
|
583
|
+
editable: !readOnly,
|
|
578
584
|
editorProps: {
|
|
579
585
|
attributes: {
|
|
580
586
|
class: "re-prose",
|
|
581
587
|
},
|
|
582
588
|
},
|
|
583
589
|
onUpdate: ({ editor }) => {
|
|
590
|
+
if (readOnly)
|
|
591
|
+
return;
|
|
584
592
|
if (isSettingContent.current)
|
|
585
593
|
return;
|
|
586
594
|
try {
|
|
@@ -595,6 +603,11 @@ function VisualMarkdownEditor({ content, onChange, resourcePath, }) {
|
|
|
595
603
|
}
|
|
596
604
|
},
|
|
597
605
|
});
|
|
606
|
+
useEffect(() => {
|
|
607
|
+
if (!editor || editor.isDestroyed)
|
|
608
|
+
return;
|
|
609
|
+
editor.setEditable(!readOnly);
|
|
610
|
+
}, [editor, readOnly]);
|
|
598
611
|
useEffect(() => {
|
|
599
612
|
if (!editor || editor.isDestroyed)
|
|
600
613
|
return;
|
|
@@ -622,7 +635,13 @@ function VisualMarkdownEditor({ content, onChange, resourcePath, }) {
|
|
|
622
635
|
editor.chain().focus("end").run();
|
|
623
636
|
}
|
|
624
637
|
};
|
|
625
|
-
return (_jsxs("div", { className: "re-editor-wrapper re-editor-clickable", onClick: handleWrapperClick, style: {
|
|
638
|
+
return (_jsxs("div", { className: "re-editor-wrapper re-editor-clickable", onClick: handleWrapperClick, style: {
|
|
639
|
+
position: "relative",
|
|
640
|
+
minHeight: "100%",
|
|
641
|
+
cursor: readOnly ? "default" : "text",
|
|
642
|
+
}, children: [parsed && (_jsx(FrontmatterBar, { resourcePath: resourcePath, frontmatter: parsed, readOnly: readOnly, onChange: (updated) => {
|
|
643
|
+
if (readOnly)
|
|
644
|
+
return;
|
|
626
645
|
frontmatterRef.current = updated;
|
|
627
646
|
// Get current body and combine with updated frontmatter
|
|
628
647
|
try {
|
|
@@ -632,7 +651,7 @@ function VisualMarkdownEditor({ content, onChange, resourcePath, }) {
|
|
|
632
651
|
catch {
|
|
633
652
|
// fallback
|
|
634
653
|
}
|
|
635
|
-
} })), _jsx(InlineBubbleToolbar, { editor: editor }), _jsx(SlashMenu, { editor: editor }), _jsx(EditorContent, { editor: editor })] }));
|
|
654
|
+
} })), !readOnly && _jsx(InlineBubbleToolbar, { editor: editor }), !readOnly && _jsx(SlashMenu, { editor: editor }), _jsx(EditorContent, { editor: editor })] }));
|
|
636
655
|
}
|
|
637
656
|
function parseRemoteAgentContent(content, path) {
|
|
638
657
|
const fallbackId = getRemoteAgentIdFromPath(path);
|
|
@@ -665,7 +684,7 @@ function serializeRemoteAgent(value) {
|
|
|
665
684
|
color: value.color,
|
|
666
685
|
}, null, 2) + "\n");
|
|
667
686
|
}
|
|
668
|
-
function RemoteAgentFormEditor({ resource, onChange, }) {
|
|
687
|
+
function RemoteAgentFormEditor({ resource, onChange, readOnly, }) {
|
|
669
688
|
const [value, setValue] = useState(() => parseRemoteAgentContent(resource.content, resource.path));
|
|
670
689
|
const prevIdRef = useRef(resource.id);
|
|
671
690
|
useEffect(() => {
|
|
@@ -675,15 +694,17 @@ function RemoteAgentFormEditor({ resource, onChange, }) {
|
|
|
675
694
|
}
|
|
676
695
|
}, [resource.id, resource.content, resource.path]);
|
|
677
696
|
const update = (patch) => {
|
|
697
|
+
if (readOnly)
|
|
698
|
+
return;
|
|
678
699
|
const next = { ...value, ...patch };
|
|
679
700
|
setValue(next);
|
|
680
701
|
onChange(serializeRemoteAgent(next));
|
|
681
702
|
};
|
|
682
703
|
const inputClass = "w-full rounded-md border border-border bg-background px-2.5 py-1.5 text-[13px] text-foreground outline-none placeholder:text-muted-foreground/50 focus:ring-1 focus:ring-accent";
|
|
683
704
|
const labelClass = "block text-[11px] font-medium text-muted-foreground mb-1";
|
|
684
|
-
return (_jsx("div", { className: "flex flex-1 min-h-0 flex-col overflow-y-auto p-4", children: _jsxs("div", { className: "max-w-md space-y-3", children: [_jsx("p", { className: "text-[11px] text-muted-foreground/70 leading-snug", children: "Connected remote agent over the A2A protocol. @-mention it in chat to delegate tasks." }), _jsxs("div", { children: [_jsx("label", { className: labelClass, children: "Name" }), _jsx("input", { className: inputClass, value: value.name, onChange: (e) => update({ name: e.target.value }), placeholder: "Analytics" })] }), _jsxs("div", { children: [_jsx("label", { className: labelClass, children: "URL" }), _jsx("input", { className: inputClass, value: value.url, onChange: (e) => update({ url: e.target.value }), placeholder: "https://analytics.example.com" }), _jsxs("p", { className: "mt-1 text-[10px] text-muted-foreground/50", children: ["A2A endpoint. The agent card is served at", " ", _jsx("code", { children: "/.well-known/agent-card.json" }), "."] })] }), _jsxs("div", { children: [_jsx("label", { className: labelClass, children: "Description" }), _jsx("textarea", { className: cn(inputClass, "resize-y"), rows: 3, value: value.description, onChange: (e) => update({ description: e.target.value }), placeholder: "What this agent is good at \u2014 helps the main agent decide when to delegate." })] }), _jsxs("div", { children: [_jsx("label", { className: labelClass, children: "Color" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("input", { type: "color", value: value.color, onChange: (e) => update({ color: e.target.value }), className: "h-8 w-10 cursor-pointer rounded border border-border bg-transparent" }), _jsx("input", { className: cn(inputClass, "flex-1"), value: value.color, onChange: (e) => update({ color: e.target.value }), placeholder: "#6B7280" })] })] })] }) }));
|
|
705
|
+
return (_jsx("div", { className: "flex flex-1 min-h-0 flex-col overflow-y-auto p-4", children: _jsxs("div", { className: "max-w-md space-y-3", children: [_jsx("p", { className: "text-[11px] text-muted-foreground/70 leading-snug", children: "Connected remote agent over the A2A protocol. @-mention it in chat to delegate tasks." }), _jsxs("div", { children: [_jsx("label", { className: labelClass, children: "Name" }), _jsx("input", { className: inputClass, value: value.name, readOnly: readOnly, onChange: (e) => update({ name: e.target.value }), placeholder: "Analytics" })] }), _jsxs("div", { children: [_jsx("label", { className: labelClass, children: "URL" }), _jsx("input", { className: inputClass, value: value.url, readOnly: readOnly, onChange: (e) => update({ url: e.target.value }), placeholder: "https://analytics.example.com" }), _jsxs("p", { className: "mt-1 text-[10px] text-muted-foreground/50", children: ["A2A endpoint. The agent card is served at", " ", _jsx("code", { children: "/.well-known/agent-card.json" }), "."] })] }), _jsxs("div", { children: [_jsx("label", { className: labelClass, children: "Description" }), _jsx("textarea", { className: cn(inputClass, "resize-y"), rows: 3, value: value.description, readOnly: readOnly, onChange: (e) => update({ description: e.target.value }), placeholder: "What this agent is good at \u2014 helps the main agent decide when to delegate." })] }), _jsxs("div", { children: [_jsx("label", { className: labelClass, children: "Color" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("input", { type: "color", value: value.color, disabled: readOnly, onChange: (e) => update({ color: e.target.value }), className: "h-8 w-10 cursor-pointer rounded border border-border bg-transparent" }), _jsx("input", { className: cn(inputClass, "flex-1"), value: value.color, readOnly: readOnly, onChange: (e) => update({ color: e.target.value }), placeholder: "#6B7280" })] })] })] }) }));
|
|
685
706
|
}
|
|
686
|
-
export function ResourceEditor({ resource, onSave, view: controlledView, onViewChange, onSaveStatusChange, hideToolbar, }) {
|
|
707
|
+
export function ResourceEditor({ resource, onSave, view: controlledView, onViewChange, onSaveStatusChange, hideToolbar, readOnly, }) {
|
|
687
708
|
const [content, setContent] = useState(resource.content);
|
|
688
709
|
const [internalView, setInternalView] = useState(getViewPref);
|
|
689
710
|
const view = controlledView ?? internalView;
|
|
@@ -700,6 +721,8 @@ export function ResourceEditor({ resource, onSave, view: controlledView, onViewC
|
|
|
700
721
|
}
|
|
701
722
|
}, [resource.id, resource.content, onSaveStatusChange]);
|
|
702
723
|
const handleChange = useCallback((newContent) => {
|
|
724
|
+
if (readOnly)
|
|
725
|
+
return;
|
|
703
726
|
setContent(newContent);
|
|
704
727
|
setSaveStatus("idle");
|
|
705
728
|
onSaveStatusChange?.("idle");
|
|
@@ -714,7 +737,7 @@ export function ResourceEditor({ resource, onSave, view: controlledView, onViewC
|
|
|
714
737
|
onSaveStatusChange?.("saved");
|
|
715
738
|
}, 300);
|
|
716
739
|
}, 1000);
|
|
717
|
-
}, [onSave, onSaveStatusChange]);
|
|
740
|
+
}, [onSave, onSaveStatusChange, readOnly]);
|
|
718
741
|
const switchView = useCallback((v) => {
|
|
719
742
|
setInternalView(v);
|
|
720
743
|
setViewPref(v);
|
|
@@ -732,7 +755,7 @@ export function ResourceEditor({ resource, onSave, view: controlledView, onViewC
|
|
|
732
755
|
const isRemoteAgent = isRemoteAgentPath(resource.path);
|
|
733
756
|
// Remote-agent manifest → form editor
|
|
734
757
|
if (isRemoteAgent) {
|
|
735
|
-
return (_jsx("div", { className: "flex h-full flex-col", children: _jsx(RemoteAgentFormEditor, { resource: resource, onChange: handleChange }) }));
|
|
758
|
+
return (_jsx("div", { className: "flex h-full flex-col", children: _jsx(RemoteAgentFormEditor, { resource: resource, onChange: handleChange, readOnly: readOnly }) }));
|
|
736
759
|
}
|
|
737
760
|
// Image preview
|
|
738
761
|
if (isImage) {
|
|
@@ -748,14 +771,14 @@ export function ResourceEditor({ resource, onSave, view: controlledView, onViewC
|
|
|
748
771
|
? "Saving..."
|
|
749
772
|
: saveStatus === "saved"
|
|
750
773
|
? "Saved"
|
|
751
|
-
: "" })] })), view === "visual" ? (_jsx("div", { className: "flex-1 min-h-0 overflow-y-auto p-3", children: _jsx(VisualMarkdownEditor, { content: content, onChange: handleChange, resourcePath: resource.path }) }, resource.id + "-visual")) : (_jsx("textarea", { value: content, onChange: (e) => handleChange(e.target.value), className: "flex-1 min-h-0 resize-none bg-transparent p-3 text-[13px] text-foreground outline-none placeholder:text-muted-foreground/50", style: {
|
|
774
|
+
: "" })] })), view === "visual" ? (_jsx("div", { className: "flex-1 min-h-0 overflow-y-auto p-3", children: _jsx(VisualMarkdownEditor, { content: content, onChange: handleChange, resourcePath: resource.path, readOnly: readOnly }) }, resource.id + "-visual")) : (_jsx("textarea", { value: content, onChange: (e) => handleChange(e.target.value), readOnly: readOnly, className: "flex-1 min-h-0 resize-none bg-transparent p-3 text-[13px] text-foreground outline-none placeholder:text-muted-foreground/50", style: {
|
|
752
775
|
fontFamily: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace',
|
|
753
776
|
lineHeight: 1.6,
|
|
754
777
|
}, spellCheck: false }))] }));
|
|
755
778
|
}
|
|
756
779
|
// Non-markdown text files
|
|
757
780
|
const isJson = resource.mimeType === "application/json" || resource.path.endsWith(".json");
|
|
758
|
-
return (_jsx("div", { className: "flex h-full flex-col", children: isJson ? (_jsx(SyntaxHighlightEditor, { value: content, onChange: handleChange, language: "json" })) : (_jsx("textarea", { value: content, onChange: (e) => handleChange(e.target.value), className: "flex-1 min-h-0 resize-none bg-transparent p-3 text-[13px] text-foreground outline-none placeholder:text-muted-foreground/50", style: {
|
|
781
|
+
return (_jsx("div", { className: "flex h-full flex-col", children: isJson ? (_jsx(SyntaxHighlightEditor, { value: content, onChange: handleChange, language: "json", readOnly: readOnly })) : (_jsx("textarea", { value: content, onChange: (e) => handleChange(e.target.value), readOnly: readOnly, className: "flex-1 min-h-0 resize-none bg-transparent p-3 text-[13px] text-foreground outline-none placeholder:text-muted-foreground/50", style: {
|
|
759
782
|
fontFamily: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace',
|
|
760
783
|
lineHeight: 1.6,
|
|
761
784
|
}, spellCheck: false })) }));
|