@agent-native/core 0.6.1 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -3
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +154 -4
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/types.d.ts +1 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/cli/create-workspace.d.ts +8 -0
- package/dist/cli/create-workspace.d.ts.map +1 -0
- package/dist/cli/create-workspace.js +18 -0
- package/dist/cli/create-workspace.js.map +1 -0
- package/dist/cli/create.d.ts +35 -7
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +444 -251
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/index.js +59 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/workspacify.d.ts +18 -0
- package/dist/cli/workspacify.d.ts.map +1 -0
- package/dist/cli/workspacify.js +74 -0
- package/dist/cli/workspacify.js.map +1 -0
- package/dist/client/AgentPanel.d.ts +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +63 -225
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
- package/dist/client/components/CodeRequiredDialog.js +86 -5
- package/dist/client/components/CodeRequiredDialog.js.map +1 -1
- package/dist/client/composer/MentionPopover.d.ts.map +1 -1
- package/dist/client/composer/MentionPopover.js +15 -2
- package/dist/client/composer/MentionPopover.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +3 -1
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/composer/types.d.ts +1 -1
- package/dist/client/composer/types.d.ts.map +1 -1
- package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -1
- package/dist/client/integrations/IntegrationsPanel.js +22 -9
- package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
- package/dist/client/onboarding/OnboardingBanner.d.ts +13 -0
- package/dist/client/onboarding/OnboardingBanner.d.ts.map +1 -0
- package/dist/client/onboarding/OnboardingBanner.js +36 -0
- package/dist/client/onboarding/OnboardingBanner.js.map +1 -0
- package/dist/client/onboarding/OnboardingPanel.d.ts +16 -0
- package/dist/client/onboarding/OnboardingPanel.d.ts.map +1 -0
- package/dist/client/onboarding/OnboardingPanel.js +360 -0
- package/dist/client/onboarding/OnboardingPanel.js.map +1 -0
- package/dist/client/onboarding/SetupButton.d.ts +10 -0
- package/dist/client/onboarding/SetupButton.d.ts.map +1 -0
- package/dist/client/onboarding/SetupButton.js +26 -0
- package/dist/client/onboarding/SetupButton.js.map +1 -0
- package/dist/client/onboarding/index.d.ts +12 -0
- package/dist/client/onboarding/index.d.ts.map +1 -0
- package/dist/client/onboarding/index.js +11 -0
- package/dist/client/onboarding/index.js.map +1 -0
- package/dist/client/onboarding/use-onboarding.d.ts +34 -0
- package/dist/client/onboarding/use-onboarding.d.ts.map +1 -0
- package/dist/client/onboarding/use-onboarding.js +101 -0
- package/dist/client/onboarding/use-onboarding.js.map +1 -0
- package/dist/client/org/TeamPage.d.ts +6 -1
- package/dist/client/org/TeamPage.d.ts.map +1 -1
- package/dist/client/org/TeamPage.js +85 -14
- package/dist/client/org/TeamPage.js.map +1 -1
- package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
- package/dist/client/resources/ResourceEditor.js +48 -77
- 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 +16 -3
- 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 +135 -9
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/resources/use-resources.d.ts +5 -0
- package/dist/client/resources/use-resources.d.ts.map +1 -1
- package/dist/client/resources/use-resources.js.map +1 -1
- package/dist/client/settings/AgentsSection.d.ts +2 -0
- package/dist/client/settings/AgentsSection.d.ts.map +1 -0
- package/dist/client/settings/AgentsSection.js +198 -0
- package/dist/client/settings/AgentsSection.js.map +1 -0
- package/dist/client/settings/BackgroundAgentSection.d.ts +2 -0
- package/dist/client/settings/BackgroundAgentSection.d.ts.map +1 -0
- package/dist/client/settings/BackgroundAgentSection.js +46 -0
- package/dist/client/settings/BackgroundAgentSection.js.map +1 -0
- package/dist/client/settings/BrowserSection.d.ts +2 -0
- package/dist/client/settings/BrowserSection.d.ts.map +1 -0
- package/dist/client/settings/BrowserSection.js +10 -0
- package/dist/client/settings/BrowserSection.js.map +1 -0
- package/dist/client/settings/ComingSoonSection.d.ts +13 -0
- package/dist/client/settings/ComingSoonSection.d.ts.map +1 -0
- package/dist/client/settings/ComingSoonSection.js +9 -0
- package/dist/client/settings/ComingSoonSection.js.map +1 -0
- package/dist/client/settings/LLMSection.d.ts +2 -0
- package/dist/client/settings/LLMSection.d.ts.map +1 -0
- package/dist/client/settings/LLMSection.js +64 -0
- package/dist/client/settings/LLMSection.js.map +1 -0
- package/dist/client/settings/SettingsPanel.d.ts +8 -0
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -0
- package/dist/client/settings/SettingsPanel.js +118 -0
- package/dist/client/settings/SettingsPanel.js.map +1 -0
- package/dist/client/settings/SettingsSection.d.ts +19 -0
- package/dist/client/settings/SettingsSection.d.ts.map +1 -0
- package/dist/client/settings/SettingsSection.js +10 -0
- package/dist/client/settings/SettingsSection.js.map +1 -0
- package/dist/client/settings/index.d.ts +3 -0
- package/dist/client/settings/index.d.ts.map +1 -0
- package/dist/client/settings/index.js +3 -0
- package/dist/client/settings/index.js.map +1 -0
- package/dist/client/settings/useBuilderStatus.d.ts +22 -0
- package/dist/client/settings/useBuilderStatus.d.ts.map +1 -0
- package/dist/client/settings/useBuilderStatus.js +41 -0
- package/dist/client/settings/useBuilderStatus.js.map +1 -0
- package/dist/deploy/build.js +198 -54
- package/dist/deploy/build.js.map +1 -1
- package/dist/deploy/route-discovery.d.ts +5 -0
- package/dist/deploy/route-discovery.d.ts.map +1 -1
- package/dist/deploy/route-discovery.js +38 -7
- package/dist/deploy/route-discovery.js.map +1 -1
- package/dist/deploy/workspace-core.d.ts +28 -0
- package/dist/deploy/workspace-core.d.ts.map +1 -0
- package/dist/deploy/workspace-core.js +223 -0
- package/dist/deploy/workspace-core.js.map +1 -0
- package/dist/deploy/workspace-deploy.d.ts +11 -0
- package/dist/deploy/workspace-deploy.d.ts.map +1 -0
- package/dist/deploy/workspace-deploy.js +148 -0
- package/dist/deploy/workspace-deploy.js.map +1 -0
- package/dist/file-upload/builder.d.ts +11 -0
- package/dist/file-upload/builder.d.ts.map +1 -0
- package/dist/file-upload/builder.js +53 -0
- package/dist/file-upload/builder.js.map +1 -0
- package/dist/file-upload/index.d.ts +4 -0
- package/dist/file-upload/index.d.ts.map +1 -0
- package/dist/file-upload/index.js +3 -0
- package/dist/file-upload/index.js.map +1 -0
- package/dist/file-upload/registry.d.ts +23 -0
- package/dist/file-upload/registry.d.ts.map +1 -0
- package/dist/file-upload/registry.js +52 -0
- package/dist/file-upload/registry.js.map +1 -0
- package/dist/file-upload/types.d.ts +37 -0
- package/dist/file-upload/types.d.ts.map +1 -0
- package/dist/file-upload/types.js +10 -0
- package/dist/file-upload/types.js.map +1 -0
- package/dist/integrations/adapters/google-docs.d.ts +89 -0
- package/dist/integrations/adapters/google-docs.d.ts.map +1 -0
- package/dist/integrations/adapters/google-docs.js +261 -0
- package/dist/integrations/adapters/google-docs.js.map +1 -0
- package/dist/integrations/adapters/slack.d.ts.map +1 -1
- package/dist/integrations/adapters/slack.js +34 -0
- package/dist/integrations/adapters/slack.js.map +1 -1
- package/dist/integrations/adapters/telegram.d.ts.map +1 -1
- package/dist/integrations/adapters/telegram.js +32 -0
- package/dist/integrations/adapters/telegram.js.map +1 -1
- package/dist/integrations/google-docs-poller.d.ts +54 -0
- package/dist/integrations/google-docs-poller.d.ts.map +1 -0
- package/dist/integrations/google-docs-poller.js +442 -0
- package/dist/integrations/google-docs-poller.js.map +1 -0
- package/dist/integrations/index.d.ts +2 -0
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/index.js +3 -0
- package/dist/integrations/index.js.map +1 -1
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +49 -2
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/integrations/types.d.ts +33 -0
- package/dist/integrations/types.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.d.ts +10 -1
- package/dist/integrations/webhook-handler.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.js +13 -3
- package/dist/integrations/webhook-handler.js.map +1 -1
- package/dist/jobs/scheduler.d.ts +3 -0
- package/dist/jobs/scheduler.d.ts.map +1 -1
- package/dist/jobs/scheduler.js +81 -60
- package/dist/jobs/scheduler.js.map +1 -1
- package/dist/jobs/tools.d.ts.map +1 -1
- package/dist/jobs/tools.js +20 -3
- package/dist/jobs/tools.js.map +1 -1
- package/dist/mcp-client/config.d.ts +46 -0
- package/dist/mcp-client/config.d.ts.map +1 -0
- package/dist/mcp-client/config.js +152 -0
- package/dist/mcp-client/config.js.map +1 -0
- package/dist/mcp-client/index.d.ts +17 -0
- package/dist/mcp-client/index.d.ts.map +1 -0
- package/dist/mcp-client/index.js +53 -0
- package/dist/mcp-client/index.js.map +1 -0
- package/dist/mcp-client/manager.d.ts +76 -0
- package/dist/mcp-client/manager.d.ts.map +1 -0
- package/dist/mcp-client/manager.js +212 -0
- package/dist/mcp-client/manager.js.map +1 -0
- package/dist/oauth-tokens/store.d.ts.map +1 -1
- package/dist/oauth-tokens/store.js +3 -1
- package/dist/oauth-tokens/store.js.map +1 -1
- package/dist/onboarding/default-steps.d.ts +10 -0
- package/dist/onboarding/default-steps.d.ts.map +1 -0
- package/dist/onboarding/default-steps.js +164 -0
- package/dist/onboarding/default-steps.js.map +1 -0
- package/dist/onboarding/index.d.ts +12 -0
- package/dist/onboarding/index.d.ts.map +1 -0
- package/dist/onboarding/index.js +11 -0
- package/dist/onboarding/index.js.map +1 -0
- package/dist/onboarding/plugin.d.ts +19 -0
- package/dist/onboarding/plugin.d.ts.map +1 -0
- package/dist/onboarding/plugin.js +147 -0
- package/dist/onboarding/plugin.js.map +1 -0
- package/dist/onboarding/registry.d.ts +24 -0
- package/dist/onboarding/registry.d.ts.map +1 -0
- package/dist/onboarding/registry.js +40 -0
- package/dist/onboarding/registry.js.map +1 -0
- package/dist/onboarding/types.d.ts +71 -0
- package/dist/onboarding/types.d.ts.map +1 -0
- package/dist/onboarding/types.js +10 -0
- package/dist/onboarding/types.js.map +1 -0
- package/dist/resources/agents.d.ts +4 -0
- package/dist/resources/agents.d.ts.map +1 -0
- package/dist/resources/agents.js +44 -0
- package/dist/resources/agents.js.map +1 -0
- package/dist/resources/handlers.d.ts +17 -0
- package/dist/resources/handlers.d.ts.map +1 -1
- package/dist/resources/handlers.js +49 -12
- package/dist/resources/handlers.js.map +1 -1
- package/dist/resources/metadata.d.ts +48 -0
- package/dist/resources/metadata.d.ts.map +1 -0
- package/dist/resources/metadata.js +150 -0
- package/dist/resources/metadata.js.map +1 -0
- package/dist/resources/script-helpers.d.ts.map +1 -1
- package/dist/resources/script-helpers.js +3 -2
- package/dist/resources/script-helpers.js.map +1 -1
- package/dist/resources/store.d.ts.map +1 -1
- package/dist/resources/store.js +32 -17
- package/dist/resources/store.js.map +1 -1
- package/dist/scripts/call-agent.d.ts.map +1 -1
- package/dist/scripts/call-agent.js +3 -2
- package/dist/scripts/call-agent.js.map +1 -1
- package/dist/scripts/chat/search-chats.d.ts.map +1 -1
- package/dist/scripts/chat/search-chats.js +2 -1
- package/dist/scripts/chat/search-chats.js.map +1 -1
- package/dist/scripts/core-scripts.d.ts.map +1 -1
- package/dist/scripts/core-scripts.js +2 -0
- package/dist/scripts/core-scripts.js.map +1 -1
- package/dist/scripts/db/scoping.d.ts.map +1 -1
- package/dist/scripts/db/scoping.js +3 -2
- package/dist/scripts/db/scoping.js.map +1 -1
- package/dist/scripts/docs/index.d.ts +2 -0
- package/dist/scripts/docs/index.d.ts.map +1 -0
- package/dist/scripts/docs/index.js +4 -0
- package/dist/scripts/docs/index.js.map +1 -0
- package/dist/scripts/docs/search.d.ts +13 -0
- package/dist/scripts/docs/search.d.ts.map +1 -0
- package/dist/scripts/docs/search.js +130 -0
- package/dist/scripts/docs/search.js.map +1 -0
- package/dist/scripts/resources/delete-memory.d.ts +7 -0
- package/dist/scripts/resources/delete-memory.d.ts.map +1 -0
- package/dist/scripts/resources/delete-memory.js +49 -0
- package/dist/scripts/resources/delete-memory.js.map +1 -0
- package/dist/scripts/resources/delete.d.ts.map +1 -1
- package/dist/scripts/resources/delete.js +2 -1
- package/dist/scripts/resources/delete.js.map +1 -1
- package/dist/scripts/resources/index.d.ts.map +1 -1
- package/dist/scripts/resources/index.js +2 -0
- package/dist/scripts/resources/index.js.map +1 -1
- package/dist/scripts/resources/list.d.ts.map +1 -1
- package/dist/scripts/resources/list.js +2 -1
- package/dist/scripts/resources/list.js.map +1 -1
- package/dist/scripts/resources/migrate-learnings.d.ts.map +1 -1
- package/dist/scripts/resources/migrate-learnings.js +2 -1
- package/dist/scripts/resources/migrate-learnings.js.map +1 -1
- package/dist/scripts/resources/read.d.ts.map +1 -1
- package/dist/scripts/resources/read.js +2 -1
- package/dist/scripts/resources/read.js.map +1 -1
- package/dist/scripts/resources/save-memory.d.ts +9 -0
- package/dist/scripts/resources/save-memory.d.ts.map +1 -0
- package/dist/scripts/resources/save-memory.js +78 -0
- package/dist/scripts/resources/save-memory.js.map +1 -0
- package/dist/scripts/resources/write.d.ts.map +1 -1
- package/dist/scripts/resources/write.js +2 -1
- package/dist/scripts/resources/write.js.map +1 -1
- package/dist/scripts/utils.d.ts +10 -1
- package/dist/scripts/utils.d.ts.map +1 -1
- package/dist/scripts/utils.js +45 -2
- package/dist/scripts/utils.js.map +1 -1
- package/dist/server/action-discovery.d.ts +5 -0
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +51 -20
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/action-routes.d.ts.map +1 -1
- package/dist/server/action-routes.js +63 -57
- package/dist/server/action-routes.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +3 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +363 -48
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-discovery.d.ts.map +1 -1
- package/dist/server/agent-discovery.js +11 -23
- package/dist/server/agent-discovery.js.map +1 -1
- package/dist/server/agent-teams.d.ts.map +1 -1
- package/dist/server/agent-teams.js +2 -1
- package/dist/server/agent-teams.js.map +1 -1
- package/dist/server/agents-bundle.d.ts +33 -5
- package/dist/server/agents-bundle.d.ts.map +1 -1
- package/dist/server/agents-bundle.js +108 -64
- package/dist/server/agents-bundle.js.map +1 -1
- package/dist/server/auth.d.ts +1 -0
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +172 -60
- package/dist/server/auth.js.map +1 -1
- package/dist/server/better-auth-instance.d.ts.map +1 -1
- package/dist/server/better-auth-instance.js +202 -6
- package/dist/server/better-auth-instance.js.map +1 -1
- package/dist/server/builder-browser.d.ts +40 -0
- package/dist/server/builder-browser.d.ts.map +1 -0
- package/dist/server/builder-browser.js +166 -0
- package/dist/server/builder-browser.js.map +1 -0
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +152 -6
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/credential-provider.d.ts +37 -0
- package/dist/server/credential-provider.d.ts.map +1 -0
- package/dist/server/credential-provider.js +49 -0
- package/dist/server/credential-provider.js.map +1 -0
- package/dist/server/framework-request-handler.d.ts.map +1 -1
- package/dist/server/framework-request-handler.js +42 -3
- package/dist/server/framework-request-handler.js.map +1 -1
- package/dist/server/google-auth-plugin.js +1 -1
- package/dist/server/google-oauth.d.ts +1 -1
- package/dist/server/google-oauth.d.ts.map +1 -1
- package/dist/server/google-oauth.js +15 -10
- package/dist/server/google-oauth.js.map +1 -1
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +3 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/oauth-helpers.d.ts +1 -0
- package/dist/server/oauth-helpers.d.ts.map +1 -1
- package/dist/server/oauth-helpers.js +5 -4
- package/dist/server/oauth-helpers.js.map +1 -1
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +94 -3
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/server/request-context.d.ts +20 -0
- package/dist/server/request-context.d.ts.map +1 -0
- package/dist/server/request-context.js +41 -0
- package/dist/server/request-context.js.map +1 -0
- package/dist/templates/default/.agents/skills/actions/SKILL.md +2 -1
- package/dist/templates/default/.agents/skills/security/SKILL.md +145 -40
- package/dist/templates/default/.agents/skills/storing-data/SKILL.md +7 -1
- package/dist/templates/default/_gitignore +1 -0
- package/dist/templates/default/app/root.tsx +4 -1
- package/dist/templates/workspace-core/AGENTS.md +62 -0
- package/dist/templates/workspace-core/actions/company-directory.ts +38 -0
- package/dist/templates/workspace-core/package.json +39 -0
- package/dist/templates/workspace-core/skills/company-policies/SKILL.md +42 -0
- package/dist/templates/workspace-core/src/client/AuthenticatedLayout.tsx +37 -0
- package/dist/templates/workspace-core/src/client/index.ts +26 -0
- package/dist/templates/workspace-core/src/credentials.ts +29 -0
- package/dist/templates/workspace-core/src/index.ts +21 -0
- package/dist/templates/workspace-core/src/server/agent-chat-plugin.ts +30 -0
- package/dist/templates/workspace-core/src/server/auth-plugin.ts +35 -0
- package/dist/templates/workspace-core/src/server/index.ts +22 -0
- package/dist/templates/workspace-core/tailwind.preset.ts +34 -0
- package/dist/templates/workspace-core/tsconfig.json +9 -0
- package/dist/templates/workspace-root/.env.example +37 -0
- package/dist/templates/workspace-root/README.md +62 -0
- package/dist/templates/workspace-root/_gitignore +23 -0
- package/dist/templates/workspace-root/package.json +18 -0
- package/dist/templates/workspace-root/pnpm-workspace.yaml +3 -0
- package/dist/templates/workspace-root/tsconfig.base.json +21 -0
- package/dist/vite/agents-bundle-plugin.d.ts.map +1 -1
- package/dist/vite/agents-bundle-plugin.js +65 -15
- package/dist/vite/agents-bundle-plugin.js.map +1 -1
- package/dist/vite/client.d.ts +16 -0
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +75 -0
- package/dist/vite/client.js.map +1 -1
- package/docs/content/a2a-protocol.md +223 -0
- package/docs/content/actions.md +129 -0
- package/docs/content/agent-mentions.md +171 -0
- package/docs/content/authentication.md +155 -0
- package/docs/content/cli-adapters.md +244 -0
- package/docs/content/client.md +175 -0
- package/docs/content/context-awareness.md +168 -0
- package/docs/content/creating-templates.md +311 -0
- package/docs/content/database.md +82 -0
- package/docs/content/deployment.md +180 -0
- package/docs/content/enterprise-workspace.md +235 -0
- package/docs/content/faq.md +101 -0
- package/docs/content/file-uploads.md +102 -0
- package/docs/content/frames.md +47 -0
- package/docs/content/getting-started.md +104 -0
- package/docs/content/integrations.md +198 -0
- package/docs/content/key-concepts.md +246 -0
- package/docs/content/mcp-clients.md +110 -0
- package/docs/content/mcp-protocol.md +168 -0
- package/docs/content/onboarding.md +107 -0
- package/docs/content/real-time-collaboration.md +185 -0
- package/docs/content/resources.md +277 -0
- package/docs/content/security.md +158 -0
- package/docs/content/server.md +200 -0
- package/docs/content/skills-guide.md +107 -0
- package/docs/content/what-is-agent-native.md +100 -0
- package/docs/content/workspace-management.md +224 -0
- package/package.json +12 -2
- package/src/templates/default/.agents/skills/actions/SKILL.md +2 -1
- package/src/templates/default/.agents/skills/security/SKILL.md +145 -40
- package/src/templates/default/.agents/skills/storing-data/SKILL.md +7 -1
- package/src/templates/default/_gitignore +1 -0
- package/src/templates/default/app/root.tsx +4 -1
- package/src/templates/workspace-core/AGENTS.md +62 -0
- package/src/templates/workspace-core/actions/company-directory.ts +38 -0
- package/src/templates/workspace-core/package.json +39 -0
- package/src/templates/workspace-core/skills/company-policies/SKILL.md +42 -0
- package/src/templates/workspace-core/src/client/AuthenticatedLayout.tsx +37 -0
- package/src/templates/workspace-core/src/client/index.ts +26 -0
- package/src/templates/workspace-core/src/credentials.ts +29 -0
- package/src/templates/workspace-core/src/index.ts +21 -0
- package/src/templates/workspace-core/src/server/agent-chat-plugin.ts +30 -0
- package/src/templates/workspace-core/src/server/auth-plugin.ts +35 -0
- package/src/templates/workspace-core/src/server/index.ts +22 -0
- package/src/templates/workspace-core/tailwind.preset.ts +34 -0
- package/src/templates/workspace-core/tsconfig.json +9 -0
- package/src/templates/workspace-root/.env.example +37 -0
- package/src/templates/workspace-root/README.md +62 -0
- package/src/templates/workspace-root/_gitignore +23 -0
- package/src/templates/workspace-root/package.json +18 -0
- package/src/templates/workspace-root/pnpm-workspace.yaml +3 -0
- package/src/templates/workspace-root/tsconfig.base.json +21 -0
- package/dist/templates/templates/default/.agents/skills/actions/SKILL.md +0 -142
- package/dist/templates/templates/default/.agents/skills/agent-engines/SKILL.md +0 -127
- package/dist/templates/templates/default/.agents/skills/capture-learnings/SKILL.md +0 -50
- package/dist/templates/templates/default/.agents/skills/create-skill/SKILL.md +0 -167
- package/dist/templates/templates/default/.agents/skills/delegate-to-agent/SKILL.md +0 -90
- package/dist/templates/templates/default/.agents/skills/frontend-design/SKILL.md +0 -69
- package/dist/templates/templates/default/.agents/skills/real-time-collab/SKILL.md +0 -183
- package/dist/templates/templates/default/.agents/skills/real-time-sync/SKILL.md +0 -112
- package/dist/templates/templates/default/.agents/skills/security/SKILL.md +0 -108
- package/dist/templates/templates/default/.agents/skills/self-modifying-code/SKILL.md +0 -79
- package/dist/templates/templates/default/.agents/skills/storing-data/SKILL.md +0 -110
- package/dist/templates/templates/default/.claude/settings.json +0 -100
- package/dist/templates/templates/default/.env.example +0 -5
- package/dist/templates/templates/default/.ignore +0 -0
- package/dist/templates/templates/default/.prettierrc +0 -5
- package/dist/templates/templates/default/AGENTS.md +0 -110
- package/dist/templates/templates/default/DEVELOPING.md +0 -117
- package/dist/templates/templates/default/_gitignore +0 -37
- package/dist/templates/templates/default/actions/hello.ts +0 -20
- package/dist/templates/templates/default/actions/navigate.ts +0 -53
- package/dist/templates/templates/default/actions/run.ts +0 -2
- package/dist/templates/templates/default/actions/view-screen.ts +0 -39
- package/dist/templates/templates/default/app/entry.client.tsx +0 -4
- package/dist/templates/templates/default/app/entry.server.tsx +0 -56
- package/dist/templates/templates/default/app/global.css +0 -95
- package/dist/templates/templates/default/app/lib/utils.ts +0 -1
- package/dist/templates/templates/default/app/root.tsx +0 -107
- package/dist/templates/templates/default/app/routes/_index.tsx +0 -62
- package/dist/templates/templates/default/app/routes.ts +0 -4
- package/dist/templates/templates/default/app/vite-env.d.ts +0 -6
- package/dist/templates/templates/default/components.json +0 -20
- package/dist/templates/templates/default/data/.gitkeep +0 -0
- package/dist/templates/templates/default/data/sync-config.json +0 -1
- package/dist/templates/templates/default/learnings.defaults.md +0 -5
- package/dist/templates/templates/default/learnings.md +0 -0
- package/dist/templates/templates/default/package.json +0 -46
- package/dist/templates/templates/default/postcss.config.js +0 -6
- package/dist/templates/templates/default/public/icon-180.svg +0 -4
- package/dist/templates/templates/default/public/icon-192.svg +0 -4
- package/dist/templates/templates/default/public/icon-512.svg +0 -4
- package/dist/templates/templates/default/public/manifest.json +0 -13
- package/dist/templates/templates/default/react-router.config.ts +0 -6
- package/dist/templates/templates/default/server/middleware/auth.ts +0 -15
- package/dist/templates/templates/default/server/plugins/.gitkeep +0 -0
- package/dist/templates/templates/default/server/routes/[...page].get.ts +0 -5
- package/dist/templates/templates/default/server/routes/api/hello.get.ts +0 -5
- package/dist/templates/templates/default/shared/api.ts +0 -6
- package/dist/templates/templates/default/ssr-entry.ts +0 -20
- package/dist/templates/templates/default/tailwind.config.ts +0 -7
- package/dist/templates/templates/default/tsconfig.json +0 -11
- package/dist/templates/templates/default/vite.config.ts +0 -6
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `agent-native deploy` — build and deploy every app in a workspace to a
|
|
3
|
+
* single origin. Each app is served from `/<app-name>/*`, so:
|
|
4
|
+
*
|
|
5
|
+
* https://your-agents.com/mail/* → apps/mail
|
|
6
|
+
* https://your-agents.com/calendar/* → apps/calendar
|
|
7
|
+
*
|
|
8
|
+
* Benefits of same-origin deploy:
|
|
9
|
+
* - Shared auth cookie → log in once, every app is signed in
|
|
10
|
+
* - Cross-app A2A is a same-origin fetch (no CORS, no JWT for siblings)
|
|
11
|
+
* - One DNS record, one TLS cert, one CDN cache
|
|
12
|
+
*
|
|
13
|
+
* Per-app independent deploy is still supported — just cd into the app and
|
|
14
|
+
* run `agent-native build` as before. This orchestrator is for teams that
|
|
15
|
+
* want the whole workspace behind one domain.
|
|
16
|
+
*/
|
|
17
|
+
import { execFileSync } from "child_process";
|
|
18
|
+
import fs from "fs";
|
|
19
|
+
import path from "path";
|
|
20
|
+
import { findWorkspaceRoot } from "../scripts/utils.js";
|
|
21
|
+
export async function runWorkspaceDeploy(opts = {}) {
|
|
22
|
+
const workspaceRoot = opts.workspaceRoot ?? findWorkspaceRoot(process.cwd()) ?? process.cwd();
|
|
23
|
+
const appsDir = path.join(workspaceRoot, "apps");
|
|
24
|
+
if (!fs.existsSync(appsDir)) {
|
|
25
|
+
throw new Error(`No apps/ directory found at ${workspaceRoot}. Run this inside an agent-native workspace.`);
|
|
26
|
+
}
|
|
27
|
+
const args = new Set(opts.args ?? []);
|
|
28
|
+
const buildOnly = opts.buildOnly ?? args.has("--build-only");
|
|
29
|
+
const apps = fs
|
|
30
|
+
.readdirSync(appsDir, { withFileTypes: true })
|
|
31
|
+
.filter((e) => e.isDirectory())
|
|
32
|
+
.map((e) => e.name)
|
|
33
|
+
.filter((n) => fs.existsSync(path.join(appsDir, n, "package.json")));
|
|
34
|
+
if (apps.length === 0) {
|
|
35
|
+
throw new Error(`Workspace has no apps. Run \`agent-native add-app\` to add one.`);
|
|
36
|
+
}
|
|
37
|
+
const preset = opts.preset ?? "cloudflare_pages";
|
|
38
|
+
const distDir = path.join(workspaceRoot, "dist");
|
|
39
|
+
fs.rmSync(distDir, { recursive: true, force: true });
|
|
40
|
+
fs.mkdirSync(distDir, { recursive: true });
|
|
41
|
+
console.log(`[workspace-deploy] Building ${apps.length} app(s) for preset=${preset}`);
|
|
42
|
+
for (const app of apps) {
|
|
43
|
+
buildOneApp(workspaceRoot, app, preset);
|
|
44
|
+
moveAppBuildIntoDist(workspaceRoot, app, distDir);
|
|
45
|
+
}
|
|
46
|
+
writeWorkspaceRoutingManifest(distDir, apps);
|
|
47
|
+
if (buildOnly) {
|
|
48
|
+
console.log(`\n[workspace-deploy] Build complete at ${distDir}. Skipping publish (--build-only).`);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
console.log(`\n[workspace-deploy] Build complete. Publish with:\n`);
|
|
52
|
+
console.log(` cd ${path.relative(process.cwd(), workspaceRoot) || "."}`);
|
|
53
|
+
console.log(` wrangler pages deploy dist\n`);
|
|
54
|
+
console.log(`All apps live at https://<origin>/<app-name>/*. Log in once on any app\nand the session is shared across the workspace.`);
|
|
55
|
+
}
|
|
56
|
+
function buildOneApp(workspaceRoot, app, preset) {
|
|
57
|
+
const env = {
|
|
58
|
+
...process.env,
|
|
59
|
+
NITRO_PRESET: preset,
|
|
60
|
+
APP_BASE_PATH: `/${app}`,
|
|
61
|
+
VITE_APP_BASE_PATH: `/${app}`,
|
|
62
|
+
};
|
|
63
|
+
console.log(`[workspace-deploy] Building ${app} (base=/${app}, preset=${preset})`);
|
|
64
|
+
execFileSync("pnpm", ["--filter", app, "build"], {
|
|
65
|
+
cwd: workspaceRoot,
|
|
66
|
+
env,
|
|
67
|
+
stdio: "inherit",
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
function moveAppBuildIntoDist(workspaceRoot, app, distDir) {
|
|
71
|
+
const appDir = path.join(workspaceRoot, "apps", app);
|
|
72
|
+
// Resolve the per-app build output: prefer dist/ (standard), fall back to
|
|
73
|
+
// .output/ (Nitro's default). The Cloudflare preset emits into dist/
|
|
74
|
+
// containing the worker + assets.
|
|
75
|
+
const candidates = ["dist", ".output"];
|
|
76
|
+
const src = candidates
|
|
77
|
+
.map((c) => path.join(appDir, c))
|
|
78
|
+
.find((p) => fs.existsSync(p));
|
|
79
|
+
if (!src) {
|
|
80
|
+
throw new Error(`Expected ${candidates.join(" or ")} under ${appDir} but none existed. Check the app's build script.`);
|
|
81
|
+
}
|
|
82
|
+
const target = path.join(distDir, app);
|
|
83
|
+
fs.mkdirSync(target, { recursive: true });
|
|
84
|
+
copyDir(src, target);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Write the Cloudflare Pages `_routes.json` and a dispatcher `_worker.js` at
|
|
88
|
+
* the workspace dist root so each app is reachable under /<app>/*.
|
|
89
|
+
*/
|
|
90
|
+
function writeWorkspaceRoutingManifest(distDir, apps) {
|
|
91
|
+
// _routes.json tells Cloudflare which paths are dynamic (Functions) vs
|
|
92
|
+
// static. Mark /<app>/* as include so every app's worker handles its
|
|
93
|
+
// subtree.
|
|
94
|
+
const routes = {
|
|
95
|
+
version: 1,
|
|
96
|
+
include: apps.map((a) => `/${a}/*`).concat(["/"]),
|
|
97
|
+
exclude: [],
|
|
98
|
+
};
|
|
99
|
+
fs.writeFileSync(path.join(distDir, "_routes.json"), JSON.stringify(routes, null, 2) + "\n");
|
|
100
|
+
// Dispatcher worker: inspects the path and forwards to the matching
|
|
101
|
+
// per-app worker.
|
|
102
|
+
const imports = apps
|
|
103
|
+
.map((a) => `import ${moduleIdent(a)} from "./${a}/_worker.js";`)
|
|
104
|
+
.join("\n");
|
|
105
|
+
const dispatch = apps
|
|
106
|
+
.map((a) => ` if (pathname === "/${a}" || pathname.startsWith("/${a}/")) return ${moduleIdent(a)}.fetch(request, env, ctx);`)
|
|
107
|
+
.join("\n");
|
|
108
|
+
const worker = `${imports}
|
|
109
|
+
|
|
110
|
+
export default {
|
|
111
|
+
async fetch(request, env, ctx) {
|
|
112
|
+
const { pathname } = new URL(request.url);
|
|
113
|
+
${dispatch}
|
|
114
|
+
if (pathname === "/") {
|
|
115
|
+
return Response.redirect(new URL("/${apps[0]}/", request.url).toString(), 302);
|
|
116
|
+
}
|
|
117
|
+
return new Response("Not found", { status: 404 });
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
`;
|
|
121
|
+
fs.writeFileSync(path.join(distDir, "_worker.js"), worker);
|
|
122
|
+
}
|
|
123
|
+
function moduleIdent(app) {
|
|
124
|
+
return "app_" + app.replace(/[^a-zA-Z0-9_]/g, "_");
|
|
125
|
+
}
|
|
126
|
+
function copyDir(src, dest) {
|
|
127
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
128
|
+
for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
|
|
129
|
+
const s = path.join(src, entry.name);
|
|
130
|
+
const d = path.join(dest, entry.name);
|
|
131
|
+
if (entry.isSymbolicLink()) {
|
|
132
|
+
try {
|
|
133
|
+
const target = fs.readlinkSync(s);
|
|
134
|
+
fs.symlinkSync(target, d);
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
fs.copyFileSync(s, d);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else if (entry.isDirectory()) {
|
|
141
|
+
copyDir(s, d);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
fs.copyFileSync(s, d);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=workspace-deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-deploy.js","sourceRoot":"","sources":["../../src/deploy/workspace-deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { FileUploadProvider } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Built-in Builder.io file upload provider.
|
|
4
|
+
* Uses the same BUILDER_PRIVATE_KEY as the browser/background-agent flows,
|
|
5
|
+
* so connecting Builder once (via the sidebar "Connect Builder" action)
|
|
6
|
+
* automatically enables file uploads.
|
|
7
|
+
*
|
|
8
|
+
* Upload API: https://www.builder.io/c/docs/upload-api
|
|
9
|
+
*/
|
|
10
|
+
export declare const builderFileUploadProvider: FileUploadProvider;
|
|
11
|
+
//# sourceMappingURL=builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/file-upload/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAYrD;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,EAAE,kBAqDvC,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
const DEFAULT_BUILDER_APP_HOST = "https://builder.io";
|
|
2
|
+
function builderUploadHost() {
|
|
3
|
+
return (process.env.BUILDER_APP_HOST ||
|
|
4
|
+
process.env.BUILDER_PUBLIC_APP_HOST ||
|
|
5
|
+
DEFAULT_BUILDER_APP_HOST);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Built-in Builder.io file upload provider.
|
|
9
|
+
* Uses the same BUILDER_PRIVATE_KEY as the browser/background-agent flows,
|
|
10
|
+
* so connecting Builder once (via the sidebar "Connect Builder" action)
|
|
11
|
+
* automatically enables file uploads.
|
|
12
|
+
*
|
|
13
|
+
* Upload API: https://www.builder.io/c/docs/upload-api
|
|
14
|
+
*/
|
|
15
|
+
export const builderFileUploadProvider = {
|
|
16
|
+
id: "builder",
|
|
17
|
+
name: "Builder.io",
|
|
18
|
+
isConfigured: () => !!process.env.BUILDER_PRIVATE_KEY,
|
|
19
|
+
upload: async ({ data, filename, mimeType }) => {
|
|
20
|
+
const privateKey = process.env.BUILDER_PRIVATE_KEY;
|
|
21
|
+
if (!privateKey) {
|
|
22
|
+
throw new Error("BUILDER_PRIVATE_KEY is not set");
|
|
23
|
+
}
|
|
24
|
+
const url = new URL("/api/v1/upload", builderUploadHost());
|
|
25
|
+
if (filename)
|
|
26
|
+
url.searchParams.set("name", filename);
|
|
27
|
+
const buffer = data instanceof Uint8Array ? data : new Uint8Array(data);
|
|
28
|
+
const bytes = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
29
|
+
const body = typeof Blob !== "undefined"
|
|
30
|
+
? new Blob([bytes], {
|
|
31
|
+
type: mimeType || "application/octet-stream",
|
|
32
|
+
})
|
|
33
|
+
: bytes;
|
|
34
|
+
const response = await fetch(url, {
|
|
35
|
+
method: "POST",
|
|
36
|
+
headers: {
|
|
37
|
+
Authorization: `Bearer ${privateKey}`,
|
|
38
|
+
"Content-Type": mimeType || "application/octet-stream",
|
|
39
|
+
},
|
|
40
|
+
body,
|
|
41
|
+
});
|
|
42
|
+
if (!response.ok) {
|
|
43
|
+
const text = await response.text().catch(() => "");
|
|
44
|
+
throw new Error(`Builder.io upload failed (${response.status}): ${text || response.statusText}`);
|
|
45
|
+
}
|
|
46
|
+
const json = (await response.json().catch(() => ({})));
|
|
47
|
+
if (!json.url) {
|
|
48
|
+
throw new Error("Builder.io upload returned no URL");
|
|
49
|
+
}
|
|
50
|
+
return { url: json.url, id: json.id, provider: "builder" };
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/file-upload/builder.ts"],"names":[],"mappings":"AAEA,MAAM,wBAAwB,GAAG,oBAAoB,CAAC;AAEtD,SAAS,iBAAiB;IACxB,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAC5B,OAAO,CAAC,GAAG,CAAC,uBAAuB;QACnC,wBAAwB,CACzB,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAuB;IAC3D,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,YAAY;IAClB,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB;IACrD,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACnD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC3D,IAAI,QAAQ;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAErD,MAAM,MAAM,GACV,IAAI,YAAY,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAW,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,IAAI,UAAU,CAC1B,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,UAAU,CAClB,CAAC;QACF,MAAM,IAAI,GACR,OAAO,IAAI,KAAK,WAAW;YACzB,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;gBAChB,IAAI,EAAE,QAAQ,IAAI,0BAA0B;aAC7C,CAAC;YACJ,CAAC,CAAE,KAA6B,CAAC;QAErC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,UAAU,EAAE;gBACrC,cAAc,EAAE,QAAQ,IAAI,0BAA0B;aACvD;YACD,IAAI;SACL,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACnD,MAAM,IAAI,KAAK,CACb,6BAA6B,QAAQ,CAAC,MAAM,MAAM,IAAI,IAAI,QAAQ,CAAC,UAAU,EAAE,CAChF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAGpD,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC7D,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type { FileUploadInput, FileUploadProvider, FileUploadResult, } from "./types.js";
|
|
2
|
+
export { registerFileUploadProvider, unregisterFileUploadProvider, listFileUploadProviders, getActiveFileUploadProvider, uploadFile, } from "./registry.js";
|
|
3
|
+
export { builderFileUploadProvider } from "./builder.js";
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/file-upload/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,UAAU,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/file-upload/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,UAAU,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { FileUploadInput, FileUploadProvider, FileUploadResult } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Register a file upload provider. Call from a server plugin or app
|
|
4
|
+
* bootstrap. Idempotent per id — later calls with the same id replace.
|
|
5
|
+
*/
|
|
6
|
+
export declare function registerFileUploadProvider(provider: FileUploadProvider): void;
|
|
7
|
+
export declare function unregisterFileUploadProvider(id: string): void;
|
|
8
|
+
export declare function listFileUploadProviders(): FileUploadProvider[];
|
|
9
|
+
/**
|
|
10
|
+
* Returns the first configured provider, checking user-registered ones first
|
|
11
|
+
* and falling back to the built-in Builder.io provider when its env is set.
|
|
12
|
+
* Returns `null` when nothing is configured — callers should then use the
|
|
13
|
+
* SQL fallback.
|
|
14
|
+
*/
|
|
15
|
+
export declare function getActiveFileUploadProvider(): FileUploadProvider | null;
|
|
16
|
+
/**
|
|
17
|
+
* Upload a file via the active provider, or `null` if no provider is
|
|
18
|
+
* configured. Callers use `null` as the signal to fall back to SQL
|
|
19
|
+
* storage. On the first fallback we log a one-time warning because
|
|
20
|
+
* storing files in SQL is not optimal for production.
|
|
21
|
+
*/
|
|
22
|
+
export declare function uploadFile(input: FileUploadInput): Promise<FileUploadResult | null>;
|
|
23
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/file-upload/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAMpB;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAE7E;AAED,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAE7D;AAED,wBAAgB,uBAAuB,IAAI,kBAAkB,EAAE,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,IAAI,kBAAkB,GAAG,IAAI,CAQvE;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAclC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { builderFileUploadProvider } from "./builder.js";
|
|
2
|
+
const providers = new Map();
|
|
3
|
+
let warnedFallback = false;
|
|
4
|
+
/**
|
|
5
|
+
* Register a file upload provider. Call from a server plugin or app
|
|
6
|
+
* bootstrap. Idempotent per id — later calls with the same id replace.
|
|
7
|
+
*/
|
|
8
|
+
export function registerFileUploadProvider(provider) {
|
|
9
|
+
providers.set(provider.id, provider);
|
|
10
|
+
}
|
|
11
|
+
export function unregisterFileUploadProvider(id) {
|
|
12
|
+
providers.delete(id);
|
|
13
|
+
}
|
|
14
|
+
export function listFileUploadProviders() {
|
|
15
|
+
return [...providers.values()];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Returns the first configured provider, checking user-registered ones first
|
|
19
|
+
* and falling back to the built-in Builder.io provider when its env is set.
|
|
20
|
+
* Returns `null` when nothing is configured — callers should then use the
|
|
21
|
+
* SQL fallback.
|
|
22
|
+
*/
|
|
23
|
+
export function getActiveFileUploadProvider() {
|
|
24
|
+
for (const provider of providers.values()) {
|
|
25
|
+
if (provider.isConfigured())
|
|
26
|
+
return provider;
|
|
27
|
+
}
|
|
28
|
+
if (builderFileUploadProvider.isConfigured()) {
|
|
29
|
+
return builderFileUploadProvider;
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Upload a file via the active provider, or `null` if no provider is
|
|
35
|
+
* configured. Callers use `null` as the signal to fall back to SQL
|
|
36
|
+
* storage. On the first fallback we log a one-time warning because
|
|
37
|
+
* storing files in SQL is not optimal for production.
|
|
38
|
+
*/
|
|
39
|
+
export async function uploadFile(input) {
|
|
40
|
+
const provider = getActiveFileUploadProvider();
|
|
41
|
+
if (provider) {
|
|
42
|
+
return provider.upload(input);
|
|
43
|
+
}
|
|
44
|
+
if (!warnedFallback) {
|
|
45
|
+
warnedFallback = true;
|
|
46
|
+
console.warn("[agent-native] No file upload provider configured — storing files in SQL. " +
|
|
47
|
+
"Connect Builder.io in Settings → File uploads, or register a provider, " +
|
|
48
|
+
"for production-grade file storage.");
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/file-upload/registry.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAC;AACxD,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAA4B;IACrE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,EAAU;IACrD,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B;IACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1C,IAAI,QAAQ,CAAC,YAAY,EAAE;YAAE,OAAO,QAAQ,CAAC;IAC/C,CAAC;IACD,IAAI,yBAAyB,CAAC,YAAY,EAAE,EAAE,CAAC;QAC7C,OAAO,yBAAyB,CAAC;IACnC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAsB;IAEtB,MAAM,QAAQ,GAAG,2BAA2B,EAAE,CAAC;IAC/C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,IAAI,CAAC;QACtB,OAAO,CAAC,IAAI,CACV,4EAA4E;YAC1E,yEAAyE;YACzE,oCAAoC,CACvC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File upload framework primitive.
|
|
3
|
+
*
|
|
4
|
+
* Templates call `uploadFile()` to upload a file and get back a URL.
|
|
5
|
+
* The framework dispatches to whichever provider is registered (Builder.io
|
|
6
|
+
* built-in, or a user-supplied one). If no provider is active, it falls back
|
|
7
|
+
* to the SQL resources store — fine for dev, not recommended for production.
|
|
8
|
+
*/
|
|
9
|
+
export interface FileUploadInput {
|
|
10
|
+
/** File contents. */
|
|
11
|
+
data: Uint8Array | Buffer;
|
|
12
|
+
/** Original filename, used for extension/display. */
|
|
13
|
+
filename?: string;
|
|
14
|
+
/** MIME type, e.g. "image/png". */
|
|
15
|
+
mimeType?: string;
|
|
16
|
+
/** Optional owner email for per-user scoping in fallback storage. */
|
|
17
|
+
ownerEmail?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface FileUploadResult {
|
|
20
|
+
/** Public URL where the file can be fetched. */
|
|
21
|
+
url: string;
|
|
22
|
+
/** Optional provider-specific id (e.g. resource id, Builder asset id). */
|
|
23
|
+
id?: string;
|
|
24
|
+
/** The provider that handled the upload. */
|
|
25
|
+
provider: string;
|
|
26
|
+
}
|
|
27
|
+
export interface FileUploadProvider {
|
|
28
|
+
/** Unique id, e.g. "builder", "s3". */
|
|
29
|
+
id: string;
|
|
30
|
+
/** Human-readable name. */
|
|
31
|
+
name: string;
|
|
32
|
+
/** Returns true if this provider is currently configured (env vars etc.). */
|
|
33
|
+
isConfigured: () => boolean;
|
|
34
|
+
/** Upload a file and return a URL. Throw on failure. */
|
|
35
|
+
upload: (input: FileUploadInput) => Promise<FileUploadResult>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/file-upload/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,YAAY,EAAE,MAAM,OAAO,CAAC;IAC5B,wDAAwD;IACxD,MAAM,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC/D"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File upload framework primitive.
|
|
3
|
+
*
|
|
4
|
+
* Templates call `uploadFile()` to upload a file and get back a URL.
|
|
5
|
+
* The framework dispatches to whichever provider is registered (Builder.io
|
|
6
|
+
* built-in, or a user-supplied one). If no provider is active, it falls back
|
|
7
|
+
* to the SQL resources store — fine for dev, not recommended for production.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/file-upload/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { PlatformAdapter } from "../types.js";
|
|
2
|
+
interface ServiceAccountKey {
|
|
3
|
+
client_email: string;
|
|
4
|
+
private_key: string;
|
|
5
|
+
token_uri?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Parse the service account key from env.
|
|
9
|
+
* Supports both a JSON string and a file path.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getServiceAccountKey(): ServiceAccountKey | null;
|
|
12
|
+
/**
|
|
13
|
+
* Get the service account email for display (users share docs with this).
|
|
14
|
+
*/
|
|
15
|
+
export declare function getServiceAccountEmail(): string | null;
|
|
16
|
+
/**
|
|
17
|
+
* Create a signed JWT and exchange it for an access token.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getServiceAccountAccessToken(): Promise<string | null>;
|
|
20
|
+
/**
|
|
21
|
+
* Extract a Google Doc file ID from a URL or return the string as-is.
|
|
22
|
+
*/
|
|
23
|
+
export declare function extractFileId(urlOrId: string): string;
|
|
24
|
+
export interface GoogleDocComment {
|
|
25
|
+
id: string;
|
|
26
|
+
content: string;
|
|
27
|
+
author: {
|
|
28
|
+
displayName: string;
|
|
29
|
+
emailAddress?: string;
|
|
30
|
+
};
|
|
31
|
+
createdTime: string;
|
|
32
|
+
modifiedTime: string;
|
|
33
|
+
resolved: boolean;
|
|
34
|
+
quotedFileContent?: {
|
|
35
|
+
value: string;
|
|
36
|
+
};
|
|
37
|
+
replies?: Array<{
|
|
38
|
+
id: string;
|
|
39
|
+
content: string;
|
|
40
|
+
author: {
|
|
41
|
+
displayName: string;
|
|
42
|
+
emailAddress?: string;
|
|
43
|
+
};
|
|
44
|
+
createdTime: string;
|
|
45
|
+
}>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* List comments on a Google Doc, optionally filtering by modified time.
|
|
49
|
+
*/
|
|
50
|
+
export declare function listDocComments(fileId: string, accessToken: string, startModifiedTime?: string): Promise<GoogleDocComment[]>;
|
|
51
|
+
/**
|
|
52
|
+
* Reply to a comment on a Google Doc.
|
|
53
|
+
*/
|
|
54
|
+
export declare function replyToComment(fileId: string, commentId: string, content: string, accessToken: string): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Get the start page token for changes.list (initial sync point).
|
|
57
|
+
*/
|
|
58
|
+
export declare function getStartPageToken(accessToken: string): Promise<string>;
|
|
59
|
+
export interface DriveChange {
|
|
60
|
+
fileId: string;
|
|
61
|
+
removed: boolean;
|
|
62
|
+
file?: {
|
|
63
|
+
id: string;
|
|
64
|
+
name: string;
|
|
65
|
+
mimeType: string;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* List changes since a page token. Returns changed file IDs and the next token.
|
|
70
|
+
*/
|
|
71
|
+
export declare function listChanges(pageToken: string, accessToken: string): Promise<{
|
|
72
|
+
changes: DriveChange[];
|
|
73
|
+
nextPageToken: string;
|
|
74
|
+
}>;
|
|
75
|
+
/**
|
|
76
|
+
* Create a Google Docs platform adapter.
|
|
77
|
+
*
|
|
78
|
+
* Unlike Slack/Telegram, this adapter is poll-driven — the poller
|
|
79
|
+
* constructs IncomingMessage objects and feeds them through the
|
|
80
|
+
* webhook handler. The adapter handles formatting and sending replies.
|
|
81
|
+
*
|
|
82
|
+
* Setup:
|
|
83
|
+
* - Set GOOGLE_SERVICE_ACCOUNT_KEY (JSON string or file path) in env
|
|
84
|
+
* - Users share their Google Docs with the service account email
|
|
85
|
+
* - Comments containing the trigger keyword (default: "@agent") are processed
|
|
86
|
+
*/
|
|
87
|
+
export declare function googleDocsAdapter(): PlatformAdapter;
|
|
88
|
+
export {};
|
|
89
|
+
//# sourceMappingURL=google-docs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-docs.d.ts","sourceRoot":"","sources":["../../../src/integrations/adapters/google-docs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EAIhB,MAAM,aAAa,CAAC;AAQrB,UAAU,iBAAiB;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,GAAG,IAAI,CAe/D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAGtD;AAED;;GAEG;AACH,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2D3E;AAID;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACvD,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAoB7B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ5E;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CA0B5D;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,IAAI,eAAe,CA6EnD"}
|