@agent-native/core 0.14.8 → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/agent/engine/builder-engine.d.ts.map +1 -1
- package/dist/agent/engine/builder-engine.js +30 -9
- package/dist/agent/engine/builder-engine.js.map +1 -1
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js +14 -4
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +71 -4
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/types.d.ts +9 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/appearance/actions/change-appearance.d.ts +3 -0
- package/dist/appearance/actions/change-appearance.d.ts.map +1 -0
- package/dist/appearance/actions/change-appearance.js +29 -0
- package/dist/appearance/actions/change-appearance.js.map +1 -0
- package/dist/chat-threads/store.d.ts +53 -2
- package/dist/chat-threads/store.d.ts.map +1 -1
- package/dist/chat-threads/store.js +172 -12
- package/dist/chat-threads/store.js.map +1 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +114 -37
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/index.js +30 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/workspace-dev.d.ts +25 -1
- package/dist/cli/workspace-dev.d.ts.map +1 -1
- package/dist/cli/workspace-dev.js +275 -49
- package/dist/cli/workspace-dev.js.map +1 -1
- package/dist/client/AgentPanel.d.ts +23 -4
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +276 -53
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AppearancePicker.d.ts +11 -0
- package/dist/client/AppearancePicker.d.ts.map +1 -0
- package/dist/client/AppearancePicker.js +16 -0
- package/dist/client/AppearancePicker.js.map +1 -0
- package/dist/client/AssistantChat.d.ts +35 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +315 -32
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/ConnectBuilderCard.d.ts.map +1 -1
- package/dist/client/ConnectBuilderCard.js +5 -2
- package/dist/client/ConnectBuilderCard.js.map +1 -1
- package/dist/client/ErrorBoundary.d.ts.map +1 -1
- package/dist/client/ErrorBoundary.js +8 -10
- package/dist/client/ErrorBoundary.js.map +1 -1
- package/dist/client/FeedbackButton.d.ts.map +1 -1
- package/dist/client/FeedbackButton.js +1 -1
- package/dist/client/FeedbackButton.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts +13 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +217 -38
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/NewWorkspaceAppFlow.d.ts.map +1 -1
- package/dist/client/NewWorkspaceAppFlow.js +37 -14
- package/dist/client/NewWorkspaceAppFlow.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts +5 -0
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +4 -0
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/agent-sidebar-state.d.ts +12 -0
- package/dist/client/agent-sidebar-state.d.ts.map +1 -1
- package/dist/client/agent-sidebar-state.js +8 -0
- package/dist/client/agent-sidebar-state.js.map +1 -1
- package/dist/client/analytics.d.ts.map +1 -1
- package/dist/client/analytics.js +175 -3
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/appearance.d.ts +40 -0
- package/dist/client/appearance.d.ts.map +1 -0
- package/dist/client/appearance.js +114 -0
- package/dist/client/appearance.js.map +1 -0
- package/dist/client/builder-frame.d.ts +1 -0
- package/dist/client/builder-frame.d.ts.map +1 -1
- package/dist/client/builder-frame.js +19 -9
- package/dist/client/builder-frame.js.map +1 -1
- package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
- package/dist/client/components/CodeRequiredDialog.js +10 -2
- package/dist/client/components/CodeRequiredDialog.js.map +1 -1
- package/dist/client/components/ui/dropdown-menu.js +2 -2
- package/dist/client/components/ui/dropdown-menu.js.map +1 -1
- package/dist/client/components/ui/hover-card.js +1 -1
- package/dist/client/components/ui/hover-card.js.map +1 -1
- package/dist/client/components/ui/popover.js +1 -1
- package/dist/client/components/ui/popover.js.map +1 -1
- package/dist/client/composer/PromptComposer.d.ts +7 -0
- package/dist/client/composer/PromptComposer.d.ts.map +1 -1
- package/dist/client/composer/PromptComposer.js +63 -32
- package/dist/client/composer/PromptComposer.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts +5 -0
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +36 -6
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/composer/useVoiceDictation.d.ts.map +1 -1
- package/dist/client/composer/useVoiceDictation.js +13 -1
- package/dist/client/composer/useVoiceDictation.js.map +1 -1
- package/dist/client/dev-mode.d.ts +14 -0
- package/dist/client/dev-mode.d.ts.map +1 -0
- package/dist/client/dev-mode.js +14 -0
- package/dist/client/dev-mode.js.map +1 -0
- package/dist/client/error-format.d.ts +3 -2
- package/dist/client/error-format.d.ts.map +1 -1
- package/dist/client/error-format.js +9 -2
- package/dist/client/error-format.js.map +1 -1
- package/dist/client/extensions/EmbeddedTool.d.ts +20 -0
- package/dist/client/extensions/EmbeddedTool.d.ts.map +1 -0
- package/dist/client/extensions/EmbeddedTool.js +199 -0
- package/dist/client/extensions/EmbeddedTool.js.map +1 -0
- package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionViewer.js +24 -2
- package/dist/client/extensions/ExtensionViewer.js.map +1 -1
- package/dist/client/extensions/ToolEditor.d.ts +5 -0
- package/dist/client/extensions/ToolEditor.d.ts.map +1 -0
- package/dist/client/extensions/ToolEditor.js +129 -0
- package/dist/client/extensions/ToolEditor.js.map +1 -0
- package/dist/client/extensions/ToolViewer.d.ts +5 -0
- package/dist/client/extensions/ToolViewer.d.ts.map +1 -0
- package/dist/client/extensions/ToolViewer.js +400 -0
- package/dist/client/extensions/ToolViewer.js.map +1 -0
- package/dist/client/extensions/ToolViewerPage.d.ts +2 -0
- package/dist/client/extensions/ToolViewerPage.d.ts.map +1 -0
- package/dist/client/extensions/ToolViewerPage.js +24 -0
- package/dist/client/extensions/ToolViewerPage.js.map +1 -0
- package/dist/client/extensions/ToolsListPage.d.ts +2 -0
- package/dist/client/extensions/ToolsListPage.d.ts.map +1 -0
- package/dist/client/extensions/ToolsListPage.js +67 -0
- package/dist/client/extensions/ToolsListPage.js.map +1 -0
- package/dist/client/extensions/ToolsSidebarSection.d.ts +2 -0
- package/dist/client/extensions/ToolsSidebarSection.d.ts.map +1 -0
- package/dist/client/extensions/ToolsSidebarSection.js +236 -0
- package/dist/client/extensions/ToolsSidebarSection.js.map +1 -0
- package/dist/client/extensions/tool-order.d.ts +7 -0
- package/dist/client/extensions/tool-order.d.ts.map +1 -0
- package/dist/client/extensions/tool-order.js +47 -0
- package/dist/client/extensions/tool-order.js.map +1 -0
- package/dist/client/index.d.ts +8 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +7 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/onboarding/OnboardingPanel.js +1 -0
- package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
- package/dist/client/org/InvitationBanner.d.ts.map +1 -1
- package/dist/client/org/InvitationBanner.js +23 -2
- package/dist/client/org/InvitationBanner.js.map +1 -1
- package/dist/client/org/OrgSwitcher.d.ts +5 -4
- package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
- package/dist/client/org/OrgSwitcher.js +57 -9
- package/dist/client/org/OrgSwitcher.js.map +1 -1
- package/dist/client/org/hooks.d.ts.map +1 -1
- package/dist/client/org/hooks.js +10 -6
- package/dist/client/org/hooks.js.map +1 -1
- package/dist/client/org/workspace-app-links.d.ts +31 -0
- package/dist/client/org/workspace-app-links.d.ts.map +1 -0
- package/dist/client/org/workspace-app-links.js +268 -0
- package/dist/client/org/workspace-app-links.js.map +1 -0
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +18 -5
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/resources/use-resources.d.ts +18 -13
- package/dist/client/resources/use-resources.d.ts.map +1 -1
- package/dist/client/resources/use-resources.js +24 -6
- package/dist/client/resources/use-resources.js.map +1 -1
- package/dist/client/settings/BackgroundAgentSection.d.ts.map +1 -1
- package/dist/client/settings/BackgroundAgentSection.js +9 -1
- package/dist/client/settings/BackgroundAgentSection.js.map +1 -1
- package/dist/client/settings/BrowserSection.d.ts.map +1 -1
- package/dist/client/settings/BrowserSection.js +16 -1
- package/dist/client/settings/BrowserSection.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +4 -1
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.js +5 -5
- package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
- package/dist/client/settings/useBuilderStatus.d.ts +8 -0
- package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
- package/dist/client/settings/useBuilderStatus.js +50 -13
- package/dist/client/settings/useBuilderStatus.js.map +1 -1
- package/dist/client/settings/useBuilderStatus.spec.d.ts +2 -0
- package/dist/client/settings/useBuilderStatus.spec.d.ts.map +1 -0
- package/dist/client/settings/useBuilderStatus.spec.js +64 -0
- package/dist/client/settings/useBuilderStatus.spec.js.map +1 -0
- package/dist/client/sharing/ShareButton.d.ts +5 -0
- package/dist/client/sharing/ShareButton.d.ts.map +1 -1
- package/dist/client/sharing/ShareButton.js +60 -6
- package/dist/client/sharing/ShareButton.js.map +1 -1
- package/dist/client/theme.js +1 -1
- package/dist/client/theme.js.map +1 -1
- package/dist/client/tools/EmbeddedTool.d.ts +20 -0
- package/dist/client/tools/EmbeddedTool.d.ts.map +1 -0
- package/dist/client/tools/EmbeddedTool.js +199 -0
- package/dist/client/tools/EmbeddedTool.js.map +1 -0
- package/dist/client/tools/ExtensionSlot.d.ts +27 -0
- package/dist/client/tools/ExtensionSlot.d.ts.map +1 -0
- package/dist/client/tools/ExtensionSlot.js +96 -0
- package/dist/client/tools/ExtensionSlot.js.map +1 -0
- package/dist/client/tools/ToolEditor.d.ts +5 -0
- package/dist/client/tools/ToolEditor.d.ts.map +1 -0
- package/dist/client/tools/ToolEditor.js +129 -0
- package/dist/client/tools/ToolEditor.js.map +1 -0
- package/dist/client/tools/ToolViewer.d.ts +5 -0
- package/dist/client/tools/ToolViewer.d.ts.map +1 -0
- package/dist/client/tools/ToolViewer.js +400 -0
- package/dist/client/tools/ToolViewer.js.map +1 -0
- package/dist/client/tools/ToolViewerPage.d.ts +2 -0
- package/dist/client/tools/ToolViewerPage.d.ts.map +1 -0
- package/dist/client/tools/ToolViewerPage.js +24 -0
- package/dist/client/tools/ToolViewerPage.js.map +1 -0
- package/dist/client/tools/ToolsListPage.d.ts +2 -0
- package/dist/client/tools/ToolsListPage.d.ts.map +1 -0
- package/dist/client/tools/ToolsListPage.js +67 -0
- package/dist/client/tools/ToolsListPage.js.map +1 -0
- package/dist/client/tools/ToolsSidebarSection.d.ts +2 -0
- package/dist/client/tools/ToolsSidebarSection.d.ts.map +1 -0
- package/dist/client/tools/ToolsSidebarSection.js +236 -0
- package/dist/client/tools/ToolsSidebarSection.js.map +1 -0
- package/dist/client/tools/iframe-bridge.d.ts +38 -0
- package/dist/client/tools/iframe-bridge.d.ts.map +1 -0
- package/dist/client/tools/iframe-bridge.js +207 -0
- package/dist/client/tools/iframe-bridge.js.map +1 -0
- package/dist/client/tools/index.d.ts +8 -0
- package/dist/client/tools/index.d.ts.map +1 -0
- package/dist/client/tools/index.js +8 -0
- package/dist/client/tools/index.js.map +1 -0
- package/dist/client/tools/tool-order.d.ts +7 -0
- package/dist/client/tools/tool-order.d.ts.map +1 -0
- package/dist/client/tools/tool-order.js +47 -0
- package/dist/client/tools/tool-order.js.map +1 -0
- package/dist/client/transcription/BuilderTranscriptionCta.d.ts.map +1 -1
- package/dist/client/transcription/BuilderTranscriptionCta.js +2 -3
- package/dist/client/transcription/BuilderTranscriptionCta.js.map +1 -1
- package/dist/client/use-change-version.d.ts +46 -0
- package/dist/client/use-change-version.d.ts.map +1 -0
- package/dist/client/use-change-version.js +135 -0
- package/dist/client/use-change-version.js.map +1 -0
- package/dist/client/use-chat-threads.d.ts +16 -2
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js +87 -12
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/client/use-chat-threads.spec.d.ts +2 -0
- package/dist/client/use-chat-threads.spec.d.ts.map +1 -0
- package/dist/client/use-chat-threads.spec.js +85 -0
- package/dist/client/use-chat-threads.spec.js.map +1 -0
- package/dist/client/use-db-sync.d.ts +5 -2
- package/dist/client/use-db-sync.d.ts.map +1 -1
- package/dist/client/use-db-sync.js +41 -16
- package/dist/client/use-db-sync.js.map +1 -1
- package/dist/client/use-pinch-zoom.d.ts +35 -0
- package/dist/client/use-pinch-zoom.d.ts.map +1 -0
- package/dist/client/use-pinch-zoom.js +105 -0
- package/dist/client/use-pinch-zoom.js.map +1 -0
- package/dist/deploy/workspace-deploy.d.ts.map +1 -1
- package/dist/deploy/workspace-deploy.js +99 -5
- package/dist/deploy/workspace-deploy.js.map +1 -1
- package/dist/extensions/actions.d.ts.map +1 -1
- package/dist/extensions/actions.js +3 -0
- package/dist/extensions/actions.js.map +1 -1
- package/dist/extensions/store.d.ts +5 -0
- package/dist/extensions/store.d.ts.map +1 -1
- package/dist/extensions/store.js +16 -1
- package/dist/extensions/store.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +3 -0
- package/dist/file-upload/actions/upload-image.d.ts.map +1 -0
- package/dist/file-upload/actions/upload-image.js +145 -0
- package/dist/file-upload/actions/upload-image.js.map +1 -0
- package/dist/file-upload/builder.d.ts.map +1 -1
- package/dist/file-upload/builder.js +31 -11
- package/dist/file-upload/builder.js.map +1 -1
- package/dist/file-upload/index.d.ts +1 -0
- package/dist/file-upload/index.d.ts.map +1 -1
- package/dist/file-upload/index.js +1 -0
- package/dist/file-upload/index.js.map +1 -1
- package/dist/file-upload/pre-upload-attachments.d.ts +39 -0
- package/dist/file-upload/pre-upload-attachments.d.ts.map +1 -0
- package/dist/file-upload/pre-upload-attachments.js +110 -0
- package/dist/file-upload/pre-upload-attachments.js.map +1 -0
- package/dist/file-upload/registry.d.ts.map +1 -1
- package/dist/file-upload/registry.js +8 -7
- package/dist/file-upload/registry.js.map +1 -1
- package/dist/onboarding/default-steps.js +1 -1
- package/dist/onboarding/default-steps.js.map +1 -1
- package/dist/org/context.d.ts +15 -1
- package/dist/org/context.d.ts.map +1 -1
- package/dist/org/context.js +25 -0
- package/dist/org/context.js.map +1 -1
- package/dist/org/handlers.d.ts +2 -2
- package/dist/org/handlers.d.ts.map +1 -1
- package/dist/org/handlers.js +3 -17
- package/dist/org/handlers.js.map +1 -1
- package/dist/org/index.d.ts +1 -1
- package/dist/org/index.d.ts.map +1 -1
- package/dist/org/index.js +1 -1
- package/dist/org/index.js.map +1 -1
- package/dist/resources/handlers.d.ts +6 -0
- package/dist/resources/handlers.d.ts.map +1 -1
- package/dist/resources/handlers.js +30 -6
- package/dist/resources/handlers.js.map +1 -1
- package/dist/resources/script-helpers.d.ts +11 -2
- package/dist/resources/script-helpers.d.ts.map +1 -1
- package/dist/resources/script-helpers.js +20 -3
- package/dist/resources/script-helpers.js.map +1 -1
- package/dist/resources/store.d.ts +28 -3
- package/dist/resources/store.d.ts.map +1 -1
- package/dist/resources/store.js +170 -20
- package/dist/resources/store.js.map +1 -1
- package/dist/scripts/resources/list.d.ts +1 -1
- package/dist/scripts/resources/list.d.ts.map +1 -1
- package/dist/scripts/resources/list.js +16 -4
- package/dist/scripts/resources/list.js.map +1 -1
- package/dist/scripts/resources/write.d.ts +1 -1
- package/dist/scripts/resources/write.d.ts.map +1 -1
- package/dist/scripts/resources/write.js +47 -3
- package/dist/scripts/resources/write.js.map +1 -1
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +8 -3
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +214 -25
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-discovery.d.ts +35 -0
- package/dist/server/agent-discovery.d.ts.map +1 -1
- package/dist/server/agent-discovery.js +139 -8
- package/dist/server/agent-discovery.js.map +1 -1
- package/dist/server/app-url.d.ts +12 -6
- package/dist/server/app-url.d.ts.map +1 -1
- package/dist/server/app-url.js +58 -11
- package/dist/server/app-url.js.map +1 -1
- package/dist/server/auth.d.ts +22 -0
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +316 -65
- package/dist/server/auth.js.map +1 -1
- package/dist/server/better-auth-instance.d.ts +0 -4
- package/dist/server/better-auth-instance.d.ts.map +1 -1
- package/dist/server/better-auth-instance.js +0 -3
- package/dist/server/better-auth-instance.js.map +1 -1
- package/dist/server/builder-browser.d.ts.map +1 -1
- package/dist/server/builder-browser.js +23 -0
- package/dist/server/builder-browser.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +29 -14
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/credential-provider.d.ts +14 -0
- package/dist/server/credential-provider.d.ts.map +1 -1
- package/dist/server/credential-provider.js +88 -11
- package/dist/server/credential-provider.js.map +1 -1
- package/dist/server/google-auth-plugin.d.ts.map +1 -1
- package/dist/server/google-auth-plugin.js +65 -17
- package/dist/server/google-auth-plugin.js.map +1 -1
- package/dist/server/google-oauth.d.ts.map +1 -1
- package/dist/server/google-oauth.js +47 -17
- package/dist/server/google-oauth.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/local-migration.d.ts +41 -0
- package/dist/server/local-migration.d.ts.map +1 -0
- package/dist/server/local-migration.js +235 -0
- package/dist/server/local-migration.js.map +1 -0
- package/dist/server/oauth-public-origin.d.ts.map +1 -1
- package/dist/server/oauth-public-origin.js +19 -1
- package/dist/server/oauth-public-origin.js.map +1 -1
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +74 -19
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/server/poll.d.ts.map +1 -1
- package/dist/server/poll.js +20 -5
- package/dist/server/poll.js.map +1 -1
- package/dist/server/request-context.d.ts +8 -0
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js.map +1 -1
- package/dist/shared/index.d.ts +2 -0
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +2 -0
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/llm-connection.d.ts +10 -0
- package/dist/shared/llm-connection.d.ts.map +1 -0
- package/dist/shared/llm-connection.js +29 -0
- package/dist/shared/llm-connection.js.map +1 -0
- package/dist/shared/workspace-app-audience.d.ts +25 -0
- package/dist/shared/workspace-app-audience.d.ts.map +1 -0
- package/dist/shared/workspace-app-audience.js +126 -0
- package/dist/shared/workspace-app-audience.js.map +1 -0
- package/dist/shared/workspace-app-id.d.ts +1 -1
- package/dist/shared/workspace-app-id.d.ts.map +1 -1
- package/dist/shared/workspace-app-id.js +1 -0
- package/dist/shared/workspace-app-id.js.map +1 -1
- package/dist/sharing/access.d.ts.map +1 -1
- package/dist/sharing/access.js +46 -5
- package/dist/sharing/access.js.map +1 -1
- package/dist/sharing/actions/list-resource-shares.d.ts.map +1 -1
- package/dist/sharing/actions/list-resource-shares.js +8 -1
- package/dist/sharing/actions/list-resource-shares.js.map +1 -1
- package/dist/sharing/actions/set-resource-visibility.d.ts.map +1 -1
- package/dist/sharing/actions/set-resource-visibility.js +12 -3
- package/dist/sharing/actions/set-resource-visibility.js.map +1 -1
- package/dist/sharing/actions/share-resource.d.ts.map +1 -1
- package/dist/sharing/actions/share-resource.js +50 -1
- package/dist/sharing/actions/share-resource.js.map +1 -1
- package/dist/sharing/registry.d.ts +26 -0
- package/dist/sharing/registry.d.ts.map +1 -1
- package/dist/sharing/registry.js.map +1 -1
- package/dist/styles/agent-native.css +91 -0
- package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +72 -0
- package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +60 -37
- package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +28 -17
- package/dist/templates/default/.agents/skills/shadcn-ui/SKILL.md +79 -0
- package/dist/templates/default/AGENTS.md +22 -19
- package/dist/templates/default/actions/navigate.ts +3 -0
- package/dist/templates/default/app/hooks/use-navigation-state.ts +29 -5
- package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +251 -0
- package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +264 -0
- package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +130 -0
- package/dist/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +112 -0
- package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +88 -0
- package/dist/templates/workspace-core/.agents/skills/automations/SKILL.md +191 -0
- package/dist/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +74 -0
- package/dist/templates/workspace-core/.agents/skills/client-side-routing/SKILL.md +75 -0
- package/dist/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +190 -0
- package/dist/templates/workspace-core/.agents/skills/create-skill/SKILL.md +168 -0
- package/dist/templates/workspace-core/.agents/skills/delegate-to-agent/SKILL.md +163 -0
- package/dist/templates/workspace-core/.agents/skills/extension-points/SKILL.md +205 -0
- package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +720 -0
- package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +92 -0
- package/dist/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +285 -0
- package/dist/templates/workspace-core/.agents/skills/observability/SKILL.md +192 -0
- package/dist/templates/workspace-core/.agents/skills/onboarding/SKILL.md +43 -0
- package/dist/templates/workspace-core/.agents/skills/portability/SKILL.md +84 -0
- package/dist/templates/workspace-core/.agents/skills/qa/SKILL.md +313 -0
- package/dist/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +112 -0
- package/dist/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +165 -0
- package/dist/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +41 -0
- package/dist/templates/workspace-core/.agents/skills/secrets/SKILL.md +239 -0
- package/dist/templates/workspace-core/.agents/skills/security/SKILL.md +191 -0
- package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +79 -0
- package/dist/templates/workspace-core/.agents/skills/server-plugins/SKILL.md +73 -0
- package/dist/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +79 -0
- package/dist/templates/workspace-core/.agents/skills/sharing/SKILL.md +217 -0
- package/dist/templates/workspace-core/.agents/skills/storing-data/SKILL.md +132 -0
- package/dist/templates/workspace-core/.agents/skills/tracking/SKILL.md +150 -0
- package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +124 -0
- package/dist/templates/workspace-core/AGENTS.md +16 -1
- package/dist/templates/workspace-root/AGENTS.md +35 -0
- package/dist/templates/workspace-root/README.md +7 -0
- package/dist/tools/actions.d.ts +3 -0
- package/dist/tools/actions.d.ts.map +1 -0
- package/dist/tools/actions.js +272 -0
- package/dist/tools/actions.js.map +1 -0
- package/dist/tools/fetch-tool.d.ts +23 -0
- package/dist/tools/fetch-tool.d.ts.map +1 -0
- package/dist/tools/fetch-tool.js +178 -0
- package/dist/tools/fetch-tool.js.map +1 -0
- package/dist/tools/html-shell.d.ts +45 -0
- package/dist/tools/html-shell.d.ts.map +1 -0
- package/dist/tools/html-shell.js +514 -0
- package/dist/tools/html-shell.js.map +1 -0
- package/dist/tools/proxy-security.d.ts +12 -0
- package/dist/tools/proxy-security.d.ts.map +1 -0
- package/dist/tools/proxy-security.js +158 -0
- package/dist/tools/proxy-security.js.map +1 -0
- package/dist/tools/routes.d.ts +2 -0
- package/dist/tools/routes.d.ts.map +1 -0
- package/dist/tools/routes.js +627 -0
- package/dist/tools/routes.js.map +1 -0
- package/dist/tools/schema.d.ts +664 -0
- package/dist/tools/schema.d.ts.map +1 -0
- package/dist/tools/schema.js +146 -0
- package/dist/tools/schema.js.map +1 -0
- package/dist/tools/slots/routes.d.ts +15 -0
- package/dist/tools/slots/routes.d.ts.map +1 -0
- package/dist/tools/slots/routes.js +94 -0
- package/dist/tools/slots/routes.js.map +1 -0
- package/dist/tools/slots/schema.d.ts +303 -0
- package/dist/tools/slots/schema.d.ts.map +1 -0
- package/dist/tools/slots/schema.js +76 -0
- package/dist/tools/slots/schema.js.map +1 -0
- package/dist/tools/slots/store.d.ts +66 -0
- package/dist/tools/slots/store.d.ts.map +1 -0
- package/dist/tools/slots/store.js +227 -0
- package/dist/tools/slots/store.js.map +1 -0
- package/dist/tools/store.d.ts +40 -0
- package/dist/tools/store.d.ts.map +1 -0
- package/dist/tools/store.js +193 -0
- package/dist/tools/store.js.map +1 -0
- package/dist/tools/theme.d.ts +2 -0
- package/dist/tools/theme.d.ts.map +1 -0
- package/dist/tools/theme.js +67 -0
- package/dist/tools/theme.js.map +1 -0
- package/dist/tools/url-safety.d.ts +24 -0
- package/dist/tools/url-safety.d.ts.map +1 -0
- package/dist/tools/url-safety.js +224 -0
- package/dist/tools/url-safety.js.map +1 -0
- package/dist/vite/action-types-plugin.d.ts.map +1 -1
- package/dist/vite/action-types-plugin.js +4 -0
- package/dist/vite/action-types-plugin.js.map +1 -1
- package/docs/content/authentication.md +36 -0
- package/docs/content/creating-templates.md +15 -0
- package/docs/content/dispatch.md +3 -3
- package/docs/content/multi-app-workspace.md +5 -0
- package/docs/content/tracking.md +12 -0
- package/docs/content/workspace-management.md +39 -4
- package/package.json +15 -12
- package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +72 -0
- package/src/templates/default/.agents/skills/frontend-design/SKILL.md +60 -37
- package/src/templates/default/.agents/skills/real-time-sync/SKILL.md +28 -17
- package/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +79 -0
- package/src/templates/default/AGENTS.md +22 -19
- package/src/templates/default/actions/navigate.ts +3 -0
- package/src/templates/default/app/hooks/use-navigation-state.ts +29 -5
- package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +251 -0
- package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +264 -0
- package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +130 -0
- package/src/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +112 -0
- package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +88 -0
- package/src/templates/workspace-core/.agents/skills/automations/SKILL.md +191 -0
- package/src/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +74 -0
- package/src/templates/workspace-core/.agents/skills/client-side-routing/SKILL.md +75 -0
- package/src/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +190 -0
- package/src/templates/workspace-core/.agents/skills/create-skill/SKILL.md +168 -0
- package/src/templates/workspace-core/.agents/skills/delegate-to-agent/SKILL.md +163 -0
- package/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +205 -0
- package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +720 -0
- package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +92 -0
- package/src/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +285 -0
- package/src/templates/workspace-core/.agents/skills/observability/SKILL.md +192 -0
- package/src/templates/workspace-core/.agents/skills/onboarding/SKILL.md +43 -0
- package/src/templates/workspace-core/.agents/skills/portability/SKILL.md +84 -0
- package/src/templates/workspace-core/.agents/skills/qa/SKILL.md +313 -0
- package/src/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +112 -0
- package/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +165 -0
- package/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +41 -0
- package/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +239 -0
- package/src/templates/workspace-core/.agents/skills/security/SKILL.md +191 -0
- package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +79 -0
- package/src/templates/workspace-core/.agents/skills/server-plugins/SKILL.md +73 -0
- package/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +79 -0
- package/src/templates/workspace-core/.agents/skills/sharing/SKILL.md +217 -0
- package/src/templates/workspace-core/.agents/skills/storing-data/SKILL.md +132 -0
- package/src/templates/workspace-core/.agents/skills/tracking/SKILL.md +150 -0
- package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +124 -0
- package/src/templates/workspace-core/AGENTS.md +16 -1
- package/src/templates/workspace-root/AGENTS.md +35 -0
- package/src/templates/workspace-root/README.md +7 -0
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { useEffect, useMemo, useState } from "react";
|
|
2
|
+
import { coreTemplates } from "../../cli/templates-meta.js";
|
|
3
|
+
const DISPATCH_ID = "dispatch";
|
|
4
|
+
export const ORG_SWITCHER_MAX_APP_LINKS = 9;
|
|
5
|
+
function runtimeEnv() {
|
|
6
|
+
return (import.meta.env ?? {});
|
|
7
|
+
}
|
|
8
|
+
function envString(env, key) {
|
|
9
|
+
const value = env[key];
|
|
10
|
+
return typeof value === "string" && value.trim() ? value.trim() : undefined;
|
|
11
|
+
}
|
|
12
|
+
function titleCase(value) {
|
|
13
|
+
return value
|
|
14
|
+
.split(/[-_\s]+/)
|
|
15
|
+
.filter(Boolean)
|
|
16
|
+
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
17
|
+
.join(" ");
|
|
18
|
+
}
|
|
19
|
+
function stripTrailingSlash(value) {
|
|
20
|
+
return value.replace(/\/+$/, "");
|
|
21
|
+
}
|
|
22
|
+
function appendPath(base, path) {
|
|
23
|
+
const segment = path.replace(/^\/+/, "");
|
|
24
|
+
try {
|
|
25
|
+
const url = new URL(base);
|
|
26
|
+
url.pathname = `${stripTrailingSlash(url.pathname)}/${segment}`.replace(/\/+/g, "/");
|
|
27
|
+
return url.toString();
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return `${stripTrailingSlash(base)}/${segment}`;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function dispatchBaseHref(href) {
|
|
34
|
+
try {
|
|
35
|
+
const url = new URL(href);
|
|
36
|
+
url.pathname = url.pathname.replace(/\/(?:overview|apps)\/?$/, "") || "/";
|
|
37
|
+
url.search = "";
|
|
38
|
+
url.hash = "";
|
|
39
|
+
return stripTrailingSlash(url.toString());
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return stripTrailingSlash(href.replace(/\/(?:overview|apps)\/?$/, "") || "/dispatch");
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function isAbsoluteUrl(value) {
|
|
46
|
+
try {
|
|
47
|
+
new URL(value);
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function workspaceHref(pathValue, explicitUrl, env) {
|
|
55
|
+
const url = explicitUrl?.trim();
|
|
56
|
+
if (url) {
|
|
57
|
+
if (url.startsWith("/"))
|
|
58
|
+
return workspaceHref(url, null, env);
|
|
59
|
+
if (isAbsoluteUrl(url))
|
|
60
|
+
return url;
|
|
61
|
+
return url;
|
|
62
|
+
}
|
|
63
|
+
const path = pathValue.startsWith("/") ? pathValue : `/${pathValue}`;
|
|
64
|
+
const gatewayUrl = envString(env, "VITE_WORKSPACE_GATEWAY_URL");
|
|
65
|
+
if (!gatewayUrl)
|
|
66
|
+
return path;
|
|
67
|
+
try {
|
|
68
|
+
return new URL(path, `${stripTrailingSlash(gatewayUrl)}/`).toString();
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return path;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function appEntryToLink(entry, env) {
|
|
75
|
+
if (!entry || typeof entry !== "object")
|
|
76
|
+
return null;
|
|
77
|
+
const record = entry;
|
|
78
|
+
const id = typeof record.id === "string" ? record.id.trim() : "";
|
|
79
|
+
if (!id)
|
|
80
|
+
return null;
|
|
81
|
+
const pathValue = typeof record.path === "string" && record.path.trim()
|
|
82
|
+
? record.path.trim()
|
|
83
|
+
: `/${id}`;
|
|
84
|
+
const explicitUrl = typeof record.url === "string" && record.url.trim()
|
|
85
|
+
? record.url.trim()
|
|
86
|
+
: typeof record.builderUrl === "string" && record.builderUrl.trim()
|
|
87
|
+
? record.builderUrl.trim()
|
|
88
|
+
: null;
|
|
89
|
+
const baseHref = workspaceHref(pathValue, explicitUrl, env);
|
|
90
|
+
const isDispatch = typeof record.isDispatch === "boolean"
|
|
91
|
+
? record.isDispatch
|
|
92
|
+
: id === DISPATCH_ID;
|
|
93
|
+
return {
|
|
94
|
+
id,
|
|
95
|
+
name: typeof record.name === "string" && record.name.trim()
|
|
96
|
+
? record.name.trim()
|
|
97
|
+
: titleCase(id),
|
|
98
|
+
href: isDispatch ? appendPath(baseHref, "overview") : baseHref,
|
|
99
|
+
description: typeof record.description === "string" && record.description.trim()
|
|
100
|
+
? record.description.trim()
|
|
101
|
+
: undefined,
|
|
102
|
+
isDispatch,
|
|
103
|
+
status: record.status === "pending" ? "pending" : "ready",
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function sortAppLinks(apps) {
|
|
107
|
+
return [...apps].sort((a, b) => {
|
|
108
|
+
if (a.isDispatch && !b.isDispatch)
|
|
109
|
+
return -1;
|
|
110
|
+
if (!a.isDispatch && b.isDispatch)
|
|
111
|
+
return 1;
|
|
112
|
+
if (a.status === "pending" && b.status !== "pending")
|
|
113
|
+
return 1;
|
|
114
|
+
if (a.status !== "pending" && b.status === "pending")
|
|
115
|
+
return -1;
|
|
116
|
+
return a.name.localeCompare(b.name);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
function dedupeAppLinks(apps) {
|
|
120
|
+
const seen = new Set();
|
|
121
|
+
const deduped = [];
|
|
122
|
+
for (const app of apps) {
|
|
123
|
+
if (seen.has(app.id))
|
|
124
|
+
continue;
|
|
125
|
+
seen.add(app.id);
|
|
126
|
+
deduped.push(app);
|
|
127
|
+
}
|
|
128
|
+
return deduped;
|
|
129
|
+
}
|
|
130
|
+
export function parseWorkspaceAppLinks(payload, env = runtimeEnv()) {
|
|
131
|
+
const rawApps = Array.isArray(payload?.apps)
|
|
132
|
+
? payload.apps
|
|
133
|
+
: Array.isArray(payload)
|
|
134
|
+
? payload
|
|
135
|
+
: null;
|
|
136
|
+
if (!rawApps)
|
|
137
|
+
return null;
|
|
138
|
+
const apps = rawApps
|
|
139
|
+
.map((entry) => appEntryToLink(entry, env))
|
|
140
|
+
.filter((app) => Boolean(app));
|
|
141
|
+
return apps.length ? sortAppLinks(dedupeAppLinks(apps)) : null;
|
|
142
|
+
}
|
|
143
|
+
export function parseWorkspaceAppLinksJson(raw, env = runtimeEnv()) {
|
|
144
|
+
if (!raw)
|
|
145
|
+
return null;
|
|
146
|
+
try {
|
|
147
|
+
return parseWorkspaceAppLinks(JSON.parse(raw), env);
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
export function defaultOrgAppLinks() {
|
|
154
|
+
return sortAppLinks(coreTemplates()
|
|
155
|
+
.filter((template) => !template.hidden && template.prodUrl)
|
|
156
|
+
.map((template) => ({
|
|
157
|
+
id: template.name,
|
|
158
|
+
name: template.label,
|
|
159
|
+
href: template.name === DISPATCH_ID
|
|
160
|
+
? appendPath(template.prodUrl, "overview")
|
|
161
|
+
: template.prodUrl,
|
|
162
|
+
description: template.hint,
|
|
163
|
+
isDispatch: template.name === DISPATCH_ID,
|
|
164
|
+
status: "ready",
|
|
165
|
+
})));
|
|
166
|
+
}
|
|
167
|
+
export function isWorkspaceAppEnvironment(env = runtimeEnv()) {
|
|
168
|
+
return (envString(env, "VITE_AGENT_NATIVE_WORKSPACE") === "1" ||
|
|
169
|
+
Boolean(envString(env, "VITE_WORKSPACE_GATEWAY_URL")) ||
|
|
170
|
+
Boolean(envString(env, "VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON")));
|
|
171
|
+
}
|
|
172
|
+
export function dispatchOverviewHref(apps, env = runtimeEnv()) {
|
|
173
|
+
const dispatch = apps.find((app) => app.isDispatch);
|
|
174
|
+
if (dispatch)
|
|
175
|
+
return appendPath(dispatchBaseHref(dispatch.href), "overview");
|
|
176
|
+
return appendPath(workspaceHref("/dispatch", null, env), "overview");
|
|
177
|
+
}
|
|
178
|
+
export function dispatchAppsHref(apps, env = runtimeEnv()) {
|
|
179
|
+
const dispatch = apps.find((app) => app.isDispatch);
|
|
180
|
+
if (dispatch)
|
|
181
|
+
return appendPath(dispatchBaseHref(dispatch.href), "apps");
|
|
182
|
+
return appendPath(workspaceHref("/dispatch", null, env), "apps");
|
|
183
|
+
}
|
|
184
|
+
export function visibleOrgAppLinks(apps, max = ORG_SWITCHER_MAX_APP_LINKS) {
|
|
185
|
+
const links = sortAppLinks(apps).slice(0, max);
|
|
186
|
+
return {
|
|
187
|
+
links,
|
|
188
|
+
overflowCount: Math.max(0, apps.length - links.length),
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
function initialWorkspaceLinks(env) {
|
|
192
|
+
return (parseWorkspaceAppLinksJson(envString(env, "VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON"), env) ?? [
|
|
193
|
+
{
|
|
194
|
+
id: DISPATCH_ID,
|
|
195
|
+
name: "Dispatch",
|
|
196
|
+
href: appendPath(workspaceHref("/dispatch", null, env), "overview"),
|
|
197
|
+
description: "Workspace hub",
|
|
198
|
+
isDispatch: true,
|
|
199
|
+
status: "ready",
|
|
200
|
+
},
|
|
201
|
+
]);
|
|
202
|
+
}
|
|
203
|
+
function workspaceAppFetchUrls(env) {
|
|
204
|
+
const urls = [];
|
|
205
|
+
const gatewayUrl = envString(env, "VITE_WORKSPACE_GATEWAY_URL");
|
|
206
|
+
if (gatewayUrl) {
|
|
207
|
+
try {
|
|
208
|
+
urls.push(new URL("/_workspace/apps", `${stripTrailingSlash(gatewayUrl)}/`).toString());
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
// Fall through to the same-origin Dispatch action below.
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
urls.push("/_agent-native/actions/list-workspace-apps?includeAgentCards=false");
|
|
215
|
+
return urls;
|
|
216
|
+
}
|
|
217
|
+
export function useOrgSwitcherAppLinks(enabled) {
|
|
218
|
+
const env = useMemo(() => runtimeEnv(), []);
|
|
219
|
+
const isWorkspace = useMemo(() => isWorkspaceAppEnvironment(env), [env]);
|
|
220
|
+
const [apps, setApps] = useState(() => isWorkspace ? initialWorkspaceLinks(env) : defaultOrgAppLinks());
|
|
221
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
222
|
+
useEffect(() => {
|
|
223
|
+
if (!enabled || !isWorkspace)
|
|
224
|
+
return;
|
|
225
|
+
let cancelled = false;
|
|
226
|
+
async function refresh() {
|
|
227
|
+
setIsLoading(true);
|
|
228
|
+
try {
|
|
229
|
+
for (const url of workspaceAppFetchUrls(env)) {
|
|
230
|
+
try {
|
|
231
|
+
const response = await fetch(url, {
|
|
232
|
+
credentials: "include",
|
|
233
|
+
headers: { accept: "application/json" },
|
|
234
|
+
});
|
|
235
|
+
if (!response.ok)
|
|
236
|
+
continue;
|
|
237
|
+
const parsed = await response.json().catch(() => null);
|
|
238
|
+
const links = parseWorkspaceAppLinks(parsed, env);
|
|
239
|
+
if (links?.length) {
|
|
240
|
+
if (!cancelled)
|
|
241
|
+
setApps(links);
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
// Try the next source; the static manifest remains available.
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
finally {
|
|
251
|
+
if (!cancelled)
|
|
252
|
+
setIsLoading(false);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
void refresh();
|
|
256
|
+
return () => {
|
|
257
|
+
cancelled = true;
|
|
258
|
+
};
|
|
259
|
+
}, [enabled, env, isWorkspace]);
|
|
260
|
+
return {
|
|
261
|
+
apps,
|
|
262
|
+
isWorkspace,
|
|
263
|
+
isLoading,
|
|
264
|
+
dispatchHref: dispatchOverviewHref(apps, env),
|
|
265
|
+
dispatchAllAppsHref: dispatchAppsHref(apps, env),
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
//# sourceMappingURL=workspace-app-links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-app-links.js","sourceRoot":"","sources":["../../../src/client/org/workspace-app-links.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { coreTemplates } from \"../../cli/templates-meta.js\";\n\nexport interface OrgSwitcherAppLink {\n id: string;\n name: string;\n href: string;\n description?: string;\n isDispatch: boolean;\n status?: \"ready\" | \"pending\";\n}\n\nexport interface VisibleOrgAppLinks {\n links: OrgSwitcherAppLink[];\n overflowCount: number;\n}\n\ntype RuntimeEnv = Record<string, string | boolean | undefined>;\n\nconst DISPATCH_ID = \"dispatch\";\nexport const ORG_SWITCHER_MAX_APP_LINKS = 9;\n\nfunction runtimeEnv(): RuntimeEnv {\n return (\n (\n import.meta as unknown as {\n env?: RuntimeEnv;\n }\n ).env ?? {}\n );\n}\n\nfunction envString(env: RuntimeEnv, key: string): string | undefined {\n const value = env[key];\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n}\n\nfunction titleCase(value: string): string {\n return value\n .split(/[-_\\s]+/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\" \");\n}\n\nfunction stripTrailingSlash(value: string): string {\n return value.replace(/\\/+$/, \"\");\n}\n\nfunction appendPath(base: string, path: string): string {\n const segment = path.replace(/^\\/+/, \"\");\n try {\n const url = new URL(base);\n url.pathname = `${stripTrailingSlash(url.pathname)}/${segment}`.replace(\n /\\/+/g,\n \"/\",\n );\n return url.toString();\n } catch {\n return `${stripTrailingSlash(base)}/${segment}`;\n }\n}\n\nfunction dispatchBaseHref(href: string): string {\n try {\n const url = new URL(href);\n url.pathname = url.pathname.replace(/\\/(?:overview|apps)\\/?$/, \"\") || \"/\";\n url.search = \"\";\n url.hash = \"\";\n return stripTrailingSlash(url.toString());\n } catch {\n return stripTrailingSlash(\n href.replace(/\\/(?:overview|apps)\\/?$/, \"\") || \"/dispatch\",\n );\n }\n}\n\nfunction isAbsoluteUrl(value: string): boolean {\n try {\n new URL(value);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction workspaceHref(\n pathValue: string,\n explicitUrl: string | null | undefined,\n env: RuntimeEnv,\n): string {\n const url = explicitUrl?.trim();\n if (url) {\n if (url.startsWith(\"/\")) return workspaceHref(url, null, env);\n if (isAbsoluteUrl(url)) return url;\n return url;\n }\n\n const path = pathValue.startsWith(\"/\") ? pathValue : `/${pathValue}`;\n const gatewayUrl = envString(env, \"VITE_WORKSPACE_GATEWAY_URL\");\n if (!gatewayUrl) return path;\n\n try {\n return new URL(path, `${stripTrailingSlash(gatewayUrl)}/`).toString();\n } catch {\n return path;\n }\n}\n\nfunction appEntryToLink(\n entry: unknown,\n env: RuntimeEnv,\n): OrgSwitcherAppLink | null {\n if (!entry || typeof entry !== \"object\") return null;\n const record = entry as Record<string, unknown>;\n const id = typeof record.id === \"string\" ? record.id.trim() : \"\";\n if (!id) return null;\n\n const pathValue =\n typeof record.path === \"string\" && record.path.trim()\n ? record.path.trim()\n : `/${id}`;\n const explicitUrl =\n typeof record.url === \"string\" && record.url.trim()\n ? record.url.trim()\n : typeof record.builderUrl === \"string\" && record.builderUrl.trim()\n ? record.builderUrl.trim()\n : null;\n const baseHref = workspaceHref(pathValue, explicitUrl, env);\n const isDispatch =\n typeof record.isDispatch === \"boolean\"\n ? record.isDispatch\n : id === DISPATCH_ID;\n\n return {\n id,\n name:\n typeof record.name === \"string\" && record.name.trim()\n ? record.name.trim()\n : titleCase(id),\n href: isDispatch ? appendPath(baseHref, \"overview\") : baseHref,\n description:\n typeof record.description === \"string\" && record.description.trim()\n ? record.description.trim()\n : undefined,\n isDispatch,\n status: record.status === \"pending\" ? \"pending\" : \"ready\",\n };\n}\n\nfunction sortAppLinks(apps: OrgSwitcherAppLink[]): OrgSwitcherAppLink[] {\n return [...apps].sort((a, b) => {\n if (a.isDispatch && !b.isDispatch) return -1;\n if (!a.isDispatch && b.isDispatch) return 1;\n if (a.status === \"pending\" && b.status !== \"pending\") return 1;\n if (a.status !== \"pending\" && b.status === \"pending\") return -1;\n return a.name.localeCompare(b.name);\n });\n}\n\nfunction dedupeAppLinks(apps: OrgSwitcherAppLink[]): OrgSwitcherAppLink[] {\n const seen = new Set<string>();\n const deduped: OrgSwitcherAppLink[] = [];\n for (const app of apps) {\n if (seen.has(app.id)) continue;\n seen.add(app.id);\n deduped.push(app);\n }\n return deduped;\n}\n\nexport function parseWorkspaceAppLinks(\n payload: unknown,\n env: RuntimeEnv = runtimeEnv(),\n): OrgSwitcherAppLink[] | null {\n const rawApps = Array.isArray((payload as { apps?: unknown[] })?.apps)\n ? (payload as { apps: unknown[] }).apps\n : Array.isArray(payload)\n ? payload\n : null;\n if (!rawApps) return null;\n\n const apps = rawApps\n .map((entry) => appEntryToLink(entry, env))\n .filter((app): app is OrgSwitcherAppLink => Boolean(app));\n\n return apps.length ? sortAppLinks(dedupeAppLinks(apps)) : null;\n}\n\nexport function parseWorkspaceAppLinksJson(\n raw: string | undefined,\n env: RuntimeEnv = runtimeEnv(),\n): OrgSwitcherAppLink[] | null {\n if (!raw) return null;\n try {\n return parseWorkspaceAppLinks(JSON.parse(raw), env);\n } catch {\n return null;\n }\n}\n\nexport function defaultOrgAppLinks(): OrgSwitcherAppLink[] {\n return sortAppLinks(\n coreTemplates()\n .filter((template) => !template.hidden && template.prodUrl)\n .map((template) => ({\n id: template.name,\n name: template.label,\n href:\n template.name === DISPATCH_ID\n ? appendPath(template.prodUrl!, \"overview\")\n : template.prodUrl!,\n description: template.hint,\n isDispatch: template.name === DISPATCH_ID,\n status: \"ready\" as const,\n })),\n );\n}\n\nexport function isWorkspaceAppEnvironment(\n env: RuntimeEnv = runtimeEnv(),\n): boolean {\n return (\n envString(env, \"VITE_AGENT_NATIVE_WORKSPACE\") === \"1\" ||\n Boolean(envString(env, \"VITE_WORKSPACE_GATEWAY_URL\")) ||\n Boolean(envString(env, \"VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON\"))\n );\n}\n\nexport function dispatchOverviewHref(\n apps: OrgSwitcherAppLink[],\n env: RuntimeEnv = runtimeEnv(),\n): string {\n const dispatch = apps.find((app) => app.isDispatch);\n if (dispatch) return appendPath(dispatchBaseHref(dispatch.href), \"overview\");\n return appendPath(workspaceHref(\"/dispatch\", null, env), \"overview\");\n}\n\nexport function dispatchAppsHref(\n apps: OrgSwitcherAppLink[],\n env: RuntimeEnv = runtimeEnv(),\n): string {\n const dispatch = apps.find((app) => app.isDispatch);\n if (dispatch) return appendPath(dispatchBaseHref(dispatch.href), \"apps\");\n return appendPath(workspaceHref(\"/dispatch\", null, env), \"apps\");\n}\n\nexport function visibleOrgAppLinks(\n apps: OrgSwitcherAppLink[],\n max = ORG_SWITCHER_MAX_APP_LINKS,\n): VisibleOrgAppLinks {\n const links = sortAppLinks(apps).slice(0, max);\n return {\n links,\n overflowCount: Math.max(0, apps.length - links.length),\n };\n}\n\nfunction initialWorkspaceLinks(env: RuntimeEnv): OrgSwitcherAppLink[] {\n return (\n parseWorkspaceAppLinksJson(\n envString(env, \"VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON\"),\n env,\n ) ?? [\n {\n id: DISPATCH_ID,\n name: \"Dispatch\",\n href: appendPath(workspaceHref(\"/dispatch\", null, env), \"overview\"),\n description: \"Workspace hub\",\n isDispatch: true,\n status: \"ready\",\n },\n ]\n );\n}\n\nfunction workspaceAppFetchUrls(env: RuntimeEnv): string[] {\n const urls: string[] = [];\n const gatewayUrl = envString(env, \"VITE_WORKSPACE_GATEWAY_URL\");\n if (gatewayUrl) {\n try {\n urls.push(\n new URL(\n \"/_workspace/apps\",\n `${stripTrailingSlash(gatewayUrl)}/`,\n ).toString(),\n );\n } catch {\n // Fall through to the same-origin Dispatch action below.\n }\n }\n urls.push(\n \"/_agent-native/actions/list-workspace-apps?includeAgentCards=false\",\n );\n return urls;\n}\n\nexport interface UseOrgSwitcherAppLinksResult {\n apps: OrgSwitcherAppLink[];\n isWorkspace: boolean;\n isLoading: boolean;\n dispatchHref: string;\n dispatchAllAppsHref: string;\n}\n\nexport function useOrgSwitcherAppLinks(\n enabled: boolean,\n): UseOrgSwitcherAppLinksResult {\n const env = useMemo(() => runtimeEnv(), []);\n const isWorkspace = useMemo(() => isWorkspaceAppEnvironment(env), [env]);\n const [apps, setApps] = useState<OrgSwitcherAppLink[]>(() =>\n isWorkspace ? initialWorkspaceLinks(env) : defaultOrgAppLinks(),\n );\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n if (!enabled || !isWorkspace) return;\n let cancelled = false;\n\n async function refresh() {\n setIsLoading(true);\n try {\n for (const url of workspaceAppFetchUrls(env)) {\n try {\n const response = await fetch(url, {\n credentials: \"include\",\n headers: { accept: \"application/json\" },\n });\n if (!response.ok) continue;\n const parsed = await response.json().catch(() => null);\n const links = parseWorkspaceAppLinks(parsed, env);\n if (links?.length) {\n if (!cancelled) setApps(links);\n return;\n }\n } catch {\n // Try the next source; the static manifest remains available.\n }\n }\n } finally {\n if (!cancelled) setIsLoading(false);\n }\n }\n\n void refresh();\n return () => {\n cancelled = true;\n };\n }, [enabled, env, isWorkspace]);\n\n return {\n apps,\n isWorkspace,\n isLoading,\n dispatchHref: dispatchOverviewHref(apps, env),\n dispatchAllAppsHref: dispatchAppsHref(apps, env),\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourcesPanel.d.ts","sourceRoot":"","sources":["../../../src/client/resources/ResourcesPanel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ResourcesPanel.d.ts","sourceRoot":"","sources":["../../../src/client/resources/ResourcesPanel.tsx"],"names":[],"mappings":"AA08BA,wBAAgB,cAAc,4CA6lB7B"}
|
|
@@ -451,6 +451,10 @@ Create skill files under \`skills/<name>/SKILL.md\` to give the agent specialize
|
|
|
451
451
|
| Skill | Path | Description |
|
|
452
452
|
|-------|------|-------------|
|
|
453
453
|
| *(use the skill button to create one)* | \`skills/example/SKILL.md\` | |
|
|
454
|
+
|
|
455
|
+
## Workspace files
|
|
456
|
+
|
|
457
|
+
Workspace resources are for files users intentionally add, edit, or manage. Agents may create hidden \`agent_scratch\` resources for temporary working notes, scripts, or intermediate results; only promote those files into workspace visibility when a user explicitly asks to keep them.
|
|
454
458
|
`;
|
|
455
459
|
// BuilderBrowserCard moved to settings/BrowserSection.tsx
|
|
456
460
|
export function ResourcesPanel() {
|
|
@@ -471,13 +475,18 @@ export function ResourcesPanel() {
|
|
|
471
475
|
catch { }
|
|
472
476
|
return "visual";
|
|
473
477
|
});
|
|
478
|
+
const [showAgentScratch, setShowAgentScratch] = useState(false);
|
|
474
479
|
useEffect(() => {
|
|
475
480
|
setToolbarDeleteConfirmId(null);
|
|
476
481
|
}, [selectedResourceId]);
|
|
477
482
|
const [saveStatus, setSaveStatus] = useState("idle");
|
|
478
483
|
const fileInputRef = useRef(null);
|
|
479
|
-
const sharedTreeQuery = useResourceTree("shared"
|
|
480
|
-
|
|
484
|
+
const sharedTreeQuery = useResourceTree("shared", {
|
|
485
|
+
includeAgentScratch: showAgentScratch,
|
|
486
|
+
});
|
|
487
|
+
const personalTreeQuery = useResourceTree("personal", {
|
|
488
|
+
includeAgentScratch: showAgentScratch,
|
|
489
|
+
});
|
|
481
490
|
const mcpServersQuery = useMcpServers();
|
|
482
491
|
const createMcpServer = useCreateMcpServer();
|
|
483
492
|
const deleteMcpServer = useDeleteMcpServer();
|
|
@@ -486,8 +495,8 @@ export function ResourcesPanel() {
|
|
|
486
495
|
// table — the virtual ids carry the `mcp:<scope>:<id>` prefix that
|
|
487
496
|
// `handleSelect` and `handleDelete` below recognize to route back to
|
|
488
497
|
// the MCP endpoints.
|
|
489
|
-
const personalTree = withAgentScratchFolder(withMcpServersFolder(personalTreeQuery.data ?? [], mcpServersQuery.data?.user ?? []));
|
|
490
|
-
const sharedTree = withMcpServersFolder(sharedTreeQuery.data ?? [], mcpServersQuery.data?.org ?? []);
|
|
498
|
+
const personalTree = withAgentScratchFolder(withMcpServersFolder(personalTreeQuery.data ?? [], mcpServersQuery.data?.user ?? []), { show: showAgentScratch });
|
|
499
|
+
const sharedTree = withAgentScratchFolder(withMcpServersFolder(sharedTreeQuery.data ?? [], mcpServersQuery.data?.org ?? []), { show: showAgentScratch });
|
|
491
500
|
const orgRole = mcpServersQuery.data?.role ?? org?.role ?? null;
|
|
492
501
|
const hasOrgForMcp = !!(mcpServersQuery.data?.orgId ?? org?.orgId);
|
|
493
502
|
const canCreateOrgMcp = hasOrgForMcp && (orgRole === "owner" || orgRole === "admin");
|
|
@@ -657,7 +666,11 @@ export function ResourcesPanel() {
|
|
|
657
666
|
: "Delete resource", className: cn("flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:text-destructive hover:bg-accent/50", toolbarDeleteConfirmId === selectedResourceId &&
|
|
658
667
|
"bg-destructive/10 text-destructive"), children: _jsx(IconTrash, { className: "h-3.5 w-3.5" }) }) }), _jsx(TooltipContent, { children: toolbarDeleteConfirmId === selectedResourceId
|
|
659
668
|
? "Click again to delete"
|
|
660
|
-
: "Delete resource" })] }) })] })] })) : (_jsxs("div", { className: "absolute top-1 right-1 z-10 flex items-center gap-1", children: [_jsx(CreateMenu, { scope: activeScope, onCreateFile: handleCreateFromToolbar, onCreateResource: handleCreateResourceFromToolbar, onCreateMcpServer: handleCreateMcpServer, canCreateOrgMcp: canCreateOrgMcp, hasOrg: hasOrgForMcp }), _jsx(TooltipProvider, { delayDuration: 200, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { onClick: () => fileInputRef.current?.click(), "aria-label": "Upload file", className: "flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-accent/50", children: _jsx(IconUpload, { className: "h-3.5 w-3.5" }) }) }), _jsx(TooltipContent, { children: "Upload file" })] }) }), _jsx(TooltipProvider, { delayDuration: 200, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("
|
|
669
|
+
: "Delete resource" })] }) })] })] })) : (_jsxs("div", { className: "absolute top-1 right-1 z-10 flex items-center gap-1", children: [_jsx(CreateMenu, { scope: activeScope, onCreateFile: handleCreateFromToolbar, onCreateResource: handleCreateResourceFromToolbar, onCreateMcpServer: handleCreateMcpServer, canCreateOrgMcp: canCreateOrgMcp, hasOrg: hasOrgForMcp }), _jsx(TooltipProvider, { delayDuration: 200, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { onClick: () => fileInputRef.current?.click(), "aria-label": "Upload file", className: "flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-accent/50", children: _jsx(IconUpload, { className: "h-3.5 w-3.5" }) }) }), _jsx(TooltipContent, { children: "Upload file" })] }) }), _jsx(TooltipProvider, { delayDuration: 200, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", onClick: () => setShowAgentScratch((value) => !value), "aria-label": showAgentScratch
|
|
670
|
+
? "Hide agent scratch files"
|
|
671
|
+
: "Show agent scratch files", className: cn("flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-accent/50", showAgentScratch && "bg-accent/50 text-foreground"), children: _jsx(IconEye, { className: "h-3.5 w-3.5" }) }) }), _jsx(TooltipContent, { children: showAgentScratch
|
|
672
|
+
? "Hide agent scratch files"
|
|
673
|
+
: "Show agent scratch files" })] }) }), _jsx(TooltipProvider, { delayDuration: 200, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("a", { href: WORKSPACE_DOCS_URL, target: "_blank", rel: "noopener noreferrer", "aria-label": "Open Workspace docs", className: "flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-accent/50", children: _jsx(IconHelp, { className: "h-3.5 w-3.5" }) }) }), _jsx(TooltipContent, { side: "left", sideOffset: 8, children: "Open Workspace docs" })] }) }), _jsx("input", { ref: fileInputRef, type: "file", multiple: true, className: "hidden", onChange: (e) => {
|
|
661
674
|
if (e.target.files && e.target.files.length > 0) {
|
|
662
675
|
handleUploadFiles(e.target.files);
|
|
663
676
|
e.target.value = "";
|