@agent-native/core 0.15.13 → 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 +26 -2
- 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,134 @@
|
|
|
1
|
+
export type WorkspaceConnectionCapability = "search" | "import" | "messages" | "meetings" | "crm" | "code" | "docs";
|
|
2
|
+
export type WorkspaceConnectionTemplateUse = "analytics" | "brain" | "calendar" | "clips" | "content" | "design" | "dispatch" | "forms" | "mail" | "slides" | "videos";
|
|
3
|
+
export type WorkspaceConnectionProviderId = "slack" | "github" | "notion" | "gmail" | "google_drive" | "hubspot" | "granola" | "clips" | "generic";
|
|
4
|
+
export interface WorkspaceConnectionCredentialKey {
|
|
5
|
+
key: string;
|
|
6
|
+
label: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
required?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface WorkspaceConnectionProvider {
|
|
11
|
+
id: WorkspaceConnectionProviderId;
|
|
12
|
+
label: string;
|
|
13
|
+
description: string;
|
|
14
|
+
credentialKeys: readonly WorkspaceConnectionCredentialKey[];
|
|
15
|
+
capabilities: readonly WorkspaceConnectionCapability[];
|
|
16
|
+
recommendedTemplateUses: readonly WorkspaceConnectionTemplateUse[];
|
|
17
|
+
}
|
|
18
|
+
export interface ListWorkspaceConnectionProvidersOptions {
|
|
19
|
+
capability?: WorkspaceConnectionCapability;
|
|
20
|
+
templateUse?: WorkspaceConnectionTemplateUse;
|
|
21
|
+
}
|
|
22
|
+
export declare function defineWorkspaceConnectionProvider<const T extends WorkspaceConnectionProvider>(provider: T): T;
|
|
23
|
+
export declare const WORKSPACE_CONNECTION_PROVIDERS: readonly [{
|
|
24
|
+
readonly id: "slack";
|
|
25
|
+
readonly label: "Slack";
|
|
26
|
+
readonly description: "Workspace conversations and channel history for company memory, support workflows, and messaging automations.";
|
|
27
|
+
readonly credentialKeys: readonly [{
|
|
28
|
+
readonly key: "SLACK_BOT_TOKEN";
|
|
29
|
+
readonly label: "Slack bot token";
|
|
30
|
+
readonly description: "Bot token with the smallest channel and history scopes needed by the template.";
|
|
31
|
+
readonly required: true;
|
|
32
|
+
}];
|
|
33
|
+
readonly capabilities: readonly ["search", "import", "messages"];
|
|
34
|
+
readonly recommendedTemplateUses: readonly ["brain", "dispatch", "analytics"];
|
|
35
|
+
}, {
|
|
36
|
+
readonly id: "github";
|
|
37
|
+
readonly label: "GitHub";
|
|
38
|
+
readonly description: "Repository, issue, pull request, and code context for product memory, engineering workflows, and analytics.";
|
|
39
|
+
readonly credentialKeys: readonly [{
|
|
40
|
+
readonly key: "GITHUB_TOKEN";
|
|
41
|
+
readonly label: "GitHub token";
|
|
42
|
+
readonly description: "Fine-grained token or app credential scoped to the repositories the workspace should access.";
|
|
43
|
+
readonly required: true;
|
|
44
|
+
}];
|
|
45
|
+
readonly capabilities: readonly ["search", "import", "code", "docs"];
|
|
46
|
+
readonly recommendedTemplateUses: readonly ["brain", "analytics", "dispatch"];
|
|
47
|
+
}, {
|
|
48
|
+
readonly id: "notion";
|
|
49
|
+
readonly label: "Notion";
|
|
50
|
+
readonly description: "Workspace docs, wikis, pages, and databases for knowledge capture and search.";
|
|
51
|
+
readonly credentialKeys: readonly [{
|
|
52
|
+
readonly key: "NOTION_API_KEY";
|
|
53
|
+
readonly label: "Notion API key";
|
|
54
|
+
readonly description: "Integration secret with access to the pages or databases shared with the integration.";
|
|
55
|
+
readonly required: true;
|
|
56
|
+
}];
|
|
57
|
+
readonly capabilities: readonly ["search", "import", "docs"];
|
|
58
|
+
readonly recommendedTemplateUses: readonly ["brain", "content", "dispatch"];
|
|
59
|
+
}, {
|
|
60
|
+
readonly id: "gmail";
|
|
61
|
+
readonly label: "Gmail";
|
|
62
|
+
readonly description: "Mailbox messages and threads for search, triage, customer context, and agent replies.";
|
|
63
|
+
readonly credentialKeys: readonly [{
|
|
64
|
+
readonly key: "GOOGLE_CLIENT_ID";
|
|
65
|
+
readonly label: "Google OAuth client ID";
|
|
66
|
+
readonly required: true;
|
|
67
|
+
}, {
|
|
68
|
+
readonly key: "GOOGLE_CLIENT_SECRET";
|
|
69
|
+
readonly label: "Google OAuth client secret";
|
|
70
|
+
readonly required: true;
|
|
71
|
+
}];
|
|
72
|
+
readonly capabilities: readonly ["search", "import", "messages"];
|
|
73
|
+
readonly recommendedTemplateUses: readonly ["mail", "brain", "dispatch"];
|
|
74
|
+
}, {
|
|
75
|
+
readonly id: "google_drive";
|
|
76
|
+
readonly label: "Google Drive";
|
|
77
|
+
readonly description: "Drive files, Docs, Sheets, and Slides for document search and import workflows.";
|
|
78
|
+
readonly credentialKeys: readonly [{
|
|
79
|
+
readonly key: "GOOGLE_CLIENT_ID";
|
|
80
|
+
readonly label: "Google OAuth client ID";
|
|
81
|
+
readonly required: true;
|
|
82
|
+
}, {
|
|
83
|
+
readonly key: "GOOGLE_CLIENT_SECRET";
|
|
84
|
+
readonly label: "Google OAuth client secret";
|
|
85
|
+
readonly required: true;
|
|
86
|
+
}];
|
|
87
|
+
readonly capabilities: readonly ["search", "import", "docs"];
|
|
88
|
+
readonly recommendedTemplateUses: readonly ["brain", "content", "slides", "dispatch"];
|
|
89
|
+
}, {
|
|
90
|
+
readonly id: "hubspot";
|
|
91
|
+
readonly label: "HubSpot";
|
|
92
|
+
readonly description: "CRM records, companies, contacts, deals, and engagement history for customer-aware apps.";
|
|
93
|
+
readonly credentialKeys: readonly [{
|
|
94
|
+
readonly key: "HUBSPOT_PRIVATE_APP_TOKEN";
|
|
95
|
+
readonly label: "HubSpot private app token";
|
|
96
|
+
readonly description: "Private app token scoped to the CRM objects the workspace needs.";
|
|
97
|
+
readonly required: true;
|
|
98
|
+
}];
|
|
99
|
+
readonly capabilities: readonly ["search", "import", "crm"];
|
|
100
|
+
readonly recommendedTemplateUses: readonly ["analytics", "brain", "mail", "dispatch"];
|
|
101
|
+
}, {
|
|
102
|
+
readonly id: "granola";
|
|
103
|
+
readonly label: "Granola";
|
|
104
|
+
readonly description: "Meeting notes and transcripts for company memory and follow-up workflows.";
|
|
105
|
+
readonly credentialKeys: readonly [{
|
|
106
|
+
readonly key: "GRANOLA_API_KEY";
|
|
107
|
+
readonly label: "Granola API key";
|
|
108
|
+
readonly description: "API key for accessible team notes; templates should respect Granola's workspace visibility.";
|
|
109
|
+
readonly required: true;
|
|
110
|
+
}];
|
|
111
|
+
readonly capabilities: readonly ["search", "import", "meetings", "docs"];
|
|
112
|
+
readonly recommendedTemplateUses: readonly ["brain", "calendar", "dispatch"];
|
|
113
|
+
}, {
|
|
114
|
+
readonly id: "clips";
|
|
115
|
+
readonly label: "Clips";
|
|
116
|
+
readonly description: "Agent-native Clips exports and recordings for transcript import and searchable meeting context.";
|
|
117
|
+
readonly credentialKeys: readonly [];
|
|
118
|
+
readonly capabilities: readonly ["search", "import", "meetings"];
|
|
119
|
+
readonly recommendedTemplateUses: readonly ["brain", "clips", "videos"];
|
|
120
|
+
}, {
|
|
121
|
+
readonly id: "generic";
|
|
122
|
+
readonly label: "Generic";
|
|
123
|
+
readonly description: "Custom webhooks, CSV exports, transcript drops, and one-off sources that do not need a first-class provider yet.";
|
|
124
|
+
readonly credentialKeys: readonly [];
|
|
125
|
+
readonly capabilities: readonly ["search", "import", "docs"];
|
|
126
|
+
readonly recommendedTemplateUses: readonly ["brain", "analytics", "content", "dispatch", "forms"];
|
|
127
|
+
}];
|
|
128
|
+
export declare function listWorkspaceConnectionProviders(options?: ListWorkspaceConnectionProvidersOptions): WorkspaceConnectionProvider[];
|
|
129
|
+
export declare function getWorkspaceConnectionProvider(id: string): WorkspaceConnectionProvider | undefined;
|
|
130
|
+
export declare function isWorkspaceConnectionProviderId(id: string): id is WorkspaceConnectionProviderId;
|
|
131
|
+
export declare function listWorkspaceConnectionProvidersForTemplate(templateUse: WorkspaceConnectionTemplateUse): WorkspaceConnectionProvider[];
|
|
132
|
+
export declare function listWorkspaceConnectionProvidersForCapability(capability: WorkspaceConnectionCapability): WorkspaceConnectionProvider[];
|
|
133
|
+
export declare function workspaceConnectionProviderSupports(providerOrId: WorkspaceConnectionProvider | string, capability: WorkspaceConnectionCapability): boolean;
|
|
134
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/connections/catalog.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,6BAA6B,GACrC,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,UAAU,GACV,KAAK,GACL,MAAM,GACN,MAAM,CAAC;AAEX,MAAM,MAAM,8BAA8B,GACtC,WAAW,GACX,OAAO,GACP,UAAU,GACV,OAAO,GACP,SAAS,GACT,QAAQ,GACR,UAAU,GACV,OAAO,GACP,MAAM,GACN,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,MAAM,6BAA6B,GACrC,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,cAAc,GACd,SAAS,GACT,SAAS,GACT,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,WAAW,gCAAgC;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,6BAA6B,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,SAAS,gCAAgC,EAAE,CAAC;IAC5D,YAAY,EAAE,SAAS,6BAA6B,EAAE,CAAC;IACvD,uBAAuB,EAAE,SAAS,8BAA8B,EAAE,CAAC;CACpE;AAED,MAAM,WAAW,uCAAuC;IACtD,UAAU,CAAC,EAAE,6BAA6B,CAAC;IAC3C,WAAW,CAAC,EAAE,8BAA8B,CAAC;CAC9C;AAED,wBAAgB,iCAAiC,CAC/C,KAAK,CAAC,CAAC,SAAS,2BAA2B,EAC3C,QAAQ,EAAE,CAAC,GAAG,CAAC,CAEhB;AAED,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsJgB,CAAC;AAO5D,wBAAgB,gCAAgC,CAC9C,OAAO,GAAE,uCAA4C,GACpD,2BAA2B,EAAE,CAsB/B;AAED,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,MAAM,GACT,2BAA2B,GAAG,SAAS,CAGzC;AAED,wBAAgB,+BAA+B,CAC7C,EAAE,EAAE,MAAM,GACT,EAAE,IAAI,6BAA6B,CAErC;AAED,wBAAgB,2CAA2C,CACzD,WAAW,EAAE,8BAA8B,GAC1C,2BAA2B,EAAE,CAE/B;AAED,wBAAgB,6CAA6C,CAC3D,UAAU,EAAE,6BAA6B,GACxC,2BAA2B,EAAE,CAE/B;AAED,wBAAgB,mCAAmC,CACjD,YAAY,EAAE,2BAA2B,GAAG,MAAM,EAClD,UAAU,EAAE,6BAA6B,GACxC,OAAO,CAMT"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
export function defineWorkspaceConnectionProvider(provider) {
|
|
2
|
+
return provider;
|
|
3
|
+
}
|
|
4
|
+
export const WORKSPACE_CONNECTION_PROVIDERS = [
|
|
5
|
+
defineWorkspaceConnectionProvider({
|
|
6
|
+
id: "slack",
|
|
7
|
+
label: "Slack",
|
|
8
|
+
description: "Workspace conversations and channel history for company memory, support workflows, and messaging automations.",
|
|
9
|
+
credentialKeys: [
|
|
10
|
+
{
|
|
11
|
+
key: "SLACK_BOT_TOKEN",
|
|
12
|
+
label: "Slack bot token",
|
|
13
|
+
description: "Bot token with the smallest channel and history scopes needed by the template.",
|
|
14
|
+
required: true,
|
|
15
|
+
},
|
|
16
|
+
],
|
|
17
|
+
capabilities: ["search", "import", "messages"],
|
|
18
|
+
recommendedTemplateUses: ["brain", "dispatch", "analytics"],
|
|
19
|
+
}),
|
|
20
|
+
defineWorkspaceConnectionProvider({
|
|
21
|
+
id: "github",
|
|
22
|
+
label: "GitHub",
|
|
23
|
+
description: "Repository, issue, pull request, and code context for product memory, engineering workflows, and analytics.",
|
|
24
|
+
credentialKeys: [
|
|
25
|
+
{
|
|
26
|
+
key: "GITHUB_TOKEN",
|
|
27
|
+
label: "GitHub token",
|
|
28
|
+
description: "Fine-grained token or app credential scoped to the repositories the workspace should access.",
|
|
29
|
+
required: true,
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
capabilities: ["search", "import", "code", "docs"],
|
|
33
|
+
recommendedTemplateUses: ["brain", "analytics", "dispatch"],
|
|
34
|
+
}),
|
|
35
|
+
defineWorkspaceConnectionProvider({
|
|
36
|
+
id: "notion",
|
|
37
|
+
label: "Notion",
|
|
38
|
+
description: "Workspace docs, wikis, pages, and databases for knowledge capture and search.",
|
|
39
|
+
credentialKeys: [
|
|
40
|
+
{
|
|
41
|
+
key: "NOTION_API_KEY",
|
|
42
|
+
label: "Notion API key",
|
|
43
|
+
description: "Integration secret with access to the pages or databases shared with the integration.",
|
|
44
|
+
required: true,
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
capabilities: ["search", "import", "docs"],
|
|
48
|
+
recommendedTemplateUses: ["brain", "content", "dispatch"],
|
|
49
|
+
}),
|
|
50
|
+
defineWorkspaceConnectionProvider({
|
|
51
|
+
id: "gmail",
|
|
52
|
+
label: "Gmail",
|
|
53
|
+
description: "Mailbox messages and threads for search, triage, customer context, and agent replies.",
|
|
54
|
+
credentialKeys: [
|
|
55
|
+
{
|
|
56
|
+
key: "GOOGLE_CLIENT_ID",
|
|
57
|
+
label: "Google OAuth client ID",
|
|
58
|
+
required: true,
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
key: "GOOGLE_CLIENT_SECRET",
|
|
62
|
+
label: "Google OAuth client secret",
|
|
63
|
+
required: true,
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
capabilities: ["search", "import", "messages"],
|
|
67
|
+
recommendedTemplateUses: ["mail", "brain", "dispatch"],
|
|
68
|
+
}),
|
|
69
|
+
defineWorkspaceConnectionProvider({
|
|
70
|
+
id: "google_drive",
|
|
71
|
+
label: "Google Drive",
|
|
72
|
+
description: "Drive files, Docs, Sheets, and Slides for document search and import workflows.",
|
|
73
|
+
credentialKeys: [
|
|
74
|
+
{
|
|
75
|
+
key: "GOOGLE_CLIENT_ID",
|
|
76
|
+
label: "Google OAuth client ID",
|
|
77
|
+
required: true,
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
key: "GOOGLE_CLIENT_SECRET",
|
|
81
|
+
label: "Google OAuth client secret",
|
|
82
|
+
required: true,
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
capabilities: ["search", "import", "docs"],
|
|
86
|
+
recommendedTemplateUses: ["brain", "content", "slides", "dispatch"],
|
|
87
|
+
}),
|
|
88
|
+
defineWorkspaceConnectionProvider({
|
|
89
|
+
id: "hubspot",
|
|
90
|
+
label: "HubSpot",
|
|
91
|
+
description: "CRM records, companies, contacts, deals, and engagement history for customer-aware apps.",
|
|
92
|
+
credentialKeys: [
|
|
93
|
+
{
|
|
94
|
+
key: "HUBSPOT_PRIVATE_APP_TOKEN",
|
|
95
|
+
label: "HubSpot private app token",
|
|
96
|
+
description: "Private app token scoped to the CRM objects the workspace needs.",
|
|
97
|
+
required: true,
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
capabilities: ["search", "import", "crm"],
|
|
101
|
+
recommendedTemplateUses: ["analytics", "brain", "mail", "dispatch"],
|
|
102
|
+
}),
|
|
103
|
+
defineWorkspaceConnectionProvider({
|
|
104
|
+
id: "granola",
|
|
105
|
+
label: "Granola",
|
|
106
|
+
description: "Meeting notes and transcripts for company memory and follow-up workflows.",
|
|
107
|
+
credentialKeys: [
|
|
108
|
+
{
|
|
109
|
+
key: "GRANOLA_API_KEY",
|
|
110
|
+
label: "Granola API key",
|
|
111
|
+
description: "API key for accessible team notes; templates should respect Granola's workspace visibility.",
|
|
112
|
+
required: true,
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
capabilities: ["search", "import", "meetings", "docs"],
|
|
116
|
+
recommendedTemplateUses: ["brain", "calendar", "dispatch"],
|
|
117
|
+
}),
|
|
118
|
+
defineWorkspaceConnectionProvider({
|
|
119
|
+
id: "clips",
|
|
120
|
+
label: "Clips",
|
|
121
|
+
description: "Agent-native Clips exports and recordings for transcript import and searchable meeting context.",
|
|
122
|
+
credentialKeys: [],
|
|
123
|
+
capabilities: ["search", "import", "meetings"],
|
|
124
|
+
recommendedTemplateUses: ["brain", "clips", "videos"],
|
|
125
|
+
}),
|
|
126
|
+
defineWorkspaceConnectionProvider({
|
|
127
|
+
id: "generic",
|
|
128
|
+
label: "Generic",
|
|
129
|
+
description: "Custom webhooks, CSV exports, transcript drops, and one-off sources that do not need a first-class provider yet.",
|
|
130
|
+
credentialKeys: [],
|
|
131
|
+
capabilities: ["search", "import", "docs"],
|
|
132
|
+
recommendedTemplateUses: [
|
|
133
|
+
"brain",
|
|
134
|
+
"analytics",
|
|
135
|
+
"content",
|
|
136
|
+
"dispatch",
|
|
137
|
+
"forms",
|
|
138
|
+
],
|
|
139
|
+
}),
|
|
140
|
+
];
|
|
141
|
+
const PROVIDERS_BY_ID = new Map(WORKSPACE_CONNECTION_PROVIDERS.map((provider) => [provider.id, provider]));
|
|
142
|
+
export function listWorkspaceConnectionProviders(options = {}) {
|
|
143
|
+
return WORKSPACE_CONNECTION_PROVIDERS.filter((provider) => {
|
|
144
|
+
if (options.capability &&
|
|
145
|
+
!includesWorkspaceConnectionCapability(provider.capabilities, options.capability)) {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
if (options.templateUse &&
|
|
149
|
+
!includesWorkspaceConnectionTemplateUse(provider.recommendedTemplateUses, options.templateUse)) {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
return true;
|
|
153
|
+
}).map((provider) => ({ ...provider }));
|
|
154
|
+
}
|
|
155
|
+
export function getWorkspaceConnectionProvider(id) {
|
|
156
|
+
const provider = PROVIDERS_BY_ID.get(id);
|
|
157
|
+
return provider ? { ...provider } : undefined;
|
|
158
|
+
}
|
|
159
|
+
export function isWorkspaceConnectionProviderId(id) {
|
|
160
|
+
return PROVIDERS_BY_ID.has(id);
|
|
161
|
+
}
|
|
162
|
+
export function listWorkspaceConnectionProvidersForTemplate(templateUse) {
|
|
163
|
+
return listWorkspaceConnectionProviders({ templateUse });
|
|
164
|
+
}
|
|
165
|
+
export function listWorkspaceConnectionProvidersForCapability(capability) {
|
|
166
|
+
return listWorkspaceConnectionProviders({ capability });
|
|
167
|
+
}
|
|
168
|
+
export function workspaceConnectionProviderSupports(providerOrId, capability) {
|
|
169
|
+
const provider = typeof providerOrId === "string"
|
|
170
|
+
? getWorkspaceConnectionProvider(providerOrId)
|
|
171
|
+
: providerOrId;
|
|
172
|
+
return provider?.capabilities.includes(capability) ?? false;
|
|
173
|
+
}
|
|
174
|
+
function includesWorkspaceConnectionCapability(capabilities, capability) {
|
|
175
|
+
return capabilities.includes(capability);
|
|
176
|
+
}
|
|
177
|
+
function includesWorkspaceConnectionTemplateUse(templateUses, templateUse) {
|
|
178
|
+
return templateUses.includes(templateUse);
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/connections/catalog.ts"],"names":[],"mappings":"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","sourcesContent":["export type WorkspaceConnectionCapability =\n | \"search\"\n | \"import\"\n | \"messages\"\n | \"meetings\"\n | \"crm\"\n | \"code\"\n | \"docs\";\n\nexport type WorkspaceConnectionTemplateUse =\n | \"analytics\"\n | \"brain\"\n | \"calendar\"\n | \"clips\"\n | \"content\"\n | \"design\"\n | \"dispatch\"\n | \"forms\"\n | \"mail\"\n | \"slides\"\n | \"videos\";\n\nexport type WorkspaceConnectionProviderId =\n | \"slack\"\n | \"github\"\n | \"notion\"\n | \"gmail\"\n | \"google_drive\"\n | \"hubspot\"\n | \"granola\"\n | \"clips\"\n | \"generic\";\n\nexport interface WorkspaceConnectionCredentialKey {\n key: string;\n label: string;\n description?: string;\n required?: boolean;\n}\n\nexport interface WorkspaceConnectionProvider {\n id: WorkspaceConnectionProviderId;\n label: string;\n description: string;\n credentialKeys: readonly WorkspaceConnectionCredentialKey[];\n capabilities: readonly WorkspaceConnectionCapability[];\n recommendedTemplateUses: readonly WorkspaceConnectionTemplateUse[];\n}\n\nexport interface ListWorkspaceConnectionProvidersOptions {\n capability?: WorkspaceConnectionCapability;\n templateUse?: WorkspaceConnectionTemplateUse;\n}\n\nexport function defineWorkspaceConnectionProvider<\n const T extends WorkspaceConnectionProvider,\n>(provider: T): T {\n return provider;\n}\n\nexport const WORKSPACE_CONNECTION_PROVIDERS = [\n defineWorkspaceConnectionProvider({\n id: \"slack\",\n label: \"Slack\",\n description:\n \"Workspace conversations and channel history for company memory, support workflows, and messaging automations.\",\n credentialKeys: [\n {\n key: \"SLACK_BOT_TOKEN\",\n label: \"Slack bot token\",\n description:\n \"Bot token with the smallest channel and history scopes needed by the template.\",\n required: true,\n },\n ],\n capabilities: [\"search\", \"import\", \"messages\"],\n recommendedTemplateUses: [\"brain\", \"dispatch\", \"analytics\"],\n }),\n defineWorkspaceConnectionProvider({\n id: \"github\",\n label: \"GitHub\",\n description:\n \"Repository, issue, pull request, and code context for product memory, engineering workflows, and analytics.\",\n credentialKeys: [\n {\n key: \"GITHUB_TOKEN\",\n label: \"GitHub token\",\n description:\n \"Fine-grained token or app credential scoped to the repositories the workspace should access.\",\n required: true,\n },\n ],\n capabilities: [\"search\", \"import\", \"code\", \"docs\"],\n recommendedTemplateUses: [\"brain\", \"analytics\", \"dispatch\"],\n }),\n defineWorkspaceConnectionProvider({\n id: \"notion\",\n label: \"Notion\",\n description:\n \"Workspace docs, wikis, pages, and databases for knowledge capture and search.\",\n credentialKeys: [\n {\n key: \"NOTION_API_KEY\",\n label: \"Notion API key\",\n description:\n \"Integration secret with access to the pages or databases shared with the integration.\",\n required: true,\n },\n ],\n capabilities: [\"search\", \"import\", \"docs\"],\n recommendedTemplateUses: [\"brain\", \"content\", \"dispatch\"],\n }),\n defineWorkspaceConnectionProvider({\n id: \"gmail\",\n label: \"Gmail\",\n description:\n \"Mailbox messages and threads for search, triage, customer context, and agent replies.\",\n credentialKeys: [\n {\n key: \"GOOGLE_CLIENT_ID\",\n label: \"Google OAuth client ID\",\n required: true,\n },\n {\n key: \"GOOGLE_CLIENT_SECRET\",\n label: \"Google OAuth client secret\",\n required: true,\n },\n ],\n capabilities: [\"search\", \"import\", \"messages\"],\n recommendedTemplateUses: [\"mail\", \"brain\", \"dispatch\"],\n }),\n defineWorkspaceConnectionProvider({\n id: \"google_drive\",\n label: \"Google Drive\",\n description:\n \"Drive files, Docs, Sheets, and Slides for document search and import workflows.\",\n credentialKeys: [\n {\n key: \"GOOGLE_CLIENT_ID\",\n label: \"Google OAuth client ID\",\n required: true,\n },\n {\n key: \"GOOGLE_CLIENT_SECRET\",\n label: \"Google OAuth client secret\",\n required: true,\n },\n ],\n capabilities: [\"search\", \"import\", \"docs\"],\n recommendedTemplateUses: [\"brain\", \"content\", \"slides\", \"dispatch\"],\n }),\n defineWorkspaceConnectionProvider({\n id: \"hubspot\",\n label: \"HubSpot\",\n description:\n \"CRM records, companies, contacts, deals, and engagement history for customer-aware apps.\",\n credentialKeys: [\n {\n key: \"HUBSPOT_PRIVATE_APP_TOKEN\",\n label: \"HubSpot private app token\",\n description:\n \"Private app token scoped to the CRM objects the workspace needs.\",\n required: true,\n },\n ],\n capabilities: [\"search\", \"import\", \"crm\"],\n recommendedTemplateUses: [\"analytics\", \"brain\", \"mail\", \"dispatch\"],\n }),\n defineWorkspaceConnectionProvider({\n id: \"granola\",\n label: \"Granola\",\n description:\n \"Meeting notes and transcripts for company memory and follow-up workflows.\",\n credentialKeys: [\n {\n key: \"GRANOLA_API_KEY\",\n label: \"Granola API key\",\n description:\n \"API key for accessible team notes; templates should respect Granola's workspace visibility.\",\n required: true,\n },\n ],\n capabilities: [\"search\", \"import\", \"meetings\", \"docs\"],\n recommendedTemplateUses: [\"brain\", \"calendar\", \"dispatch\"],\n }),\n defineWorkspaceConnectionProvider({\n id: \"clips\",\n label: \"Clips\",\n description:\n \"Agent-native Clips exports and recordings for transcript import and searchable meeting context.\",\n credentialKeys: [],\n capabilities: [\"search\", \"import\", \"meetings\"],\n recommendedTemplateUses: [\"brain\", \"clips\", \"videos\"],\n }),\n defineWorkspaceConnectionProvider({\n id: \"generic\",\n label: \"Generic\",\n description:\n \"Custom webhooks, CSV exports, transcript drops, and one-off sources that do not need a first-class provider yet.\",\n credentialKeys: [],\n capabilities: [\"search\", \"import\", \"docs\"],\n recommendedTemplateUses: [\n \"brain\",\n \"analytics\",\n \"content\",\n \"dispatch\",\n \"forms\",\n ],\n }),\n] as const satisfies readonly WorkspaceConnectionProvider[];\n\nconst PROVIDERS_BY_ID = new Map<\n WorkspaceConnectionProviderId,\n WorkspaceConnectionProvider\n>(WORKSPACE_CONNECTION_PROVIDERS.map((provider) => [provider.id, provider]));\n\nexport function listWorkspaceConnectionProviders(\n options: ListWorkspaceConnectionProvidersOptions = {},\n): WorkspaceConnectionProvider[] {\n return WORKSPACE_CONNECTION_PROVIDERS.filter((provider) => {\n if (\n options.capability &&\n !includesWorkspaceConnectionCapability(\n provider.capabilities,\n options.capability,\n )\n ) {\n return false;\n }\n if (\n options.templateUse &&\n !includesWorkspaceConnectionTemplateUse(\n provider.recommendedTemplateUses,\n options.templateUse,\n )\n ) {\n return false;\n }\n return true;\n }).map((provider) => ({ ...provider }));\n}\n\nexport function getWorkspaceConnectionProvider(\n id: string,\n): WorkspaceConnectionProvider | undefined {\n const provider = PROVIDERS_BY_ID.get(id as WorkspaceConnectionProviderId);\n return provider ? { ...provider } : undefined;\n}\n\nexport function isWorkspaceConnectionProviderId(\n id: string,\n): id is WorkspaceConnectionProviderId {\n return PROVIDERS_BY_ID.has(id as WorkspaceConnectionProviderId);\n}\n\nexport function listWorkspaceConnectionProvidersForTemplate(\n templateUse: WorkspaceConnectionTemplateUse,\n): WorkspaceConnectionProvider[] {\n return listWorkspaceConnectionProviders({ templateUse });\n}\n\nexport function listWorkspaceConnectionProvidersForCapability(\n capability: WorkspaceConnectionCapability,\n): WorkspaceConnectionProvider[] {\n return listWorkspaceConnectionProviders({ capability });\n}\n\nexport function workspaceConnectionProviderSupports(\n providerOrId: WorkspaceConnectionProvider | string,\n capability: WorkspaceConnectionCapability,\n): boolean {\n const provider =\n typeof providerOrId === \"string\"\n ? getWorkspaceConnectionProvider(providerOrId)\n : providerOrId;\n return provider?.capabilities.includes(capability) ?? false;\n}\n\nfunction includesWorkspaceConnectionCapability(\n capabilities: readonly WorkspaceConnectionCapability[],\n capability: WorkspaceConnectionCapability,\n): boolean {\n return capabilities.includes(capability);\n}\n\nfunction includesWorkspaceConnectionTemplateUse(\n templateUses: readonly WorkspaceConnectionTemplateUse[],\n templateUse: WorkspaceConnectionTemplateUse,\n): boolean {\n return templateUses.includes(templateUse);\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { WORKSPACE_CONNECTION_PROVIDERS, defineWorkspaceConnectionProvider, getWorkspaceConnectionProvider, isWorkspaceConnectionProviderId, listWorkspaceConnectionProviders, listWorkspaceConnectionProvidersForCapability, listWorkspaceConnectionProvidersForTemplate, workspaceConnectionProviderSupports, type ListWorkspaceConnectionProvidersOptions, type WorkspaceConnectionCapability, type WorkspaceConnectionCredentialKey, type WorkspaceConnectionProvider, type WorkspaceConnectionProviderId, type WorkspaceConnectionTemplateUse, } from "./catalog.js";
|
|
2
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connections/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,iCAAiC,EACjC,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,6CAA6C,EAC7C,2CAA2C,EAC3C,mCAAmC,EACnC,KAAK,uCAAuC,EAC5C,KAAK,6BAA6B,EAClC,KAAK,gCAAgC,EACrC,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,GACpC,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { WORKSPACE_CONNECTION_PROVIDERS, defineWorkspaceConnectionProvider, getWorkspaceConnectionProvider, isWorkspaceConnectionProviderId, listWorkspaceConnectionProviders, listWorkspaceConnectionProvidersForCapability, listWorkspaceConnectionProvidersForTemplate, workspaceConnectionProviderSupports, } from "./catalog.js";
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connections/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,iCAAiC,EACjC,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,6CAA6C,EAC7C,2CAA2C,EAC3C,mCAAmC,GAOpC,MAAM,cAAc,CAAC","sourcesContent":["export {\n WORKSPACE_CONNECTION_PROVIDERS,\n defineWorkspaceConnectionProvider,\n getWorkspaceConnectionProvider,\n isWorkspaceConnectionProviderId,\n listWorkspaceConnectionProviders,\n listWorkspaceConnectionProvidersForCapability,\n listWorkspaceConnectionProvidersForTemplate,\n workspaceConnectionProviderSupports,\n type ListWorkspaceConnectionProvidersOptions,\n type WorkspaceConnectionCapability,\n type WorkspaceConnectionCredentialKey,\n type WorkspaceConnectionProvider,\n type WorkspaceConnectionProviderId,\n type WorkspaceConnectionTemplateUse,\n} from \"./catalog.js\";\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const EXTENSION_CHANGE_MARKER_KEY = "__extensions_change__";
|
|
2
|
+
export declare const EXTENSION_CHANGE_MARKER_ORG_PREFIX = "__org__:";
|
|
3
|
+
export interface ExtensionChangeTarget {
|
|
4
|
+
owner?: string;
|
|
5
|
+
orgId?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function extensionChangeMarkerSession(target: ExtensionChangeTarget): string | null;
|
|
8
|
+
export declare function extensionChangeMarkerValue(target: ExtensionChangeTarget): Record<string, string>;
|
|
9
|
+
export declare function parseExtensionChangeMarker(sessionId: unknown, value: unknown): ExtensionChangeTarget | null;
|
|
10
|
+
//# sourceMappingURL=change-marker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change-marker.d.ts","sourceRoot":"","sources":["../../src/extensions/change-marker.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,0BAA0B,CAAC;AACnE,eAAO,MAAM,kCAAkC,aAAa,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,qBAAqB,GAC5B,MAAM,GAAG,IAAI,CAKf;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,qBAAqB,GAC5B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB;AAED,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,OAAO,GACb,qBAAqB,GAAG,IAAI,CAuB9B"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export const EXTENSION_CHANGE_MARKER_KEY = "__extensions_change__";
|
|
2
|
+
export const EXTENSION_CHANGE_MARKER_ORG_PREFIX = "__org__:";
|
|
3
|
+
export function extensionChangeMarkerSession(target) {
|
|
4
|
+
if (target.owner)
|
|
5
|
+
return target.owner;
|
|
6
|
+
if (target.orgId)
|
|
7
|
+
return `${EXTENSION_CHANGE_MARKER_ORG_PREFIX}${target.orgId}`;
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
export function extensionChangeMarkerValue(target) {
|
|
11
|
+
return {
|
|
12
|
+
source: "extensions",
|
|
13
|
+
...(target.owner ? { owner: target.owner } : {}),
|
|
14
|
+
...(target.orgId ? { orgId: target.orgId } : {}),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function parseExtensionChangeMarker(sessionId, value) {
|
|
18
|
+
let parsed = value;
|
|
19
|
+
if (typeof value === "string") {
|
|
20
|
+
try {
|
|
21
|
+
parsed = JSON.parse(value);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
parsed = null;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (parsed && typeof parsed === "object") {
|
|
28
|
+
const record = parsed;
|
|
29
|
+
const owner = typeof record.owner === "string" ? record.owner : undefined;
|
|
30
|
+
const orgId = typeof record.orgId === "string" ? record.orgId : undefined;
|
|
31
|
+
if (owner || orgId)
|
|
32
|
+
return { owner, orgId };
|
|
33
|
+
}
|
|
34
|
+
if (typeof sessionId !== "string" || !sessionId)
|
|
35
|
+
return null;
|
|
36
|
+
if (sessionId.startsWith(EXTENSION_CHANGE_MARKER_ORG_PREFIX)) {
|
|
37
|
+
const orgId = sessionId.slice(EXTENSION_CHANGE_MARKER_ORG_PREFIX.length);
|
|
38
|
+
return orgId ? { orgId } : null;
|
|
39
|
+
}
|
|
40
|
+
return { owner: sessionId };
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=change-marker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change-marker.js","sourceRoot":"","sources":["../../src/extensions/change-marker.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,2BAA2B,GAAG,uBAAuB,CAAC;AACnE,MAAM,CAAC,MAAM,kCAAkC,GAAG,UAAU,CAAC;AAO7D,MAAM,UAAU,4BAA4B,CAC1C,MAA6B;IAE7B,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IACtC,IAAI,MAAM,CAAC,KAAK;QACd,OAAO,GAAG,kCAAkC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IAChE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAA6B;IAE7B,OAAO;QACL,MAAM,EAAE,YAAY;QACpB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,SAAkB,EAClB,KAAc;IAEd,IAAI,MAAM,GAAY,KAAK,CAAC;IAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAED,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,MAAiC,CAAC;QACjD,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,IAAI,KAAK,IAAI,KAAK;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC9C,CAAC;IAED,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC7D,IAAI,SAAS,CAAC,UAAU,CAAC,kCAAkC,CAAC,EAAE,CAAC;QAC7D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,kCAAkC,CAAC,MAAM,CAAC,CAAC;QACzE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAClC,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC9B,CAAC","sourcesContent":["export const EXTENSION_CHANGE_MARKER_KEY = \"__extensions_change__\";\nexport const EXTENSION_CHANGE_MARKER_ORG_PREFIX = \"__org__:\";\n\nexport interface ExtensionChangeTarget {\n owner?: string;\n orgId?: string;\n}\n\nexport function extensionChangeMarkerSession(\n target: ExtensionChangeTarget,\n): string | null {\n if (target.owner) return target.owner;\n if (target.orgId)\n return `${EXTENSION_CHANGE_MARKER_ORG_PREFIX}${target.orgId}`;\n return null;\n}\n\nexport function extensionChangeMarkerValue(\n target: ExtensionChangeTarget,\n): Record<string, string> {\n return {\n source: \"extensions\",\n ...(target.owner ? { owner: target.owner } : {}),\n ...(target.orgId ? { orgId: target.orgId } : {}),\n };\n}\n\nexport function parseExtensionChangeMarker(\n sessionId: unknown,\n value: unknown,\n): ExtensionChangeTarget | null {\n let parsed: unknown = value;\n if (typeof value === \"string\") {\n try {\n parsed = JSON.parse(value);\n } catch {\n parsed = null;\n }\n }\n\n if (parsed && typeof parsed === \"object\") {\n const record = parsed as Record<string, unknown>;\n const owner = typeof record.owner === \"string\" ? record.owner : undefined;\n const orgId = typeof record.orgId === \"string\" ? record.orgId : undefined;\n if (owner || orgId) return { owner, orgId };\n }\n\n if (typeof sessionId !== \"string\" || !sessionId) return null;\n if (sessionId.startsWith(EXTENSION_CHANGE_MARKER_ORG_PREFIX)) {\n const orgId = sessionId.slice(EXTENSION_CHANGE_MARKER_ORG_PREFIX.length);\n return orgId ? { orgId } : null;\n }\n return { owner: sessionId };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/extensions/routes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/extensions/routes.ts"],"names":[],"mappings":"AAkDA,wBAAgB,uBAAuB,2FAuCtC"}
|
|
@@ -2,7 +2,6 @@ import { randomUUID } from "node:crypto";
|
|
|
2
2
|
import { defineEventHandler, getMethod, setResponseStatus, setResponseHeader, } from "h3";
|
|
3
3
|
import { readBody } from "../server/h3-helpers.js";
|
|
4
4
|
import { getSession } from "../server/auth.js";
|
|
5
|
-
import { recordChange } from "../server/poll.js";
|
|
6
5
|
import { runWithRequestContext, getRequestOrgId, } from "../server/request-context.js";
|
|
7
6
|
import { getOrgContext } from "../org/context.js";
|
|
8
7
|
import { getDbExec, isPostgres } from "../db/client.js";
|
|
@@ -36,7 +35,7 @@ export function createExtensionsHandler() {
|
|
|
36
35
|
}
|
|
37
36
|
const orgCtx = await getOrgContext(event).catch(() => null);
|
|
38
37
|
const userEmail = session.email;
|
|
39
|
-
const orgId = orgCtx?.orgId ?? undefined;
|
|
38
|
+
const orgId = orgCtx?.orgId ?? session.orgId ?? undefined;
|
|
40
39
|
try {
|
|
41
40
|
return await runWithRequestContext({ userEmail, orgId }, async () => {
|
|
42
41
|
await ensureExtensionsTables();
|
|
@@ -96,7 +95,6 @@ async function dispatch(event, method, parts, userEmail) {
|
|
|
96
95
|
return { error: "name is required" };
|
|
97
96
|
}
|
|
98
97
|
const extension = await createExtension(body);
|
|
99
|
-
recordChange({ source: "action", type: "change" });
|
|
100
98
|
setResponseStatus(event, 201);
|
|
101
99
|
return extension;
|
|
102
100
|
}
|
|
@@ -151,7 +149,6 @@ async function dispatch(event, method, parts, userEmail) {
|
|
|
151
149
|
setResponseStatus(event, 404);
|
|
152
150
|
return { error: "Extension not found" };
|
|
153
151
|
}
|
|
154
|
-
recordChange({ source: "action", type: "change" });
|
|
155
152
|
return { ok: true, hidden: true };
|
|
156
153
|
}
|
|
157
154
|
// POST /:id/unhide — restore an extension hidden by the current user.
|
|
@@ -161,7 +158,6 @@ async function dispatch(event, method, parts, userEmail) {
|
|
|
161
158
|
setResponseStatus(event, 404);
|
|
162
159
|
return { error: "Extension not found" };
|
|
163
160
|
}
|
|
164
|
-
recordChange({ source: "action", type: "change" });
|
|
165
161
|
return { ok: true, hidden: false };
|
|
166
162
|
}
|
|
167
163
|
// PUT /:id
|
|
@@ -189,7 +185,6 @@ async function dispatch(event, method, parts, userEmail) {
|
|
|
189
185
|
setResponseStatus(event, 404);
|
|
190
186
|
return { error: "Extension not found" };
|
|
191
187
|
}
|
|
192
|
-
recordChange({ source: "action", type: "change" });
|
|
193
188
|
return result;
|
|
194
189
|
}
|
|
195
190
|
// DELETE /:id
|
|
@@ -199,7 +194,6 @@ async function dispatch(event, method, parts, userEmail) {
|
|
|
199
194
|
setResponseStatus(event, 404);
|
|
200
195
|
return { error: "Extension not found" };
|
|
201
196
|
}
|
|
202
|
-
recordChange({ source: "action", type: "change" });
|
|
203
197
|
return { ok: true };
|
|
204
198
|
}
|
|
205
199
|
setResponseStatus(event, 404);
|