@agent-native/core 0.137.8 → 0.138.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/agent-native.eject.json +2 -0
- package/corpus/README.md +1 -1
- package/corpus/templates/analytics/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/corpus/templates/analytics/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +15 -0
- package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +23 -2
- package/corpus/templates/analytics/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/corpus/templates/analytics/AGENTS.md +2 -2
- package/corpus/templates/analytics/actions/get-first-party-analytics-health.ts +65 -0
- package/corpus/templates/analytics/actions/provider-api-catalog.ts +3 -6
- package/corpus/templates/analytics/actions/provider-api-docs.ts +3 -6
- package/corpus/templates/analytics/actions/provider-api-request.ts +3 -6
- package/corpus/templates/analytics/actions/query-agent-native-analytics.ts +3 -3
- package/corpus/templates/analytics/agent-native.json +12 -0
- package/corpus/templates/analytics/app/i18n-data.ts +162 -0
- package/corpus/templates/analytics/app/pages/DataSources.tsx +126 -1
- package/corpus/templates/analytics/changelog/2026-08-05-analytics-now-flags-neon-pressure-and-guides-high-volume-tra.md +6 -0
- package/corpus/templates/analytics/changelog/2026-08-05-first-party-analytics-uses-compact-rollups-for-faster-usage-.md +6 -0
- package/corpus/templates/analytics/server/db/schema.ts +52 -0
- package/corpus/templates/analytics/server/lib/credential-keys.ts +3 -0
- package/corpus/templates/analytics/server/lib/first-party-analytics-health.ts +397 -0
- package/corpus/templates/analytics/server/lib/first-party-analytics-rollups.ts +182 -0
- package/corpus/templates/analytics/server/lib/first-party-analytics.ts +86 -15
- package/corpus/templates/analytics/server/lib/provider-api.ts +20 -1
- package/corpus/templates/analytics/server/lib/replay-storage.ts +1 -1
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +1 -0
- package/corpus/templates/analytics/server/plugins/db.ts +60 -0
- package/corpus/templates/assets/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/corpus/templates/assets/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +23 -2
- package/corpus/templates/assets/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/corpus/templates/assets/agent-native.json +12 -0
- package/corpus/templates/assets/server/lib/generation.ts +8 -8
- package/corpus/templates/assets/server/lib/storage.ts +1 -1
- package/corpus/templates/assets/server/plugins/onboarding.ts +1 -1
- package/corpus/templates/brain/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +23 -2
- package/corpus/templates/brain/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/corpus/templates/brain/agent-native.json +12 -0
- package/corpus/templates/calendar/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +23 -2
- package/corpus/templates/calendar/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/corpus/templates/calendar/agent-native.json +12 -0
- package/corpus/templates/chat/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +23 -2
- package/corpus/templates/chat/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/corpus/templates/chat/AGENTS.md +3 -0
- package/corpus/templates/chat/DESIGN.md +28 -0
- package/corpus/templates/chat/agent-native.json +12 -0
- package/corpus/templates/clips/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +23 -2
- package/corpus/templates/clips/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/corpus/templates/clips/actions/cleanup-transcript.ts +2 -2
- package/corpus/templates/clips/actions/delete-recording-permanent.ts +3 -0
- package/corpus/templates/clips/actions/get-playback-position.ts +68 -0
- package/corpus/templates/clips/actions/import-loom-recording.ts +2 -2
- package/corpus/templates/clips/actions/save-playback-position.ts +80 -0
- package/corpus/templates/clips/actions/set-thumbnail.ts +1 -1
- package/corpus/templates/clips/agent-native.json +12 -0
- package/corpus/templates/clips/app/components/player/video-player.tsx +54 -5
- package/corpus/templates/clips/app/hooks/use-playback-position.ts +188 -0
- package/corpus/templates/clips/app/hooks/use-view-tracking.ts +6 -24
- package/corpus/templates/clips/app/lib/playback-position.ts +99 -0
- package/corpus/templates/clips/app/lib/viewer-session.ts +29 -0
- package/corpus/templates/clips/changelog/2026-08-05-clip-buffering-now-uses-buffering-copy-after-playback.md +6 -0
- package/corpus/templates/clips/changelog/2026-08-05-clips-remembers-your-playback-position-when-you-reopen-a-cli.md +6 -0
- package/corpus/templates/clips/learnings.defaults.md +1 -1
- package/corpus/templates/clips/server/db/schema.ts +18 -0
- package/corpus/templates/clips/server/lib/public-agent-context.ts +1 -1
- package/corpus/templates/clips/server/lib/video-storage.ts +1 -1
- package/corpus/templates/clips/server/plugins/db.ts +15 -0
- package/corpus/templates/clips/server/routes/api/media/index.post.ts +1 -1
- package/corpus/templates/content/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/corpus/templates/content/.agents/skills/document-editing/references/databases.md +13 -0
- package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +23 -2
- package/corpus/templates/content/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/corpus/templates/content/AGENTS.md +1 -0
- package/corpus/templates/content/actions/_content-database-mutation-lock.ts +41 -0
- package/corpus/templates/content/actions/_content-database-row-migration.ts +569 -0
- package/corpus/templates/content/actions/_database-source-utils.ts +82 -36
- package/corpus/templates/content/actions/_database-utils.ts +5 -0
- package/corpus/templates/content/actions/_delete-content-space.ts +25 -11
- package/corpus/templates/content/actions/add-database-item.ts +60 -42
- package/corpus/templates/content/actions/attach-content-database-source.ts +2 -0
- package/corpus/templates/content/actions/configure-document-property.ts +99 -104
- package/corpus/templates/content/actions/delete-content-database.ts +19 -7
- package/corpus/templates/content/actions/delete-document-property.ts +47 -58
- package/corpus/templates/content/actions/delete-document.ts +390 -167
- package/corpus/templates/content/actions/disconnect-content-database-source.ts +41 -24
- package/corpus/templates/content/actions/duplicate-database-item.ts +63 -31
- package/corpus/templates/content/actions/duplicate-database-items.ts +86 -43
- package/corpus/templates/content/actions/duplicate-document-property.ts +37 -14
- package/corpus/templates/content/actions/migrate-content-database-rows.ts +830 -0
- package/corpus/templates/content/actions/move-database-item.ts +14 -0
- package/corpus/templates/content/actions/permanently-delete-document.ts +27 -6
- package/corpus/templates/content/actions/remove-database-items.ts +13 -0
- package/corpus/templates/content/actions/reorder-document-property.ts +45 -46
- package/corpus/templates/content/actions/set-document-property.ts +68 -28
- package/corpus/templates/content/actions/submit-content-database-form.ts +49 -0
- package/corpus/templates/content/actions/transcribe-media.ts +1 -1
- package/corpus/templates/content/agent-native.json +12 -0
- package/corpus/templates/content/app/components/editor/image-upload.ts +2 -2
- package/corpus/templates/content/app/i18n-data.ts +1 -1
- package/corpus/templates/content/changelog/2026-08-01-content-can-reorganize-every-row-in-an-existing-database-as-.md +6 -0
- package/corpus/templates/content/parity/matrix.md +1 -1
- package/corpus/templates/content/parity/matrix.ts +4 -2
- package/corpus/templates/content/server/db/schema.ts +30 -0
- package/corpus/templates/content/server/plugins/db.ts +24 -0
- package/corpus/templates/content/server/plugins/onboarding.ts +2 -2
- package/corpus/templates/crm/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/corpus/templates/crm/agent-native.json +12 -0
- package/corpus/templates/design/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +23 -2
- package/corpus/templates/design/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/corpus/templates/design/CODE_NATIVE_DESIGN_STUDIO_IMPLEMENTATION_PLAN.md +2 -2
- package/corpus/templates/design/DESIGN-STUDIO-PLAN.md +2 -2
- package/corpus/templates/design/actions/apply-design-token-edit.ts +1 -1
- package/corpus/templates/design/actions/capture-design-state.ts +1 -1
- package/corpus/templates/design/actions/connect-builder-app.ts +2 -2
- package/corpus/templates/design/actions/create-design-branch.ts +1 -1
- package/corpus/templates/design/actions/create-fusion-app.ts +3 -3
- package/corpus/templates/design/actions/deploy-design-preview.ts +1 -1
- package/corpus/templates/design/actions/get-component-details.ts +1 -1
- package/corpus/templates/design/actions/get-design-branch-diff.ts +1 -1
- package/corpus/templates/design/actions/index-components.ts +3 -3
- package/corpus/templates/design/actions/index-design-system-with-builder.ts +1 -1
- package/corpus/templates/design/actions/migrate-inline-design-to-app.ts +3 -3
- package/corpus/templates/design/actions/open-component-source.ts +1 -1
- package/corpus/templates/design/actions/update-design.ts +61 -0
- package/corpus/templates/design/agent-native.json +12 -0
- package/corpus/templates/design/app/components/design/edit-panel/component-section.tsx +1 -1
- package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +1 -1
- package/corpus/templates/design/scripts/qa-figma-stress-import.ts +1 -1
- package/corpus/templates/design/server/lib/figma-node-import.ts +1 -1
- package/corpus/templates/design/shared/design-source-capabilities.ts +25 -9
- package/corpus/templates/dispatch/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +23 -2
- package/corpus/templates/dispatch/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/corpus/templates/dispatch/agent-native.json +12 -0
- package/corpus/templates/factory/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/corpus/templates/factory/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/corpus/templates/factory/.agents/skills/frontend-design/SKILL.md +23 -2
- package/corpus/templates/factory/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/corpus/templates/factory/agent-native.json +12 -0
- package/corpus/templates/forms/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +23 -2
- package/corpus/templates/forms/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/corpus/templates/forms/actions/export-responses.ts +1 -1
- package/corpus/templates/forms/agent-native.json +12 -0
- package/corpus/templates/macros/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +23 -2
- package/corpus/templates/macros/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/corpus/templates/macros/agent-native.json +12 -0
- package/corpus/templates/mail/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +23 -2
- package/corpus/templates/mail/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/corpus/templates/mail/agent-native.json +12 -0
- package/corpus/templates/mail/app/i18n/en-US.ts +1 -1
- package/corpus/templates/mail/server/lib/media-upload.ts +1 -1
- package/corpus/templates/plan/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +23 -2
- package/corpus/templates/plan/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/corpus/templates/plan/agent-native.json +12 -0
- package/corpus/templates/plan/server/lib/plan-assets.ts +1 -1
- package/corpus/templates/slides/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +23 -2
- package/corpus/templates/slides/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/corpus/templates/slides/actions/generate-image-api.ts +1 -1
- package/corpus/templates/slides/actions/generate-slides-ai.ts +1 -1
- package/corpus/templates/slides/actions/import-file.ts +2 -2
- package/corpus/templates/slides/actions/index-design-system-with-builder.ts +1 -1
- package/corpus/templates/slides/agent-native.json +12 -0
- package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +1 -1
- package/corpus/templates/slides/app/i18n/en-US.ts +2 -2
- package/corpus/templates/slides/app/lib/deck-sorting.ts +19 -0
- package/corpus/templates/slides/app/lib/image-drop-to-agent.ts +1 -1
- package/corpus/templates/slides/app/pages/Index.tsx +7 -2
- package/corpus/templates/slides/changelog/2026-08-05-decks-are-now-sorted-by-most-recently-updated.md +6 -0
- package/corpus/templates/slides/server/handlers/assets.ts +1 -1
- package/corpus/templates/slides/server/handlers/uploads.ts +1 -1
- package/corpus/templates/tasks/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +23 -2
- package/corpus/templates/tasks/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/corpus/templates/tasks/agent-native.json +12 -0
- package/dist/action.d.ts +6 -0
- package/dist/agent/engine/builder-engine.js +2 -2
- package/dist/agent/engine/credential-errors.d.ts +1 -1
- package/dist/agent/engine/credential-errors.js +2 -2
- package/dist/agent/production-agent.js +3 -2
- package/dist/brand-kit/fig/index.js +1 -1
- package/dist/cli/agent.js +45 -3
- package/dist/cli/code-agent-executor.js +2 -1
- package/dist/cli/create.d.ts +9 -1
- package/dist/cli/create.js +94 -1
- package/dist/cli/doctor.d.ts +8 -11
- package/dist/cli/doctor.js +92 -24
- package/dist/cli/index.js +6 -5
- package/dist/client/AgentAskPopover.d.ts +3 -1
- package/dist/client/AgentAskPopover.js +2 -2
- package/dist/client/AgentPanel.js +9 -3
- package/dist/client/AssistantChat.js +54 -33
- package/dist/client/MultiTabAssistantChat.js +1 -1
- package/dist/client/RouteTransitionIndicator.d.ts +7 -0
- package/dist/client/RouteTransitionIndicator.js +31 -0
- package/dist/client/agent-engine-key.js +1 -1
- package/dist/client/app-providers.js +11 -2
- package/dist/client/chat/message-components.js +1 -1
- package/dist/client/chat/run-recovery.js +1 -1
- package/dist/client/chat/tool-call-display.d.ts +3 -1
- package/dist/client/chat/tool-call-display.js +4 -3
- package/dist/client/chat-model-groups.d.ts +6 -0
- package/dist/client/chat-model-groups.js +11 -0
- package/dist/client/error-format.js +1 -1
- package/dist/client/i18n.js +1 -1
- package/dist/client/onboarding/FirstRunOnboarding.d.ts +5 -1
- package/dist/client/onboarding/FirstRunOnboarding.js +29 -13
- package/dist/client/onboarding/first-run-enabled.d.ts +6 -1
- package/dist/client/onboarding/first-run-enabled.js +33 -3
- package/dist/client/onboarding/use-onboarding.js +16 -11
- package/dist/client/resources/mcp-integration-catalog.js +26 -0
- package/dist/client/resources/mcp-integration-logos.js +4 -0
- package/dist/client/route-warmup.js +56 -10
- package/dist/client/settings/AccountSettingsCard.js +78 -3
- package/dist/client/settings/SettingsPanel.js +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.js +2 -2
- package/dist/client/settings/useBuilderStatus.js +1 -1
- package/dist/client/setup-connections/useBuilderConnectCardController.js +1 -1
- package/dist/client/ui/index.d.ts +1 -0
- package/dist/client/ui/index.js +1 -0
- package/dist/client/uploads/upload-editor-image.js +1 -1
- package/dist/client/use-chat-threads.js +3 -0
- package/dist/collab/routes.d.ts +2 -2
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/config.d.ts +48 -0
- package/dist/config.js +111 -0
- package/dist/db/migrations.js +5 -0
- package/dist/eject/provider-api-definitions.d.ts +1 -1
- package/dist/eject/provider-api-definitions.js +1 -0
- package/dist/eject/remote-mcp-presets.js +1 -0
- package/dist/extensions/web-search-tool.js +2 -2
- package/dist/file-upload/actions/upload-image.js +1 -1
- package/dist/file-upload/registry.js +1 -1
- package/dist/guards/index.d.ts +3 -0
- package/dist/guards/index.js +2 -0
- package/dist/guards/no-empty-migrations.d.ts +14 -0
- package/dist/guards/no-empty-migrations.js +126 -0
- package/dist/index.browser.d.ts +1 -0
- package/dist/index.browser.js +3 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/localization/default-messages.d.ts +24 -0
- package/dist/localization/default-messages.js +26 -2
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/onboarding/app-profile.js +1 -1
- package/dist/onboarding/plugin.d.ts +2 -0
- package/dist/onboarding/plugin.js +29 -2
- package/dist/provider-api/actions/custom-provider-registration.d.ts +16 -16
- package/dist/provider-api/actions/provider-api.d.ts +13 -13
- package/dist/provider-api/index.d.ts +4 -4
- package/dist/provider-api/index.js +35 -0
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/resources/handlers.js +1 -1
- package/dist/scripts/docs/framework-search.d.ts +9 -0
- package/dist/scripts/docs/framework-search.js +239 -0
- package/dist/scripts/docs/index.js +1 -0
- package/dist/scripts/docs/search.d.ts +10 -0
- package/dist/scripts/docs/search.js +1 -1
- package/dist/scripts/docs/source-search.d.ts +10 -2
- package/dist/scripts/docs/source-search.js +108 -41
- package/dist/search-utils/index.d.ts +11 -0
- package/dist/search-utils/index.js +72 -0
- package/dist/server/action-change.d.ts +6 -0
- package/dist/server/action-change.js +28 -14
- package/dist/server/action-discovery.js +9 -0
- package/dist/server/action-routes.js +1 -0
- package/dist/server/agent-chat/browser-team-tools.js +1 -1
- package/dist/server/agent-chat/script-entries.js +43 -2
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/auth-login-mode.d.ts +8 -0
- package/dist/server/auth-login-mode.js +17 -0
- package/dist/server/auth.js +100 -15
- package/dist/server/better-auth-instance.d.ts +36 -0
- package/dist/server/better-auth-instance.js +25 -3
- package/dist/server/builder-design-systems.js +1 -1
- package/dist/server/core-routes-plugin.js +17 -14
- package/dist/server/credential-provider.js +3 -3
- package/dist/server/email-templates.d.ts +7 -0
- package/dist/server/email-templates.js +24 -0
- package/dist/server/email.d.ts +17 -0
- package/dist/server/email.js +22 -1
- package/dist/server/framework-request-handler.js +6 -0
- package/dist/server/onboarding-html.d.ts +2 -0
- package/dist/server/onboarding-html.js +169 -8
- package/dist/server/realtime-token.d.ts +1 -1
- package/dist/server/realtime-voice.js +1 -1
- package/dist/server/sentry.d.ts +1 -1
- package/dist/server/transcribe-voice.js +3 -3
- package/dist/shared/first-run-onboarding.d.ts +1 -0
- package/dist/shared/first-run-onboarding.js +1 -0
- package/dist/templates/chat/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +23 -2
- package/dist/templates/chat/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/dist/templates/chat/AGENTS.md +3 -0
- package/dist/templates/chat/DESIGN.md +28 -0
- package/dist/templates/chat/agent-native.json +12 -0
- package/dist/templates/default/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +23 -2
- package/dist/templates/default/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/dist/templates/default/AGENTS.md +4 -0
- package/dist/templates/default/DESIGN.md +30 -0
- package/dist/templates/default/agent-native.json +9 -0
- package/dist/templates/default/app/i18n/ar-SA.ts +2 -2
- package/dist/templates/default/app/i18n/de-DE.ts +2 -2
- package/dist/templates/default/app/i18n/en-US.ts +2 -2
- package/dist/templates/default/app/i18n/es-ES.ts +2 -2
- package/dist/templates/default/app/i18n/fr-FR.ts +2 -2
- package/dist/templates/default/app/i18n/hi-IN.ts +2 -2
- package/dist/templates/default/app/i18n/ja-JP.ts +2 -2
- package/dist/templates/default/app/i18n/ko-KR.ts +2 -2
- package/dist/templates/default/app/i18n/pt-BR.ts +2 -2
- package/dist/templates/default/app/i18n/zh-CN.ts +2 -2
- package/dist/templates/default/app/i18n/zh-TW.ts +1 -1
- package/dist/templates/default/package.json +1 -0
- package/dist/templates/headless/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/dist/templates/headless/agent-native.json +9 -0
- package/dist/templates/headless/package.json +2 -0
- package/dist/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +23 -2
- package/dist/templates/workspace-core/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/dist/templates/workspace-core/AGENTS.md +3 -0
- package/dist/templates/workspace-core/DESIGN.md +35 -0
- package/dist/templates/workspace-root/AGENTS.md +3 -0
- package/dist/templates/workspace-root/DESIGN.md +35 -0
- package/dist/templates/workspace-root/agent-native.json +9 -0
- package/dist/templates/workspace-root/package.json +3 -0
- package/dist/transcription/builder-transcription.js +1 -1
- package/dist/user-profile/actions/change-password.d.ts +8 -0
- package/dist/user-profile/actions/change-password.js +24 -0
- package/dist/user-profile/actions/get-auth-methods.d.ts +6 -0
- package/dist/user-profile/actions/get-auth-methods.js +23 -0
- package/dist/user-profile/actions/set-password.d.ts +7 -0
- package/dist/user-profile/actions/set-password.js +23 -0
- package/dist/vite/client.d.ts +8 -1
- package/dist/vite/client.js +63 -12
- package/dist/vite/index.d.ts +1 -0
- package/dist/vite/index.js +1 -0
- package/docs/AGENTS.md +7 -2
- package/docs/SKILL.md +7 -5
- package/docs/content/agent-native-config.mdx +165 -0
- package/docs/content/agent-native-toolkit.mdx +1 -1
- package/docs/content/deployment.mdx +7 -2
- package/docs/content/doctor.mdx +21 -13
- package/docs/content/environment-variables.mdx +158 -0
- package/docs/content/file-uploads.mdx +1 -1
- package/docs/content/getting-started.mdx +1 -1
- package/docs/content/key-concepts.mdx +1 -1
- package/docs/content/multi-app-workspace.mdx +1 -1
- package/docs/content/template-clips-ai-and-editing.mdx +6 -6
- package/docs/content/template-clips-developers.mdx +3 -3
- package/docs/content/toolkit-settings.mdx +1 -1
- package/docs/content/voice-input.mdx +4 -4
- package/package.json +6 -2
- package/src/eject/provider-api-definitions.ts +1 -0
- package/src/eject/remote-mcp-presets.ts +1 -0
- package/src/templates/chat/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +23 -2
- package/src/templates/chat/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/src/templates/chat/AGENTS.md +3 -0
- package/src/templates/chat/DESIGN.md +28 -0
- package/src/templates/chat/agent-native.json +12 -0
- package/src/templates/default/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/src/templates/default/.agents/skills/frontend-design/SKILL.md +23 -2
- package/src/templates/default/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/src/templates/default/AGENTS.md +4 -0
- package/src/templates/default/DESIGN.md +30 -0
- package/src/templates/default/agent-native.json +9 -0
- package/src/templates/default/app/i18n/ar-SA.ts +2 -2
- package/src/templates/default/app/i18n/de-DE.ts +2 -2
- package/src/templates/default/app/i18n/en-US.ts +2 -2
- package/src/templates/default/app/i18n/es-ES.ts +2 -2
- package/src/templates/default/app/i18n/fr-FR.ts +2 -2
- package/src/templates/default/app/i18n/hi-IN.ts +2 -2
- package/src/templates/default/app/i18n/ja-JP.ts +2 -2
- package/src/templates/default/app/i18n/ko-KR.ts +2 -2
- package/src/templates/default/app/i18n/pt-BR.ts +2 -2
- package/src/templates/default/app/i18n/zh-CN.ts +2 -2
- package/src/templates/default/app/i18n/zh-TW.ts +1 -1
- package/src/templates/default/package.json +1 -0
- package/src/templates/headless/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/src/templates/headless/agent-native.json +9 -0
- package/src/templates/headless/package.json +2 -0
- package/src/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +23 -3
- package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
- package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +23 -2
- package/src/templates/workspace-core/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/src/templates/workspace-core/AGENTS.md +3 -0
- package/src/templates/workspace-core/DESIGN.md +35 -0
- package/src/templates/workspace-root/AGENTS.md +3 -0
- package/src/templates/workspace-root/DESIGN.md +35 -0
- package/src/templates/workspace-root/agent-native.json +9 -0
- package/src/templates/workspace-root/package.json +3 -0
|
@@ -75,8 +75,10 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
|
|
|
75
75
|
user: "user";
|
|
76
76
|
}>>;
|
|
77
77
|
}, z.core.$strip>>, {
|
|
78
|
+
id?: undefined;
|
|
79
|
+
provider?: undefined;
|
|
78
80
|
deleted?: undefined;
|
|
79
|
-
|
|
81
|
+
found?: undefined;
|
|
80
82
|
providers: {
|
|
81
83
|
id: string;
|
|
82
84
|
label: string;
|
|
@@ -87,47 +89,45 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
|
|
|
87
89
|
updatedAt: number;
|
|
88
90
|
}[];
|
|
89
91
|
count: number;
|
|
90
|
-
provider?: undefined;
|
|
91
|
-
found?: undefined;
|
|
92
92
|
registered?: undefined;
|
|
93
|
-
id?: undefined;
|
|
94
93
|
label?: undefined;
|
|
94
|
+
message?: undefined;
|
|
95
95
|
} | {
|
|
96
|
+
id?: undefined;
|
|
96
97
|
deleted?: undefined;
|
|
97
|
-
count?: undefined;
|
|
98
|
-
message?: undefined;
|
|
99
98
|
providers?: undefined;
|
|
99
|
+
count?: undefined;
|
|
100
100
|
found: boolean;
|
|
101
101
|
provider: import("../custom-registry.js").CustomProviderConfig;
|
|
102
102
|
registered?: undefined;
|
|
103
|
-
id?: undefined;
|
|
104
103
|
label?: undefined;
|
|
104
|
+
message?: undefined;
|
|
105
105
|
} | {
|
|
106
|
+
provider?: undefined;
|
|
106
107
|
deleted?: undefined;
|
|
107
|
-
count?: undefined;
|
|
108
|
-
message?: undefined;
|
|
109
108
|
providers?: undefined;
|
|
110
|
-
|
|
109
|
+
count?: undefined;
|
|
111
110
|
found: boolean;
|
|
112
111
|
id: string;
|
|
113
112
|
registered?: undefined;
|
|
114
113
|
label?: undefined;
|
|
115
|
-
} | {
|
|
116
|
-
count?: undefined;
|
|
117
114
|
message?: undefined;
|
|
118
|
-
|
|
115
|
+
} | {
|
|
119
116
|
provider?: undefined;
|
|
120
117
|
found?: undefined;
|
|
118
|
+
providers?: undefined;
|
|
119
|
+
count?: undefined;
|
|
121
120
|
deleted: boolean;
|
|
122
121
|
id: string;
|
|
123
122
|
registered?: undefined;
|
|
124
123
|
label?: undefined;
|
|
124
|
+
message?: undefined;
|
|
125
125
|
} | {
|
|
126
|
-
deleted?: undefined;
|
|
127
|
-
count?: undefined;
|
|
128
|
-
providers?: undefined;
|
|
129
126
|
provider?: undefined;
|
|
127
|
+
deleted?: undefined;
|
|
130
128
|
found?: undefined;
|
|
129
|
+
providers?: undefined;
|
|
130
|
+
count?: undefined;
|
|
131
131
|
registered: boolean;
|
|
132
132
|
id: string;
|
|
133
133
|
label: string;
|
|
@@ -144,7 +144,7 @@ export declare function createProviderApiCatalogAction<TSchema extends ZodTypeAn
|
|
|
144
144
|
provider: z.ZodOptional<ZodTypeAny<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
145
145
|
}, z.core.$strip>>, {
|
|
146
146
|
providers: unknown[] | {
|
|
147
|
-
id: "amplitude" | "apollo" | "bigquery" | "clay" | "commonroom" | "dataforseo" | "figma" | "ga4" | "gcloud" | "github" | "gmail" | "gong" | "google_calendar" | "google_drive" | "google_slides" | "grafana" | "granola" | "hubspot" | "jira" | "mixpanel" | "notion" | "posthog" | "prometheus" | "pylon" | "salesforce" | "sentry" | "slack" | "stripe" | "twitter";
|
|
147
|
+
id: "amplitude" | "apollo" | "bigquery" | "clay" | "commonroom" | "dataforseo" | "figma" | "fullstory" | "ga4" | "gcloud" | "github" | "gmail" | "gong" | "google_calendar" | "google_drive" | "google_slides" | "grafana" | "granola" | "hubspot" | "jira" | "mixpanel" | "notion" | "posthog" | "prometheus" | "pylon" | "salesforce" | "sentry" | "slack" | "stripe" | "twitter";
|
|
148
148
|
label: string;
|
|
149
149
|
defaultBaseUrl: string;
|
|
150
150
|
requiresConnectionId: boolean;
|
|
@@ -246,7 +246,7 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
|
|
|
246
246
|
provider?: unknown;
|
|
247
247
|
}, {
|
|
248
248
|
providers: unknown[] | {
|
|
249
|
-
id: "amplitude" | "apollo" | "bigquery" | "clay" | "commonroom" | "dataforseo" | "figma" | "ga4" | "gcloud" | "github" | "gmail" | "gong" | "google_calendar" | "google_drive" | "google_slides" | "grafana" | "granola" | "hubspot" | "jira" | "mixpanel" | "notion" | "posthog" | "prometheus" | "pylon" | "salesforce" | "sentry" | "slack" | "stripe" | "twitter";
|
|
249
|
+
id: "amplitude" | "apollo" | "bigquery" | "clay" | "commonroom" | "dataforseo" | "figma" | "fullstory" | "ga4" | "gcloud" | "github" | "gmail" | "gong" | "google_calendar" | "google_drive" | "google_slides" | "grafana" | "granola" | "hubspot" | "jira" | "mixpanel" | "notion" | "posthog" | "prometheus" | "pylon" | "salesforce" | "sentry" | "slack" | "stripe" | "twitter";
|
|
250
250
|
label: string;
|
|
251
251
|
defaultBaseUrl: string;
|
|
252
252
|
requiresConnectionId: boolean;
|
|
@@ -314,6 +314,8 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
|
|
|
314
314
|
id?: undefined;
|
|
315
315
|
provider?: undefined;
|
|
316
316
|
deleted?: undefined;
|
|
317
|
+
found?: undefined;
|
|
318
|
+
message?: undefined;
|
|
317
319
|
providers: {
|
|
318
320
|
id: string;
|
|
319
321
|
label: string;
|
|
@@ -324,46 +326,44 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
|
|
|
324
326
|
updatedAt: number;
|
|
325
327
|
}[];
|
|
326
328
|
count: number;
|
|
327
|
-
found?: undefined;
|
|
328
329
|
registered?: undefined;
|
|
329
330
|
label?: undefined;
|
|
330
|
-
message?: undefined;
|
|
331
331
|
} | {
|
|
332
332
|
id?: undefined;
|
|
333
|
-
deleted?: undefined;
|
|
334
333
|
count?: undefined;
|
|
334
|
+
deleted?: undefined;
|
|
335
|
+
message?: undefined;
|
|
335
336
|
providers?: undefined;
|
|
336
337
|
found: boolean;
|
|
337
338
|
provider: import("../custom-registry.js").CustomProviderConfig;
|
|
338
339
|
registered?: undefined;
|
|
339
340
|
label?: undefined;
|
|
340
|
-
message?: undefined;
|
|
341
341
|
} | {
|
|
342
|
+
count?: undefined;
|
|
342
343
|
provider?: undefined;
|
|
343
344
|
deleted?: undefined;
|
|
344
|
-
|
|
345
|
+
message?: undefined;
|
|
345
346
|
providers?: undefined;
|
|
346
347
|
found: boolean;
|
|
347
348
|
id: string;
|
|
348
349
|
registered?: undefined;
|
|
349
350
|
label?: undefined;
|
|
350
|
-
message?: undefined;
|
|
351
351
|
} | {
|
|
352
|
-
provider?: undefined;
|
|
353
352
|
count?: undefined;
|
|
354
|
-
|
|
353
|
+
provider?: undefined;
|
|
355
354
|
found?: undefined;
|
|
355
|
+
message?: undefined;
|
|
356
|
+
providers?: undefined;
|
|
356
357
|
deleted: boolean;
|
|
357
358
|
id: string;
|
|
358
359
|
registered?: undefined;
|
|
359
360
|
label?: undefined;
|
|
360
|
-
message?: undefined;
|
|
361
361
|
} | {
|
|
362
|
+
count?: undefined;
|
|
362
363
|
provider?: undefined;
|
|
363
364
|
deleted?: undefined;
|
|
364
|
-
count?: undefined;
|
|
365
|
-
providers?: undefined;
|
|
366
365
|
found?: undefined;
|
|
366
|
+
providers?: undefined;
|
|
367
367
|
registered: boolean;
|
|
368
368
|
id: string;
|
|
369
369
|
label: string;
|
|
@@ -4,7 +4,7 @@ import { type WebContentSearchOptions, type WebExtractMode, type WebResponseMode
|
|
|
4
4
|
import type { CustomProviderConfig } from "./custom-registry.js";
|
|
5
5
|
export type { CustomProviderConfig, CustomProviderScope, CustomProviderAuthKind, UpsertCustomProviderArgs, } from "./custom-registry.js";
|
|
6
6
|
export { upsertCustomProvider, deleteCustomProvider, listCustomProviders, getCustomProvider, validateCustomBaseUrl, assertCanMutateCustomProviderScope, CustomProviderAuthError, } from "./custom-registry.js";
|
|
7
|
-
export declare const PROVIDER_API_IDS: readonly ["amplitude", "apollo", "bigquery", "clay", "commonroom", "dataforseo", "ga4", "gcloud", "github", "figma", "gmail", "gong", "google_calendar", "google_drive", "google_slides", "granola", "grafana", "hubspot", "salesforce", "jira", "mixpanel", "notion", "posthog", "prometheus", "pylon", "sentry", "slack", "stripe", "twitter"];
|
|
7
|
+
export declare const PROVIDER_API_IDS: readonly ["amplitude", "apollo", "bigquery", "clay", "commonroom", "dataforseo", "ga4", "gcloud", "github", "figma", "fullstory", "gmail", "gong", "google_calendar", "google_drive", "google_slides", "granola", "grafana", "hubspot", "salesforce", "jira", "mixpanel", "notion", "posthog", "prometheus", "pylon", "sentry", "slack", "stripe", "twitter"];
|
|
8
8
|
export type ProviderApiId = (typeof PROVIDER_API_IDS)[number];
|
|
9
9
|
export type ProviderApiMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "HEAD";
|
|
10
10
|
/** Cursor-pagination config for fetchAllPages. */
|
|
@@ -422,7 +422,7 @@ export declare function listProviderApiCatalog(provider?: ProviderApiId | string
|
|
|
422
422
|
providerIds?: readonly (ProviderApiId | string)[];
|
|
423
423
|
providerOverrides?: readonly ProviderApiConfig[];
|
|
424
424
|
}): {
|
|
425
|
-
id: "amplitude" | "apollo" | "bigquery" | "clay" | "commonroom" | "dataforseo" | "figma" | "ga4" | "gcloud" | "github" | "gmail" | "gong" | "google_calendar" | "google_drive" | "google_slides" | "grafana" | "granola" | "hubspot" | "jira" | "mixpanel" | "notion" | "posthog" | "prometheus" | "pylon" | "salesforce" | "sentry" | "slack" | "stripe" | "twitter";
|
|
425
|
+
id: "amplitude" | "apollo" | "bigquery" | "clay" | "commonroom" | "dataforseo" | "figma" | "fullstory" | "ga4" | "gcloud" | "github" | "gmail" | "gong" | "google_calendar" | "google_drive" | "google_slides" | "grafana" | "granola" | "hubspot" | "jira" | "mixpanel" | "notion" | "posthog" | "prometheus" | "pylon" | "salesforce" | "sentry" | "slack" | "stripe" | "twitter";
|
|
426
426
|
label: string;
|
|
427
427
|
defaultBaseUrl: string;
|
|
428
428
|
requiresConnectionId: boolean;
|
|
@@ -444,7 +444,7 @@ export declare function createProviderApiRuntime(options: ProviderApiRuntimeOpti
|
|
|
444
444
|
export declare function fetchProviderApiDocs(options: ProviderApiDocsOptions, runtime?: ProviderApiRuntimeOptions): Promise<{
|
|
445
445
|
provider: string;
|
|
446
446
|
catalog: {
|
|
447
|
-
id: "amplitude" | "apollo" | "bigquery" | "clay" | "commonroom" | "dataforseo" | "figma" | "ga4" | "gcloud" | "github" | "gmail" | "gong" | "google_calendar" | "google_drive" | "google_slides" | "grafana" | "granola" | "hubspot" | "jira" | "mixpanel" | "notion" | "posthog" | "prometheus" | "pylon" | "salesforce" | "sentry" | "slack" | "stripe" | "twitter";
|
|
447
|
+
id: "amplitude" | "apollo" | "bigquery" | "clay" | "commonroom" | "dataforseo" | "figma" | "fullstory" | "ga4" | "gcloud" | "github" | "gmail" | "gong" | "google_calendar" | "google_drive" | "google_slides" | "grafana" | "granola" | "hubspot" | "jira" | "mixpanel" | "notion" | "posthog" | "prometheus" | "pylon" | "salesforce" | "sentry" | "slack" | "stripe" | "twitter";
|
|
448
448
|
label: string;
|
|
449
449
|
defaultBaseUrl: string;
|
|
450
450
|
requiresConnectionId: boolean;
|
|
@@ -484,7 +484,7 @@ export declare function fetchProviderApiDocs(options: ProviderApiDocsOptions, ru
|
|
|
484
484
|
guidance?: undefined;
|
|
485
485
|
provider: string;
|
|
486
486
|
catalog: {
|
|
487
|
-
id: "amplitude" | "apollo" | "bigquery" | "clay" | "commonroom" | "dataforseo" | "figma" | "ga4" | "gcloud" | "github" | "gmail" | "gong" | "google_calendar" | "google_drive" | "google_slides" | "grafana" | "granola" | "hubspot" | "jira" | "mixpanel" | "notion" | "posthog" | "prometheus" | "pylon" | "salesforce" | "sentry" | "slack" | "stripe" | "twitter";
|
|
487
|
+
id: "amplitude" | "apollo" | "bigquery" | "clay" | "commonroom" | "dataforseo" | "figma" | "fullstory" | "ga4" | "gcloud" | "github" | "gmail" | "gong" | "google_calendar" | "google_drive" | "google_slides" | "grafana" | "granola" | "hubspot" | "jira" | "mixpanel" | "notion" | "posthog" | "prometheus" | "pylon" | "salesforce" | "sentry" | "slack" | "stripe" | "twitter";
|
|
488
488
|
label: string;
|
|
489
489
|
defaultBaseUrl: string;
|
|
490
490
|
requiresConnectionId: boolean;
|
|
@@ -22,6 +22,7 @@ export const PROVIDER_API_IDS = [
|
|
|
22
22
|
"gcloud",
|
|
23
23
|
"github",
|
|
24
24
|
"figma",
|
|
25
|
+
"fullstory",
|
|
25
26
|
"gmail",
|
|
26
27
|
"gong",
|
|
27
28
|
"google_calendar",
|
|
@@ -393,6 +394,40 @@ const PROVIDER_CONFIGS = {
|
|
|
393
394
|
"The REST API cannot create arbitrary canvas frames or layers. Use Figma's official OAuth MCP write tools when connected, or export a Design selection as Figma-compatible SVG for visual handoff.",
|
|
394
395
|
],
|
|
395
396
|
},
|
|
397
|
+
fullstory: {
|
|
398
|
+
id: "fullstory",
|
|
399
|
+
label: "FullStory Server API",
|
|
400
|
+
defaultBaseUrl: "https://api.fullstory.com",
|
|
401
|
+
auth: {
|
|
402
|
+
type: "basic-raw",
|
|
403
|
+
key: "FULLSTORY_API_KEY",
|
|
404
|
+
},
|
|
405
|
+
credentialKeys: ["FULLSTORY_API_KEY"],
|
|
406
|
+
docsUrls: [
|
|
407
|
+
"https://developer.fullstory.com/server/authentication/",
|
|
408
|
+
"https://developer.fullstory.com/server/sessions/introduction/",
|
|
409
|
+
"https://developer.fullstory.com/server/sessions/get-session-events/",
|
|
410
|
+
],
|
|
411
|
+
allowedHostSuffixes: ["fullstory.com"],
|
|
412
|
+
templateUses: ["analytics"],
|
|
413
|
+
examples: [
|
|
414
|
+
{
|
|
415
|
+
label: "List sessions for a user",
|
|
416
|
+
method: "GET",
|
|
417
|
+
path: "/sessions/v2",
|
|
418
|
+
query: { email: "<user-email>", limit: 20 },
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
label: "Get session events",
|
|
422
|
+
method: "GET",
|
|
423
|
+
path: "/v2/sessions/{sessionId}/events",
|
|
424
|
+
},
|
|
425
|
+
],
|
|
426
|
+
notes: [
|
|
427
|
+
"FullStory Server API uses Basic <API_KEY> authentication. Architect access is required for user-data reads and exports.",
|
|
428
|
+
"Use the connected FullStory MCP for natural-language metrics, session replay, screenshots, and accessibility trees; this API fallback is for structured reads and event payloads.",
|
|
429
|
+
],
|
|
430
|
+
},
|
|
396
431
|
gmail: {
|
|
397
432
|
id: "gmail",
|
|
398
433
|
label: "Gmail API",
|
|
@@ -48,8 +48,8 @@ export declare function handleUpdateResource(event: any): Promise<import("./stor
|
|
|
48
48
|
}>;
|
|
49
49
|
/** DELETE /_agent-native/resources/:id — delete a resource */
|
|
50
50
|
export declare function handleDeleteResource(event: any): Promise<{
|
|
51
|
-
ok?: undefined;
|
|
52
51
|
error: string;
|
|
52
|
+
ok?: undefined;
|
|
53
53
|
} | {
|
|
54
54
|
error?: undefined;
|
|
55
55
|
ok: boolean;
|
|
@@ -532,7 +532,7 @@ export async function handleUploadResource(event) {
|
|
|
532
532
|
}
|
|
533
533
|
setResponseStatus(event, 503);
|
|
534
534
|
return {
|
|
535
|
-
error: "File storage is not configured. Connect Builder.io or register an S3/R2/GCS file upload provider before uploading binary resources.",
|
|
535
|
+
error: "File storage is not configured. Connect Builder.io (free tier available) or register an S3/R2/GCS file upload provider before uploading binary resources.",
|
|
536
536
|
storageSetupRequired: true,
|
|
537
537
|
};
|
|
538
538
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core script: framework-search
|
|
3
|
+
*
|
|
4
|
+
* Search the version-matched framework docs and readable source together.
|
|
5
|
+
* This is intentionally bounded and read-only so every app chat can use the
|
|
6
|
+
* same fallback when a question is not answered by the docs alone.
|
|
7
|
+
*/
|
|
8
|
+
export default function frameworkSearchScript(args: string[]): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=framework-search.d.ts.map
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core script: framework-search
|
|
3
|
+
*
|
|
4
|
+
* Search the version-matched framework docs and readable source together.
|
|
5
|
+
* This is intentionally bounded and read-only so every app chat can use the
|
|
6
|
+
* same fallback when a question is not answered by the docs alone.
|
|
7
|
+
*/
|
|
8
|
+
import fs from "node:fs";
|
|
9
|
+
import { createTextMatcher, } from "../../search-utils/index.js";
|
|
10
|
+
import { parseArgs } from "../utils.js";
|
|
11
|
+
import { loadAllDocs } from "./search.js";
|
|
12
|
+
import { listSourceFiles } from "./source-search.js";
|
|
13
|
+
const DEFAULT_LIMIT = 30;
|
|
14
|
+
const MAX_LIMIT = 50;
|
|
15
|
+
const MAX_SNIPPETS_PER_RESULT = 3;
|
|
16
|
+
function parseScope(value) {
|
|
17
|
+
if (!value)
|
|
18
|
+
return { value: "all" };
|
|
19
|
+
if (value === "all" || value === "docs" || value === "source") {
|
|
20
|
+
return { value };
|
|
21
|
+
}
|
|
22
|
+
return { error: `Invalid scope "${value}". Use all, docs, or source.` };
|
|
23
|
+
}
|
|
24
|
+
function parseMode(value) {
|
|
25
|
+
if (!value)
|
|
26
|
+
return { value: "substring" };
|
|
27
|
+
if (value === "substring" ||
|
|
28
|
+
value === "glob" ||
|
|
29
|
+
value === "sql-like" ||
|
|
30
|
+
value === "regex") {
|
|
31
|
+
return { value };
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
error: `Invalid mode "${value}". Use substring, glob, sql-like, or regex.`,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function parseLimit(value) {
|
|
38
|
+
if (!value)
|
|
39
|
+
return { value: DEFAULT_LIMIT };
|
|
40
|
+
const parsed = Number(value);
|
|
41
|
+
if (!Number.isInteger(parsed) || parsed < 1) {
|
|
42
|
+
return { error: "Limit must be a positive integer." };
|
|
43
|
+
}
|
|
44
|
+
return { value: Math.min(parsed, MAX_LIMIT) };
|
|
45
|
+
}
|
|
46
|
+
function docsAsEntries(docs) {
|
|
47
|
+
return docs.map((doc) => ({
|
|
48
|
+
kind: "doc",
|
|
49
|
+
path: `docs/${doc.slug}`,
|
|
50
|
+
title: doc.title,
|
|
51
|
+
body: `${doc.title}\n${doc.description}\n${doc.body}`,
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
function sourceAsEntries(files) {
|
|
55
|
+
const entries = [];
|
|
56
|
+
let unreadable = 0;
|
|
57
|
+
for (const file of files) {
|
|
58
|
+
try {
|
|
59
|
+
entries.push({
|
|
60
|
+
kind: "source",
|
|
61
|
+
path: file.relativePath,
|
|
62
|
+
body: fs.readFileSync(file.absolutePath, "utf-8"),
|
|
63
|
+
file,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
unreadable += 1;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return { entries, unreadable };
|
|
71
|
+
}
|
|
72
|
+
function snippetsForEntry(entry, matcher, pathMatch) {
|
|
73
|
+
const snippets = [];
|
|
74
|
+
const lines = entry.body.split(/\r?\n/);
|
|
75
|
+
for (let index = 0; index < lines.length; index += 1) {
|
|
76
|
+
if (!matcher.matches(lines[index]))
|
|
77
|
+
continue;
|
|
78
|
+
const line = lines[index].trim();
|
|
79
|
+
if (!line)
|
|
80
|
+
continue;
|
|
81
|
+
snippets.push(`${index + 1}: ${line.slice(0, 260)}`);
|
|
82
|
+
if (snippets.length >= MAX_SNIPPETS_PER_RESULT)
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
if (snippets.length === 0 && pathMatch) {
|
|
86
|
+
const firstLine = lines.find((line) => line.trim());
|
|
87
|
+
if (firstLine)
|
|
88
|
+
snippets.push(`1: ${firstLine.trim().slice(0, 260)}`);
|
|
89
|
+
}
|
|
90
|
+
return snippets;
|
|
91
|
+
}
|
|
92
|
+
function pathMatches(path, filter) {
|
|
93
|
+
if (!filter)
|
|
94
|
+
return { matches: true };
|
|
95
|
+
const matcher = createTextMatcher(filter, "glob");
|
|
96
|
+
return { matches: matcher.matches(path), error: matcher.error };
|
|
97
|
+
}
|
|
98
|
+
async function searchFramework(options) {
|
|
99
|
+
const [docs, sourceResult] = await Promise.all([
|
|
100
|
+
options.scope === "source" ? Promise.resolve([]) : loadAllDocs(),
|
|
101
|
+
options.scope === "docs"
|
|
102
|
+
? Promise.resolve({ entries: [], unreadable: 0 })
|
|
103
|
+
: Promise.resolve(sourceAsEntries(listSourceFiles())),
|
|
104
|
+
]);
|
|
105
|
+
const entries = [
|
|
106
|
+
...(options.scope === "source" ? [] : docsAsEntries(docs)),
|
|
107
|
+
...(options.scope === "docs" ? [] : sourceResult.entries),
|
|
108
|
+
];
|
|
109
|
+
const matcher = createTextMatcher(options.pattern, options.mode);
|
|
110
|
+
if (matcher.error) {
|
|
111
|
+
return { hits: [], total: 0, unreadable: 0 };
|
|
112
|
+
}
|
|
113
|
+
const hits = [];
|
|
114
|
+
for (const entry of entries) {
|
|
115
|
+
const pathResult = pathMatches(entry.path, options.pathFilter);
|
|
116
|
+
if (pathResult.error)
|
|
117
|
+
continue;
|
|
118
|
+
if (!pathResult.matches)
|
|
119
|
+
continue;
|
|
120
|
+
const pathMatch = matcher.matches(entry.path);
|
|
121
|
+
const contentMatch = matcher.matches(entry.body);
|
|
122
|
+
if (!pathMatch && !contentMatch)
|
|
123
|
+
continue;
|
|
124
|
+
const snippets = snippetsForEntry(entry, matcher, pathMatch);
|
|
125
|
+
hits.push({ entry, pathMatch, snippets });
|
|
126
|
+
}
|
|
127
|
+
// Keep the result deterministic and favor docs titles and exact path hits.
|
|
128
|
+
hits.sort((a, b) => {
|
|
129
|
+
const aScore = (a.pathMatch ? 2 : 0) + (a.entry.kind === "doc" ? 1 : 0);
|
|
130
|
+
const bScore = (b.pathMatch ? 2 : 0) + (b.entry.kind === "doc" ? 1 : 0);
|
|
131
|
+
return bScore - aScore || a.entry.path.localeCompare(b.entry.path);
|
|
132
|
+
});
|
|
133
|
+
return {
|
|
134
|
+
hits: hits.slice(0, options.limit),
|
|
135
|
+
total: hits.length,
|
|
136
|
+
unreadable: sourceResult.unreadable,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
function printHelp() {
|
|
140
|
+
console.log(`Usage: pnpm action framework-search [options]
|
|
141
|
+
|
|
142
|
+
Options:
|
|
143
|
+
--pattern <text> Text, wildcard, SQL-like, or regex pattern to search
|
|
144
|
+
--query <text> Alias for --pattern
|
|
145
|
+
--scope <scope> all, docs, or source (default: all)
|
|
146
|
+
--mode <mode> substring, glob, sql-like, or regex (default: substring)
|
|
147
|
+
--path <glob> Optional glob to limit matching paths
|
|
148
|
+
--limit <number> Maximum files to return (default: ${DEFAULT_LIMIT}, max: ${MAX_LIMIT})
|
|
149
|
+
--list List the searchable docs and source roots
|
|
150
|
+
--help Show this help message`);
|
|
151
|
+
}
|
|
152
|
+
export default async function frameworkSearchScript(args) {
|
|
153
|
+
const parsed = parseArgs(args);
|
|
154
|
+
if (parsed.help === "true") {
|
|
155
|
+
printHelp();
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const scopeResult = parseScope(parsed.scope);
|
|
159
|
+
if (scopeResult.error) {
|
|
160
|
+
console.log(scopeResult.error);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const scope = scopeResult.value;
|
|
164
|
+
const modeResult = parseMode(parsed.mode);
|
|
165
|
+
if (modeResult.error) {
|
|
166
|
+
console.log(modeResult.error);
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
const mode = modeResult.value;
|
|
170
|
+
const limitResult = parseLimit(parsed.limit);
|
|
171
|
+
if (limitResult.error) {
|
|
172
|
+
console.log(limitResult.error);
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
const limit = limitResult.value;
|
|
176
|
+
if (parsed.list === "true") {
|
|
177
|
+
const [docs, sourceFiles] = await Promise.all([
|
|
178
|
+
scope === "source" ? Promise.resolve([]) : loadAllDocs(),
|
|
179
|
+
scope === "docs"
|
|
180
|
+
? Promise.resolve([])
|
|
181
|
+
: Promise.resolve(listSourceFiles()),
|
|
182
|
+
]);
|
|
183
|
+
console.log(JSON.stringify({
|
|
184
|
+
docs: docs.map((doc) => ({ slug: doc.slug, title: doc.title })),
|
|
185
|
+
source: {
|
|
186
|
+
files: sourceFiles.length,
|
|
187
|
+
roots: Array.from(new Set(sourceFiles.map((file) => file.relativePath.split("/")[0]))),
|
|
188
|
+
},
|
|
189
|
+
}, null, 2));
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
const pattern = parsed.pattern ?? parsed.query;
|
|
193
|
+
if (!pattern) {
|
|
194
|
+
printHelp();
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
const matcher = createTextMatcher(pattern, mode);
|
|
198
|
+
if (matcher.error) {
|
|
199
|
+
console.log(matcher.error);
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
if (parsed.path) {
|
|
203
|
+
const pathMatcher = createTextMatcher(parsed.path, "glob");
|
|
204
|
+
if (pathMatcher.error) {
|
|
205
|
+
console.log(pathMatcher.error);
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
const result = await searchFramework({
|
|
210
|
+
pattern,
|
|
211
|
+
mode,
|
|
212
|
+
scope,
|
|
213
|
+
pathFilter: parsed.path,
|
|
214
|
+
limit,
|
|
215
|
+
});
|
|
216
|
+
if (result.total === 0) {
|
|
217
|
+
console.log(`No matches in the indexed ${scope} corpus for ${JSON.stringify(pattern)}.`);
|
|
218
|
+
console.log("The search covers version-matched framework docs, runtime-visible skills, and readable Core, Toolkit, and first-party template source. A miss is not proof that an implementation is absent if the relevant package source is not published in this app.");
|
|
219
|
+
if (result.unreadable > 0) {
|
|
220
|
+
console.log(`Skipped ${result.unreadable} unreadable source file(s).`);
|
|
221
|
+
}
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
console.log(`Found ${result.total} matching file(s) in ${scope} using ${mode} mode for ${JSON.stringify(pattern)}:\n`);
|
|
225
|
+
for (const hit of result.hits) {
|
|
226
|
+
const label = hit.entry.kind === "doc" ? "doc" : "source";
|
|
227
|
+
console.log(`[${label}] ${hit.entry.path}${hit.entry.title ? ` - ${hit.entry.title}` : ""}`);
|
|
228
|
+
for (const snippet of hit.snippets)
|
|
229
|
+
console.log(` ${snippet}`);
|
|
230
|
+
console.log("");
|
|
231
|
+
}
|
|
232
|
+
if (result.total > result.hits.length) {
|
|
233
|
+
console.log(`Showing ${result.hits.length} of ${result.total} matching files. Refine --path, --pattern, or --limit for more targeted evidence.`);
|
|
234
|
+
}
|
|
235
|
+
if (result.unreadable > 0) {
|
|
236
|
+
console.log(`Skipped ${result.unreadable} unreadable source file(s).`);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=framework-search.js.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export const coreDocsScripts = {
|
|
2
|
+
"framework-search": (args) => import("./framework-search.js").then((m) => m.default(args)),
|
|
2
3
|
"docs-search": (args) => import("./search.js").then((m) => m.default(args)),
|
|
3
4
|
"source-search": (args) => import("./source-search.js").then((m) => m.default(args)),
|
|
4
5
|
};
|
|
@@ -9,5 +9,15 @@
|
|
|
9
9
|
* pnpm action docs-search --slug authentication
|
|
10
10
|
* pnpm action docs-search --list
|
|
11
11
|
*/
|
|
12
|
+
interface DocMeta {
|
|
13
|
+
slug: string;
|
|
14
|
+
title: string;
|
|
15
|
+
description: string;
|
|
16
|
+
}
|
|
17
|
+
export interface DocFull extends DocMeta {
|
|
18
|
+
body: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function loadAllDocs(): Promise<DocFull[]>;
|
|
12
21
|
export default function docsSearchScript(args: string[]): Promise<void>;
|
|
22
|
+
export {};
|
|
13
23
|
//# sourceMappingURL=search.d.ts.map
|
|
@@ -164,7 +164,7 @@ async function loadAgentBundleDocs() {
|
|
|
164
164
|
return [];
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
|
-
async function loadAllDocs() {
|
|
167
|
+
export async function loadAllDocs() {
|
|
168
168
|
return [...loadFilesystemDocs(), ...(await loadAgentBundleDocs())];
|
|
169
169
|
}
|
|
170
170
|
async function searchDocs(query) {
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Core script: source-search
|
|
3
3
|
*
|
|
4
|
-
* Search and read
|
|
5
|
-
*
|
|
4
|
+
* Search and read version-matched framework source.
|
|
5
|
+
* First-party templates are generated into @agent-native/core/corpus during
|
|
6
|
+
* package build; Core and Toolkit source are read from their installed roots.
|
|
6
7
|
*
|
|
7
8
|
* Usage:
|
|
8
9
|
* pnpm action source-search --query "defineAction"
|
|
9
10
|
* pnpm action source-search --path templates/chat/actions/hello.ts
|
|
11
|
+
* pnpm action source-search --path core/src/action.ts
|
|
10
12
|
* pnpm action source-search --path templates/plan/AGENTS.md
|
|
11
13
|
* pnpm action source-search --list
|
|
12
14
|
*/
|
|
15
|
+
export interface SourceFile {
|
|
16
|
+
relativePath: string;
|
|
17
|
+
absolutePath: string;
|
|
18
|
+
visibilityRoot?: string;
|
|
19
|
+
}
|
|
13
20
|
/**
|
|
14
21
|
* The corpus is a sibling of the package root, so a bundled serverless deploy
|
|
15
22
|
* never carries it. Callers register this tool conditionally: advertising a
|
|
@@ -17,5 +24,6 @@
|
|
|
17
24
|
* and reads to it like the code genuinely does not exist.
|
|
18
25
|
*/
|
|
19
26
|
export declare function hasSourceCorpus(): boolean;
|
|
27
|
+
export declare function listSourceFiles(): SourceFile[];
|
|
20
28
|
export default function sourceSearchScript(args: string[]): Promise<void>;
|
|
21
29
|
//# sourceMappingURL=source-search.d.ts.map
|