@agent-native/core 0.103.1 → 0.104.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/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +30 -0
- package/corpus/core/package.json +9 -2
- package/corpus/core/src/agent/engine/credential-errors.ts +2 -2
- package/corpus/core/src/agent/production-agent.ts +30 -0
- package/corpus/core/src/agent/run-store.ts +12 -2
- package/corpus/core/src/cli/create.ts +1 -0
- package/corpus/core/src/cli/skills-content/visual-plan-skill.ts +30 -11
- package/corpus/core/src/cli/templates-meta.ts +4 -3
- package/corpus/core/src/client/AgentAskPopover.tsx +89 -0
- package/corpus/core/src/client/AgentChatHome.tsx +4 -0
- package/corpus/core/src/client/AgentPanel.tsx +321 -223
- package/corpus/core/src/client/AssistantChat.tsx +6 -10
- package/corpus/core/src/client/MultiTabAssistantChat.tsx +53 -372
- package/corpus/core/src/client/agent-chat-adapter.ts +13 -1
- package/corpus/core/src/client/agent-page/AgentContextTab.tsx +133 -149
- package/corpus/core/src/client/agent-page/AgentEmptyState.tsx +44 -0
- package/corpus/core/src/client/agent-page/AgentJobsTab.tsx +153 -82
- package/corpus/core/src/client/agent-page/AgentTabFrame.tsx +39 -0
- package/corpus/core/src/client/agent-page/AgentTabsPage.tsx +368 -356
- package/corpus/core/src/client/agent-page/types.ts +1 -1
- package/corpus/core/src/client/analytics.ts +51 -5
- package/corpus/core/src/client/chat/run-recovery.tsx +12 -4
- package/corpus/core/src/client/composer/PromptComposer.tsx +5 -15
- package/corpus/core/src/client/composer/TiptapComposer.tsx +32 -3
- package/corpus/core/src/client/dynamic-suggestions.ts +3 -3
- package/corpus/core/src/client/index.ts +16 -1
- package/corpus/core/src/client/resources/ResourceTree.tsx +249 -38
- package/corpus/core/src/client/resources/ResourcesPanel.tsx +307 -140
- package/corpus/core/src/client/session-replay.ts +158 -5
- package/corpus/core/src/client/settings/AutomationsSection.tsx +30 -10
- package/corpus/core/src/client/settings/SettingsPanel.tsx +3 -2
- package/corpus/core/src/client/settings/SettingsTabsPage.tsx +2 -0
- package/corpus/core/src/client/settings/agent-settings-search.ts +2 -2
- package/corpus/core/src/client/use-chat-threads.ts +2 -0
- package/corpus/core/src/connections/catalog.ts +49 -7
- package/corpus/core/src/db/index.ts +6 -1
- package/corpus/core/src/extensions/actions.ts +106 -16
- package/corpus/core/src/extensions/content-patch.ts +22 -0
- package/corpus/core/src/extensions/routes.ts +18 -0
- package/corpus/core/src/extensions/store.ts +8 -0
- package/corpus/core/src/index.ts +3 -0
- package/corpus/core/src/ingestion/docx.ts +158 -0
- package/corpus/core/src/ingestion/figma-node-to-html.ts +1860 -0
- package/corpus/core/src/ingestion/figma.ts +548 -0
- package/corpus/core/src/ingestion/index.ts +107 -0
- package/corpus/core/src/ingestion/media.ts +264 -0
- package/corpus/core/src/ingestion/notion.ts +121 -0
- package/corpus/core/src/ingestion/office.ts +214 -0
- package/corpus/core/src/ingestion/orchestration.ts +160 -0
- package/corpus/core/src/ingestion/pptx.ts +333 -0
- package/corpus/core/src/ingestion/selection.ts +81 -0
- package/corpus/core/src/ingestion/website.ts +151 -0
- package/corpus/core/src/integrations/plugin.ts +45 -37
- package/corpus/core/src/localization/default-messages.ts +35 -12
- package/corpus/core/src/observability/hosted-model-experiment.ts +118 -0
- package/corpus/core/src/observability/traces.ts +5 -3
- package/corpus/core/src/provider-api/index.ts +452 -8
- package/corpus/core/src/scripts/agent-engines/list-agent-engines.ts +18 -1
- package/corpus/core/src/search-utils/index.ts +112 -0
- package/corpus/core/src/secrets/register-framework-secrets.ts +61 -0
- package/corpus/core/src/server/action-discovery.ts +33 -8
- package/corpus/core/src/server/agent-chat/framework-prompts.ts +2 -2
- package/corpus/core/src/server/agent-chat/prompt-resources.ts +144 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +6 -0
- package/corpus/core/src/server/core-routes-plugin.ts +12 -0
- package/corpus/core/src/server/index.ts +30 -0
- package/corpus/core/src/server/workspace-provider-oauth.ts +583 -0
- package/corpus/core/src/styles/agent-native.css +9 -0
- package/corpus/core/src/templates/default/app/i18n/en-US.ts +3 -3
- package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +14 -5
- package/corpus/core/src/templates/workspace-root/.env.example +12 -0
- package/corpus/core/src/workspace-connections/index.ts +6 -0
- package/corpus/core/src/workspace-connections/lifecycle.ts +43 -0
- package/corpus/core/src/workspace-connections/store.ts +16 -0
- package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +46 -3
- package/corpus/templates/analytics/AGENTS.md +9 -0
- package/corpus/templates/analytics/actions/dashboard-mutation-api.ts +120 -6
- package/corpus/templates/analytics/actions/mutate-dashboard.ts +92 -30
- package/corpus/templates/analytics/actions/update-dashboard.ts +5 -5
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +313 -220
- package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +2 -2
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +9 -6
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +90 -64
- package/corpus/templates/analytics/app/i18n-data.ts +3 -3
- package/corpus/templates/analytics/app/lib/dashboard-list-loading.ts +25 -0
- package/corpus/templates/analytics/app/lib/item-popularity.ts +13 -4
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/DashboardFilterBar.tsx +1 -1
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/pivot.ts +8 -3
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +1 -0
- package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +15 -3
- package/corpus/templates/analytics/changelog/2026-07-16-dashboard-filter-defaults-can-now-be-changed-reliably-withou.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-16-dashboard-lists-load-in-one-stable-order-without-popping-bet.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-16-fixed-dashboard-filter-dropdown-text-alignment.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-16-recurring-signed-in-users-can-now-be-viewed-as-weekly-bars-b.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-16-the-analytics-agent-can-now-duplicate-a-chart-and-place-the-.md +6 -0
- package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +41 -1
- package/corpus/templates/analytics/server/lib/dashboard-catalog.ts +1 -1
- package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +47 -1
- package/corpus/templates/analytics/server/lib/session-replay.ts +68 -0
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +1 -0
- package/corpus/templates/analytics/server/routes/sessions/lookup.get.ts +47 -0
- package/corpus/templates/assets/.agents/skills/asset-generation/SKILL.md +16 -9
- package/corpus/templates/assets/.agents/skills/creative-context/SKILL.md +86 -0
- package/corpus/templates/assets/AGENTS.md +10 -0
- package/corpus/templates/assets/actions/create-generation-session.ts +59 -1
- package/corpus/templates/assets/actions/edit-image.ts +2 -0
- package/corpus/templates/assets/actions/generate-asset.ts +52 -0
- package/corpus/templates/assets/actions/generate-image-batch.ts +55 -0
- package/corpus/templates/assets/actions/generate-image.ts +219 -1
- package/corpus/templates/assets/actions/open-asset-picker.ts +14 -0
- package/corpus/templates/assets/actions/refine-image.ts +3 -0
- package/corpus/templates/assets/actions/restyle-image.ts +2 -0
- package/corpus/templates/assets/agent-native.app-skill.json +4 -0
- package/corpus/templates/assets/app/components/layout/Layout.tsx +2 -0
- package/corpus/templates/assets/app/i18n/zh-TW.ts +3 -0
- package/corpus/templates/assets/app/i18n-data.ts +29 -13
- package/corpus/templates/assets/app/routes/agent.tsx +7 -1
- package/corpus/templates/assets/app/routes/library.tsx +9 -0
- package/corpus/templates/assets/app/routes/settings.tsx +3 -0
- package/corpus/templates/assets/changelog/2026-07-16-creative-context-library.md +6 -0
- package/corpus/templates/assets/package.json +1 -0
- package/corpus/templates/assets/server/lib/image-processing.ts +1 -22
- package/corpus/templates/assets/server/plugins/creative-context.ts +205 -0
- package/corpus/templates/brain/app/i18n-data.ts +3 -3
- package/corpus/templates/brain/app/lib/brain.ts +1 -1
- package/corpus/templates/brain/server/lib/search.ts +17 -67
- package/corpus/templates/calendar/app/i18n-data.ts +3 -3
- package/corpus/templates/calendar/app/pages/BookingLinksPage.tsx +19 -18
- package/corpus/templates/chat/app/i18n/en-US.ts +3 -3
- package/corpus/templates/chat/app/lib/agent-page.tsx +10 -1
- package/corpus/templates/clips/.agents/skills/meetings/SKILL.md +1 -1
- package/corpus/templates/clips/AGENTS.md +4 -0
- package/corpus/templates/clips/actions/cleanup-transcript.ts +35 -4
- package/corpus/templates/clips/actions/create-meeting.ts +6 -2
- package/corpus/templates/clips/actions/create-organization.ts +3 -2
- package/corpus/templates/clips/actions/create-recording.ts +4 -1
- package/corpus/templates/clips/actions/finalize-recording.ts +44 -7
- package/corpus/templates/clips/actions/import-loom-recording.ts +4 -1
- package/corpus/templates/clips/actions/lib/create-recording-schema.ts +2 -2
- package/corpus/templates/clips/actions/list-meetings.ts +23 -5
- package/corpus/templates/clips/actions/list-organization-state.ts +1 -1
- package/corpus/templates/clips/actions/remove-silences.ts +10 -1
- package/corpus/templates/clips/actions/request-transcript.ts +53 -11
- package/corpus/templates/clips/actions/search-recordings-utils.ts +7 -0
- package/corpus/templates/clips/actions/search-recordings.ts +5 -8
- package/corpus/templates/clips/actions/set-organization-branding.ts +2 -2
- package/corpus/templates/clips/actions/stitch-recordings.ts +10 -5
- package/corpus/templates/clips/actions/update-ai-request-status.ts +38 -0
- package/corpus/templates/clips/app/components/editor/editor-layout.tsx +3 -4
- package/corpus/templates/clips/app/components/editor/editor-selection.ts +19 -0
- package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +10 -10
- package/corpus/templates/clips/app/components/library/bulk-action-toolbar.tsx +1 -2
- package/corpus/templates/clips/app/components/library/library-grid.tsx +101 -93
- package/corpus/templates/clips/app/components/player/video-player.tsx +11 -0
- package/corpus/templates/clips/app/components/workspace/branding-editor.tsx +53 -1
- package/corpus/templates/clips/app/i18n/ar-SA.ts +7 -1
- package/corpus/templates/clips/app/i18n/de-DE.ts +7 -1
- package/corpus/templates/clips/app/i18n/en-US.ts +10 -4
- package/corpus/templates/clips/app/i18n/es-ES.ts +7 -1
- package/corpus/templates/clips/app/i18n/fr-FR.ts +7 -1
- package/corpus/templates/clips/app/i18n/hi-IN.ts +7 -1
- package/corpus/templates/clips/app/i18n/ja-JP.ts +7 -1
- package/corpus/templates/clips/app/i18n/ko-KR.ts +7 -1
- package/corpus/templates/clips/app/i18n/pt-BR.ts +7 -1
- package/corpus/templates/clips/app/i18n/zh-CN.ts +6 -1
- package/corpus/templates/clips/app/i18n/zh-TW.ts +6 -1
- package/corpus/templates/clips/app/routes/_app.settings._index.tsx +5 -9
- package/corpus/templates/clips/app/routes/_app.settings.organization.tsx +6 -2
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +129 -27
- package/corpus/templates/clips/app/routes/record.tsx +23 -2
- package/corpus/templates/clips/app/routes/share.$shareId.tsx +6 -2
- package/corpus/templates/clips/changelog/2026-07-16-authorized-viewers-can-open-shared-private-clips-without-a-m.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-camera-bubble-hover-controls-appear-above-the-face.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-chrome-extension-recovers-stale-recorder-state.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-clips-agent-chat-no-longer-shows-a-separate-workspace-header.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-clips-search-now-matches-recording-content-without-requiring.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-declined-meetings-no-longer-show-desktop-reminders.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-failed-desktop-saves-now-show-their-local-recovery-copy.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-long-desktop-clips-now-preserve-complete-playback-synced-aud.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-long-recording-lists-keep-stitch-and-library-actions-visible.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-organization-admins-can-choose-new-recording-visibility.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-remove-silences-now-shows-queued-active-completed-and-failed.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-settings-no-longer-repeats-the-builder-connection-status-in-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-16-transcripts-now-appear-from-native-browser-speech-sooner-wit.md +6 -0
- package/corpus/templates/clips/chrome-extension/public/manifest.json +1 -1
- package/corpus/templates/clips/chrome-extension/src/background.ts +73 -1
- package/corpus/templates/clips/chrome-extension/src/native-recording-state.ts +32 -0
- package/corpus/templates/clips/chrome-extension/src/native-transcription.ts +248 -0
- package/corpus/templates/clips/chrome-extension/src/offscreen.ts +106 -0
- package/corpus/templates/clips/desktop/src/app.tsx +66 -28
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +335 -285
- package/corpus/templates/clips/desktop/src/lib/single-flight.ts +7 -0
- package/corpus/templates/clips/desktop/src/lib/upload-verification.ts +51 -0
- package/corpus/templates/clips/desktop/src/overlays/bubble.tsx +2 -2
- package/corpus/templates/clips/desktop/src/overlays/finalizing.tsx +10 -2
- package/corpus/templates/clips/desktop/src/styles.css +13 -11
- package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +8 -9
- package/corpus/templates/clips/desktop/src-tauri/src/meetings_watcher.rs +1 -0
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen/custom_capture.rs +88 -13
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen/live_upload.rs +13 -2
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +241 -6
- package/corpus/templates/clips/server/db/schema.ts +2 -2
- package/corpus/templates/clips/server/lib/builder-media-compression.ts +64 -67
- package/corpus/templates/clips/server/lib/calendar-event-classification.ts +19 -0
- package/corpus/templates/clips/server/lib/google-calendar-client.ts +1 -0
- package/corpus/templates/clips/server/lib/recordings.ts +40 -1
- package/corpus/templates/clips/server/plugins/agent-chat.ts +1 -0
- package/corpus/templates/clips/server/plugins/db.ts +2 -2
- package/corpus/templates/clips/server/routes/api/auth/google-calendar.get.ts +1 -1
- package/corpus/templates/clips/server/routes/api/public-recording.get.ts +14 -5
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +51 -1
- package/corpus/templates/clips/server/routes/api/video/[recordingId].get.ts +1 -64
- package/corpus/templates/clips/shared/media-worker-contract.ts +32 -15
- package/corpus/templates/content/.agents/skills/content/SKILL.md +16 -0
- package/corpus/templates/content/.agents/skills/creative-context/SKILL.md +85 -0
- package/corpus/templates/content/.agents/skills/notion-integration/SKILL.md +8 -0
- package/corpus/templates/content/AGENTS.md +9 -0
- package/corpus/templates/content/actions/create-document.ts +94 -0
- package/corpus/templates/content/actions/edit-document.ts +144 -4
- package/corpus/templates/content/actions/update-document.ts +138 -0
- package/corpus/templates/content/agent-native.app-skill.json +4 -0
- package/corpus/templates/content/app/components/layout/Layout.tsx +2 -0
- package/corpus/templates/content/app/i18n/zh-TW.ts +3 -0
- package/corpus/templates/content/app/i18n-data.ts +13 -4
- package/corpus/templates/content/app/routes/_app.agent.tsx +2 -1
- package/corpus/templates/content/app/routes/_app.settings.tsx +3 -0
- package/corpus/templates/content/changelog/2026-07-16-creative-context-library.md +6 -0
- package/corpus/templates/content/package.json +1 -0
- package/corpus/templates/content/server/plugins/creative-context.ts +31 -0
- package/corpus/templates/design/.agents/skills/creative-context/SKILL.md +116 -0
- package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +16 -0
- package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +8 -0
- package/corpus/templates/design/AGENTS.md +6 -0
- package/corpus/templates/design/actions/clone-creative-context-design.ts +176 -0
- package/corpus/templates/design/actions/edit-design.ts +128 -0
- package/corpus/templates/design/actions/generate-design.ts +278 -14
- package/corpus/templates/design/actions/generate-screens.ts +42 -1
- package/corpus/templates/design/agent-native.app-skill.json +4 -0
- package/corpus/templates/design/app/components/layout/Layout.tsx +7 -3
- package/corpus/templates/design/app/i18n/zh-TW.ts +3 -0
- package/corpus/templates/design/app/i18n-data.ts +10 -4
- package/corpus/templates/design/app/routes/agent.tsx +2 -1
- package/corpus/templates/design/app/routes/settings.tsx +3 -0
- package/corpus/templates/design/changelog/2026-07-16-creative-context-library.md +6 -0
- package/corpus/templates/design/changelog/2026-07-16-design-agent-chat-no-longer-shows-a-separate-workspace-header.md +6 -0
- package/corpus/templates/design/package.json +1 -0
- package/corpus/templates/design/server/lib/figma-design-context.ts +5 -335
- package/corpus/templates/design/server/lib/figma-node-to-html.ts +1 -1859
- package/corpus/templates/design/server/lib/import-design-files.ts +6 -8
- package/corpus/templates/design/server/plugins/creative-context.ts +31 -0
- package/corpus/templates/design/shared/generation-session.ts +7 -0
- package/corpus/templates/dispatch/app/i18n-data.ts +3 -3
- package/corpus/templates/forms/app/i18n/en-US.ts +3 -3
- package/corpus/templates/macros/app/i18n/en-US.ts +3 -3
- package/corpus/templates/mail/app/components/email/EmailThread.tsx +35 -5
- package/corpus/templates/mail/app/i18n/en-US.ts +3 -3
- package/corpus/templates/mail/changelog/2026-07-16-mail-previews-now-expand-to-show-the-full-message-without-an.md +6 -0
- package/corpus/templates/plan/.agents/skills/visual-plan/SKILL.md +30 -11
- package/corpus/templates/plan/AGENTS.md +21 -1
- package/corpus/templates/plan/actions/get-visual-plan.ts +1 -1
- package/corpus/templates/plan/actions/patch-visual-plan-source.ts +161 -0
- package/corpus/templates/plan/actions/read-visual-plan-source.ts +1 -1
- package/corpus/templates/plan/actions/update-visual-plan.ts +126 -10
- package/corpus/templates/plan/app/hooks/use-plans.ts +2 -0
- package/corpus/templates/plan/app/i18n/en-US.ts +3 -3
- package/corpus/templates/plan/app/pages/PlansPage.tsx +65 -62
- package/corpus/templates/plan/changelog/2026-07-16-local-plan-previews-now-load-annotations-containing-html-lik.md +6 -0
- package/corpus/templates/plan/changelog/2026-07-16-plan-agents-now-prevent-stale-edits-from-overwriting-newer-p.md +6 -0
- package/corpus/templates/plan/server/plan-mdx.ts +75 -2
- package/corpus/templates/slides/.agents/skills/create-deck/SKILL.md +21 -4
- package/corpus/templates/slides/.agents/skills/creative-context/SKILL.md +122 -0
- package/corpus/templates/slides/.agents/skills/design-systems/SKILL.md +11 -0
- package/corpus/templates/slides/.agents/skills/slide-editing/SKILL.md +12 -3
- package/corpus/templates/slides/AGENTS.md +6 -0
- package/corpus/templates/slides/actions/add-slide.ts +230 -14
- package/corpus/templates/slides/actions/clone-context-slide.ts +302 -0
- package/corpus/templates/slides/actions/create-deck.ts +130 -0
- package/corpus/templates/slides/actions/extract-pdf.ts +6 -2
- package/corpus/templates/slides/actions/import-file.ts +5 -4
- package/corpus/templates/slides/actions/patch-deck.ts +200 -10
- package/corpus/templates/slides/actions/update-slide.ts +208 -15
- package/corpus/templates/slides/app/components/layout/Layout.tsx +2 -0
- package/corpus/templates/slides/app/components/visual-editor/CanvasCommentPins.tsx +16 -1
- package/corpus/templates/slides/app/i18n/ar-SA.ts +3 -0
- package/corpus/templates/slides/app/i18n/de-DE.ts +3 -0
- package/corpus/templates/slides/app/i18n/en-US.ts +6 -3
- package/corpus/templates/slides/app/i18n/es-ES.ts +3 -0
- package/corpus/templates/slides/app/i18n/fr-FR.ts +3 -0
- package/corpus/templates/slides/app/i18n/hi-IN.ts +3 -0
- package/corpus/templates/slides/app/i18n/ja-JP.ts +3 -0
- package/corpus/templates/slides/app/i18n/ko-KR.ts +3 -0
- package/corpus/templates/slides/app/i18n/pt-BR.ts +3 -0
- package/corpus/templates/slides/app/i18n/zh-CN.ts +3 -0
- package/corpus/templates/slides/app/i18n/zh-TW.ts +3 -0
- package/corpus/templates/slides/app/lib/validate-native-slide-html.ts +176 -0
- package/corpus/templates/slides/app/routes/agent.tsx +7 -1
- package/corpus/templates/slides/app/routes/settings.tsx +3 -0
- package/corpus/templates/slides/changelog/2026-07-16-creative-context-library.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-16-google-slides-native-cloning.md +6 -0
- package/corpus/templates/slides/package.json +1 -0
- package/corpus/templates/slides/server/handlers/import/docx-parser.ts +4 -85
- package/corpus/templates/slides/server/handlers/import/pptx-parser.ts +7 -421
- package/corpus/templates/slides/server/plugins/creative-context.ts +166 -0
- package/dist/agent/engine/credential-errors.d.ts +1 -1
- package/dist/agent/engine/credential-errors.d.ts.map +1 -1
- package/dist/agent/engine/credential-errors.js +2 -2
- package/dist/agent/engine/credential-errors.js.map +1 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +25 -0
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +12 -2
- package/dist/agent/run-store.js.map +1 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +1 -0
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/skills-content/visual-plan-skill.d.ts +1 -1
- package/dist/cli/skills-content/visual-plan-skill.d.ts.map +1 -1
- package/dist/cli/skills-content/visual-plan-skill.js +30 -11
- package/dist/cli/skills-content/visual-plan-skill.js.map +1 -1
- package/dist/cli/templates-meta.d.ts.map +1 -1
- package/dist/cli/templates-meta.js +4 -3
- package/dist/cli/templates-meta.js.map +1 -1
- package/dist/client/AgentAskPopover.d.ts +11 -0
- package/dist/client/AgentAskPopover.d.ts.map +1 -0
- package/dist/client/AgentAskPopover.js +30 -0
- package/dist/client/AgentAskPopover.js.map +1 -0
- package/dist/client/AgentChatHome.d.ts +1 -1
- package/dist/client/AgentChatHome.d.ts.map +1 -1
- package/dist/client/AgentChatHome.js +2 -2
- package/dist/client/AgentChatHome.js.map +1 -1
- package/dist/client/AgentPanel.d.ts +9 -19
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +119 -80
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +4 -4
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts +3 -9
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +49 -189
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +12 -1
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/agent-page/AgentContextTab.d.ts.map +1 -1
- package/dist/client/agent-page/AgentContextTab.js +26 -28
- package/dist/client/agent-page/AgentContextTab.js.map +1 -1
- package/dist/client/agent-page/AgentEmptyState.d.ts +13 -0
- package/dist/client/agent-page/AgentEmptyState.d.ts.map +1 -0
- package/dist/client/agent-page/AgentEmptyState.js +6 -0
- package/dist/client/agent-page/AgentEmptyState.js.map +1 -0
- package/dist/client/agent-page/AgentJobsTab.d.ts +1 -1
- package/dist/client/agent-page/AgentJobsTab.d.ts.map +1 -1
- package/dist/client/agent-page/AgentJobsTab.js +90 -58
- package/dist/client/agent-page/AgentJobsTab.js.map +1 -1
- package/dist/client/agent-page/AgentTabFrame.d.ts +12 -0
- package/dist/client/agent-page/AgentTabFrame.d.ts.map +1 -0
- package/dist/client/agent-page/AgentTabFrame.js +7 -0
- package/dist/client/agent-page/AgentTabFrame.js.map +1 -0
- package/dist/client/agent-page/AgentTabsPage.d.ts +9 -1
- package/dist/client/agent-page/AgentTabsPage.d.ts.map +1 -1
- package/dist/client/agent-page/AgentTabsPage.js +135 -99
- package/dist/client/agent-page/AgentTabsPage.js.map +1 -1
- package/dist/client/agent-page/types.d.ts +1 -1
- package/dist/client/agent-page/types.d.ts.map +1 -1
- package/dist/client/agent-page/types.js.map +1 -1
- package/dist/client/analytics.d.ts +10 -3
- package/dist/client/analytics.d.ts.map +1 -1
- package/dist/client/analytics.js +37 -2
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/chat/run-recovery.d.ts.map +1 -1
- package/dist/client/chat/run-recovery.js +10 -3
- package/dist/client/chat/run-recovery.js.map +1 -1
- package/dist/client/composer/PromptComposer.d.ts.map +1 -1
- package/dist/client/composer/PromptComposer.js +2 -2
- package/dist/client/composer/PromptComposer.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +15 -3
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/dynamic-suggestions.js +3 -3
- package/dist/client/dynamic-suggestions.js.map +1 -1
- package/dist/client/index.d.ts +4 -3
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +3 -2
- package/dist/client/index.js.map +1 -1
- package/dist/client/resources/ResourceTree.d.ts +5 -1
- package/dist/client/resources/ResourceTree.d.ts.map +1 -1
- package/dist/client/resources/ResourceTree.js +74 -5
- package/dist/client/resources/ResourceTree.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.d.ts +11 -2
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +105 -31
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/session-replay.d.ts +28 -0
- package/dist/client/session-replay.d.ts.map +1 -1
- package/dist/client/session-replay.js +122 -8
- package/dist/client/session-replay.js.map +1 -1
- package/dist/client/settings/AutomationsSection.d.ts +3 -1
- package/dist/client/settings/AutomationsSection.d.ts.map +1 -1
- package/dist/client/settings/AutomationsSection.js +16 -6
- package/dist/client/settings/AutomationsSection.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +3 -3
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/SettingsTabsPage.d.ts +2 -0
- package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
- package/dist/client/settings/SettingsTabsPage.js.map +1 -1
- package/dist/client/settings/agent-settings-search.js +2 -2
- package/dist/client/settings/agent-settings-search.js.map +1 -1
- package/dist/client/use-chat-threads.d.ts +2 -0
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/connections/catalog.d.ts +41 -7
- package/dist/connections/catalog.d.ts.map +1 -1
- package/dist/connections/catalog.js +40 -7
- package/dist/connections/catalog.js.map +1 -1
- package/dist/db/index.d.ts +2 -2
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +2 -2
- package/dist/db/index.js.map +1 -1
- package/dist/extensions/actions.d.ts.map +1 -1
- package/dist/extensions/actions.js +85 -15
- package/dist/extensions/actions.js.map +1 -1
- package/dist/extensions/content-patch.d.ts +4 -0
- package/dist/extensions/content-patch.d.ts.map +1 -1
- package/dist/extensions/content-patch.js +18 -0
- package/dist/extensions/content-patch.js.map +1 -1
- package/dist/extensions/routes.d.ts.map +1 -1
- package/dist/extensions/routes.js +14 -0
- package/dist/extensions/routes.js.map +1 -1
- package/dist/extensions/store.d.ts +1 -0
- package/dist/extensions/store.d.ts.map +1 -1
- package/dist/extensions/store.js +4 -1
- package/dist/extensions/store.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/ingestion/docx.d.ts +16 -0
- package/dist/ingestion/docx.d.ts.map +1 -0
- package/dist/ingestion/docx.js +129 -0
- package/dist/ingestion/docx.js.map +1 -0
- package/dist/ingestion/figma-node-to-html.d.ts +304 -0
- package/dist/ingestion/figma-node-to-html.d.ts.map +1 -0
- package/dist/ingestion/figma-node-to-html.js +1292 -0
- package/dist/ingestion/figma-node-to-html.js.map +1 -0
- package/dist/ingestion/figma.d.ts +115 -0
- package/dist/ingestion/figma.d.ts.map +1 -0
- package/dist/ingestion/figma.js +399 -0
- package/dist/ingestion/figma.js.map +1 -0
- package/dist/ingestion/index.d.ts +11 -0
- package/dist/ingestion/index.d.ts.map +1 -0
- package/dist/ingestion/index.js +11 -0
- package/dist/ingestion/index.js.map +1 -0
- package/dist/ingestion/media.d.ts +36 -0
- package/dist/ingestion/media.d.ts.map +1 -0
- package/dist/ingestion/media.js +178 -0
- package/dist/ingestion/media.js.map +1 -0
- package/dist/ingestion/notion.d.ts +12 -0
- package/dist/ingestion/notion.d.ts.map +1 -0
- package/dist/ingestion/notion.js +104 -0
- package/dist/ingestion/notion.js.map +1 -0
- package/dist/ingestion/office.d.ts +45 -0
- package/dist/ingestion/office.d.ts.map +1 -0
- package/dist/ingestion/office.js +141 -0
- package/dist/ingestion/office.js.map +1 -0
- package/dist/ingestion/orchestration.d.ts +52 -0
- package/dist/ingestion/orchestration.d.ts.map +1 -0
- package/dist/ingestion/orchestration.js +89 -0
- package/dist/ingestion/orchestration.js.map +1 -0
- package/dist/ingestion/pptx.d.ts +28 -0
- package/dist/ingestion/pptx.d.ts.map +1 -0
- package/dist/ingestion/pptx.js +255 -0
- package/dist/ingestion/pptx.js.map +1 -0
- package/dist/ingestion/selection.d.ts +20 -0
- package/dist/ingestion/selection.d.ts.map +1 -0
- package/dist/ingestion/selection.js +52 -0
- package/dist/ingestion/selection.js.map +1 -0
- package/dist/ingestion/website.d.ts +27 -0
- package/dist/ingestion/website.d.ts.map +1 -0
- package/dist/ingestion/website.js +100 -0
- package/dist/ingestion/website.js.map +1 -0
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +32 -27
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/localization/default-messages.d.ts +22 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +31 -9
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/notifications/routes.d.ts +1 -1
- package/dist/observability/hosted-model-experiment.d.ts +39 -0
- package/dist/observability/hosted-model-experiment.d.ts.map +1 -0
- package/dist/observability/hosted-model-experiment.js +90 -0
- package/dist/observability/hosted-model-experiment.js.map +1 -0
- package/dist/observability/traces.d.ts.map +1 -1
- package/dist/observability/traces.js +5 -3
- package/dist/observability/traces.js.map +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/index.d.ts +35 -4
- package/dist/provider-api/index.d.ts.map +1 -1
- package/dist/provider-api/index.js +339 -8
- package/dist/provider-api/index.js.map +1 -1
- package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -1
- package/dist/scripts/agent-engines/list-agent-engines.js +18 -1
- package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
- package/dist/search-utils/index.d.ts +12 -0
- package/dist/search-utils/index.d.ts.map +1 -0
- package/dist/search-utils/index.js +95 -0
- package/dist/search-utils/index.js.map +1 -0
- package/dist/secrets/register-framework-secrets.d.ts.map +1 -1
- package/dist/secrets/register-framework-secrets.js +57 -0
- package/dist/secrets/register-framework-secrets.js.map +1 -1
- package/dist/server/action-discovery.d.ts +8 -0
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +26 -9
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/agent-chat/framework-prompts.js +2 -2
- package/dist/server/agent-chat/framework-prompts.js.map +1 -1
- package/dist/server/agent-chat/prompt-resources.d.ts +19 -0
- package/dist/server/agent-chat/prompt-resources.d.ts.map +1 -1
- package/dist/server/agent-chat/prompt-resources.js +95 -0
- package/dist/server/agent-chat/prompt-resources.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +7 -0
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +5 -0
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/index.d.ts +5 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +5 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/workspace-provider-oauth.d.ts +48 -0
- package/dist/server/workspace-provider-oauth.d.ts.map +1 -0
- package/dist/server/workspace-provider-oauth.js +415 -0
- package/dist/server/workspace-provider-oauth.js.map +1 -0
- package/dist/styles/agent-native.css +9 -0
- package/dist/templates/chat/app/i18n/en-US.ts +3 -3
- package/dist/templates/chat/app/lib/agent-page.tsx +10 -1
- package/dist/templates/default/app/i18n/en-US.ts +3 -3
- package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +14 -5
- package/dist/templates/workspace-root/.env.example +12 -0
- package/dist/workspace-connections/index.d.ts +1 -0
- package/dist/workspace-connections/index.d.ts.map +1 -1
- package/dist/workspace-connections/index.js +1 -0
- package/dist/workspace-connections/index.js.map +1 -1
- package/dist/workspace-connections/lifecycle.d.ts +16 -0
- package/dist/workspace-connections/lifecycle.d.ts.map +1 -0
- package/dist/workspace-connections/lifecycle.js +14 -0
- package/dist/workspace-connections/lifecycle.js.map +1 -0
- package/dist/workspace-connections/store.d.ts.map +1 -1
- package/dist/workspace-connections/store.js +16 -0
- package/dist/workspace-connections/store.js.map +1 -1
- package/package.json +10 -3
- package/src/templates/chat/app/i18n/en-US.ts +3 -3
- package/src/templates/chat/app/lib/agent-page.spec.tsx +10 -1
- package/src/templates/chat/app/lib/agent-page.tsx +10 -1
- package/src/templates/default/app/i18n/en-US.ts +3 -3
- package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +14 -5
- package/src/templates/workspace-root/.env.example +12 -0
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
IconEye,
|
|
10
10
|
IconCode,
|
|
11
11
|
IconClock,
|
|
12
|
-
|
|
12
|
+
IconHierarchy2,
|
|
13
13
|
IconExternalLink,
|
|
14
14
|
IconHelp,
|
|
15
15
|
IconPlugConnected,
|
|
@@ -73,11 +73,85 @@ import {
|
|
|
73
73
|
type ResourceScope,
|
|
74
74
|
type ResourceMeta,
|
|
75
75
|
type Resource,
|
|
76
|
+
type TreeNode,
|
|
76
77
|
} from "./use-resources.js";
|
|
77
78
|
|
|
78
79
|
const WORKSPACE_DOCS_URL = "https://agent-native.com/docs/workspace";
|
|
79
80
|
const LOCAL_WORKSPACE_RESOURCE_METADATA_SOURCE = "local-workspace-resource";
|
|
80
81
|
|
|
82
|
+
export type ResourceView =
|
|
83
|
+
| "files"
|
|
84
|
+
| "instructions"
|
|
85
|
+
| "agents"
|
|
86
|
+
| "memory"
|
|
87
|
+
| "skills"
|
|
88
|
+
| "learnings"
|
|
89
|
+
| "remote-agents";
|
|
90
|
+
|
|
91
|
+
export type ResourceTreeVariant = "tree" | "collection";
|
|
92
|
+
|
|
93
|
+
const SPECIAL_RESOURCE_ROOTS = new Set([
|
|
94
|
+
"agents",
|
|
95
|
+
"agent-scratch",
|
|
96
|
+
"jobs",
|
|
97
|
+
"memory",
|
|
98
|
+
"remote-agents",
|
|
99
|
+
"skills",
|
|
100
|
+
]);
|
|
101
|
+
const SPECIAL_RESOURCE_FILES = new Set(["agents.md", "learnings.md"]);
|
|
102
|
+
|
|
103
|
+
function normalizedResourcePath(path: string): string {
|
|
104
|
+
return path.replace(/^\/+/, "").toLowerCase();
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function resourceMatchesView(node: TreeNode, view: ResourceView): boolean {
|
|
108
|
+
const path = normalizedResourcePath(node.path);
|
|
109
|
+
switch (view) {
|
|
110
|
+
case "files":
|
|
111
|
+
return (
|
|
112
|
+
!SPECIAL_RESOURCE_ROOTS.has(path.split("/", 1)[0]) &&
|
|
113
|
+
!SPECIAL_RESOURCE_FILES.has(path.split("/").pop() ?? "")
|
|
114
|
+
);
|
|
115
|
+
case "instructions":
|
|
116
|
+
return path.split("/").pop() === "agents.md";
|
|
117
|
+
case "agents":
|
|
118
|
+
return node.kind === "agent";
|
|
119
|
+
case "memory":
|
|
120
|
+
return path === "memory" || path.startsWith("memory/");
|
|
121
|
+
case "skills":
|
|
122
|
+
return node.kind === "skill";
|
|
123
|
+
case "learnings":
|
|
124
|
+
return path.split("/").pop() === "learnings.md";
|
|
125
|
+
case "remote-agents":
|
|
126
|
+
return node.kind === "remote-agent";
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export function filterResourceTree(
|
|
131
|
+
tree: TreeNode[],
|
|
132
|
+
view: ResourceView | undefined,
|
|
133
|
+
): TreeNode[] {
|
|
134
|
+
if (!view) return tree;
|
|
135
|
+
return tree.flatMap((node) => {
|
|
136
|
+
if (node.type === "folder") {
|
|
137
|
+
if (
|
|
138
|
+
view === "files" &&
|
|
139
|
+
(SPECIAL_RESOURCE_ROOTS.has(
|
|
140
|
+
normalizedResourcePath(node.path).split("/", 1)[0],
|
|
141
|
+
) ||
|
|
142
|
+
SPECIAL_RESOURCE_FILES.has(
|
|
143
|
+
normalizedResourcePath(node.path).split("/").pop() ?? "",
|
|
144
|
+
))
|
|
145
|
+
) {
|
|
146
|
+
return [];
|
|
147
|
+
}
|
|
148
|
+
const children = filterResourceTree(node.children ?? [], view);
|
|
149
|
+
return children.length > 0 ? [{ ...node, children }] : [];
|
|
150
|
+
}
|
|
151
|
+
return resourceMatchesView(node, view) ? [node] : [];
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
|
|
81
155
|
// ─── Create Menu (unified + button) ────────────────────────────────────────
|
|
82
156
|
|
|
83
157
|
type CreateMenuView =
|
|
@@ -142,6 +216,7 @@ function buildAgentResourceContent({
|
|
|
142
216
|
|
|
143
217
|
function CreateMenu({
|
|
144
218
|
scope,
|
|
219
|
+
resourceFilter,
|
|
145
220
|
onCreateFile,
|
|
146
221
|
onCreateResource,
|
|
147
222
|
onCreateMcpServer,
|
|
@@ -151,6 +226,7 @@ function CreateMenu({
|
|
|
151
226
|
showToast,
|
|
152
227
|
}: {
|
|
153
228
|
scope: ResourceScope;
|
|
229
|
+
resourceFilter?: ResourceView;
|
|
154
230
|
onCreateFile: (name: string) => void;
|
|
155
231
|
onCreateResource: (
|
|
156
232
|
path: string,
|
|
@@ -496,7 +572,7 @@ The result should be a reusable agent profile, not a one-off task response.`,
|
|
|
496
572
|
action: () => setView("job"),
|
|
497
573
|
},
|
|
498
574
|
{
|
|
499
|
-
icon: <
|
|
575
|
+
icon: <IconHierarchy2 className="h-3.5 w-3.5" />,
|
|
500
576
|
label: "Create Custom Agent",
|
|
501
577
|
desc: "Add a reusable sub-agent profile",
|
|
502
578
|
action: () => setView("agent-mode"),
|
|
@@ -536,6 +612,13 @@ The result should be a reusable agent profile, not a one-off task response.`,
|
|
|
536
612
|
]
|
|
537
613
|
: []),
|
|
538
614
|
];
|
|
615
|
+
const visibleMenuItems = menuItems.filter((item) => {
|
|
616
|
+
if (!resourceFilter || resourceFilter === "files") return true;
|
|
617
|
+
if (resourceFilter === "agents")
|
|
618
|
+
return item.label === "Create Custom Agent";
|
|
619
|
+
if (resourceFilter === "skills") return item.label === "Create Skill";
|
|
620
|
+
return false;
|
|
621
|
+
});
|
|
539
622
|
|
|
540
623
|
return (
|
|
541
624
|
<>
|
|
@@ -580,7 +663,7 @@ The result should be a reusable agent profile, not a one-off task response.`,
|
|
|
580
663
|
>
|
|
581
664
|
{view === "menu" && (
|
|
582
665
|
<div className="py-1">
|
|
583
|
-
{
|
|
666
|
+
{visibleMenuItems.map((item) => {
|
|
584
667
|
const isSkill = item.label === "Create Skill";
|
|
585
668
|
return (
|
|
586
669
|
<div
|
|
@@ -842,7 +925,7 @@ The result should be a reusable agent profile, not a one-off task response.`,
|
|
|
842
925
|
onClick={() => setView("agent-form")}
|
|
843
926
|
className="flex w-full items-start gap-2 rounded-md border border-border px-3 py-2 text-left hover:bg-accent/40"
|
|
844
927
|
>
|
|
845
|
-
<
|
|
928
|
+
<IconHierarchy2 className="mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground" />
|
|
846
929
|
<div>
|
|
847
930
|
<div className="text-[12px] font-medium text-foreground">
|
|
848
931
|
Fill Form
|
|
@@ -1009,6 +1092,12 @@ export interface ResourcesPanelProps {
|
|
|
1009
1092
|
showMcpServers?: boolean;
|
|
1010
1093
|
/** Optional page-level scope to mirror in the resource toolbar. */
|
|
1011
1094
|
scope?: ResourceScope;
|
|
1095
|
+
/** When set, show only the requested scope instead of both scope sections. */
|
|
1096
|
+
showOnlyRequestedScope?: boolean;
|
|
1097
|
+
/** Limit the tree to one agent-native resource collection. */
|
|
1098
|
+
resourceFilter?: ResourceView;
|
|
1099
|
+
/** Render special collections as cards instead of a nested file tree. */
|
|
1100
|
+
resourceTreeVariant?: ResourceTreeVariant;
|
|
1012
1101
|
}
|
|
1013
1102
|
|
|
1014
1103
|
export function resolveInitialResourceScope(
|
|
@@ -1023,6 +1112,9 @@ export function resolveInitialResourceScope(
|
|
|
1023
1112
|
export function ResourcesPanel({
|
|
1024
1113
|
showMcpServers = true,
|
|
1025
1114
|
scope: requestedScope,
|
|
1115
|
+
showOnlyRequestedScope = false,
|
|
1116
|
+
resourceFilter,
|
|
1117
|
+
resourceTreeVariant = "tree",
|
|
1026
1118
|
}: ResourcesPanelProps = {}) {
|
|
1027
1119
|
const { data: org } = useOrg();
|
|
1028
1120
|
// Non-admin org members get read-only access to organization resources.
|
|
@@ -1121,6 +1213,27 @@ export function ResourcesPanel({
|
|
|
1121
1213
|
{ show: showAgentScratch },
|
|
1122
1214
|
);
|
|
1123
1215
|
const workspaceTree = workspaceTreeQuery.data ?? [];
|
|
1216
|
+
const visiblePersonalTree = useMemo(
|
|
1217
|
+
() => filterResourceTree(personalTree, resourceFilter),
|
|
1218
|
+
[personalTree, resourceFilter],
|
|
1219
|
+
);
|
|
1220
|
+
const visibleSharedTree = useMemo(
|
|
1221
|
+
() => filterResourceTree(sharedTree, resourceFilter),
|
|
1222
|
+
[resourceFilter, sharedTree],
|
|
1223
|
+
);
|
|
1224
|
+
const visibleWorkspaceTree = useMemo(
|
|
1225
|
+
() => filterResourceTree(workspaceTree, resourceFilter),
|
|
1226
|
+
[resourceFilter, workspaceTree],
|
|
1227
|
+
);
|
|
1228
|
+
const displayedPersonalTree =
|
|
1229
|
+
showOnlyRequestedScope && activeScope !== "personal"
|
|
1230
|
+
? []
|
|
1231
|
+
: visiblePersonalTree;
|
|
1232
|
+
const displayedSharedTree =
|
|
1233
|
+
showOnlyRequestedScope && activeScope !== "shared" ? [] : visibleSharedTree;
|
|
1234
|
+
const showSharedTree = !showOnlyRequestedScope || activeScope === "shared";
|
|
1235
|
+
const showPersonalTree =
|
|
1236
|
+
!showOnlyRequestedScope || activeScope === "personal";
|
|
1124
1237
|
|
|
1125
1238
|
const orgRole = mcpServersQuery.data?.role ?? org?.role ?? null;
|
|
1126
1239
|
const hasOrgForMcp = !!(mcpServersQuery.data?.orgId ?? org?.orgId);
|
|
@@ -1238,9 +1351,9 @@ export function ResourcesPanel({
|
|
|
1238
1351
|
);
|
|
1239
1352
|
|
|
1240
1353
|
const handleCreateFromToolbar = useCallback(
|
|
1241
|
-
(name: string) => {
|
|
1354
|
+
(targetScope: ResourceScope, name: string) => {
|
|
1242
1355
|
createResource.mutate(
|
|
1243
|
-
{ path: name, content: "", shared:
|
|
1356
|
+
{ path: name, content: "", shared: targetScope === "shared" },
|
|
1244
1357
|
{
|
|
1245
1358
|
onSuccess: (data) => {
|
|
1246
1359
|
setSelectedResourceId(data.id);
|
|
@@ -1248,11 +1361,12 @@ export function ResourcesPanel({
|
|
|
1248
1361
|
},
|
|
1249
1362
|
);
|
|
1250
1363
|
},
|
|
1251
|
-
[createResource
|
|
1364
|
+
[createResource],
|
|
1252
1365
|
);
|
|
1253
1366
|
|
|
1254
1367
|
const handleCreateResourceFromToolbar = useCallback(
|
|
1255
1368
|
(
|
|
1369
|
+
targetScope: ResourceScope,
|
|
1256
1370
|
path: string,
|
|
1257
1371
|
content: string,
|
|
1258
1372
|
mimeType?: string,
|
|
@@ -1262,7 +1376,7 @@ export function ResourcesPanel({
|
|
|
1262
1376
|
},
|
|
1263
1377
|
) => {
|
|
1264
1378
|
createResource.mutate(
|
|
1265
|
-
{ path, content, mimeType, shared:
|
|
1379
|
+
{ path, content, mimeType, shared: targetScope === "shared" },
|
|
1266
1380
|
{
|
|
1267
1381
|
onSuccess: (data) => {
|
|
1268
1382
|
setSelectedResourceId(data.id);
|
|
@@ -1274,7 +1388,7 @@ export function ResourcesPanel({
|
|
|
1274
1388
|
},
|
|
1275
1389
|
);
|
|
1276
1390
|
},
|
|
1277
|
-
[
|
|
1391
|
+
[createResource],
|
|
1278
1392
|
);
|
|
1279
1393
|
|
|
1280
1394
|
const handleDelete = useCallback(
|
|
@@ -1332,16 +1446,16 @@ export function ResourcesPanel({
|
|
|
1332
1446
|
);
|
|
1333
1447
|
|
|
1334
1448
|
const handleUploadFiles = useCallback(
|
|
1335
|
-
(files: FileList) => {
|
|
1449
|
+
(files: FileList, targetScope: ResourceScope) => {
|
|
1336
1450
|
for (let i = 0; i < files.length; i++) {
|
|
1337
1451
|
const file = files[i];
|
|
1338
1452
|
const formData = new FormData();
|
|
1339
1453
|
formData.append("file", file);
|
|
1340
|
-
formData.append("shared",
|
|
1454
|
+
formData.append("shared", targetScope === "shared" ? "true" : "false");
|
|
1341
1455
|
uploadResource.mutate(formData);
|
|
1342
1456
|
}
|
|
1343
1457
|
},
|
|
1344
|
-
[uploadResource
|
|
1458
|
+
[uploadResource],
|
|
1345
1459
|
);
|
|
1346
1460
|
|
|
1347
1461
|
const handleDragOver = useCallback((e: React.DragEvent) => {
|
|
@@ -1362,12 +1476,39 @@ export function ResourcesPanel({
|
|
|
1362
1476
|
e.stopPropagation();
|
|
1363
1477
|
setDragOver(false);
|
|
1364
1478
|
if (e.dataTransfer.files.length > 0) {
|
|
1365
|
-
handleUploadFiles(e.dataTransfer.files);
|
|
1479
|
+
handleUploadFiles(e.dataTransfer.files, activeScope);
|
|
1366
1480
|
}
|
|
1367
1481
|
},
|
|
1368
|
-
[handleUploadFiles],
|
|
1482
|
+
[activeScope, handleUploadFiles],
|
|
1369
1483
|
);
|
|
1370
1484
|
|
|
1485
|
+
const renderScopeCreateMenu = (targetScope: ResourceScope) => {
|
|
1486
|
+
if (resourceFilter !== "agents" && resourceFilter !== "skills") {
|
|
1487
|
+
return null;
|
|
1488
|
+
}
|
|
1489
|
+
if (targetScope === "shared" && !canEditOrg) return null;
|
|
1490
|
+
return (
|
|
1491
|
+
<CreateMenu
|
|
1492
|
+
scope={targetScope}
|
|
1493
|
+
resourceFilter={resourceFilter}
|
|
1494
|
+
onCreateFile={(name) => handleCreateFromToolbar(targetScope, name)}
|
|
1495
|
+
onCreateResource={(path, content, mimeType, opts) =>
|
|
1496
|
+
handleCreateResourceFromToolbar(
|
|
1497
|
+
targetScope,
|
|
1498
|
+
path,
|
|
1499
|
+
content,
|
|
1500
|
+
mimeType,
|
|
1501
|
+
opts,
|
|
1502
|
+
)
|
|
1503
|
+
}
|
|
1504
|
+
onCreateMcpServer={handleCreateMcpServer}
|
|
1505
|
+
canCreateOrgMcp={canCreateOrgMcp}
|
|
1506
|
+
hasOrg={hasOrgForMcp}
|
|
1507
|
+
showToast={showToast}
|
|
1508
|
+
/>
|
|
1509
|
+
);
|
|
1510
|
+
};
|
|
1511
|
+
|
|
1371
1512
|
return (
|
|
1372
1513
|
<div
|
|
1373
1514
|
className={cn(
|
|
@@ -1503,73 +1644,90 @@ export function ResourcesPanel({
|
|
|
1503
1644
|
) : (
|
|
1504
1645
|
/* Floating action buttons — absolute top-right over tree view */
|
|
1505
1646
|
<div className="absolute top-1 right-1 z-10 flex items-center gap-1">
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1647
|
+
{(!resourceFilter || resourceFilter === "files") && (
|
|
1648
|
+
<CreateMenu
|
|
1649
|
+
scope={activeScope}
|
|
1650
|
+
resourceFilter={resourceFilter}
|
|
1651
|
+
onCreateFile={(name) =>
|
|
1652
|
+
handleCreateFromToolbar(activeScope, name)
|
|
1653
|
+
}
|
|
1654
|
+
onCreateResource={(path, content, mimeType, opts) =>
|
|
1655
|
+
handleCreateResourceFromToolbar(
|
|
1656
|
+
activeScope,
|
|
1657
|
+
path,
|
|
1658
|
+
content,
|
|
1659
|
+
mimeType,
|
|
1660
|
+
opts,
|
|
1661
|
+
)
|
|
1662
|
+
}
|
|
1663
|
+
onCreateMcpServer={handleCreateMcpServer}
|
|
1664
|
+
canCreateOrgMcp={canCreateOrgMcp}
|
|
1665
|
+
hasOrg={hasOrgForMcp}
|
|
1666
|
+
showToast={showToast}
|
|
1667
|
+
/>
|
|
1668
|
+
)}
|
|
1669
|
+
{(!resourceFilter || resourceFilter === "files") && (
|
|
1670
|
+
<>
|
|
1671
|
+
<TooltipProvider delayDuration={200}>
|
|
1672
|
+
<Tooltip>
|
|
1673
|
+
<TooltipTrigger asChild>
|
|
1674
|
+
<button
|
|
1675
|
+
onClick={() => fileInputRef.current?.click()}
|
|
1676
|
+
aria-label="Upload file"
|
|
1677
|
+
className="flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-accent/50"
|
|
1678
|
+
>
|
|
1679
|
+
<IconUpload className="h-3.5 w-3.5" />
|
|
1680
|
+
</button>
|
|
1681
|
+
</TooltipTrigger>
|
|
1682
|
+
<TooltipContent>Upload file</TooltipContent>
|
|
1683
|
+
</Tooltip>
|
|
1684
|
+
</TooltipProvider>
|
|
1685
|
+
<TooltipProvider delayDuration={200}>
|
|
1686
|
+
<Tooltip>
|
|
1687
|
+
<TooltipTrigger asChild>
|
|
1688
|
+
<button
|
|
1689
|
+
type="button"
|
|
1690
|
+
onClick={() => setShowAgentScratch((value) => !value)}
|
|
1691
|
+
aria-label={
|
|
1692
|
+
showAgentScratch
|
|
1693
|
+
? "Hide agent scratch files"
|
|
1694
|
+
: "Show agent scratch files"
|
|
1695
|
+
}
|
|
1696
|
+
className={cn(
|
|
1697
|
+
"flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-accent/50",
|
|
1698
|
+
showAgentScratch && "bg-accent/50 text-foreground",
|
|
1699
|
+
)}
|
|
1700
|
+
>
|
|
1701
|
+
<IconEye className="h-3.5 w-3.5" />
|
|
1702
|
+
</button>
|
|
1703
|
+
</TooltipTrigger>
|
|
1704
|
+
<TooltipContent>
|
|
1705
|
+
{showAgentScratch
|
|
1537
1706
|
? "Hide agent scratch files"
|
|
1538
|
-
: "Show agent scratch files"
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
aria-label="Open Workspace docs"
|
|
1563
|
-
className="flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-accent/50"
|
|
1564
|
-
>
|
|
1565
|
-
<IconHelp className="h-3.5 w-3.5" />
|
|
1566
|
-
</a>
|
|
1567
|
-
</TooltipTrigger>
|
|
1568
|
-
<TooltipContent side="left" sideOffset={8}>
|
|
1569
|
-
Open Workspace docs
|
|
1570
|
-
</TooltipContent>
|
|
1571
|
-
</Tooltip>
|
|
1572
|
-
</TooltipProvider>
|
|
1707
|
+
: "Show agent scratch files"}
|
|
1708
|
+
</TooltipContent>
|
|
1709
|
+
</Tooltip>
|
|
1710
|
+
</TooltipProvider>
|
|
1711
|
+
<TooltipProvider delayDuration={200}>
|
|
1712
|
+
<Tooltip>
|
|
1713
|
+
<TooltipTrigger asChild>
|
|
1714
|
+
<a
|
|
1715
|
+
href={WORKSPACE_DOCS_URL}
|
|
1716
|
+
target="_blank"
|
|
1717
|
+
rel="noopener noreferrer"
|
|
1718
|
+
aria-label="Open Workspace docs"
|
|
1719
|
+
className="flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-accent/50"
|
|
1720
|
+
>
|
|
1721
|
+
<IconHelp className="h-3.5 w-3.5" />
|
|
1722
|
+
</a>
|
|
1723
|
+
</TooltipTrigger>
|
|
1724
|
+
<TooltipContent side="left" sideOffset={8}>
|
|
1725
|
+
Open Workspace docs
|
|
1726
|
+
</TooltipContent>
|
|
1727
|
+
</Tooltip>
|
|
1728
|
+
</TooltipProvider>
|
|
1729
|
+
</>
|
|
1730
|
+
)}
|
|
1573
1731
|
<input
|
|
1574
1732
|
ref={fileInputRef}
|
|
1575
1733
|
type="file"
|
|
@@ -1577,7 +1735,7 @@ export function ResourcesPanel({
|
|
|
1577
1735
|
className="hidden"
|
|
1578
1736
|
onChange={(e) => {
|
|
1579
1737
|
if (e.target.files && e.target.files.length > 0) {
|
|
1580
|
-
handleUploadFiles(e.target.files);
|
|
1738
|
+
handleUploadFiles(e.target.files, activeScope);
|
|
1581
1739
|
e.target.value = "";
|
|
1582
1740
|
}
|
|
1583
1741
|
}}
|
|
@@ -1625,9 +1783,9 @@ export function ResourcesPanel({
|
|
|
1625
1783
|
{!personalTreeQuery.isLoading &&
|
|
1626
1784
|
!sharedTreeQuery.isLoading &&
|
|
1627
1785
|
!workspaceTreeQuery.isLoading &&
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1786
|
+
visibleWorkspaceTree.length === 0 &&
|
|
1787
|
+
displayedPersonalTree.length === 0 &&
|
|
1788
|
+
displayedSharedTree.length === 0 && (
|
|
1631
1789
|
<div className="mx-2 mt-2 rounded-md border border-border bg-muted/30 p-2.5 text-[11px] text-muted-foreground">
|
|
1632
1790
|
<p className="mb-1 font-medium text-foreground">
|
|
1633
1791
|
This is your Workspace
|
|
@@ -1658,9 +1816,10 @@ export function ResourcesPanel({
|
|
|
1658
1816
|
</a>
|
|
1659
1817
|
</div>
|
|
1660
1818
|
)}
|
|
1661
|
-
{
|
|
1819
|
+
{visibleWorkspaceTree.length > 0 && (
|
|
1662
1820
|
<ResourceTree
|
|
1663
|
-
tree={
|
|
1821
|
+
tree={visibleWorkspaceTree}
|
|
1822
|
+
variant={resourceTreeVariant}
|
|
1664
1823
|
isLoading={workspaceTreeQuery.isLoading}
|
|
1665
1824
|
deletingId={
|
|
1666
1825
|
deleteResource.isPending
|
|
@@ -1682,60 +1841,68 @@ export function ResourcesPanel({
|
|
|
1682
1841
|
headingHint="Inherited"
|
|
1683
1842
|
/>
|
|
1684
1843
|
)}
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
?
|
|
1693
|
-
:
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1844
|
+
{showPersonalTree && (
|
|
1845
|
+
<ResourceTree
|
|
1846
|
+
tree={displayedPersonalTree}
|
|
1847
|
+
variant={resourceTreeVariant}
|
|
1848
|
+
isLoading={personalTreeQuery.isLoading}
|
|
1849
|
+
deletingId={
|
|
1850
|
+
deleteResource.isPending
|
|
1851
|
+
? (deleteResource.variables as string)
|
|
1852
|
+
: deleteMcpServer.isPending
|
|
1853
|
+
? `mcp:${(deleteMcpServer.variables as { scope: string }).scope}:${(deleteMcpServer.variables as { id: string }).id}`
|
|
1854
|
+
: null
|
|
1855
|
+
}
|
|
1856
|
+
selectedId={selectedResourceId}
|
|
1857
|
+
onSelect={handleSelect}
|
|
1858
|
+
onCreateFile={(parentPath, name) =>
|
|
1859
|
+
handleCreateFile(parentPath, name, "personal")
|
|
1860
|
+
}
|
|
1861
|
+
onCreateFolder={(parentPath, name) =>
|
|
1862
|
+
handleCreateFolder(parentPath, name, "personal")
|
|
1863
|
+
}
|
|
1864
|
+
onDelete={handleDelete}
|
|
1865
|
+
onRename={handleRename}
|
|
1866
|
+
onDrop={(files) => handleUploadFiles(files, "personal")}
|
|
1867
|
+
title="Personal"
|
|
1868
|
+
titleTooltip="Files visible only to you"
|
|
1869
|
+
sectionAction={renderScopeCreateMenu("personal")}
|
|
1870
|
+
/>
|
|
1871
|
+
)}
|
|
1872
|
+
{showSharedTree && (
|
|
1873
|
+
<ResourceTree
|
|
1874
|
+
tree={displayedSharedTree}
|
|
1875
|
+
variant={resourceTreeVariant}
|
|
1876
|
+
isLoading={sharedTreeQuery.isLoading}
|
|
1877
|
+
deletingId={
|
|
1878
|
+
deleteResource.isPending
|
|
1879
|
+
? (deleteResource.variables as string)
|
|
1880
|
+
: deleteMcpServer.isPending
|
|
1881
|
+
? `mcp:${(deleteMcpServer.variables as { scope: string }).scope}:${(deleteMcpServer.variables as { id: string }).id}`
|
|
1882
|
+
: null
|
|
1883
|
+
}
|
|
1884
|
+
selectedId={selectedResourceId}
|
|
1885
|
+
onSelect={handleSelect}
|
|
1886
|
+
onCreateFile={(parentPath, name) =>
|
|
1887
|
+
handleCreateFile(parentPath, name, "shared")
|
|
1888
|
+
}
|
|
1889
|
+
onCreateFolder={(parentPath, name) =>
|
|
1890
|
+
handleCreateFolder(parentPath, name, "shared")
|
|
1891
|
+
}
|
|
1892
|
+
onDelete={handleDelete}
|
|
1893
|
+
onRename={handleRename}
|
|
1894
|
+
onDrop={(files) => handleUploadFiles(files, "shared")}
|
|
1895
|
+
title="Organization"
|
|
1896
|
+
titleTooltip={
|
|
1897
|
+
canEditOrg
|
|
1898
|
+
? "Files visible to everyone in your organization"
|
|
1899
|
+
: "Files visible to everyone in your organization. Read-only — only admins can edit."
|
|
1900
|
+
}
|
|
1901
|
+
readOnly={!canEditOrg}
|
|
1902
|
+
headingHint={!canEditOrg ? "Read only" : undefined}
|
|
1903
|
+
sectionAction={renderScopeCreateMenu("shared")}
|
|
1904
|
+
/>
|
|
1905
|
+
)}
|
|
1739
1906
|
</div>
|
|
1740
1907
|
)}
|
|
1741
1908
|
</div>
|