@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
|
@@ -5,6 +5,8 @@ export { ExtensionsListPage } from "./ExtensionsListPage.js";
|
|
|
5
5
|
export { ExtensionViewerPage } from "./ExtensionViewerPage.js";
|
|
6
6
|
export { EmbeddedExtension, type EmbeddedExtensionProps, } from "./EmbeddedExtension.js";
|
|
7
7
|
export { ExtensionSlot, type ExtensionSlotProps } from "./ExtensionSlot.js";
|
|
8
|
+
export { AgentNativeExtensionFrame, AgentNativeExtensionSlot, type AgentNativeExtensionFrameProps, type AgentNativeExtensionPermissionList, type AgentNativeExtensionSlotProps, type AgentNativeExtensionStorageScopeList, } from "./AgentNativeExtensionFrame.js";
|
|
9
|
+
export { AGENT_NATIVE_EXTENSION_MESSAGE_TYPES, buildAgentNativeExtensionHtml, createHttpAgentNativeExtensionStorage, createLocalStorageAgentNativeExtensionStorage, getAgentNativeExtensionManifest, isAgentNativeExtensionAllowedInSlot, normalizeAgentNativeExtensionSandbox, type AgentNativeExtensionDefinition, type AgentNativeExtensionManifest, type AgentNativeExtensionMessageType, type AgentNativeExtensionStorage, type AgentNativeExtensionStorageContext, type AgentNativeExtensionStorageOptions, type AgentNativeExtensionStorageRow, type AgentNativeExtensionStorageScope, type BuildAgentNativeExtensionHtmlOptions, type CreateHttpAgentNativeExtensionStorageOptions, } from "./portable-extension.js";
|
|
8
10
|
export { ExtensionsSidebarSection as ToolsSidebarSection } from "./ExtensionsSidebarSection.js";
|
|
9
11
|
export { ExtensionViewer as ToolViewer, type ExtensionViewerProps as ToolViewerProps, } from "./ExtensionViewer.js";
|
|
10
12
|
export { ExtensionEditor as ToolEditor, type ExtensionEditorProps as ToolEditorProps, } from "./ExtensionEditor.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/extensions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/extensions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,6BAA6B,EAClC,KAAK,oCAAoC,GAC1C,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,oCAAoC,EACpC,6BAA6B,EAC7B,qCAAqC,EACrC,6CAA6C,EAC7C,+BAA+B,EAC/B,mCAAmC,EACnC,oCAAoC,EACpC,KAAK,8BAA8B,EACnC,KAAK,4BAA4B,EACjC,KAAK,+BAA+B,EACpC,KAAK,2BAA2B,EAChC,KAAK,kCAAkC,EACvC,KAAK,kCAAkC,EACvC,KAAK,8BAA8B,EACnC,KAAK,gCAAgC,EACrC,KAAK,oCAAoC,EACzC,KAAK,4CAA4C,GAClD,MAAM,yBAAyB,CAAC;AAQjC,OAAO,EAAE,wBAAwB,IAAI,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAChG,OAAO,EACL,eAAe,IAAI,UAAU,EAC7B,KAAK,oBAAoB,IAAI,eAAe,GAC7C,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,IAAI,UAAU,EAC7B,KAAK,oBAAoB,IAAI,eAAe,GAC7C,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,IAAI,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,mBAAmB,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EACL,iBAAiB,IAAI,YAAY,EACjC,KAAK,sBAAsB,IAAI,iBAAiB,GACjD,MAAM,wBAAwB,CAAC"}
|
|
@@ -5,6 +5,8 @@ export { ExtensionsListPage } from "./ExtensionsListPage.js";
|
|
|
5
5
|
export { ExtensionViewerPage } from "./ExtensionViewerPage.js";
|
|
6
6
|
export { EmbeddedExtension, } from "./EmbeddedExtension.js";
|
|
7
7
|
export { ExtensionSlot } from "./ExtensionSlot.js";
|
|
8
|
+
export { AgentNativeExtensionFrame, AgentNativeExtensionSlot, } from "./AgentNativeExtensionFrame.js";
|
|
9
|
+
export { AGENT_NATIVE_EXTENSION_MESSAGE_TYPES, buildAgentNativeExtensionHtml, createHttpAgentNativeExtensionStorage, createLocalStorageAgentNativeExtensionStorage, getAgentNativeExtensionManifest, isAgentNativeExtensionAllowedInSlot, normalizeAgentNativeExtensionSandbox, } from "./portable-extension.js";
|
|
8
10
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
9
11
|
// Legacy aliases — these names predate the Tools → Extensions rename. Keep
|
|
10
12
|
// exporting them so deployed templates that haven't been updated still
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/extensions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,eAAe,GAEhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,GAEhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EACL,iBAAiB,GAElB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/extensions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,eAAe,GAEhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,GAEhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EACL,iBAAiB,GAElB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EACL,yBAAyB,EACzB,wBAAwB,GAKzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,oCAAoC,EACpC,6BAA6B,EAC7B,qCAAqC,EACrC,6CAA6C,EAC7C,+BAA+B,EAC/B,mCAAmC,EACnC,oCAAoC,GAWrC,MAAM,yBAAyB,CAAC;AAEjC,gFAAgF;AAChF,2EAA2E;AAC3E,uEAAuE;AACvE,6DAA6D;AAC7D,gFAAgF;AAEhF,OAAO,EAAE,wBAAwB,IAAI,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAChG,OAAO,EACL,eAAe,IAAI,UAAU,GAE9B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,IAAI,UAAU,GAE9B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,IAAI,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,mBAAmB,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EACL,iBAAiB,IAAI,YAAY,GAElC,MAAM,wBAAwB,CAAC","sourcesContent":["export { ExtensionsSidebarSection } from \"./ExtensionsSidebarSection.js\";\nexport {\n ExtensionViewer,\n type ExtensionViewerProps,\n} from \"./ExtensionViewer.js\";\nexport {\n ExtensionEditor,\n type ExtensionEditorProps,\n} from \"./ExtensionEditor.js\";\nexport { ExtensionsListPage } from \"./ExtensionsListPage.js\";\nexport { ExtensionViewerPage } from \"./ExtensionViewerPage.js\";\nexport {\n EmbeddedExtension,\n type EmbeddedExtensionProps,\n} from \"./EmbeddedExtension.js\";\nexport { ExtensionSlot, type ExtensionSlotProps } from \"./ExtensionSlot.js\";\nexport {\n AgentNativeExtensionFrame,\n AgentNativeExtensionSlot,\n type AgentNativeExtensionFrameProps,\n type AgentNativeExtensionPermissionList,\n type AgentNativeExtensionSlotProps,\n type AgentNativeExtensionStorageScopeList,\n} from \"./AgentNativeExtensionFrame.js\";\nexport {\n AGENT_NATIVE_EXTENSION_MESSAGE_TYPES,\n buildAgentNativeExtensionHtml,\n createHttpAgentNativeExtensionStorage,\n createLocalStorageAgentNativeExtensionStorage,\n getAgentNativeExtensionManifest,\n isAgentNativeExtensionAllowedInSlot,\n normalizeAgentNativeExtensionSandbox,\n type AgentNativeExtensionDefinition,\n type AgentNativeExtensionManifest,\n type AgentNativeExtensionMessageType,\n type AgentNativeExtensionStorage,\n type AgentNativeExtensionStorageContext,\n type AgentNativeExtensionStorageOptions,\n type AgentNativeExtensionStorageRow,\n type AgentNativeExtensionStorageScope,\n type BuildAgentNativeExtensionHtmlOptions,\n type CreateHttpAgentNativeExtensionStorageOptions,\n} from \"./portable-extension.js\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Legacy aliases — these names predate the Tools → Extensions rename. Keep\n// exporting them so deployed templates that haven't been updated still\n// resolve. Use the canonical `Extension*` names in new code.\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport { ExtensionsSidebarSection as ToolsSidebarSection } from \"./ExtensionsSidebarSection.js\";\nexport {\n ExtensionViewer as ToolViewer,\n type ExtensionViewerProps as ToolViewerProps,\n} from \"./ExtensionViewer.js\";\nexport {\n ExtensionEditor as ToolEditor,\n type ExtensionEditorProps as ToolEditorProps,\n} from \"./ExtensionEditor.js\";\nexport { ExtensionsListPage as ToolsListPage } from \"./ExtensionsListPage.js\";\nexport { ExtensionViewerPage as ToolViewerPage } from \"./ExtensionViewerPage.js\";\nexport {\n EmbeddedExtension as EmbeddedTool,\n type EmbeddedExtensionProps as EmbeddedToolProps,\n} from \"./EmbeddedExtension.js\";\n"]}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export declare const AGENT_NATIVE_EXTENSION_MESSAGE_TYPES: {
|
|
2
|
+
readonly STORAGE_REQUEST: "agentNative.extension.storage";
|
|
3
|
+
readonly STORAGE_RESPONSE: "agentNative.extension.storageResult";
|
|
4
|
+
readonly RESIZE: "agentNative.extension.resize";
|
|
5
|
+
readonly SLOT_CONTEXT: "agentNative.extension.slotContext";
|
|
6
|
+
};
|
|
7
|
+
export type AgentNativeExtensionMessageType = (typeof AGENT_NATIVE_EXTENSION_MESSAGE_TYPES)[keyof typeof AGENT_NATIVE_EXTENSION_MESSAGE_TYPES];
|
|
8
|
+
export type AgentNativeExtensionStorageScope = "user" | "org" | "all" | string;
|
|
9
|
+
export interface AgentNativeExtensionManifest {
|
|
10
|
+
/** Slot IDs this extension may render into. Omit to let the host decide. */
|
|
11
|
+
slots?: readonly string[];
|
|
12
|
+
/** Host action names this extension is allowed to call. Omit to inherit the slot policy. */
|
|
13
|
+
requestedActions?: readonly string[];
|
|
14
|
+
/** Host command names this extension is allowed to call. Omit to inherit the slot policy. */
|
|
15
|
+
requestedCommands?: readonly string[];
|
|
16
|
+
/** Storage scopes this extension is allowed to use. Omit to inherit the slot policy. */
|
|
17
|
+
storageScopes?: readonly AgentNativeExtensionStorageScope[];
|
|
18
|
+
}
|
|
19
|
+
export interface AgentNativeExtensionDefinition {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
content: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
updatedAt?: string;
|
|
25
|
+
manifest?: AgentNativeExtensionManifest;
|
|
26
|
+
slots?: readonly string[];
|
|
27
|
+
requestedActions?: readonly string[];
|
|
28
|
+
requestedCommands?: readonly string[];
|
|
29
|
+
storageScopes?: readonly AgentNativeExtensionStorageScope[];
|
|
30
|
+
[key: string]: unknown;
|
|
31
|
+
}
|
|
32
|
+
export interface AgentNativeExtensionStorageOptions {
|
|
33
|
+
scope?: AgentNativeExtensionStorageScope;
|
|
34
|
+
limit?: number;
|
|
35
|
+
[key: string]: unknown;
|
|
36
|
+
}
|
|
37
|
+
export interface AgentNativeExtensionStorageContext {
|
|
38
|
+
extensionId: string;
|
|
39
|
+
slotId?: string;
|
|
40
|
+
scope?: Exclude<AgentNativeExtensionStorageScope, "all"> | string;
|
|
41
|
+
userId?: string;
|
|
42
|
+
organizationId?: string;
|
|
43
|
+
[key: string]: unknown;
|
|
44
|
+
}
|
|
45
|
+
export interface AgentNativeExtensionStorageRow<TData = unknown> {
|
|
46
|
+
id: string;
|
|
47
|
+
extensionId: string;
|
|
48
|
+
collection: string;
|
|
49
|
+
data: TData;
|
|
50
|
+
scope: string;
|
|
51
|
+
createdAt: string;
|
|
52
|
+
updatedAt: string;
|
|
53
|
+
}
|
|
54
|
+
export interface AgentNativeExtensionStorage {
|
|
55
|
+
list(collection: string, options: AgentNativeExtensionStorageOptions | undefined, context: AgentNativeExtensionStorageContext): AgentNativeExtensionStorageRow[] | Promise<AgentNativeExtensionStorageRow[]>;
|
|
56
|
+
get(collection: string, id: string, options: AgentNativeExtensionStorageOptions | undefined, context: AgentNativeExtensionStorageContext): AgentNativeExtensionStorageRow | null | Promise<AgentNativeExtensionStorageRow | null>;
|
|
57
|
+
set(collection: string, id: string, data: unknown, options: AgentNativeExtensionStorageOptions | undefined, context: AgentNativeExtensionStorageContext): AgentNativeExtensionStorageRow | Promise<AgentNativeExtensionStorageRow>;
|
|
58
|
+
remove(collection: string, id: string, options: AgentNativeExtensionStorageOptions | undefined, context: AgentNativeExtensionStorageContext): {
|
|
59
|
+
removed: boolean;
|
|
60
|
+
} | Promise<{
|
|
61
|
+
removed: boolean;
|
|
62
|
+
}>;
|
|
63
|
+
}
|
|
64
|
+
export interface CreateHttpAgentNativeExtensionStorageOptions {
|
|
65
|
+
/** Endpoint that receives storage operation POSTs. */
|
|
66
|
+
endpoint: string;
|
|
67
|
+
fetch?: typeof fetch;
|
|
68
|
+
headers?: HeadersInit | ((context: AgentNativeExtensionStorageContext) => HeadersInit | Promise<HeadersInit>);
|
|
69
|
+
credentials?: RequestCredentials;
|
|
70
|
+
}
|
|
71
|
+
export interface BuildAgentNativeExtensionHtmlOptions {
|
|
72
|
+
extensionId: string;
|
|
73
|
+
content: string;
|
|
74
|
+
title?: string;
|
|
75
|
+
slotId?: string;
|
|
76
|
+
slotContext?: Record<string, unknown> | null;
|
|
77
|
+
themeCss?: string;
|
|
78
|
+
isDark?: boolean;
|
|
79
|
+
}
|
|
80
|
+
export declare function getAgentNativeExtensionManifest(extension: AgentNativeExtensionDefinition): AgentNativeExtensionManifest;
|
|
81
|
+
export declare function isAgentNativeExtensionAllowedInSlot(extension: AgentNativeExtensionDefinition, slotId: string | undefined): boolean;
|
|
82
|
+
export declare function createLocalStorageAgentNativeExtensionStorage(namespace?: string): AgentNativeExtensionStorage;
|
|
83
|
+
export declare function createHttpAgentNativeExtensionStorage({ endpoint, fetch: fetchImpl, headers, credentials, }: CreateHttpAgentNativeExtensionStorageOptions): AgentNativeExtensionStorage;
|
|
84
|
+
export declare function normalizeAgentNativeExtensionSandbox(sandbox: string | undefined): string;
|
|
85
|
+
export declare function buildAgentNativeExtensionHtml({ extensionId, content, title, slotId, slotContext, themeCss, isDark, }: BuildAgentNativeExtensionHtmlOptions): string;
|
|
86
|
+
//# sourceMappingURL=portable-extension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portable-extension.d.ts","sourceRoot":"","sources":["../../../src/client/extensions/portable-extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,480 @@
|
|
|
1
|
+
import { AGENT_NATIVE_HOST_MESSAGE_TYPES } from "../host-bridge.js";
|
|
2
|
+
import { EXTENSION_IFRAME_META_CSP } from "../../extensions/html-shell.js";
|
|
3
|
+
export const AGENT_NATIVE_EXTENSION_MESSAGE_TYPES = {
|
|
4
|
+
STORAGE_REQUEST: "agentNative.extension.storage",
|
|
5
|
+
STORAGE_RESPONSE: "agentNative.extension.storageResult",
|
|
6
|
+
RESIZE: "agentNative.extension.resize",
|
|
7
|
+
SLOT_CONTEXT: "agentNative.extension.slotContext",
|
|
8
|
+
};
|
|
9
|
+
function firstList(...values) {
|
|
10
|
+
return values.find((value) => Array.isArray(value));
|
|
11
|
+
}
|
|
12
|
+
export function getAgentNativeExtensionManifest(extension) {
|
|
13
|
+
return {
|
|
14
|
+
slots: firstList(extension.manifest?.slots, extension.slots),
|
|
15
|
+
requestedActions: firstList(extension.manifest?.requestedActions, extension.requestedActions),
|
|
16
|
+
requestedCommands: firstList(extension.manifest?.requestedCommands, extension.requestedCommands),
|
|
17
|
+
storageScopes: firstList(extension.manifest?.storageScopes, extension.storageScopes),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function isAgentNativeExtensionAllowedInSlot(extension, slotId) {
|
|
21
|
+
if (!slotId)
|
|
22
|
+
return true;
|
|
23
|
+
const slots = getAgentNativeExtensionManifest(extension).slots;
|
|
24
|
+
if (!slots)
|
|
25
|
+
return true;
|
|
26
|
+
return slots.includes(slotId);
|
|
27
|
+
}
|
|
28
|
+
function escapeHtmlAttribute(value) {
|
|
29
|
+
return value
|
|
30
|
+
.replace(/&/g, "&")
|
|
31
|
+
.replace(/"/g, """)
|
|
32
|
+
.replace(/</g, "<")
|
|
33
|
+
.replace(/>/g, ">");
|
|
34
|
+
}
|
|
35
|
+
function safeJson(value) {
|
|
36
|
+
try {
|
|
37
|
+
const json = JSON.stringify(value);
|
|
38
|
+
return typeof json === "string" ? json.replace(/</g, "\\u003c") : "null";
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return "null";
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function encodedSegment(value) {
|
|
45
|
+
return encodeURIComponent(value);
|
|
46
|
+
}
|
|
47
|
+
function storageScope(options, context) {
|
|
48
|
+
const scope = options?.scope ?? context.scope ?? "user";
|
|
49
|
+
return typeof scope === "string" && scope ? scope : "user";
|
|
50
|
+
}
|
|
51
|
+
function localStorageRef() {
|
|
52
|
+
if (typeof window === "undefined" || !window.localStorage) {
|
|
53
|
+
throw new Error("Extension localStorage is not available");
|
|
54
|
+
}
|
|
55
|
+
return window.localStorage;
|
|
56
|
+
}
|
|
57
|
+
function bucketKey(namespace, extensionId, scope, collection) {
|
|
58
|
+
return [
|
|
59
|
+
"agent-native",
|
|
60
|
+
"extension-data",
|
|
61
|
+
encodedSegment(namespace),
|
|
62
|
+
encodedSegment(extensionId),
|
|
63
|
+
encodedSegment(scope),
|
|
64
|
+
encodedSegment(collection),
|
|
65
|
+
].join(":");
|
|
66
|
+
}
|
|
67
|
+
function readBucket(storage, key) {
|
|
68
|
+
const raw = storage.getItem(key);
|
|
69
|
+
if (!raw)
|
|
70
|
+
return {};
|
|
71
|
+
try {
|
|
72
|
+
const parsed = JSON.parse(raw);
|
|
73
|
+
return parsed && typeof parsed === "object" && !Array.isArray(parsed)
|
|
74
|
+
? parsed
|
|
75
|
+
: {};
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return {};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function writeBucket(storage, key, value) {
|
|
82
|
+
storage.setItem(key, JSON.stringify(value));
|
|
83
|
+
}
|
|
84
|
+
function listLocalStorageBuckets(storage, namespace, extensionId, collection) {
|
|
85
|
+
const prefix = [
|
|
86
|
+
"agent-native",
|
|
87
|
+
"extension-data",
|
|
88
|
+
encodedSegment(namespace),
|
|
89
|
+
encodedSegment(extensionId),
|
|
90
|
+
"",
|
|
91
|
+
].join(":");
|
|
92
|
+
const suffix = `:${encodedSegment(collection)}`;
|
|
93
|
+
const keys = [];
|
|
94
|
+
for (let index = 0; index < storage.length; index += 1) {
|
|
95
|
+
const key = storage.key(index);
|
|
96
|
+
if (key?.startsWith(prefix) && key.endsWith(suffix))
|
|
97
|
+
keys.push(key);
|
|
98
|
+
}
|
|
99
|
+
return keys;
|
|
100
|
+
}
|
|
101
|
+
export function createLocalStorageAgentNativeExtensionStorage(namespace = "default") {
|
|
102
|
+
return {
|
|
103
|
+
list(collection, options, context) {
|
|
104
|
+
const storage = localStorageRef();
|
|
105
|
+
const scope = storageScope(options, context);
|
|
106
|
+
const keys = scope === "all"
|
|
107
|
+
? listLocalStorageBuckets(storage, namespace, context.extensionId, collection)
|
|
108
|
+
: [bucketKey(namespace, context.extensionId, scope, collection)];
|
|
109
|
+
const rows = keys.flatMap((key) => Object.values(readBucket(storage, key)));
|
|
110
|
+
const limit = options?.limit ?? 100;
|
|
111
|
+
return rows
|
|
112
|
+
.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt))
|
|
113
|
+
.slice(0, Math.max(0, limit));
|
|
114
|
+
},
|
|
115
|
+
get(collection, id, options, context) {
|
|
116
|
+
const rows = this.list(collection, options, context);
|
|
117
|
+
if (rows instanceof Promise) {
|
|
118
|
+
return rows.then((resolved) => resolved.find((row) => row.id === id) ?? null);
|
|
119
|
+
}
|
|
120
|
+
return rows.find((row) => row.id === id) ?? null;
|
|
121
|
+
},
|
|
122
|
+
set(collection, id, data, options, context) {
|
|
123
|
+
const storage = localStorageRef();
|
|
124
|
+
const scope = storageScope(options, context);
|
|
125
|
+
if (scope === "all") {
|
|
126
|
+
throw new Error('Extension data writes cannot use scope "all"');
|
|
127
|
+
}
|
|
128
|
+
const key = bucketKey(namespace, context.extensionId, scope, collection);
|
|
129
|
+
const bucket = readBucket(storage, key);
|
|
130
|
+
const now = new Date().toISOString();
|
|
131
|
+
const row = {
|
|
132
|
+
id,
|
|
133
|
+
extensionId: context.extensionId,
|
|
134
|
+
collection,
|
|
135
|
+
data,
|
|
136
|
+
scope,
|
|
137
|
+
createdAt: bucket[id]?.createdAt ?? now,
|
|
138
|
+
updatedAt: now,
|
|
139
|
+
};
|
|
140
|
+
bucket[id] = row;
|
|
141
|
+
writeBucket(storage, key, bucket);
|
|
142
|
+
return row;
|
|
143
|
+
},
|
|
144
|
+
remove(collection, id, options, context) {
|
|
145
|
+
const storage = localStorageRef();
|
|
146
|
+
const scope = storageScope(options, context);
|
|
147
|
+
if (scope === "all") {
|
|
148
|
+
throw new Error('Extension data deletes cannot use scope "all"');
|
|
149
|
+
}
|
|
150
|
+
const key = bucketKey(namespace, context.extensionId, scope, collection);
|
|
151
|
+
const bucket = readBucket(storage, key);
|
|
152
|
+
const removed = Boolean(bucket[id]);
|
|
153
|
+
delete bucket[id];
|
|
154
|
+
writeBucket(storage, key, bucket);
|
|
155
|
+
return { removed };
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
async function resolveHttpStorageHeaders(headers, context) {
|
|
160
|
+
return typeof headers === "function" ? headers(context) : headers;
|
|
161
|
+
}
|
|
162
|
+
async function readHttpStorageResponse(response) {
|
|
163
|
+
const text = await response.text();
|
|
164
|
+
let body = text;
|
|
165
|
+
if (text) {
|
|
166
|
+
try {
|
|
167
|
+
body = JSON.parse(text);
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
body = text;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (!response.ok) {
|
|
174
|
+
const message = body && typeof body === "object" && "error" in body
|
|
175
|
+
? String(body.error)
|
|
176
|
+
: `Extension storage request failed: ${response.status}`;
|
|
177
|
+
throw new Error(message);
|
|
178
|
+
}
|
|
179
|
+
if (body && typeof body === "object" && "result" in body) {
|
|
180
|
+
return body.result;
|
|
181
|
+
}
|
|
182
|
+
return body;
|
|
183
|
+
}
|
|
184
|
+
export function createHttpAgentNativeExtensionStorage({ endpoint, fetch: fetchImpl, headers, credentials = "same-origin", }) {
|
|
185
|
+
const run = async (operation, collection, context, options, id, data) => {
|
|
186
|
+
const requestFetch = fetchImpl ?? fetch;
|
|
187
|
+
if (typeof requestFetch !== "function") {
|
|
188
|
+
throw new Error("fetch is not available for extension storage");
|
|
189
|
+
}
|
|
190
|
+
const resolvedHeaders = new Headers(await resolveHttpStorageHeaders(headers, context));
|
|
191
|
+
resolvedHeaders.set("Content-Type", "application/json");
|
|
192
|
+
const response = await requestFetch(endpoint, {
|
|
193
|
+
method: "POST",
|
|
194
|
+
credentials,
|
|
195
|
+
headers: resolvedHeaders,
|
|
196
|
+
body: JSON.stringify({
|
|
197
|
+
operation,
|
|
198
|
+
extensionId: context.extensionId,
|
|
199
|
+
slotId: context.slotId,
|
|
200
|
+
collection,
|
|
201
|
+
id,
|
|
202
|
+
data,
|
|
203
|
+
options: options ?? {},
|
|
204
|
+
context,
|
|
205
|
+
}),
|
|
206
|
+
});
|
|
207
|
+
return readHttpStorageResponse(response);
|
|
208
|
+
};
|
|
209
|
+
return {
|
|
210
|
+
list(collection, options, context) {
|
|
211
|
+
return run("list", collection, context, options);
|
|
212
|
+
},
|
|
213
|
+
get(collection, id, options, context) {
|
|
214
|
+
return run("get", collection, context, options, id);
|
|
215
|
+
},
|
|
216
|
+
set(collection, id, data, options, context) {
|
|
217
|
+
return run("set", collection, context, options, id, data);
|
|
218
|
+
},
|
|
219
|
+
remove(collection, id, options, context) {
|
|
220
|
+
return run("remove", collection, context, options, id);
|
|
221
|
+
},
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
export function normalizeAgentNativeExtensionSandbox(sandbox) {
|
|
225
|
+
const tokens = new Set((sandbox ?? "allow-scripts allow-forms allow-popups allow-downloads")
|
|
226
|
+
.split(/\s+/)
|
|
227
|
+
.filter(Boolean));
|
|
228
|
+
tokens.delete("allow-same-origin");
|
|
229
|
+
tokens.add("allow-scripts");
|
|
230
|
+
return Array.from(tokens).join(" ");
|
|
231
|
+
}
|
|
232
|
+
export function buildAgentNativeExtensionHtml({ extensionId, content, title, slotId, slotContext, themeCss = "", isDark = false, }) {
|
|
233
|
+
const extensionIdJson = safeJson(extensionId);
|
|
234
|
+
const slotIdJson = safeJson(slotId ?? "");
|
|
235
|
+
const slotContextJson = safeJson(slotContext ?? {});
|
|
236
|
+
const messageTypesJson = safeJson({
|
|
237
|
+
host: AGENT_NATIVE_HOST_MESSAGE_TYPES,
|
|
238
|
+
extension: AGENT_NATIVE_EXTENSION_MESSAGE_TYPES,
|
|
239
|
+
});
|
|
240
|
+
const titleText = title ?? "Agent Native extension";
|
|
241
|
+
return `<!DOCTYPE html>
|
|
242
|
+
<html lang="en"${isDark ? ' class="dark"' : ""}>
|
|
243
|
+
<head>
|
|
244
|
+
<meta charset="utf-8" />
|
|
245
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
246
|
+
<meta http-equiv="Content-Security-Policy" content="${escapeHtmlAttribute(EXTENSION_IFRAME_META_CSP)}" />
|
|
247
|
+
<title>${escapeHtmlAttribute(titleText)}</title>
|
|
248
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
249
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
250
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300..700&display=swap" rel="stylesheet" />
|
|
251
|
+
<script
|
|
252
|
+
src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4.2.4"
|
|
253
|
+
integrity="sha384-yNSZBFvuOWcmww494a9+1zNuvgUGEXoWkein7cxP8wHUTi3iXCU4vJ7hr3tzBCml"
|
|
254
|
+
crossorigin="anonymous"
|
|
255
|
+
></script>
|
|
256
|
+
<script
|
|
257
|
+
defer
|
|
258
|
+
src="https://cdn.jsdelivr.net/npm/alpinejs@3.15.11/dist/cdn.min.js"
|
|
259
|
+
integrity="sha384-WPtu0YHhJ3arcykfnv1JgUffWDSKRnqnDeTpJUbOc2os2moEmLkIdaeR0trPN4be"
|
|
260
|
+
crossorigin="anonymous"
|
|
261
|
+
></script>
|
|
262
|
+
<style>${themeCss}</style>
|
|
263
|
+
<style type="text/tailwindcss">
|
|
264
|
+
@custom-variant dark (&:where(.dark, .dark *));
|
|
265
|
+
@theme {
|
|
266
|
+
--color-border: hsl(var(--border, 214 32% 91%));
|
|
267
|
+
--color-background: hsl(var(--background, 0 0% 100%));
|
|
268
|
+
--color-foreground: hsl(var(--foreground, 222 47% 11%));
|
|
269
|
+
--color-primary: hsl(var(--primary, 222 47% 11%));
|
|
270
|
+
--color-primary-foreground: hsl(var(--primary-foreground, 210 40% 98%));
|
|
271
|
+
--color-muted: hsl(var(--muted, 210 40% 96%));
|
|
272
|
+
--color-muted-foreground: hsl(var(--muted-foreground, 215 16% 47%));
|
|
273
|
+
--color-card: hsl(var(--card, 0 0% 100%));
|
|
274
|
+
--color-card-foreground: hsl(var(--card-foreground, 222 47% 11%));
|
|
275
|
+
--radius-lg: var(--radius, .5rem);
|
|
276
|
+
--radius-md: calc(var(--radius, .5rem) - 2px);
|
|
277
|
+
--radius-sm: calc(var(--radius, .5rem) - 4px);
|
|
278
|
+
}
|
|
279
|
+
</style>
|
|
280
|
+
<style>
|
|
281
|
+
*, *::before, *::after { box-sizing: border-box; border-color: hsl(var(--border, 214 32% 91%)); }
|
|
282
|
+
html, body { margin: 0; min-height: 100%; background: transparent; color: hsl(var(--foreground, 222 47% 11%)); }
|
|
283
|
+
body {
|
|
284
|
+
--agent-native-extension-padding: clamp(12px, 2vw, 20px);
|
|
285
|
+
font-family: Inter, ui-sans-serif, system-ui, sans-serif;
|
|
286
|
+
padding: var(--agent-native-extension-padding);
|
|
287
|
+
}
|
|
288
|
+
body:has(> [data-extension-layout="full-bleed"]),
|
|
289
|
+
body:has(> [data-extension-padding="none"]),
|
|
290
|
+
body:has(> .agent-native-extension-bleed) {
|
|
291
|
+
padding: 0;
|
|
292
|
+
}
|
|
293
|
+
</style>
|
|
294
|
+
<script>
|
|
295
|
+
(function() {
|
|
296
|
+
var messageTypes = ${messageTypesJson};
|
|
297
|
+
var extensionId = ${extensionIdJson};
|
|
298
|
+
var slotId = ${slotIdJson};
|
|
299
|
+
var slotContext = ${slotContextJson};
|
|
300
|
+
var requestSeq = 0;
|
|
301
|
+
var pending = {};
|
|
302
|
+
|
|
303
|
+
function nextRequestId(prefix) {
|
|
304
|
+
requestSeq += 1;
|
|
305
|
+
return prefix + '-' + Date.now() + '-' + requestSeq;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
function failMessage(message, fallback) {
|
|
309
|
+
return typeof message.error === 'string' ? message.error : fallback;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
function requestParent(message, responseType, timeoutMs) {
|
|
313
|
+
timeoutMs = timeoutMs || 30000;
|
|
314
|
+
return new Promise(function(resolve, reject) {
|
|
315
|
+
var requestId = message.requestId || nextRequestId('extension');
|
|
316
|
+
var timer = setTimeout(function() {
|
|
317
|
+
delete pending[requestId];
|
|
318
|
+
reject(new Error('Timed out waiting for host response'));
|
|
319
|
+
}, timeoutMs);
|
|
320
|
+
pending[requestId] = {
|
|
321
|
+
responseType: responseType,
|
|
322
|
+
resolve: resolve,
|
|
323
|
+
reject: reject,
|
|
324
|
+
timer: timer,
|
|
325
|
+
};
|
|
326
|
+
window.parent.postMessage(Object.assign({}, message, { requestId: requestId }), '*');
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
window.addEventListener('message', function(event) {
|
|
331
|
+
if (event.source !== window.parent) return;
|
|
332
|
+
var message = event.data || {};
|
|
333
|
+
|
|
334
|
+
if (message.type === messageTypes.host.INIT) {
|
|
335
|
+
agentNative.init = message;
|
|
336
|
+
agentNative.contextSnapshot = message.context || null;
|
|
337
|
+
agentNative.actionsSnapshot = message.actions || [];
|
|
338
|
+
window.dispatchEvent(new CustomEvent('agentNative:init', { detail: message }));
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
if (message.type === messageTypes.extension.SLOT_CONTEXT) {
|
|
343
|
+
slotContext = message.context || {};
|
|
344
|
+
agentNative.slotContext = slotContext;
|
|
345
|
+
window.slotContext = slotContext;
|
|
346
|
+
window.dispatchEvent(new CustomEvent('agentNative:slot-context', { detail: slotContext }));
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
var entry = pending[message.requestId];
|
|
351
|
+
if (!entry || message.type !== entry.responseType) return;
|
|
352
|
+
delete pending[message.requestId];
|
|
353
|
+
clearTimeout(entry.timer);
|
|
354
|
+
if (message.ok === false) {
|
|
355
|
+
entry.reject(new Error(failMessage(message, 'Host request failed')));
|
|
356
|
+
} else {
|
|
357
|
+
entry.resolve(message);
|
|
358
|
+
}
|
|
359
|
+
});
|
|
360
|
+
|
|
361
|
+
function hostContext() {
|
|
362
|
+
return requestParent(
|
|
363
|
+
{ type: messageTypes.host.GET_CONTEXT },
|
|
364
|
+
messageTypes.host.CONTEXT,
|
|
365
|
+
).then(function(message) { return message.context || {}; });
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
function hostActions() {
|
|
369
|
+
return requestParent(
|
|
370
|
+
{ type: messageTypes.host.LIST_ACTIONS },
|
|
371
|
+
messageTypes.host.ACTIONS,
|
|
372
|
+
).then(function(message) { return message.actions || []; });
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
function hostAction(name, args) {
|
|
376
|
+
return requestParent(
|
|
377
|
+
{ type: messageTypes.host.RUN_ACTION, name: name, args: args || {} },
|
|
378
|
+
messageTypes.host.ACTION_RESULT,
|
|
379
|
+
).then(function(message) { return message.result; });
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
function hostCommand(command, payload) {
|
|
383
|
+
return requestParent(
|
|
384
|
+
{ type: messageTypes.host.COMMAND, command: command, payload: payload },
|
|
385
|
+
messageTypes.host.COMMAND_RESULT,
|
|
386
|
+
).then(function(message) { return message.result; });
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
function storageRequest(op, collection, id, data, options) {
|
|
390
|
+
return requestParent(
|
|
391
|
+
{
|
|
392
|
+
type: messageTypes.extension.STORAGE_REQUEST,
|
|
393
|
+
op: op,
|
|
394
|
+
collection: collection,
|
|
395
|
+
id: id,
|
|
396
|
+
data: data,
|
|
397
|
+
options: options || {},
|
|
398
|
+
},
|
|
399
|
+
messageTypes.extension.STORAGE_RESPONSE,
|
|
400
|
+
).then(function(message) { return message.result; });
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
var extensionData = {
|
|
404
|
+
list: function(collection, options) {
|
|
405
|
+
return storageRequest('list', collection, undefined, undefined, options);
|
|
406
|
+
},
|
|
407
|
+
get: function(collection, id, options) {
|
|
408
|
+
return storageRequest('get', collection, id, undefined, options);
|
|
409
|
+
},
|
|
410
|
+
set: function(collection, id, data, options) {
|
|
411
|
+
return storageRequest('set', collection, id, data, options);
|
|
412
|
+
},
|
|
413
|
+
remove: function(collection, id, options) {
|
|
414
|
+
return storageRequest('remove', collection, id, undefined, options);
|
|
415
|
+
},
|
|
416
|
+
};
|
|
417
|
+
|
|
418
|
+
var agentNative = {
|
|
419
|
+
version: '0.1.0',
|
|
420
|
+
extensionId: extensionId,
|
|
421
|
+
slotId: slotId,
|
|
422
|
+
slotContext: slotContext,
|
|
423
|
+
contextSnapshot: null,
|
|
424
|
+
actionsSnapshot: [],
|
|
425
|
+
init: null,
|
|
426
|
+
context: hostContext,
|
|
427
|
+
listActions: hostActions,
|
|
428
|
+
action: hostAction,
|
|
429
|
+
command: hostCommand,
|
|
430
|
+
refresh: function(payload) { return hostCommand('refreshData', payload); },
|
|
431
|
+
data: extensionData,
|
|
432
|
+
};
|
|
433
|
+
|
|
434
|
+
window.agentNative = agentNative;
|
|
435
|
+
window.appAction = hostAction;
|
|
436
|
+
window.extensionData = extensionData;
|
|
437
|
+
window.toolData = extensionData;
|
|
438
|
+
window.extensionId = extensionId;
|
|
439
|
+
window.toolId = extensionId;
|
|
440
|
+
window.slotContext = slotContext;
|
|
441
|
+
|
|
442
|
+
function reportHeight() {
|
|
443
|
+
try {
|
|
444
|
+
var doc = document.documentElement;
|
|
445
|
+
var body = document.body;
|
|
446
|
+
var height = Math.max(
|
|
447
|
+
doc ? doc.scrollHeight : 0,
|
|
448
|
+
doc ? doc.offsetHeight : 0,
|
|
449
|
+
body ? body.scrollHeight : 0,
|
|
450
|
+
body ? body.offsetHeight : 0,
|
|
451
|
+
);
|
|
452
|
+
window.parent.postMessage({
|
|
453
|
+
type: messageTypes.extension.RESIZE,
|
|
454
|
+
extensionId: extensionId,
|
|
455
|
+
slotId: slotId,
|
|
456
|
+
height: height,
|
|
457
|
+
}, '*');
|
|
458
|
+
} catch (_) {}
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
window.addEventListener('load', reportHeight);
|
|
462
|
+
if (typeof ResizeObserver !== 'undefined') {
|
|
463
|
+
new ResizeObserver(reportHeight).observe(document.documentElement);
|
|
464
|
+
} else {
|
|
465
|
+
setInterval(reportHeight, 1000);
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
window.parent.postMessage({
|
|
469
|
+
type: messageTypes.host.READY,
|
|
470
|
+
requestId: nextRequestId('ready'),
|
|
471
|
+
}, '*');
|
|
472
|
+
})();
|
|
473
|
+
</script>
|
|
474
|
+
</head>
|
|
475
|
+
<body>
|
|
476
|
+
${content}
|
|
477
|
+
</body>
|
|
478
|
+
</html>`;
|
|
479
|
+
}
|
|
480
|
+
//# sourceMappingURL=portable-extension.js.map
|