@agent-native/core 0.127.3 → 0.128.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/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +101 -0
- package/corpus/core/README.md +5 -26
- package/corpus/core/docs/content/actions.mdx +47 -4
- package/corpus/core/docs/content/native-chat-ui.mdx +7 -0
- package/corpus/core/docs/content/organizations-teams-permissions.mdx +109 -3
- package/corpus/core/docs/content/template-design-collaboration-and-full-apps.mdx +15 -0
- package/corpus/core/docs/content/toolkit-org-team.mdx +72 -12
- package/corpus/core/package.json +2 -1
- package/corpus/core/src/a2a/artifact-response.ts +36 -29
- package/corpus/core/src/action.ts +83 -2
- package/corpus/core/src/chat-threads/store.ts +48 -43
- package/corpus/core/src/cli/skills-content/design-visual-edit-skill.ts +46 -3
- package/corpus/core/src/client/AgentPanel.tsx +26 -6
- package/corpus/core/src/client/AssistantChat.tsx +63 -7
- package/corpus/core/src/client/DefaultSpinner.tsx +29 -0
- package/corpus/core/src/client/org/TeamPage.tsx +161 -6
- package/corpus/core/src/client/org/hooks.ts +67 -0
- package/corpus/core/src/client/org/index.ts +9 -0
- package/corpus/core/src/client/transcription/use-live-transcription.ts +62 -10
- package/corpus/core/src/db/client.ts +42 -3
- package/corpus/core/src/db/ensure-additive-columns.ts +60 -33
- package/corpus/core/src/deploy/build.ts +31 -2
- package/corpus/core/src/mcp-client/routes.ts +10 -1
- package/corpus/core/src/org/app-roles-handlers.ts +152 -0
- package/corpus/core/src/org/app-roles.ts +355 -0
- package/corpus/core/src/org/index.ts +27 -1
- package/corpus/core/src/org/migrations.ts +22 -0
- package/corpus/core/src/org/plugin.ts +27 -0
- package/corpus/core/src/org/schema.ts +15 -0
- package/corpus/core/src/scripts/docs/search.ts +17 -0
- package/corpus/core/src/scripts/docs/source-search.ts +10 -0
- package/corpus/core/src/server/agent-chat/script-entries.ts +3 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +53 -52
- package/corpus/core/src/server/builder-design-systems.ts +299 -82
- package/corpus/core/src/server/core-routes-plugin.ts +6 -1
- package/corpus/core/src/server/framework-request-handler.ts +44 -6
- package/corpus/core/src/server/index.ts +8 -0
- package/corpus/core/src/templates/default/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/core/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/corpus/core/src/templates/default/.agents/skills/security/SKILL.md +31 -0
- package/corpus/core/src/templates/headless/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +40 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/security/SKILL.md +31 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/analytics/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/analytics/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/analytics/_gitignore +2 -0
- package/corpus/templates/analytics/actions/data-source-status.ts +21 -12
- package/corpus/templates/analytics/app/global.css +7 -7
- package/corpus/templates/analytics/app/i18n-data.ts +30 -0
- package/corpus/templates/analytics/app/lib/data-source-status.ts +2 -1
- package/corpus/templates/analytics/app/pages/DataSources.tsx +54 -10
- package/corpus/templates/analytics/changelog/2026-07-28-analytics-pages-load-reliably-with-large-dashboard-workspaces.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-28-dashboard-loading-shimmer-now-flows-smoothly-in-one-directi.md +6 -0
- package/corpus/templates/analytics/server/lib/first-party-dashboard-repair.ts +5 -4
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +54 -42
- package/corpus/templates/analytics/server/plugins/db.ts +1 -18
- package/corpus/templates/assets/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/assets/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/assets/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/assets/_gitignore +2 -0
- package/corpus/templates/brain/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/brain/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/corpus/templates/brain/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/brain/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/calendar/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/calendar/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/calendar/_gitignore +2 -0
- package/corpus/templates/chat/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/chat/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/corpus/templates/chat/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/chat/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/clips/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/clips/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/clips/_gitignore +2 -0
- package/corpus/templates/clips/actions/request-transcript.ts +77 -11
- package/corpus/templates/clips/actions/save-browser-transcript.ts +28 -7
- package/corpus/templates/clips/app/routes/record.tsx +11 -3
- package/corpus/templates/clips/changelog/2026-07-28-browser-recordings-no-longer-save-a-truncated-transcript-as-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-28-browser-recordings-no-longer-stop-transcribing-partway-throu.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-28-desktop-full-screen-clips-now-get-an-instant-local-transcrip.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-28-long-transcriptions-no-longer-show-a-false-transcription-sto.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-28-restarting-for-an-update-now-installs-the-newest-release-ins.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-28-the-meeting-recording-pill-now-anchors-to-the-right-edge-of-.md +6 -0
- package/corpus/templates/clips/desktop/src/lib/audio-meter.ts +31 -2
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +114 -13
- package/corpus/templates/clips/desktop/src/lib/updater.ts +12 -4
- package/corpus/templates/clips/desktop/src/overlays/live-audio-bars.tsx +40 -15
- package/corpus/templates/clips/desktop/src/styles.css +10 -7
- package/corpus/templates/clips/desktop/src-tauri/src/recording_indicator.rs +21 -14
- package/corpus/templates/clips/shared/transcript-status.ts +10 -0
- package/corpus/templates/content/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/content/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/content/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/content/_gitignore +2 -0
- package/corpus/templates/crm/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/design/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/design/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/design/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +46 -3
- package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +7 -5
- package/corpus/templates/design/_gitignore +2 -0
- package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +2 -2
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +7 -4
- package/corpus/templates/design/app/components/design/keyboard-shortcuts.ts +1 -1
- package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +10 -4
- package/corpus/templates/design/app/i18n-data.ts +10 -0
- package/corpus/templates/design/app/lib/builder-design-system-upload.ts +280 -0
- package/corpus/templates/design/app/lib/design-ui-events.ts +5 -0
- package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +90 -54
- package/corpus/templates/design/app/root.tsx +18 -1
- package/corpus/templates/design/changelog/2026-07-28-figma-fig-uploads-now-show-indexing-progress-and-an-open-in-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-28-show-or-hide-design-editing-chrome-with-cmd-on-apple-devices.md +6 -0
- package/corpus/templates/design/server/handlers/design-system-decode-job-status.ts +49 -0
- package/corpus/templates/design/server/handlers/design-system-upload-start.ts +87 -0
- package/corpus/templates/design/server/handlers/index-design-system-sources.ts +82 -0
- package/corpus/templates/design/server/routes/api/design-system-decode-job-status.get.ts +1 -0
- package/corpus/templates/design/server/routes/api/design-system-upload-start.post.ts +1 -0
- package/corpus/templates/design/server/routes/api/index-design-system-sources.post.ts +1 -0
- package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/dispatch/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/dispatch/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/dispatch/_gitignore +2 -0
- package/corpus/templates/forms/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/forms/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/forms/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/forms/_gitignore +2 -0
- package/corpus/templates/macros/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/macros/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/macros/_gitignore +2 -0
- package/corpus/templates/mail/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/mail/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/mail/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/mail/_gitignore +2 -0
- package/corpus/templates/plan/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/plan/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/corpus/templates/plan/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/plan/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/plan/_gitignore +2 -0
- package/corpus/templates/slides/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/slides/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/slides/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/slides/_gitignore +2 -0
- package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +126 -53
- package/corpus/templates/slides/app/components/design-system/builder-design-system-upload.ts +271 -0
- package/corpus/templates/slides/app/components/design-system/builder-index-response.ts +1 -1
- package/corpus/templates/slides/app/i18n/en-US.ts +1 -0
- package/corpus/templates/slides/server/handlers/design-system-decode-job-status.ts +49 -0
- package/corpus/templates/slides/server/handlers/design-system-upload-start.ts +87 -0
- package/corpus/templates/slides/server/handlers/index-design-system-sources.ts +79 -0
- package/corpus/templates/slides/server/routes/api/design-system-decode-job-status.get.ts +1 -0
- package/corpus/templates/slides/server/routes/api/design-system-upload-start.post.ts +1 -0
- package/corpus/templates/slides/server/routes/api/index-design-system-sources.post.ts +1 -0
- package/corpus/templates/tasks/.agents/skills/actions/SKILL.md +32 -0
- package/corpus/templates/tasks/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/corpus/templates/tasks/.agents/skills/security/SKILL.md +31 -0
- package/corpus/templates/tasks/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/templates/tasks/_gitignore +2 -0
- package/dist/a2a/artifact-response.d.ts.map +1 -1
- package/dist/a2a/artifact-response.js +30 -29
- package/dist/a2a/artifact-response.js.map +1 -1
- package/dist/action.d.ts +36 -0
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js +37 -2
- package/dist/action.js.map +1 -1
- package/dist/chat-threads/store.d.ts +12 -0
- package/dist/chat-threads/store.d.ts.map +1 -1
- package/dist/chat-threads/store.js +48 -42
- package/dist/chat-threads/store.js.map +1 -1
- package/dist/cli/skills-content/design-visual-edit-skill.d.ts +1 -1
- package/dist/cli/skills-content/design-visual-edit-skill.d.ts.map +1 -1
- package/dist/cli/skills-content/design-visual-edit-skill.js +46 -3
- package/dist/cli/skills-content/design-visual-edit-skill.js.map +1 -1
- package/dist/client/AgentPanel.d.ts +3 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +11 -9
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +57 -6
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/DefaultSpinner.d.ts +7 -0
- package/dist/client/DefaultSpinner.d.ts.map +1 -1
- package/dist/client/DefaultSpinner.js +25 -1
- package/dist/client/DefaultSpinner.js.map +1 -1
- package/dist/client/org/TeamPage.d.ts +13 -1
- package/dist/client/org/TeamPage.d.ts.map +1 -1
- package/dist/client/org/TeamPage.js +41 -11
- package/dist/client/org/TeamPage.js.map +1 -1
- package/dist/client/org/hooks.d.ts +37 -0
- package/dist/client/org/hooks.d.ts.map +1 -1
- package/dist/client/org/hooks.js +37 -0
- package/dist/client/org/hooks.js.map +1 -1
- package/dist/client/org/index.d.ts +3 -2
- package/dist/client/org/index.d.ts.map +1 -1
- package/dist/client/org/index.js +1 -1
- package/dist/client/org/index.js.map +1 -1
- package/dist/client/transcription/use-live-transcription.d.ts +8 -0
- package/dist/client/transcription/use-live-transcription.d.ts.map +1 -1
- package/dist/client/transcription/use-live-transcription.js +38 -11
- package/dist/client/transcription/use-live-transcription.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/db/client.d.ts +12 -0
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +40 -3
- package/dist/db/client.js.map +1 -1
- package/dist/db/ensure-additive-columns.d.ts.map +1 -1
- package/dist/db/ensure-additive-columns.js +54 -32
- package/dist/db/ensure-additive-columns.js.map +1 -1
- package/dist/deploy/build.d.ts +1 -0
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +23 -2
- package/dist/deploy/build.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/mcp-client/routes.d.ts +3 -1
- package/dist/mcp-client/routes.d.ts.map +1 -1
- package/dist/mcp-client/routes.js +8 -2
- package/dist/mcp-client/routes.js.map +1 -1
- package/dist/notifications/routes.d.ts +1 -1
- package/dist/org/app-roles-handlers.d.ts +27 -0
- package/dist/org/app-roles-handlers.d.ts.map +1 -0
- package/dist/org/app-roles-handlers.js +125 -0
- package/dist/org/app-roles-handlers.js.map +1 -0
- package/dist/org/app-roles.d.ts +136 -0
- package/dist/org/app-roles.d.ts.map +1 -0
- package/dist/org/app-roles.js +216 -0
- package/dist/org/app-roles.js.map +1 -0
- package/dist/org/index.d.ts +4 -1
- package/dist/org/index.d.ts.map +1 -1
- package/dist/org/index.js +3 -1
- package/dist/org/index.js.map +1 -1
- package/dist/org/migrations.d.ts.map +1 -1
- package/dist/org/migrations.js +22 -0
- package/dist/org/migrations.js.map +1 -1
- package/dist/org/plugin.d.ts +2 -0
- package/dist/org/plugin.d.ts.map +1 -1
- package/dist/org/plugin.js +20 -0
- package/dist/org/plugin.js.map +1 -1
- package/dist/org/schema.d.ts +143 -0
- package/dist/org/schema.d.ts.map +1 -1
- package/dist/org/schema.js +14 -0
- package/dist/org/schema.js.map +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +8 -8
- package/dist/provider-api/actions/provider-api.d.ts +4 -4
- package/dist/scripts/docs/search.d.ts.map +1 -1
- package/dist/scripts/docs/search.js +15 -0
- package/dist/scripts/docs/search.js.map +1 -1
- package/dist/scripts/docs/source-search.d.ts +7 -0
- package/dist/scripts/docs/source-search.d.ts.map +1 -1
- package/dist/scripts/docs/source-search.js +9 -0
- package/dist/scripts/docs/source-search.js.map +1 -1
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/agent-chat/script-entries.d.ts.map +1 -1
- package/dist/server/agent-chat/script-entries.js +3 -0
- package/dist/server/agent-chat/script-entries.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +46 -48
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/builder-design-systems.d.ts +49 -0
- package/dist/server/builder-design-systems.d.ts.map +1 -1
- package/dist/server/builder-design-systems.js +221 -69
- package/dist/server/builder-design-systems.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +6 -1
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/framework-request-handler.d.ts.map +1 -1
- package/dist/server/framework-request-handler.js +42 -6
- package/dist/server/framework-request-handler.js.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/realtime-token.d.ts +1 -1
- package/dist/templates/chat/.agents/skills/actions/SKILL.md +32 -0
- package/dist/templates/chat/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/dist/templates/chat/.agents/skills/security/SKILL.md +31 -0
- package/dist/templates/chat/.agents/skills/sharing/SKILL.md +4 -0
- package/dist/templates/default/.agents/skills/actions/SKILL.md +32 -0
- package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/dist/templates/default/.agents/skills/security/SKILL.md +31 -0
- package/dist/templates/headless/.agents/skills/actions/SKILL.md +32 -0
- package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -0
- package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +40 -0
- package/dist/templates/workspace-core/.agents/skills/security/SKILL.md +31 -0
- package/dist/templates/workspace-core/.agents/skills/sharing/SKILL.md +4 -0
- package/docs/content/actions.mdx +47 -4
- package/docs/content/native-chat-ui.mdx +7 -0
- package/docs/content/organizations-teams-permissions.mdx +109 -3
- package/docs/content/template-design-collaboration-and-full-apps.mdx +15 -0
- package/docs/content/toolkit-org-team.mdx +72 -12
- package/package.json +2 -1
- package/src/a2a/artifact-response.ts +36 -29
- package/src/action.ts +83 -2
- package/src/chat-threads/store.ts +48 -43
- package/src/cli/skills-content/design-visual-edit-skill.ts +46 -3
- package/src/client/AgentPanel.tsx +26 -6
- package/src/client/AssistantChat.tsx +63 -7
- package/src/client/DefaultSpinner.tsx +29 -0
- package/src/client/org/TeamPage.tsx +161 -6
- package/src/client/org/hooks.ts +67 -0
- package/src/client/org/index.ts +9 -0
- package/src/client/transcription/use-live-transcription.ts +62 -10
- package/src/db/client.ts +42 -3
- package/src/db/ensure-additive-columns.ts +60 -33
- package/src/deploy/build.ts +31 -2
- package/src/mcp-client/routes.ts +10 -1
- package/src/org/app-roles-handlers.ts +152 -0
- package/src/org/app-roles.ts +355 -0
- package/src/org/index.ts +27 -1
- package/src/org/migrations.ts +22 -0
- package/src/org/plugin.ts +27 -0
- package/src/org/schema.ts +15 -0
- package/src/scripts/docs/search.ts +17 -0
- package/src/scripts/docs/source-search.ts +10 -0
- package/src/server/agent-chat/script-entries.ts +3 -0
- package/src/server/agent-chat-plugin.ts +53 -52
- package/src/server/builder-design-systems.ts +299 -82
- package/src/server/core-routes-plugin.ts +6 -1
- package/src/server/framework-request-handler.ts +44 -6
- package/src/server/index.ts +8 -0
- package/src/templates/chat/.agents/skills/actions/SKILL.md +32 -0
- package/src/templates/chat/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/src/templates/chat/.agents/skills/security/SKILL.md +31 -0
- package/src/templates/chat/.agents/skills/sharing/SKILL.md +4 -0
- package/src/templates/default/.agents/skills/actions/SKILL.md +32 -0
- package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/src/templates/default/.agents/skills/security/SKILL.md +31 -0
- package/src/templates/headless/.agents/skills/actions/SKILL.md +32 -0
- package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -0
- package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +7 -0
- package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +40 -0
- package/src/templates/workspace-core/.agents/skills/security/SKILL.md +31 -0
- package/src/templates/workspace-core/.agents/skills/sharing/SKILL.md +4 -0
- package/corpus/core/src/templates/chat/.agents/skills/actions/SKILL.md +0 -530
- package/corpus/core/src/templates/chat/.agents/skills/adding-a-feature/SKILL.md +0 -191
- package/corpus/core/src/templates/chat/.agents/skills/agent-native-docs/SKILL.md +0 -115
- package/corpus/core/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +0 -177
- package/corpus/core/src/templates/chat/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/core/src/templates/chat/.agents/skills/create-skill/SKILL.md +0 -221
- package/corpus/core/src/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +0 -220
- package/corpus/core/src/templates/chat/.agents/skills/delegate-to-agent/SKILL.md +0 -263
- package/corpus/core/src/templates/chat/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/core/src/templates/chat/.agents/skills/frontend-design/SKILL.md +0 -174
- package/corpus/core/src/templates/chat/.agents/skills/real-time-sync/SKILL.md +0 -232
- package/corpus/core/src/templates/chat/.agents/skills/security/SKILL.md +0 -282
- package/corpus/core/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +0 -119
- package/corpus/core/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +0 -123
- package/corpus/core/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +0 -122
- package/corpus/core/src/templates/chat/.env.example +0 -5
- package/corpus/core/src/templates/chat/.ignore +0 -0
- package/corpus/core/src/templates/chat/.oxfmtrc.json +0 -8
- package/corpus/core/src/templates/chat/AGENTS.md +0 -77
- package/corpus/core/src/templates/chat/CHANGELOG.md +0 -10
- package/corpus/core/src/templates/chat/DEVELOPING.md +0 -185
- package/corpus/core/src/templates/chat/README.md +0 -32
- package/corpus/core/src/templates/chat/_gitignore +0 -46
- package/corpus/core/src/templates/chat/actions/hello.ts +0 -13
- package/corpus/core/src/templates/chat/actions/navigate.ts +0 -41
- package/corpus/core/src/templates/chat/actions/run.ts +0 -2
- package/corpus/core/src/templates/chat/actions/view-screen.ts +0 -31
- package/corpus/core/src/templates/chat/app/components/layout/Header.tsx +0 -60
- package/corpus/core/src/templates/chat/app/components/layout/Layout.tsx +0 -188
- package/corpus/core/src/templates/chat/app/components/layout/Sidebar.tsx +0 -505
- package/corpus/core/src/templates/chat/app/components/ui/button.tsx +0 -1
- package/corpus/core/src/templates/chat/app/components/ui/card.tsx +0 -1
- package/corpus/core/src/templates/chat/app/components/ui/dropdown-menu.tsx +0 -1
- package/corpus/core/src/templates/chat/app/components/ui/input.tsx +0 -1
- package/corpus/core/src/templates/chat/app/components/ui/label.tsx +0 -1
- package/corpus/core/src/templates/chat/app/components/ui/sheet.tsx +0 -1
- package/corpus/core/src/templates/chat/app/components/ui/toolkit-provider.tsx +0 -17
- package/corpus/core/src/templates/chat/app/components/ui/tooltip.tsx +0 -1
- package/corpus/core/src/templates/chat/app/design-system.ts +0 -3
- package/corpus/core/src/templates/chat/app/entry.client.tsx +0 -22
- package/corpus/core/src/templates/chat/app/entry.server.tsx +0 -10
- package/corpus/core/src/templates/chat/app/global.css +0 -93
- package/corpus/core/src/templates/chat/app/hooks/use-navigation-state.ts +0 -93
- package/corpus/core/src/templates/chat/app/i18n/ar-SA.ts +0 -68
- package/corpus/core/src/templates/chat/app/i18n/de-DE.ts +0 -71
- package/corpus/core/src/templates/chat/app/i18n/en-US.ts +0 -70
- package/corpus/core/src/templates/chat/app/i18n/es-ES.ts +0 -71
- package/corpus/core/src/templates/chat/app/i18n/fr-FR.ts +0 -71
- package/corpus/core/src/templates/chat/app/i18n/hi-IN.ts +0 -69
- package/corpus/core/src/templates/chat/app/i18n/index.ts +0 -34
- package/corpus/core/src/templates/chat/app/i18n/ja-JP.ts +0 -70
- package/corpus/core/src/templates/chat/app/i18n/ko-KR.ts +0 -70
- package/corpus/core/src/templates/chat/app/i18n/pt-BR.ts +0 -71
- package/corpus/core/src/templates/chat/app/i18n/zh-CN.ts +0 -66
- package/corpus/core/src/templates/chat/app/i18n/zh-TW.ts +0 -66
- package/corpus/core/src/templates/chat/app/i18n-data.ts +0 -556
- package/corpus/core/src/templates/chat/app/lib/agent-page.tsx +0 -49
- package/corpus/core/src/templates/chat/app/lib/app-config.ts +0 -11
- package/corpus/core/src/templates/chat/app/lib/tab-id.ts +0 -1
- package/corpus/core/src/templates/chat/app/lib/utils.ts +0 -1
- package/corpus/core/src/templates/chat/app/root.tsx +0 -173
- package/corpus/core/src/templates/chat/app/routes/_index.tsx +0 -94
- package/corpus/core/src/templates/chat/app/routes/agent.tsx +0 -24
- package/corpus/core/src/templates/chat/app/routes/chat.$threadId.tsx +0 -1
- package/corpus/core/src/templates/chat/app/routes/database.tsx +0 -17
- package/corpus/core/src/templates/chat/app/routes/extensions.$id.$slug.tsx +0 -2
- package/corpus/core/src/templates/chat/app/routes/extensions.$id.tsx +0 -11
- package/corpus/core/src/templates/chat/app/routes/extensions._index.tsx +0 -11
- package/corpus/core/src/templates/chat/app/routes/extensions.tsx +0 -5
- package/corpus/core/src/templates/chat/app/routes/observability.tsx +0 -19
- package/corpus/core/src/templates/chat/app/routes/settings.tsx +0 -89
- package/corpus/core/src/templates/chat/app/routes/team.tsx +0 -11
- package/corpus/core/src/templates/chat/app/routes.ts +0 -4
- package/corpus/core/src/templates/chat/app/vite-env.d.ts +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-06-24-a-new-settings-page-gives-quick-access-to-language-workspace.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-06-29-chat-layouts-adapt-when-the-agent-sidebar-is-open.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +0 -5
- package/corpus/core/src/templates/chat/changelog/2026-07-10-chat-now-makes-ai-connection-setup-clear-without-shifting-th.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-14-chat-opens-reliably-on-hosted-deployments-instead-of-failing.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-14-fixed-chat-template-startup-with-older-core-versions.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-15-chat-navigation-focuses-on-chat-and-agent.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-22-compact-sidebar-footer.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-22-recent-chats-are-easier-to-scan-and-expand.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-23-full-page-chat-is-better-centered-with-quieter-chat-history-.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-24-borderless-secondary-surfaces.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +0 -6
- package/corpus/core/src/templates/chat/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +0 -6
- package/corpus/core/src/templates/chat/components.json +0 -20
- package/corpus/core/src/templates/chat/learnings.defaults.md +0 -5
- package/corpus/core/src/templates/chat/netlify.toml +0 -11
- package/corpus/core/src/templates/chat/package.json +0 -92
- package/corpus/core/src/templates/chat/public/agent-native-icon-dark.svg +0 -10
- package/corpus/core/src/templates/chat/public/agent-native-icon-light.svg +0 -10
- package/corpus/core/src/templates/chat/public/agent-native-logo-dark.svg +0 -21
- package/corpus/core/src/templates/chat/public/agent-native-logo-light.svg +0 -21
- package/corpus/core/src/templates/chat/public/favicon.svg +0 -1
- package/corpus/core/src/templates/chat/public/icon-180.svg +0 -1
- package/corpus/core/src/templates/chat/public/icon-192.svg +0 -1
- package/corpus/core/src/templates/chat/public/icon-512.svg +0 -1
- package/corpus/core/src/templates/chat/public/manifest.json +0 -21
- package/corpus/core/src/templates/chat/react-router.config.ts +0 -7
- package/corpus/core/src/templates/chat/server/middleware/auth.ts +0 -15
- package/corpus/core/src/templates/chat/server/plugins/agent-chat.ts +0 -21
- package/corpus/core/src/templates/chat/server/plugins/auth.ts +0 -17
- package/corpus/core/src/templates/chat/server/routes/[...page].get.ts +0 -5
- package/corpus/core/src/templates/chat/ssr-entry.ts +0 -15
- package/corpus/core/src/templates/chat/tsconfig.json +0 -21
- package/corpus/core/src/templates/chat/vite.config.ts +0 -19
- package/corpus/templates/design/server/handlers/index-design-system-with-builder.ts +0 -151
- package/corpus/templates/design/server/routes/api/index-design-system-with-builder.post.ts +0 -1
- package/corpus/templates/slides/server/handlers/index-design-system-with-builder.ts +0 -119
- package/corpus/templates/slides/server/routes/api/index-design-system-with-builder.post.ts +0 -1
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "Chat",
|
|
3
|
-
"short_name": "Chat",
|
|
4
|
-
"description": "Chat-first agent-native app ready to customize",
|
|
5
|
-
"start_url": ".",
|
|
6
|
-
"display": "standalone",
|
|
7
|
-
"background_color": "#111111",
|
|
8
|
-
"theme_color": "#18181B",
|
|
9
|
-
"icons": [
|
|
10
|
-
{
|
|
11
|
-
"src": "icon-192.svg",
|
|
12
|
-
"sizes": "192x192",
|
|
13
|
-
"type": "image/svg+xml"
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
"src": "icon-512.svg",
|
|
17
|
-
"sizes": "512x512",
|
|
18
|
-
"type": "image/svg+xml"
|
|
19
|
-
}
|
|
20
|
-
]
|
|
21
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { runAuthGuard } from "@agent-native/core/server";
|
|
2
|
-
/**
|
|
3
|
-
* Global auth middleware — runs for ALL requests (page routes, API routes,
|
|
4
|
-
* framework routes). The auth plugin configures the guard; this middleware
|
|
5
|
-
* enforces it on every request.
|
|
6
|
-
*
|
|
7
|
-
* Without this, auth only runs for /_agent-native/* routes because the
|
|
8
|
-
* framework handler's middleware registry is scoped to that catch-all.
|
|
9
|
-
* Page routes (/, /settings) and API routes (/api/*) would bypass auth.
|
|
10
|
-
*/
|
|
11
|
-
import { defineEventHandler } from "h3";
|
|
12
|
-
|
|
13
|
-
export default defineEventHandler(async (event) => {
|
|
14
|
-
return runAuthGuard(event);
|
|
15
|
-
});
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { getOrgContext } from "@agent-native/core/org";
|
|
2
|
-
import {
|
|
3
|
-
createAgentChatPlugin,
|
|
4
|
-
loadActionsFromStaticRegistry,
|
|
5
|
-
} from "@agent-native/core/server";
|
|
6
|
-
|
|
7
|
-
import actionsRegistry from "../../.generated/actions-registry.js";
|
|
8
|
-
|
|
9
|
-
const INITIAL_TOOL_NAMES = ["view-screen", "navigate", "hello"];
|
|
10
|
-
|
|
11
|
-
export default createAgentChatPlugin({
|
|
12
|
-
appId: "chat",
|
|
13
|
-
actions: loadActionsFromStaticRegistry(actionsRegistry),
|
|
14
|
-
initialToolNames: INITIAL_TOOL_NAMES,
|
|
15
|
-
resolveOrgId: async (event) => (await getOrgContext(event)).orgId,
|
|
16
|
-
systemPrompt: `You are the Chat app agent.
|
|
17
|
-
|
|
18
|
-
This is a minimal chat-first Agent-Native app. The chat is the product surface, and actions are the contract shared by chat, UI, HTTP, MCP, A2A, and CLI.
|
|
19
|
-
|
|
20
|
-
Use actions as the source of truth. Start by inspecting the current screen when context matters. When the user asks to extend this app, keep the change small and agent-native: add or update actions, expose useful UI, and keep application state/navigation visible to the agent.`,
|
|
21
|
-
});
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { createAuthPlugin } from "@agent-native/core/server";
|
|
2
|
-
|
|
3
|
-
const rawAppTitle = "{{APP_TITLE}}";
|
|
4
|
-
const appTitle = rawAppTitle === "{" + "{APP_TITLE}}" ? "Chat" : rawAppTitle;
|
|
5
|
-
|
|
6
|
-
export default createAuthPlugin({
|
|
7
|
-
marketing: {
|
|
8
|
-
appName: appTitle,
|
|
9
|
-
tagline:
|
|
10
|
-
"Start from a chat-first agent-native app and add actions, screens, and workflows as you grow.",
|
|
11
|
-
features: [
|
|
12
|
-
"Full-page chat with durable threads and tool call history",
|
|
13
|
-
"Add actions once and use them from chat, UI, HTTP, MCP, A2A, and CLI",
|
|
14
|
-
"Plug in your own agent runtime or build on the included app-agent loop",
|
|
15
|
-
],
|
|
16
|
-
},
|
|
17
|
-
});
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SSR entry point for Nitro.
|
|
3
|
-
* Wraps React Router's request handler so Nitro can use it as a service.
|
|
4
|
-
*/
|
|
5
|
-
import { createRequestHandler } from "react-router";
|
|
6
|
-
|
|
7
|
-
const handler = createRequestHandler(
|
|
8
|
-
() => import("virtual:react-router/server-build"),
|
|
9
|
-
);
|
|
10
|
-
|
|
11
|
-
export default {
|
|
12
|
-
async fetch(request: Request) {
|
|
13
|
-
return handler(request);
|
|
14
|
-
},
|
|
15
|
-
};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "@agent-native/core/tsconfig.base.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"ignoreDeprecations": "6.0",
|
|
5
|
-
"rootDirs": [".", "./.react-router/types"],
|
|
6
|
-
"paths": {
|
|
7
|
-
"*": ["./*"],
|
|
8
|
-
"@/*": ["./app/*"],
|
|
9
|
-
"@shared/*": ["./shared/*"]
|
|
10
|
-
}
|
|
11
|
-
},
|
|
12
|
-
"include": [
|
|
13
|
-
"app/**/*",
|
|
14
|
-
"server/**/*",
|
|
15
|
-
"shared/**/*",
|
|
16
|
-
"vite.config.ts",
|
|
17
|
-
"react-router.config.ts",
|
|
18
|
-
".react-router/types/**/*",
|
|
19
|
-
".generated/**/*"
|
|
20
|
-
]
|
|
21
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { agentNative } from "@agent-native/core/vite";
|
|
2
|
-
import { reactRouter } from "@react-router/dev/vite";
|
|
3
|
-
import { defineConfig } from "vite";
|
|
4
|
-
|
|
5
|
-
const reactRouterPlugins = reactRouter as unknown as () => any[];
|
|
6
|
-
const agentNativePlugins = agentNative as unknown as (
|
|
7
|
-
options?: Parameters<typeof agentNative>[0],
|
|
8
|
-
) => any[];
|
|
9
|
-
|
|
10
|
-
export default defineConfig({
|
|
11
|
-
plugins: [
|
|
12
|
-
...reactRouterPlugins(),
|
|
13
|
-
...agentNativePlugins({
|
|
14
|
-
// shiki only runs in AssistantChat's useEffect — keep it out of the
|
|
15
|
-
// CF Pages Functions bundle (25 MiB limit).
|
|
16
|
-
ssrStubs: ["shiki"],
|
|
17
|
-
}),
|
|
18
|
-
],
|
|
19
|
-
});
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import { getOrgContext } from "@agent-native/core/org";
|
|
2
|
-
import {
|
|
3
|
-
FeatureNotConfiguredError,
|
|
4
|
-
getSession,
|
|
5
|
-
runWithRequestContext,
|
|
6
|
-
startBuilderDesignSystemIndex,
|
|
7
|
-
} from "@agent-native/core/server";
|
|
8
|
-
import {
|
|
9
|
-
defineEventHandler,
|
|
10
|
-
getRequestHeader,
|
|
11
|
-
readMultipartFormData,
|
|
12
|
-
setResponseStatus,
|
|
13
|
-
} from "h3";
|
|
14
|
-
|
|
15
|
-
import { upsertBuilderProxyDesignSystem } from "../lib/builder-design-system-proxy.js";
|
|
16
|
-
|
|
17
|
-
const MAX_FIG_BYTES = 200 * 1024 * 1024;
|
|
18
|
-
const MULTIPART_OVERHEAD_BYTES = 1024 * 1024;
|
|
19
|
-
|
|
20
|
-
function requestContentLength(event: Parameters<typeof getRequestHeader>[0]) {
|
|
21
|
-
const raw = getRequestHeader(event, "content-length");
|
|
22
|
-
if (!raw) return null;
|
|
23
|
-
const parsed = Number(raw);
|
|
24
|
-
return Number.isSafeInteger(parsed) && parsed > 0 ? parsed : null;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Builder-indexing endpoint: accepts a `.fig` upload (multipart field `file`)
|
|
29
|
-
* and starts Builder's design-system indexing pipeline. The app does not
|
|
30
|
-
* process `.fig` files locally; Builder owns the generated docs and the
|
|
31
|
-
* asynchronous indexing job.
|
|
32
|
-
*/
|
|
33
|
-
export const indexDesignSystemWithBuilder = defineEventHandler(
|
|
34
|
-
async (event) => {
|
|
35
|
-
const session = await getSession(event).catch(() => null);
|
|
36
|
-
if (!session?.email) {
|
|
37
|
-
setResponseStatus(event, 401);
|
|
38
|
-
return { error: "Unauthorized" };
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
const contentLength = requestContentLength(event);
|
|
42
|
-
if (contentLength === null) {
|
|
43
|
-
setResponseStatus(event, 411);
|
|
44
|
-
return { error: "A valid Content-Length header is required." };
|
|
45
|
-
}
|
|
46
|
-
if (contentLength > MAX_FIG_BYTES + MULTIPART_OVERHEAD_BYTES) {
|
|
47
|
-
setResponseStatus(event, 413);
|
|
48
|
-
return {
|
|
49
|
-
error: `File too large (max ${Math.round(MAX_FIG_BYTES / 1024 / 1024)} MB).`,
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
let parts;
|
|
54
|
-
try {
|
|
55
|
-
parts = await readMultipartFormData(event);
|
|
56
|
-
} catch {
|
|
57
|
-
setResponseStatus(event, 413);
|
|
58
|
-
return { error: "Upload too large or malformed." };
|
|
59
|
-
}
|
|
60
|
-
const part = parts?.find(
|
|
61
|
-
(p) => (p.name === "file" || p.name === "fig") && p.data,
|
|
62
|
-
);
|
|
63
|
-
if (!part) {
|
|
64
|
-
setResponseStatus(event, 400);
|
|
65
|
-
return {
|
|
66
|
-
error: "No .fig file uploaded (expected multipart field 'file').",
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
if (part.data.length > MAX_FIG_BYTES) {
|
|
70
|
-
setResponseStatus(event, 413);
|
|
71
|
-
return {
|
|
72
|
-
error: `File too large (max ${Math.round(MAX_FIG_BYTES / 1024 / 1024)} MB).`,
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
const filename = part.filename || "brand.fig";
|
|
76
|
-
const uploadedBytes = Buffer.from(part.data);
|
|
77
|
-
const isFigName = filename.toLowerCase().endsWith(".fig");
|
|
78
|
-
const isFigBytes =
|
|
79
|
-
uploadedBytes.subarray(0, 8).toString("utf8") === "fig-kiwi" ||
|
|
80
|
-
uploadedBytes
|
|
81
|
-
.subarray(0, 4)
|
|
82
|
-
.equals(Buffer.from([0x50, 0x4b, 0x03, 0x04]));
|
|
83
|
-
if (!isFigName || !isFigBytes) {
|
|
84
|
-
setResponseStatus(event, 400);
|
|
85
|
-
return { error: "Uploaded file is not a valid .fig container." };
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
const suggestedTitle =
|
|
89
|
-
(part.filename || "Imported brand")
|
|
90
|
-
.replace(/\.fig$/i, "")
|
|
91
|
-
.replace(/[-_]+/g, " ")
|
|
92
|
-
.trim() || "Imported brand";
|
|
93
|
-
|
|
94
|
-
// `session.orgId` is set at sign-in and not refreshed when the user
|
|
95
|
-
// switches orgs; `getOrgContext` resolves the live active-org setting.
|
|
96
|
-
let orgId: string | undefined;
|
|
97
|
-
try {
|
|
98
|
-
orgId = (await getOrgContext(event)).orgId ?? undefined;
|
|
99
|
-
} catch {
|
|
100
|
-
// Org tables can be unavailable during first boot; fall back below.
|
|
101
|
-
}
|
|
102
|
-
orgId ??= session.orgId ?? undefined;
|
|
103
|
-
|
|
104
|
-
try {
|
|
105
|
-
return await runWithRequestContext(
|
|
106
|
-
{ userEmail: session.email, orgId },
|
|
107
|
-
async () => {
|
|
108
|
-
const result = await startBuilderDesignSystemIndex({
|
|
109
|
-
projectName: suggestedTitle,
|
|
110
|
-
files: [
|
|
111
|
-
{
|
|
112
|
-
name: filename,
|
|
113
|
-
data: part.data,
|
|
114
|
-
mimeType: "application/octet-stream",
|
|
115
|
-
},
|
|
116
|
-
],
|
|
117
|
-
});
|
|
118
|
-
const proxy = await upsertBuilderProxyDesignSystem({
|
|
119
|
-
result,
|
|
120
|
-
ownerEmail: session.email,
|
|
121
|
-
orgId: orgId ?? null,
|
|
122
|
-
projectName: suggestedTitle,
|
|
123
|
-
});
|
|
124
|
-
return {
|
|
125
|
-
...result,
|
|
126
|
-
...proxy,
|
|
127
|
-
uploadedFileCount: 1,
|
|
128
|
-
};
|
|
129
|
-
},
|
|
130
|
-
);
|
|
131
|
-
} catch (err) {
|
|
132
|
-
if (err instanceof FeatureNotConfiguredError) {
|
|
133
|
-
setResponseStatus(event, 412);
|
|
134
|
-
return {
|
|
135
|
-
error:
|
|
136
|
-
err.message ||
|
|
137
|
-
"Connect Builder.io before indexing a design system from Figma.",
|
|
138
|
-
builderConnectUrl:
|
|
139
|
-
err.builderConnectUrl ?? "/_agent-native/builder/connect",
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
setResponseStatus(event, 502);
|
|
143
|
-
return {
|
|
144
|
-
error:
|
|
145
|
-
err instanceof Error
|
|
146
|
-
? err.message
|
|
147
|
-
: "Builder design-system indexing failed.",
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
},
|
|
151
|
-
);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { indexDesignSystemWithBuilder as default } from "../../handlers/index-design-system-with-builder";
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
FeatureNotConfiguredError,
|
|
3
|
-
getSession,
|
|
4
|
-
startBuilderDesignSystemIndex,
|
|
5
|
-
} from "@agent-native/core/server";
|
|
6
|
-
import {
|
|
7
|
-
defineEventHandler,
|
|
8
|
-
getRequestHeader,
|
|
9
|
-
readMultipartFormData,
|
|
10
|
-
setResponseStatus,
|
|
11
|
-
} from "h3";
|
|
12
|
-
|
|
13
|
-
import { upsertBuilderProxyDesignSystem } from "../lib/builder-design-system-proxy.js";
|
|
14
|
-
import { withSlidesRequestContext } from "./request-auth-context.js";
|
|
15
|
-
|
|
16
|
-
const MAX_FIG_BYTES = 200 * 1024 * 1024;
|
|
17
|
-
const MULTIPART_OVERHEAD_BYTES = 1024 * 1024;
|
|
18
|
-
|
|
19
|
-
function requestContentLength(event: Parameters<typeof getRequestHeader>[0]) {
|
|
20
|
-
const raw = getRequestHeader(event, "content-length");
|
|
21
|
-
if (!raw) return null;
|
|
22
|
-
const parsed = Number(raw);
|
|
23
|
-
return Number.isFinite(parsed) && parsed >= 0 ? parsed : null;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export const indexDesignSystemWithBuilder = defineEventHandler(
|
|
27
|
-
async (event) => {
|
|
28
|
-
const session = await getSession(event).catch(() => null);
|
|
29
|
-
if (!session?.email) {
|
|
30
|
-
setResponseStatus(event, 401);
|
|
31
|
-
return { error: "Unauthorized" };
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const contentLength = requestContentLength(event);
|
|
35
|
-
if (
|
|
36
|
-
contentLength !== null &&
|
|
37
|
-
contentLength > MAX_FIG_BYTES + MULTIPART_OVERHEAD_BYTES
|
|
38
|
-
) {
|
|
39
|
-
setResponseStatus(event, 413);
|
|
40
|
-
return {
|
|
41
|
-
error: `File too large (max ${Math.round(MAX_FIG_BYTES / 1024 / 1024)} MB).`,
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
let parts;
|
|
46
|
-
try {
|
|
47
|
-
parts = await readMultipartFormData(event);
|
|
48
|
-
} catch {
|
|
49
|
-
setResponseStatus(event, 413);
|
|
50
|
-
return { error: "Upload too large or malformed." };
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const part = parts?.find(
|
|
54
|
-
(p) => (p.name === "file" || p.name === "fig") && p.data,
|
|
55
|
-
);
|
|
56
|
-
if (!part) {
|
|
57
|
-
setResponseStatus(event, 400);
|
|
58
|
-
return {
|
|
59
|
-
error: "No .fig file uploaded (expected multipart field 'file').",
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
if (part.data.length > MAX_FIG_BYTES) {
|
|
63
|
-
setResponseStatus(event, 413);
|
|
64
|
-
return {
|
|
65
|
-
error: `File too large (max ${Math.round(MAX_FIG_BYTES / 1024 / 1024)} MB).`,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
const suggestedTitle =
|
|
70
|
-
(part.filename || "Imported brand")
|
|
71
|
-
.replace(/\.fig$/i, "")
|
|
72
|
-
.replace(/[-_]+/g, " ")
|
|
73
|
-
.trim() || "Imported brand";
|
|
74
|
-
|
|
75
|
-
try {
|
|
76
|
-
return await withSlidesRequestContext(event, async ({ orgId }) => {
|
|
77
|
-
const result = await startBuilderDesignSystemIndex({
|
|
78
|
-
projectName: suggestedTitle,
|
|
79
|
-
files: [
|
|
80
|
-
{
|
|
81
|
-
name: part.filename || "brand.fig",
|
|
82
|
-
data: part.data,
|
|
83
|
-
mimeType: "application/octet-stream",
|
|
84
|
-
},
|
|
85
|
-
],
|
|
86
|
-
});
|
|
87
|
-
const proxy = await upsertBuilderProxyDesignSystem({
|
|
88
|
-
result,
|
|
89
|
-
ownerEmail: session.email,
|
|
90
|
-
orgId: orgId ?? null,
|
|
91
|
-
projectName: suggestedTitle,
|
|
92
|
-
});
|
|
93
|
-
return {
|
|
94
|
-
...result,
|
|
95
|
-
...proxy,
|
|
96
|
-
uploadedFileCount: 1,
|
|
97
|
-
};
|
|
98
|
-
});
|
|
99
|
-
} catch (err) {
|
|
100
|
-
if (err instanceof FeatureNotConfiguredError) {
|
|
101
|
-
setResponseStatus(event, 412);
|
|
102
|
-
return {
|
|
103
|
-
error:
|
|
104
|
-
err.message ||
|
|
105
|
-
"Connect Builder.io before indexing a design system from Figma.",
|
|
106
|
-
builderConnectUrl:
|
|
107
|
-
err.builderConnectUrl ?? "/_agent-native/builder/connect",
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
setResponseStatus(event, 502);
|
|
111
|
-
return {
|
|
112
|
-
error:
|
|
113
|
-
err instanceof Error
|
|
114
|
-
? err.message
|
|
115
|
-
: "Builder design-system indexing failed.",
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
},
|
|
119
|
-
);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { indexDesignSystemWithBuilder as default } from "../../handlers/index-design-system-with-builder";
|