@agent-native/core 0.5.0-dev.b51eaae → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -37
- package/dist/a2a/agent-card.d.ts.map +1 -1
- package/dist/a2a/agent-card.js +12 -1
- package/dist/a2a/agent-card.js.map +1 -1
- package/dist/a2a/client.d.ts +11 -0
- package/dist/a2a/client.d.ts.map +1 -1
- package/dist/a2a/client.js +38 -1
- package/dist/a2a/client.js.map +1 -1
- package/dist/a2a/index.d.ts +1 -1
- package/dist/a2a/index.d.ts.map +1 -1
- package/dist/a2a/index.js +1 -1
- package/dist/a2a/index.js.map +1 -1
- package/dist/a2a/server.d.ts +4 -0
- package/dist/a2a/server.d.ts.map +1 -1
- package/dist/a2a/server.js +53 -8
- package/dist/a2a/server.js.map +1 -1
- package/dist/a2a/types.d.ts +1 -0
- package/dist/a2a/types.d.ts.map +1 -1
- package/dist/action.d.ts +64 -30
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js +224 -27
- package/dist/action.js.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.d.ts +24 -0
- package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -0
- package/dist/agent/engine/ai-sdk-engine.js +302 -0
- package/dist/agent/engine/ai-sdk-engine.js.map +1 -0
- package/dist/agent/engine/anthropic-engine.d.ts +24 -0
- package/dist/agent/engine/anthropic-engine.d.ts.map +1 -0
- package/dist/agent/engine/anthropic-engine.js +169 -0
- package/dist/agent/engine/anthropic-engine.js.map +1 -0
- package/dist/agent/engine/builtin.d.ts +12 -0
- package/dist/agent/engine/builtin.d.ts.map +1 -0
- package/dist/agent/engine/builtin.js +72 -0
- package/dist/agent/engine/builtin.js.map +1 -0
- package/dist/agent/engine/index.d.ts +9 -0
- package/dist/agent/engine/index.d.ts.map +1 -0
- package/dist/agent/engine/index.js +8 -0
- package/dist/agent/engine/index.js.map +1 -0
- package/dist/agent/engine/registry.d.ts +61 -0
- package/dist/agent/engine/registry.d.ts.map +1 -0
- package/dist/agent/engine/registry.js +101 -0
- package/dist/agent/engine/registry.js.map +1 -0
- package/dist/agent/engine/translate-ai-sdk.d.ts +20 -0
- package/dist/agent/engine/translate-ai-sdk.d.ts.map +1 -0
- package/dist/agent/engine/translate-ai-sdk.js +174 -0
- package/dist/agent/engine/translate-ai-sdk.js.map +1 -0
- package/dist/agent/engine/translate-anthropic.d.ts +23 -0
- package/dist/agent/engine/translate-anthropic.d.ts.map +1 -0
- package/dist/agent/engine/translate-anthropic.js +140 -0
- package/dist/agent/engine/translate-anthropic.js.map +1 -0
- package/dist/agent/engine/types.d.ts +168 -0
- package/dist/agent/engine/types.d.ts.map +1 -0
- package/dist/agent/engine/types.js +13 -0
- package/dist/agent/engine/types.js.map +1 -0
- package/dist/agent/production-agent.d.ts +48 -2
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +369 -79
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-manager.d.ts +1 -1
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +15 -9
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +5 -5
- package/dist/agent/run-store.js.map +1 -1
- package/dist/agent/thread-data-builder.d.ts +1 -0
- package/dist/agent/thread-data-builder.d.ts.map +1 -1
- package/dist/agent/thread-data-builder.js +4 -1
- package/dist/agent/thread-data-builder.js.map +1 -1
- package/dist/agent/types.d.ts +23 -2
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/application-state/handlers.d.ts +8 -8
- package/dist/application-state/handlers.d.ts.map +1 -1
- package/dist/application-state/handlers.js +3 -2
- package/dist/application-state/handlers.js.map +1 -1
- package/dist/application-state/script-helpers.d.ts.map +1 -1
- package/dist/application-state/script-helpers.js +47 -9
- package/dist/application-state/script-helpers.js.map +1 -1
- package/dist/chat-threads/store.d.ts +14 -0
- package/dist/chat-threads/store.d.ts.map +1 -1
- package/dist/chat-threads/store.js +32 -0
- package/dist/chat-threads/store.js.map +1 -1
- package/dist/cli/create-workspace.d.ts +8 -0
- package/dist/cli/create-workspace.d.ts.map +1 -0
- package/dist/cli/create-workspace.js +18 -0
- package/dist/cli/create-workspace.js.map +1 -0
- package/dist/cli/create.d.ts +36 -2
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +509 -61
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/index.js +73 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/workspacify.d.ts +18 -0
- package/dist/cli/workspacify.d.ts.map +1 -0
- package/dist/cli/workspacify.js +74 -0
- package/dist/cli/workspacify.js.map +1 -0
- package/dist/client/AgentPanel.d.ts +6 -2
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +314 -180
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AgentTaskCard.d.ts +12 -0
- package/dist/client/AgentTaskCard.d.ts.map +1 -0
- package/dist/client/AgentTaskCard.js +146 -0
- package/dist/client/AgentTaskCard.js.map +1 -0
- package/dist/client/AssistantChat.d.ts +13 -2
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +344 -122
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts +7 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +345 -63
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/PoweredByBadge.js +2 -2
- package/dist/client/PoweredByBadge.js.map +1 -1
- package/dist/client/Turnstile.d.ts.map +1 -1
- package/dist/client/Turnstile.js +2 -3
- package/dist/client/Turnstile.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +63 -2
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/agent-chat.d.ts +14 -1
- package/dist/client/agent-chat.d.ts.map +1 -1
- package/dist/client/agent-chat.js +4 -2
- package/dist/client/agent-chat.js.map +1 -1
- package/dist/client/components/CodeAgentIndicator.d.ts +14 -0
- package/dist/client/components/CodeAgentIndicator.d.ts.map +1 -0
- package/dist/client/components/CodeAgentIndicator.js +29 -0
- package/dist/client/components/CodeAgentIndicator.js.map +1 -0
- package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
- package/dist/client/components/CodeRequiredDialog.js +86 -5
- package/dist/client/components/CodeRequiredDialog.js.map +1 -1
- package/dist/client/composer/MentionPopover.d.ts +4 -1
- package/dist/client/composer/MentionPopover.d.ts.map +1 -1
- package/dist/client/composer/MentionPopover.js +51 -8
- package/dist/client/composer/MentionPopover.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts +8 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +149 -17
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/composer/index.d.ts +1 -1
- package/dist/client/composer/index.d.ts.map +1 -1
- package/dist/client/composer/types.d.ts +6 -1
- package/dist/client/composer/types.d.ts.map +1 -1
- package/dist/client/composer/use-mention-search.d.ts.map +1 -1
- package/dist/client/composer/use-mention-search.js +46 -13
- package/dist/client/composer/use-mention-search.js.map +1 -1
- package/dist/client/frame-protocol.d.ts +54 -0
- package/dist/client/frame-protocol.d.ts.map +1 -0
- package/dist/client/frame-protocol.js +9 -0
- package/dist/client/frame-protocol.js.map +1 -0
- package/dist/client/frame.d.ts +56 -0
- package/dist/client/frame.d.ts.map +1 -0
- package/dist/client/{harness.js → frame.js} +49 -26
- package/dist/client/frame.js.map +1 -0
- package/dist/client/index.d.ts +7 -3
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +6 -3
- package/dist/client/index.js.map +1 -1
- package/dist/client/integrations/IntegrationCard.d.ts +6 -0
- package/dist/client/integrations/IntegrationCard.d.ts.map +1 -0
- package/dist/client/integrations/IntegrationCard.js +45 -0
- package/dist/client/integrations/IntegrationCard.js.map +1 -0
- package/dist/client/integrations/IntegrationsPanel.d.ts +2 -0
- package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -0
- package/dist/client/integrations/IntegrationsPanel.js +162 -0
- package/dist/client/integrations/IntegrationsPanel.js.map +1 -0
- package/dist/client/integrations/index.d.ts +4 -0
- package/dist/client/integrations/index.d.ts.map +1 -0
- package/dist/client/integrations/index.js +3 -0
- package/dist/client/integrations/index.js.map +1 -0
- package/dist/client/integrations/useIntegrationStatus.d.ts +15 -0
- package/dist/client/integrations/useIntegrationStatus.d.ts.map +1 -0
- package/dist/client/integrations/useIntegrationStatus.js +37 -0
- package/dist/client/integrations/useIntegrationStatus.js.map +1 -0
- package/dist/client/onboarding/OnboardingBanner.d.ts +13 -0
- package/dist/client/onboarding/OnboardingBanner.d.ts.map +1 -0
- package/dist/client/onboarding/OnboardingBanner.js +36 -0
- package/dist/client/onboarding/OnboardingBanner.js.map +1 -0
- package/dist/client/onboarding/OnboardingPanel.d.ts +16 -0
- package/dist/client/onboarding/OnboardingPanel.d.ts.map +1 -0
- package/dist/client/onboarding/OnboardingPanel.js +360 -0
- package/dist/client/onboarding/OnboardingPanel.js.map +1 -0
- package/dist/client/onboarding/SetupButton.d.ts +10 -0
- package/dist/client/onboarding/SetupButton.d.ts.map +1 -0
- package/dist/client/onboarding/SetupButton.js +26 -0
- package/dist/client/onboarding/SetupButton.js.map +1 -0
- package/dist/client/onboarding/index.d.ts +12 -0
- package/dist/client/onboarding/index.d.ts.map +1 -0
- package/dist/client/onboarding/index.js +11 -0
- package/dist/client/onboarding/index.js.map +1 -0
- package/dist/client/onboarding/use-onboarding.d.ts +34 -0
- package/dist/client/onboarding/use-onboarding.d.ts.map +1 -0
- package/dist/client/onboarding/use-onboarding.js +101 -0
- package/dist/client/onboarding/use-onboarding.js.map +1 -0
- package/dist/client/org/InvitationBanner.d.ts +9 -0
- package/dist/client/org/InvitationBanner.d.ts.map +1 -0
- package/dist/client/org/InvitationBanner.js +17 -0
- package/dist/client/org/InvitationBanner.js.map +1 -0
- package/dist/client/org/OrgSwitcher.d.ts +14 -0
- package/dist/client/org/OrgSwitcher.d.ts.map +1 -0
- package/dist/client/org/OrgSwitcher.js +51 -0
- package/dist/client/org/OrgSwitcher.js.map +1 -0
- package/dist/client/org/TeamPage.d.ts +28 -0
- package/dist/client/org/TeamPage.d.ts.map +1 -0
- package/dist/client/org/TeamPage.js +216 -0
- package/dist/client/org/TeamPage.js.map +1 -0
- package/dist/client/org/hooks.d.ts +14 -0
- package/dist/client/org/hooks.d.ts.map +1 -0
- package/dist/client/org/hooks.js +101 -0
- package/dist/client/org/hooks.js.map +1 -0
- package/dist/client/org/index.d.ts +6 -0
- package/dist/client/org/index.d.ts.map +1 -0
- package/dist/client/org/index.js +6 -0
- package/dist/client/org/index.js.map +1 -0
- package/dist/client/resources/ResourceEditor.d.ts +8 -1
- package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
- package/dist/client/resources/ResourceEditor.js +141 -89
- package/dist/client/resources/ResourceEditor.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 +33 -5
- package/dist/client/resources/ResourceTree.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +260 -109
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/resources/use-resources.d.ts +15 -0
- package/dist/client/resources/use-resources.d.ts.map +1 -1
- package/dist/client/resources/use-resources.js +2 -2
- package/dist/client/resources/use-resources.js.map +1 -1
- package/dist/client/settings/AgentsSection.d.ts +2 -0
- package/dist/client/settings/AgentsSection.d.ts.map +1 -0
- package/dist/client/settings/AgentsSection.js +198 -0
- package/dist/client/settings/AgentsSection.js.map +1 -0
- package/dist/client/settings/BackgroundAgentSection.d.ts +2 -0
- package/dist/client/settings/BackgroundAgentSection.d.ts.map +1 -0
- package/dist/client/settings/BackgroundAgentSection.js +46 -0
- package/dist/client/settings/BackgroundAgentSection.js.map +1 -0
- package/dist/client/settings/BrowserSection.d.ts +2 -0
- package/dist/client/settings/BrowserSection.d.ts.map +1 -0
- package/dist/client/settings/BrowserSection.js +10 -0
- package/dist/client/settings/BrowserSection.js.map +1 -0
- package/dist/client/settings/ComingSoonSection.d.ts +13 -0
- package/dist/client/settings/ComingSoonSection.d.ts.map +1 -0
- package/dist/client/settings/ComingSoonSection.js +9 -0
- package/dist/client/settings/ComingSoonSection.js.map +1 -0
- package/dist/client/settings/LLMSection.d.ts +2 -0
- package/dist/client/settings/LLMSection.d.ts.map +1 -0
- package/dist/client/settings/LLMSection.js +64 -0
- package/dist/client/settings/LLMSection.js.map +1 -0
- package/dist/client/settings/SettingsPanel.d.ts +8 -0
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -0
- package/dist/client/settings/SettingsPanel.js +118 -0
- package/dist/client/settings/SettingsPanel.js.map +1 -0
- package/dist/client/settings/SettingsSection.d.ts +19 -0
- package/dist/client/settings/SettingsSection.d.ts.map +1 -0
- package/dist/client/settings/SettingsSection.js +10 -0
- package/dist/client/settings/SettingsSection.js.map +1 -0
- package/dist/client/settings/index.d.ts +3 -0
- package/dist/client/settings/index.d.ts.map +1 -0
- package/dist/client/settings/index.js +3 -0
- package/dist/client/settings/index.js.map +1 -0
- package/dist/client/settings/useBuilderStatus.d.ts +22 -0
- package/dist/client/settings/useBuilderStatus.d.ts.map +1 -0
- package/dist/client/settings/useBuilderStatus.js +41 -0
- package/dist/client/settings/useBuilderStatus.js.map +1 -0
- package/dist/client/sse-event-processor.d.ts +9 -1
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +36 -3
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/client/terminal/AgentTerminal.d.ts +4 -4
- package/dist/client/terminal/AgentTerminal.d.ts.map +1 -1
- package/dist/client/terminal/AgentTerminal.js +14 -14
- package/dist/client/terminal/AgentTerminal.js.map +1 -1
- package/dist/client/use-action.d.ts +51 -0
- package/dist/client/use-action.d.ts.map +1 -0
- package/dist/client/use-action.js +102 -0
- package/dist/client/use-action.js.map +1 -0
- package/dist/client/use-avatar.d.ts +15 -0
- package/dist/client/use-avatar.d.ts.map +1 -0
- package/dist/client/use-avatar.js +116 -0
- package/dist/client/use-avatar.js.map +1 -0
- package/dist/client/use-chat-threads.d.ts +1 -1
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js +34 -18
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/client/use-dev-mode.d.ts.map +1 -1
- package/dist/client/use-dev-mode.js +2 -0
- package/dist/client/use-dev-mode.js.map +1 -1
- package/dist/client/use-send-to-agent-chat.d.ts +7 -4
- package/dist/client/use-send-to-agent-chat.d.ts.map +1 -1
- package/dist/client/use-send-to-agent-chat.js +31 -10
- package/dist/client/use-send-to-agent-chat.js.map +1 -1
- package/dist/collab/awareness.d.ts +41 -0
- package/dist/collab/awareness.d.ts.map +1 -0
- package/dist/collab/awareness.js +82 -0
- package/dist/collab/awareness.js.map +1 -0
- package/dist/collab/client.d.ts +49 -0
- package/dist/collab/client.d.ts.map +1 -0
- package/dist/collab/client.js +250 -0
- package/dist/collab/client.js.map +1 -0
- package/dist/collab/emitter.d.ts +12 -0
- package/dist/collab/emitter.d.ts.map +1 -0
- package/dist/collab/emitter.js +16 -0
- package/dist/collab/emitter.js.map +1 -0
- package/dist/collab/index.d.ts +7 -0
- package/dist/collab/index.d.ts.map +1 -0
- package/dist/collab/index.js +14 -0
- package/dist/collab/index.js.map +1 -0
- package/dist/collab/routes.d.ts +69 -0
- package/dist/collab/routes.d.ts.map +1 -0
- package/dist/collab/routes.js +98 -0
- package/dist/collab/routes.js.map +1 -0
- package/dist/collab/storage.d.ts +18 -0
- package/dist/collab/storage.d.ts.map +1 -0
- package/dist/collab/storage.js +94 -0
- package/dist/collab/storage.js.map +1 -0
- package/dist/collab/text-to-yjs.d.ts +23 -0
- package/dist/collab/text-to-yjs.d.ts.map +1 -0
- package/dist/collab/text-to-yjs.js +63 -0
- package/dist/collab/text-to-yjs.js.map +1 -0
- package/dist/collab/xml-ops.d.ts +20 -0
- package/dist/collab/xml-ops.d.ts.map +1 -0
- package/dist/collab/xml-ops.js +59 -0
- package/dist/collab/xml-ops.js.map +1 -0
- package/dist/collab/ydoc-manager.d.ts +52 -0
- package/dist/collab/ydoc-manager.d.ts.map +1 -0
- package/dist/collab/ydoc-manager.js +154 -0
- package/dist/collab/ydoc-manager.js.map +1 -0
- package/dist/db/client.d.ts +10 -0
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +43 -2
- package/dist/db/client.js.map +1 -1
- package/dist/db/create-get-db.js.map +1 -1
- package/dist/db/index.d.ts +1 -1
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +1 -1
- package/dist/db/index.js.map +1 -1
- package/dist/db/migrations.d.ts +9 -1
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +45 -20
- package/dist/db/migrations.js.map +1 -1
- package/dist/db/schema.d.ts +8 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +13 -2
- package/dist/db/schema.js.map +1 -1
- package/dist/deploy/build.js +795 -86
- package/dist/deploy/build.js.map +1 -1
- package/dist/deploy/route-discovery.d.ts +22 -4
- package/dist/deploy/route-discovery.d.ts.map +1 -1
- package/dist/deploy/route-discovery.js +148 -35
- package/dist/deploy/route-discovery.js.map +1 -1
- package/dist/deploy/workspace-core.d.ts +28 -0
- package/dist/deploy/workspace-core.d.ts.map +1 -0
- package/dist/deploy/workspace-core.js +223 -0
- package/dist/deploy/workspace-core.js.map +1 -0
- package/dist/deploy/workspace-deploy.d.ts +11 -0
- package/dist/deploy/workspace-deploy.d.ts.map +1 -0
- package/dist/deploy/workspace-deploy.js +148 -0
- package/dist/deploy/workspace-deploy.js.map +1 -0
- package/dist/file-upload/builder.d.ts +11 -0
- package/dist/file-upload/builder.d.ts.map +1 -0
- package/dist/file-upload/builder.js +53 -0
- package/dist/file-upload/builder.js.map +1 -0
- package/dist/file-upload/index.d.ts +4 -0
- package/dist/file-upload/index.d.ts.map +1 -0
- package/dist/file-upload/index.js +3 -0
- package/dist/file-upload/index.js.map +1 -0
- package/dist/file-upload/registry.d.ts +23 -0
- package/dist/file-upload/registry.d.ts.map +1 -0
- package/dist/file-upload/registry.js +52 -0
- package/dist/file-upload/registry.js.map +1 -0
- package/dist/file-upload/types.d.ts +37 -0
- package/dist/file-upload/types.d.ts.map +1 -0
- package/dist/file-upload/types.js +10 -0
- package/dist/file-upload/types.js.map +1 -0
- package/dist/index.browser.d.ts +2 -0
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +4 -0
- package/dist/index.browser.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/integrations/adapters/google-docs.d.ts +89 -0
- package/dist/integrations/adapters/google-docs.d.ts.map +1 -0
- package/dist/integrations/adapters/google-docs.js +261 -0
- package/dist/integrations/adapters/google-docs.js.map +1 -0
- package/dist/integrations/adapters/slack.d.ts +10 -0
- package/dist/integrations/adapters/slack.d.ts.map +1 -0
- package/dist/integrations/adapters/slack.js +249 -0
- package/dist/integrations/adapters/slack.js.map +1 -0
- package/dist/integrations/adapters/telegram.d.ts +12 -0
- package/dist/integrations/adapters/telegram.d.ts.map +1 -0
- package/dist/integrations/adapters/telegram.js +216 -0
- package/dist/integrations/adapters/telegram.js.map +1 -0
- package/dist/integrations/adapters/whatsapp.d.ts +14 -0
- package/dist/integrations/adapters/whatsapp.d.ts.map +1 -0
- package/dist/integrations/adapters/whatsapp.js +205 -0
- package/dist/integrations/adapters/whatsapp.js.map +1 -0
- package/dist/integrations/config-store.d.ts +24 -0
- package/dist/integrations/config-store.d.ts.map +1 -0
- package/dist/integrations/config-store.js +92 -0
- package/dist/integrations/config-store.js.map +1 -0
- package/dist/integrations/google-docs-poller.d.ts +54 -0
- package/dist/integrations/google-docs-poller.d.ts.map +1 -0
- package/dist/integrations/google-docs-poller.js +442 -0
- package/dist/integrations/google-docs-poller.js.map +1 -0
- package/dist/integrations/index.d.ts +10 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +13 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/plugin.d.ts +20 -0
- package/dist/integrations/plugin.d.ts.map +1 -0
- package/dist/integrations/plugin.js +260 -0
- package/dist/integrations/plugin.js.map +1 -0
- package/dist/integrations/thread-mapping-store.d.ts +25 -0
- package/dist/integrations/thread-mapping-store.d.ts.map +1 -0
- package/dist/integrations/thread-mapping-store.js +95 -0
- package/dist/integrations/thread-mapping-store.js.map +1 -0
- package/dist/integrations/types.d.ts +144 -0
- package/dist/integrations/types.d.ts.map +1 -0
- package/dist/integrations/types.js +2 -0
- package/dist/integrations/types.js.map +1 -0
- package/dist/integrations/webhook-handler.d.ts +40 -0
- package/dist/integrations/webhook-handler.d.ts.map +1 -0
- package/dist/integrations/webhook-handler.js +220 -0
- package/dist/integrations/webhook-handler.js.map +1 -0
- package/dist/jobs/cron.d.ts +14 -0
- package/dist/jobs/cron.d.ts.map +1 -0
- package/dist/jobs/cron.js +100 -0
- package/dist/jobs/cron.js.map +1 -0
- package/dist/jobs/index.d.ts +4 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js +4 -0
- package/dist/jobs/index.js.map +1 -0
- package/dist/jobs/scheduler.d.ts +32 -0
- package/dist/jobs/scheduler.d.ts.map +1 -0
- package/dist/jobs/scheduler.js +226 -0
- package/dist/jobs/scheduler.js.map +1 -0
- package/dist/jobs/tools.d.ts +3 -0
- package/dist/jobs/tools.d.ts.map +1 -0
- package/dist/jobs/tools.js +209 -0
- package/dist/jobs/tools.js.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +2 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +26 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +182 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp-client/config.d.ts +46 -0
- package/dist/mcp-client/config.d.ts.map +1 -0
- package/dist/mcp-client/config.js +152 -0
- package/dist/mcp-client/config.js.map +1 -0
- package/dist/mcp-client/index.d.ts +17 -0
- package/dist/mcp-client/index.d.ts.map +1 -0
- package/dist/mcp-client/index.js +53 -0
- package/dist/mcp-client/index.js.map +1 -0
- package/dist/mcp-client/manager.d.ts +76 -0
- package/dist/mcp-client/manager.d.ts.map +1 -0
- package/dist/mcp-client/manager.js +212 -0
- package/dist/mcp-client/manager.js.map +1 -0
- package/dist/oauth-tokens/index.d.ts +1 -1
- package/dist/oauth-tokens/index.d.ts.map +1 -1
- package/dist/oauth-tokens/index.js +1 -1
- package/dist/oauth-tokens/index.js.map +1 -1
- package/dist/oauth-tokens/store.d.ts +5 -0
- package/dist/oauth-tokens/store.d.ts.map +1 -1
- package/dist/oauth-tokens/store.js +33 -8
- package/dist/oauth-tokens/store.js.map +1 -1
- package/dist/onboarding/default-steps.d.ts +10 -0
- package/dist/onboarding/default-steps.d.ts.map +1 -0
- package/dist/onboarding/default-steps.js +164 -0
- package/dist/onboarding/default-steps.js.map +1 -0
- package/dist/onboarding/index.d.ts +12 -0
- package/dist/onboarding/index.d.ts.map +1 -0
- package/dist/onboarding/index.js +11 -0
- package/dist/onboarding/index.js.map +1 -0
- package/dist/onboarding/plugin.d.ts +19 -0
- package/dist/onboarding/plugin.d.ts.map +1 -0
- package/dist/onboarding/plugin.js +147 -0
- package/dist/onboarding/plugin.js.map +1 -0
- package/dist/onboarding/registry.d.ts +24 -0
- package/dist/onboarding/registry.d.ts.map +1 -0
- package/dist/onboarding/registry.js +40 -0
- package/dist/onboarding/registry.js.map +1 -0
- package/dist/onboarding/types.d.ts +71 -0
- package/dist/onboarding/types.d.ts.map +1 -0
- package/dist/onboarding/types.js +10 -0
- package/dist/onboarding/types.js.map +1 -0
- package/dist/org/context.d.ts +11 -0
- package/dist/org/context.d.ts.map +1 -0
- package/dist/org/context.js +61 -0
- package/dist/org/context.js.map +1 -0
- package/dist/org/handlers.d.ts +66 -0
- package/dist/org/handlers.d.ts.map +1 -0
- package/dist/org/handlers.js +306 -0
- package/dist/org/handlers.js.map +1 -0
- package/dist/org/index.d.ts +7 -0
- package/dist/org/index.d.ts.map +1 -0
- package/dist/org/index.js +11 -0
- package/dist/org/index.js.map +1 -0
- package/dist/org/migrations.d.ts +10 -0
- package/dist/org/migrations.d.ts.map +1 -0
- package/dist/org/migrations.js +39 -0
- package/dist/org/migrations.js.map +1 -0
- package/dist/org/plugin.d.ts +26 -0
- package/dist/org/plugin.d.ts.map +1 -0
- package/dist/org/plugin.js +94 -0
- package/dist/org/plugin.js.map +1 -0
- package/dist/org/schema.d.ts +301 -0
- package/dist/org/schema.d.ts.map +1 -0
- package/dist/org/schema.js +23 -0
- package/dist/org/schema.js.map +1 -0
- package/dist/org/types.d.ts +42 -0
- package/dist/org/types.d.ts.map +1 -0
- package/dist/org/types.js +5 -0
- package/dist/org/types.js.map +1 -0
- package/dist/resources/agents.d.ts +4 -0
- package/dist/resources/agents.d.ts.map +1 -0
- package/dist/resources/agents.js +44 -0
- package/dist/resources/agents.js.map +1 -0
- package/dist/resources/handlers.d.ts +27 -1
- package/dist/resources/handlers.d.ts.map +1 -1
- package/dist/resources/handlers.js +121 -11
- package/dist/resources/handlers.js.map +1 -1
- package/dist/resources/metadata.d.ts +48 -0
- package/dist/resources/metadata.d.ts.map +1 -0
- package/dist/resources/metadata.js +150 -0
- package/dist/resources/metadata.js.map +1 -0
- package/dist/resources/script-helpers.d.ts.map +1 -1
- package/dist/resources/script-helpers.js +3 -2
- package/dist/resources/script-helpers.js.map +1 -1
- package/dist/resources/store.d.ts +5 -0
- package/dist/resources/store.d.ts.map +1 -1
- package/dist/resources/store.js +76 -17
- package/dist/resources/store.js.map +1 -1
- package/dist/scripts/agent-engines/list-agent-engines.d.ts +7 -0
- package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -0
- package/dist/scripts/agent-engines/list-agent-engines.js +42 -0
- package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -0
- package/dist/scripts/agent-engines/set-agent-engine.d.ts +7 -0
- package/dist/scripts/agent-engines/set-agent-engine.d.ts.map +1 -0
- package/dist/scripts/agent-engines/set-agent-engine.js +57 -0
- package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -0
- package/dist/scripts/agent-engines/test-agent-engine.d.ts +7 -0
- package/dist/scripts/agent-engines/test-agent-engine.d.ts.map +1 -0
- package/dist/scripts/agent-engines/test-agent-engine.js +102 -0
- package/dist/scripts/agent-engines/test-agent-engine.js.map +1 -0
- package/dist/scripts/call-agent.d.ts +1 -1
- package/dist/scripts/call-agent.d.ts.map +1 -1
- package/dist/scripts/call-agent.js +13 -8
- package/dist/scripts/call-agent.js.map +1 -1
- package/dist/scripts/chat/index.d.ts +2 -0
- package/dist/scripts/chat/index.d.ts.map +1 -0
- package/dist/scripts/chat/index.js +5 -0
- package/dist/scripts/chat/index.js.map +1 -0
- package/dist/scripts/chat/open-chat.d.ts +11 -0
- package/dist/scripts/chat/open-chat.d.ts.map +1 -0
- package/dist/scripts/chat/open-chat.js +48 -0
- package/dist/scripts/chat/open-chat.js.map +1 -0
- package/dist/scripts/chat/search-chats.d.ts +10 -0
- package/dist/scripts/chat/search-chats.d.ts.map +1 -0
- package/dist/scripts/chat/search-chats.js +90 -0
- package/dist/scripts/chat/search-chats.js.map +1 -0
- package/dist/scripts/core-scripts.d.ts.map +1 -1
- package/dist/scripts/core-scripts.js +4 -0
- package/dist/scripts/core-scripts.js.map +1 -1
- package/dist/scripts/db/check-scoping.d.ts +14 -0
- package/dist/scripts/db/check-scoping.d.ts.map +1 -0
- package/dist/scripts/db/check-scoping.js +174 -0
- package/dist/scripts/db/check-scoping.js.map +1 -0
- package/dist/scripts/db/exec.d.ts +3 -2
- package/dist/scripts/db/exec.d.ts.map +1 -1
- package/dist/scripts/db/exec.js +35 -19
- package/dist/scripts/db/exec.js.map +1 -1
- package/dist/scripts/db/index.d.ts.map +1 -1
- package/dist/scripts/db/index.js +2 -0
- package/dist/scripts/db/index.js.map +1 -1
- package/dist/scripts/db/patch.d.ts +50 -0
- package/dist/scripts/db/patch.d.ts.map +1 -0
- package/dist/scripts/db/patch.js +392 -0
- package/dist/scripts/db/patch.js.map +1 -0
- package/dist/scripts/db/scoping.d.ts +8 -2
- package/dist/scripts/db/scoping.d.ts.map +1 -1
- package/dist/scripts/db/scoping.js +66 -47
- package/dist/scripts/db/scoping.js.map +1 -1
- package/dist/scripts/dev/index.d.ts.map +1 -1
- package/dist/scripts/dev/index.js +64 -1
- package/dist/scripts/dev/index.js.map +1 -1
- package/dist/scripts/docs/index.d.ts +2 -0
- package/dist/scripts/docs/index.d.ts.map +1 -0
- package/dist/scripts/docs/index.js +4 -0
- package/dist/scripts/docs/index.js.map +1 -0
- package/dist/scripts/docs/search.d.ts +13 -0
- package/dist/scripts/docs/search.d.ts.map +1 -0
- package/dist/scripts/docs/search.js +130 -0
- package/dist/scripts/docs/search.js.map +1 -0
- package/dist/scripts/parse-args.d.ts +14 -0
- package/dist/scripts/parse-args.d.ts.map +1 -0
- package/dist/scripts/parse-args.js +45 -0
- package/dist/scripts/parse-args.js.map +1 -0
- package/dist/scripts/resources/delete-memory.d.ts +7 -0
- package/dist/scripts/resources/delete-memory.d.ts.map +1 -0
- package/dist/scripts/resources/delete-memory.js +49 -0
- package/dist/scripts/resources/delete-memory.js.map +1 -0
- package/dist/scripts/resources/delete.d.ts.map +1 -1
- package/dist/scripts/resources/delete.js +2 -1
- package/dist/scripts/resources/delete.js.map +1 -1
- package/dist/scripts/resources/index.d.ts.map +1 -1
- package/dist/scripts/resources/index.js +2 -0
- package/dist/scripts/resources/index.js.map +1 -1
- package/dist/scripts/resources/list.d.ts.map +1 -1
- package/dist/scripts/resources/list.js +2 -1
- package/dist/scripts/resources/list.js.map +1 -1
- package/dist/scripts/resources/migrate-learnings.d.ts.map +1 -1
- package/dist/scripts/resources/migrate-learnings.js +2 -1
- package/dist/scripts/resources/migrate-learnings.js.map +1 -1
- package/dist/scripts/resources/read.d.ts.map +1 -1
- package/dist/scripts/resources/read.js +2 -1
- package/dist/scripts/resources/read.js.map +1 -1
- package/dist/scripts/resources/save-memory.d.ts +9 -0
- package/dist/scripts/resources/save-memory.d.ts.map +1 -0
- package/dist/scripts/resources/save-memory.js +78 -0
- package/dist/scripts/resources/save-memory.js.map +1 -0
- package/dist/scripts/resources/write.d.ts.map +1 -1
- package/dist/scripts/resources/write.js +2 -1
- package/dist/scripts/resources/write.js.map +1 -1
- package/dist/scripts/runner.d.ts.map +1 -1
- package/dist/scripts/runner.js +10 -2
- package/dist/scripts/runner.js.map +1 -1
- package/dist/scripts/utils.d.ts +9 -8
- package/dist/scripts/utils.d.ts.map +1 -1
- package/dist/scripts/utils.js +40 -35
- package/dist/scripts/utils.js.map +1 -1
- package/dist/server/action-discovery.d.ts +5 -0
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +132 -33
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/action-routes.d.ts +15 -0
- package/dist/server/action-routes.d.ts.map +1 -0
- package/dist/server/action-routes.js +111 -0
- package/dist/server/action-routes.js.map +1 -0
- package/dist/server/agent-chat-plugin.d.ts +23 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +1474 -266
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-discovery.d.ts +8 -3
- package/dist/server/agent-discovery.d.ts.map +1 -1
- package/dist/server/agent-discovery.js +57 -8
- package/dist/server/agent-discovery.js.map +1 -1
- package/dist/server/agent-teams.d.ts +70 -0
- package/dist/server/agent-teams.d.ts.map +1 -0
- package/dist/server/agent-teams.js +368 -0
- package/dist/server/agent-teams.js.map +1 -0
- package/dist/server/agents-bundle.d.ts +115 -0
- package/dist/server/agents-bundle.d.ts.map +1 -0
- package/dist/server/agents-bundle.js +275 -0
- package/dist/server/agents-bundle.js.map +1 -0
- package/dist/server/auth-plugin.d.ts +3 -3
- package/dist/server/auth-plugin.d.ts.map +1 -1
- package/dist/server/auth-plugin.js +9 -10
- package/dist/server/auth-plugin.js.map +1 -1
- package/dist/server/auth.d.ts +55 -33
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +640 -610
- package/dist/server/auth.js.map +1 -1
- package/dist/server/better-auth-instance.d.ts +72 -0
- package/dist/server/better-auth-instance.d.ts.map +1 -0
- package/dist/server/better-auth-instance.js +340 -0
- package/dist/server/better-auth-instance.js.map +1 -0
- package/dist/server/builder-browser.d.ts +40 -0
- package/dist/server/builder-browser.d.ts.map +1 -0
- package/dist/server/builder-browser.js +166 -0
- package/dist/server/builder-browser.js.map +1 -0
- package/dist/server/collab-plugin.d.ts +29 -0
- package/dist/server/collab-plugin.d.ts.map +1 -0
- package/dist/server/collab-plugin.js +85 -0
- package/dist/server/collab-plugin.js.map +1 -0
- package/dist/server/core-routes-plugin.d.ts +0 -3
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +248 -32
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/create-server.d.ts +1 -1
- package/dist/server/create-server.d.ts.map +1 -1
- package/dist/server/create-server.js +39 -16
- package/dist/server/create-server.js.map +1 -1
- package/dist/server/credential-provider.d.ts +37 -0
- package/dist/server/credential-provider.d.ts.map +1 -0
- package/dist/server/credential-provider.js +49 -0
- package/dist/server/credential-provider.js.map +1 -0
- package/dist/server/framework-request-handler.d.ts +47 -0
- package/dist/server/framework-request-handler.d.ts.map +1 -0
- package/dist/server/framework-request-handler.js +207 -0
- package/dist/server/framework-request-handler.js.map +1 -0
- package/dist/server/google-auth-plugin.d.ts +4 -0
- package/dist/server/google-auth-plugin.d.ts.map +1 -1
- package/dist/server/google-auth-plugin.js +14 -13
- package/dist/server/google-auth-plugin.js.map +1 -1
- package/dist/server/google-oauth.d.ts +3 -3
- package/dist/server/google-oauth.d.ts.map +1 -1
- package/dist/server/google-oauth.js +51 -24
- package/dist/server/google-oauth.js.map +1 -1
- package/dist/server/h3-helpers.d.ts +23 -0
- package/dist/server/h3-helpers.d.ts.map +1 -0
- package/dist/server/h3-helpers.js +37 -0
- package/dist/server/h3-helpers.js.map +1 -0
- package/dist/server/index.d.ts +12 -4
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +15 -4
- package/dist/server/index.js.map +1 -1
- package/dist/server/local-migration.d.ts +32 -0
- package/dist/server/local-migration.d.ts.map +1 -0
- package/dist/server/local-migration.js +205 -0
- package/dist/server/local-migration.js.map +1 -0
- package/dist/server/oauth-helpers.d.ts +5 -6
- package/dist/server/oauth-helpers.d.ts.map +1 -1
- package/dist/server/oauth-helpers.js +10 -11
- package/dist/server/oauth-helpers.js.map +1 -1
- package/dist/server/onboarding-html.d.ts +24 -0
- package/dist/server/onboarding-html.d.ts.map +1 -0
- package/dist/server/onboarding-html.js +438 -0
- package/dist/server/onboarding-html.js.map +1 -0
- package/dist/server/poll.d.ts +7 -2
- package/dist/server/poll.d.ts.map +1 -1
- package/dist/server/poll.js +48 -1
- package/dist/server/poll.js.map +1 -1
- package/dist/server/request-context.d.ts +20 -0
- package/dist/server/request-context.d.ts.map +1 -0
- package/dist/server/request-context.js +41 -0
- package/dist/server/request-context.js.map +1 -0
- package/dist/server/resources-plugin.d.ts.map +1 -1
- package/dist/server/resources-plugin.js +4 -3
- package/dist/server/resources-plugin.js.map +1 -1
- package/dist/server/schema-prompt.d.ts +16 -0
- package/dist/server/schema-prompt.d.ts.map +1 -0
- package/dist/server/schema-prompt.js +275 -0
- package/dist/server/schema-prompt.js.map +1 -0
- package/dist/server/sse.d.ts +3 -20
- package/dist/server/sse.d.ts.map +1 -1
- package/dist/server/sse.js +1 -29
- package/dist/server/sse.js.map +1 -1
- package/dist/server/ssr-handler.d.ts +6 -0
- package/dist/server/ssr-handler.d.ts.map +1 -0
- package/dist/server/ssr-handler.js +55 -0
- package/dist/server/ssr-handler.js.map +1 -0
- package/dist/settings/handlers.d.ts +3 -3
- package/dist/settings/handlers.d.ts.map +1 -1
- package/dist/settings/handlers.js +2 -1
- package/dist/settings/handlers.js.map +1 -1
- package/dist/settings/index.d.ts +1 -0
- package/dist/settings/index.d.ts.map +1 -1
- package/dist/settings/index.js +2 -0
- package/dist/settings/index.js.map +1 -1
- package/dist/settings/org-settings.d.ts +22 -0
- package/dist/settings/org-settings.d.ts.map +1 -0
- package/dist/settings/org-settings.js +45 -0
- package/dist/settings/org-settings.js.map +1 -0
- package/dist/shared/agent-chat.d.ts +5 -5
- package/dist/shared/agent-chat.d.ts.map +1 -1
- package/dist/shared/agent-chat.js +8 -8
- package/dist/shared/agent-chat.js.map +1 -1
- package/dist/shared/agent-env.d.ts +1 -1
- package/dist/shared/agent-env.js +1 -1
- package/dist/shared/runtime.d.ts +14 -0
- package/dist/shared/runtime.d.ts.map +1 -0
- package/dist/shared/runtime.js +25 -0
- package/dist/shared/runtime.js.map +1 -0
- package/dist/templates/default/.agents/skills/actions/SKILL.md +143 -0
- package/dist/templates/default/.agents/skills/agent-engines/SKILL.md +127 -0
- package/dist/templates/default/.agents/skills/capture-learnings/SKILL.md +50 -0
- package/dist/templates/default/.agents/skills/create-skill/SKILL.md +167 -0
- package/dist/templates/default/.agents/skills/delegate-to-agent/SKILL.md +90 -0
- package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +69 -0
- package/dist/templates/default/.agents/skills/real-time-collab/SKILL.md +183 -0
- package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +112 -0
- package/dist/templates/default/.agents/skills/security/SKILL.md +213 -0
- package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +79 -0
- package/{src/templates/default/.agents/skills/files-as-database → dist/templates/default/.agents/skills/storing-data}/SKILL.md +7 -1
- package/dist/templates/default/.claude/settings.json +100 -0
- package/dist/templates/default/.env.example +5 -0
- package/dist/templates/default/.prettierrc +5 -0
- package/dist/templates/default/AGENTS.md +110 -0
- package/dist/templates/default/DEVELOPING.md +117 -0
- package/dist/templates/default/_gitignore +38 -0
- package/dist/templates/default/actions/hello.ts +20 -0
- package/dist/templates/default/actions/navigate.ts +53 -0
- package/dist/templates/default/actions/run.ts +2 -0
- package/dist/templates/default/actions/view-screen.ts +39 -0
- package/dist/templates/default/app/entry.client.tsx +4 -0
- package/dist/templates/default/app/entry.server.tsx +56 -0
- package/dist/templates/default/app/global.css +95 -0
- package/dist/templates/default/app/lib/utils.ts +1 -0
- package/dist/templates/default/app/root.tsx +110 -0
- package/dist/templates/default/app/routes/_index.tsx +62 -0
- package/dist/templates/default/app/routes.ts +4 -0
- package/dist/templates/default/app/vite-env.d.ts +6 -0
- package/dist/templates/default/components.json +20 -0
- package/dist/templates/default/data/.gitkeep +0 -0
- package/dist/templates/default/data/sync-config.json +1 -0
- package/dist/templates/default/learnings.defaults.md +5 -0
- package/dist/templates/default/learnings.md +0 -0
- package/dist/templates/default/package.json +46 -0
- package/dist/templates/default/postcss.config.js +6 -0
- package/dist/templates/default/public/icon-180.svg +4 -0
- package/dist/templates/default/public/icon-192.svg +4 -0
- package/dist/templates/default/public/icon-512.svg +4 -0
- package/dist/templates/default/public/manifest.json +13 -0
- package/dist/templates/default/react-router.config.ts +6 -0
- package/dist/templates/default/server/middleware/auth.ts +15 -0
- package/dist/templates/default/server/plugins/.gitkeep +0 -0
- package/dist/templates/default/server/routes/[...page].get.ts +5 -0
- package/dist/templates/default/server/routes/api/hello.get.ts +5 -0
- package/dist/templates/default/shared/api.ts +6 -0
- package/dist/templates/default/ssr-entry.ts +20 -0
- package/dist/templates/default/tailwind.config.ts +7 -0
- package/dist/templates/default/tsconfig.json +11 -0
- package/dist/templates/default/vite.config.ts +6 -0
- package/dist/templates/workspace-core/AGENTS.md +62 -0
- package/dist/templates/workspace-core/actions/company-directory.ts +38 -0
- package/dist/templates/workspace-core/package.json +39 -0
- package/dist/templates/workspace-core/skills/company-policies/SKILL.md +42 -0
- package/dist/templates/workspace-core/src/client/AuthenticatedLayout.tsx +37 -0
- package/dist/templates/workspace-core/src/client/index.ts +26 -0
- package/dist/templates/workspace-core/src/credentials.ts +29 -0
- package/dist/templates/workspace-core/src/index.ts +21 -0
- package/dist/templates/workspace-core/src/server/agent-chat-plugin.ts +30 -0
- package/dist/templates/workspace-core/src/server/auth-plugin.ts +35 -0
- package/dist/templates/workspace-core/src/server/index.ts +22 -0
- package/dist/templates/workspace-core/tailwind.preset.ts +34 -0
- package/dist/templates/workspace-core/tsconfig.json +9 -0
- package/dist/templates/workspace-root/.env.example +37 -0
- package/dist/templates/workspace-root/README.md +62 -0
- package/dist/templates/workspace-root/_gitignore +23 -0
- package/dist/templates/workspace-root/package.json +18 -0
- package/dist/templates/workspace-root/pnpm-workspace.yaml +3 -0
- package/dist/templates/workspace-root/tsconfig.base.json +21 -0
- package/dist/terminal/cli-registry.d.ts +1 -1
- package/dist/terminal/cli-registry.d.ts.map +1 -1
- package/dist/terminal/cli-registry.js +7 -7
- package/dist/terminal/cli-registry.js.map +1 -1
- package/dist/terminal/pty-server.d.ts +1 -1
- package/dist/terminal/pty-server.d.ts.map +1 -1
- package/dist/terminal/pty-server.js +34 -12
- package/dist/terminal/pty-server.js.map +1 -1
- package/dist/terminal/terminal-plugin.d.ts +0 -9
- package/dist/terminal/terminal-plugin.d.ts.map +1 -1
- package/dist/terminal/terminal-plugin.js +57 -14
- package/dist/terminal/terminal-plugin.js.map +1 -1
- package/dist/usage/store.d.ts +29 -0
- package/dist/usage/store.d.ts.map +1 -0
- package/dist/usage/store.js +102 -0
- package/dist/usage/store.js.map +1 -0
- package/dist/vite/action-types-plugin.d.ts +13 -0
- package/dist/vite/action-types-plugin.d.ts.map +1 -0
- package/dist/vite/action-types-plugin.js +132 -0
- package/dist/vite/action-types-plugin.js.map +1 -0
- package/dist/vite/agents-bundle-plugin.d.ts +3 -0
- package/dist/vite/agents-bundle-plugin.d.ts.map +1 -0
- package/dist/vite/agents-bundle-plugin.js +137 -0
- package/dist/vite/agents-bundle-plugin.js.map +1 -0
- package/dist/vite/client.d.ts +21 -0
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +297 -37
- package/dist/vite/client.js.map +1 -1
- package/dist/vite/index.d.ts +2 -1
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +2 -1
- package/dist/vite/index.js.map +1 -1
- package/docs/content/a2a-protocol.md +223 -0
- package/docs/content/actions.md +129 -0
- package/docs/content/agent-mentions.md +171 -0
- package/docs/content/authentication.md +155 -0
- package/docs/content/cli-adapters.md +244 -0
- package/docs/content/client.md +175 -0
- package/docs/content/context-awareness.md +168 -0
- package/docs/content/creating-templates.md +311 -0
- package/docs/content/database.md +82 -0
- package/docs/content/deployment.md +180 -0
- package/docs/content/enterprise-workspace.md +235 -0
- package/docs/content/faq.md +101 -0
- package/docs/content/file-uploads.md +102 -0
- package/docs/content/frames.md +47 -0
- package/docs/content/getting-started.md +104 -0
- package/docs/content/integrations.md +198 -0
- package/docs/content/key-concepts.md +246 -0
- package/docs/content/mcp-clients.md +110 -0
- package/docs/content/mcp-protocol.md +168 -0
- package/docs/content/onboarding.md +107 -0
- package/docs/content/real-time-collaboration.md +185 -0
- package/docs/content/resources.md +277 -0
- package/docs/content/security.md +158 -0
- package/docs/content/server.md +200 -0
- package/docs/content/skills-guide.md +107 -0
- package/docs/content/what-is-agent-native.md +100 -0
- package/docs/content/workspace-management.md +224 -0
- package/package.json +78 -20
- package/src/templates/default/.agents/skills/actions/SKILL.md +14 -7
- package/src/templates/default/.agents/skills/agent-engines/SKILL.md +127 -0
- package/src/templates/default/.agents/skills/real-time-collab/SKILL.md +183 -0
- package/src/templates/default/.agents/skills/security/SKILL.md +213 -0
- package/src/templates/default/.agents/skills/storing-data/SKILL.md +116 -0
- package/src/templates/default/.claude/settings.json +13 -0
- package/src/templates/default/AGENTS.md +25 -9
- package/src/templates/default/_gitignore +1 -0
- package/src/templates/default/actions/view-screen.ts +1 -1
- package/src/templates/default/app/root.tsx +4 -1
- package/src/templates/default/package.json +2 -2
- package/src/templates/default/server/middleware/auth.ts +15 -0
- package/src/templates/default/server/routes/[...page].get.ts +2 -9
- package/src/templates/default/ssr-entry.ts +20 -0
- package/src/templates/workspace-core/AGENTS.md +62 -0
- package/src/templates/workspace-core/actions/company-directory.ts +38 -0
- package/src/templates/workspace-core/package.json +39 -0
- package/src/templates/workspace-core/skills/company-policies/SKILL.md +42 -0
- package/src/templates/workspace-core/src/client/AuthenticatedLayout.tsx +37 -0
- package/src/templates/workspace-core/src/client/index.ts +26 -0
- package/src/templates/workspace-core/src/credentials.ts +29 -0
- package/src/templates/workspace-core/src/index.ts +21 -0
- package/src/templates/workspace-core/src/server/agent-chat-plugin.ts +30 -0
- package/src/templates/workspace-core/src/server/auth-plugin.ts +35 -0
- package/src/templates/workspace-core/src/server/index.ts +22 -0
- package/src/templates/workspace-core/tailwind.preset.ts +34 -0
- package/src/templates/workspace-core/tsconfig.json +9 -0
- package/src/templates/workspace-root/.env.example +37 -0
- package/src/templates/workspace-root/README.md +62 -0
- package/src/templates/workspace-root/_gitignore +23 -0
- package/src/templates/workspace-root/package.json +18 -0
- package/src/templates/workspace-root/pnpm-workspace.yaml +3 -0
- package/src/templates/workspace-root/tsconfig.base.json +21 -0
- package/dist/adapters/convex/adapter.d.ts +0 -24
- package/dist/adapters/convex/adapter.d.ts.map +0 -1
- package/dist/adapters/convex/adapter.js +0 -125
- package/dist/adapters/convex/adapter.js.map +0 -1
- package/dist/adapters/convex/index.d.ts +0 -4
- package/dist/adapters/convex/index.d.ts.map +0 -1
- package/dist/adapters/convex/index.js +0 -3
- package/dist/adapters/convex/index.js.map +0 -1
- package/dist/adapters/drizzle/adapter.d.ts +0 -36
- package/dist/adapters/drizzle/adapter.d.ts.map +0 -1
- package/dist/adapters/drizzle/adapter.js +0 -210
- package/dist/adapters/drizzle/adapter.js.map +0 -1
- package/dist/adapters/drizzle/index.d.ts +0 -3
- package/dist/adapters/drizzle/index.d.ts.map +0 -1
- package/dist/adapters/drizzle/index.js +0 -3
- package/dist/adapters/drizzle/index.js.map +0 -1
- package/dist/adapters/drizzle/schema.d.ts +0 -146
- package/dist/adapters/drizzle/schema.d.ts.map +0 -1
- package/dist/adapters/drizzle/schema.js +0 -20
- package/dist/adapters/drizzle/schema.js.map +0 -1
- package/dist/adapters/firestore/adapter.d.ts +0 -48
- package/dist/adapters/firestore/adapter.d.ts.map +0 -1
- package/dist/adapters/firestore/adapter.js +0 -62
- package/dist/adapters/firestore/adapter.js.map +0 -1
- package/dist/adapters/firestore/index.d.ts +0 -4
- package/dist/adapters/firestore/index.d.ts.map +0 -1
- package/dist/adapters/firestore/index.js +0 -3
- package/dist/adapters/firestore/index.js.map +0 -1
- package/dist/adapters/supabase/adapter.d.ts +0 -43
- package/dist/adapters/supabase/adapter.d.ts.map +0 -1
- package/dist/adapters/supabase/adapter.js +0 -137
- package/dist/adapters/supabase/adapter.js.map +0 -1
- package/dist/adapters/supabase/index.d.ts +0 -3
- package/dist/adapters/supabase/index.d.ts.map +0 -1
- package/dist/adapters/supabase/index.js +0 -3
- package/dist/adapters/supabase/index.js.map +0 -1
- package/dist/adapters/sync/config.d.ts +0 -40
- package/dist/adapters/sync/config.d.ts.map +0 -1
- package/dist/adapters/sync/config.js +0 -209
- package/dist/adapters/sync/config.js.map +0 -1
- package/dist/adapters/sync/create-file-sync.d.ts +0 -32
- package/dist/adapters/sync/create-file-sync.d.ts.map +0 -1
- package/dist/adapters/sync/create-file-sync.js +0 -218
- package/dist/adapters/sync/create-file-sync.js.map +0 -1
- package/dist/adapters/sync/file-sync.d.ts +0 -94
- package/dist/adapters/sync/file-sync.d.ts.map +0 -1
- package/dist/adapters/sync/file-sync.js +0 -671
- package/dist/adapters/sync/file-sync.js.map +0 -1
- package/dist/adapters/sync/index.d.ts +0 -6
- package/dist/adapters/sync/index.d.ts.map +0 -1
- package/dist/adapters/sync/index.js +0 -6
- package/dist/adapters/sync/index.js.map +0 -1
- package/dist/adapters/sync/merge.d.ts +0 -21
- package/dist/adapters/sync/merge.d.ts.map +0 -1
- package/dist/adapters/sync/merge.js +0 -132
- package/dist/adapters/sync/merge.js.map +0 -1
- package/dist/adapters/sync/types.d.ts +0 -62
- package/dist/adapters/sync/types.d.ts.map +0 -1
- package/dist/adapters/sync/types.js +0 -23
- package/dist/adapters/sync/types.js.map +0 -1
- package/dist/client/harness.d.ts +0 -48
- package/dist/client/harness.d.ts.map +0 -1
- package/dist/client/harness.js.map +0 -1
- package/dist/client/use-file-sync-status.d.ts +0 -21
- package/dist/client/use-file-sync-status.d.ts.map +0 -1
- package/dist/client/use-file-sync-status.js +0 -65
- package/dist/client/use-file-sync-status.js.map +0 -1
- package/dist/server/default-watcher.d.ts +0 -23
- package/dist/server/default-watcher.d.ts.map +0 -1
- package/dist/server/default-watcher.js +0 -57
- package/dist/server/default-watcher.js.map +0 -1
- package/dist/server/file-sync-plugin.d.ts +0 -7
- package/dist/server/file-sync-plugin.d.ts.map +0 -1
- package/dist/server/file-sync-plugin.js +0 -38
- package/dist/server/file-sync-plugin.js.map +0 -1
- package/dist/vite/dev-api-server.d.ts +0 -10
- package/dist/vite/dev-api-server.d.ts.map +0 -1
- package/dist/vite/dev-api-server.js +0 -243
- package/dist/vite/dev-api-server.js.map +0 -1
- /package/{src/templates/default/application-state/.gitkeep → dist/templates/default/.ignore} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
|
-
* AgentPanel — unified agent component with chat and
|
|
3
|
+
* AgentPanel — unified agent component with chat, CLI, and workspace modes.
|
|
4
4
|
*
|
|
5
5
|
* A self-contained panel with no layout opinions — drop it into a sidebar,
|
|
6
6
|
* popover, dialog, full page, or any container. It fills its parent via
|
|
@@ -23,9 +23,8 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
23
23
|
*/
|
|
24
24
|
import ReactDOM from "react-dom";
|
|
25
25
|
import { useState, useEffect, useRef, useCallback, lazy, Suspense, startTransition, } from "react";
|
|
26
|
-
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
27
26
|
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
28
|
-
import { IconMessage, IconTerminal2, IconSettings, IconLayoutSidebarRightCollapse,
|
|
27
|
+
import { IconMessage, IconTerminal2, IconSettings, IconLayoutSidebarRightCollapse, IconLayoutGrid, IconCheck, IconPlus, IconX, IconDotsVertical, IconHistory, } from "@tabler/icons-react";
|
|
29
28
|
import { MultiTabAssistantChat, } from "./MultiTabAssistantChat.js";
|
|
30
29
|
import { useDevMode } from "./use-dev-mode.js";
|
|
31
30
|
import { cn } from "./utils.js";
|
|
@@ -35,8 +34,21 @@ const AgentTerminal = lazy(() => import("./terminal/index.js").then((m) => ({ de
|
|
|
35
34
|
const ResourcesPanel = lazy(() => import("./resources/ResourcesPanel.js").then((m) => ({
|
|
36
35
|
default: m.ResourcesPanel,
|
|
37
36
|
})));
|
|
37
|
+
// Lazy-load SettingsPanel to avoid bundling when not needed
|
|
38
|
+
const SettingsPanel = lazy(() => import("./settings/index.js").then((m) => ({
|
|
39
|
+
default: m.SettingsPanel,
|
|
40
|
+
})));
|
|
41
|
+
// Lazy-load OnboardingPanel — only pulled in when onboarding is active.
|
|
42
|
+
const OnboardingPanel = lazy(() => import("./onboarding/OnboardingPanel.js").then((m) => ({
|
|
43
|
+
default: m.OnboardingPanel,
|
|
44
|
+
})));
|
|
45
|
+
// Lazy-load SetupButton — the header entry-point that re-opens the
|
|
46
|
+
// onboarding panel after the user has dismissed it.
|
|
47
|
+
const SetupButton = lazy(() => import("./onboarding/SetupButton.js").then((m) => ({
|
|
48
|
+
default: m.SetupButton,
|
|
49
|
+
})));
|
|
38
50
|
const CLI_STORAGE_KEY = "agent-native-cli-command";
|
|
39
|
-
const CLI_DEFAULT = "
|
|
51
|
+
const CLI_DEFAULT = "claude";
|
|
40
52
|
const EXEC_MODE_KEY = "agent-native-exec-mode";
|
|
41
53
|
const AGENT_PANEL_FONT_FAMILY = 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif';
|
|
42
54
|
const AGENT_PANEL_ROOT_STYLE = {
|
|
@@ -46,7 +58,7 @@ const AGENT_PANEL_ROOT_STYLE = {
|
|
|
46
58
|
};
|
|
47
59
|
const AGENT_PANEL_HEADER_CLASS = "relative z-[240] flex h-11 shrink-0 items-center justify-between gap-2 border-b border-border";
|
|
48
60
|
const AGENT_PANEL_HEADER_STYLE = {
|
|
49
|
-
paddingLeft:
|
|
61
|
+
paddingLeft: 8,
|
|
50
62
|
paddingRight: 8,
|
|
51
63
|
};
|
|
52
64
|
const AGENT_PANEL_CONTROL_STYLE = {
|
|
@@ -60,118 +72,50 @@ function useAvailableClis() {
|
|
|
60
72
|
// Returns 404 gracefully when the plugin isn't loaded.
|
|
61
73
|
fetch("/_agent-native/available-clis")
|
|
62
74
|
.then((r) => (r.ok ? r.json() : []))
|
|
63
|
-
.then((data) => setClis(data))
|
|
75
|
+
.then((data) => setClis(Array.isArray(data) ? data : []))
|
|
64
76
|
.catch(() => { });
|
|
65
77
|
}, []);
|
|
66
78
|
return clis;
|
|
67
79
|
}
|
|
68
|
-
function useCliSelection() {
|
|
80
|
+
function useCliSelection(keyPrefix) {
|
|
81
|
+
const cliKey = `${CLI_STORAGE_KEY}${keyPrefix}`;
|
|
69
82
|
const [selected, setSelected] = useState(CLI_DEFAULT);
|
|
70
83
|
useEffect(() => {
|
|
71
84
|
try {
|
|
72
|
-
const saved = localStorage.getItem(
|
|
85
|
+
const saved = localStorage.getItem(cliKey);
|
|
73
86
|
if (saved)
|
|
74
87
|
setSelected(saved);
|
|
75
88
|
}
|
|
76
89
|
catch { }
|
|
77
|
-
}, []);
|
|
90
|
+
}, [cliKey]);
|
|
78
91
|
const select = (cmd) => {
|
|
79
92
|
setSelected(cmd);
|
|
80
93
|
try {
|
|
81
|
-
localStorage.setItem(
|
|
94
|
+
localStorage.setItem(cliKey, cmd);
|
|
82
95
|
}
|
|
83
96
|
catch { }
|
|
84
97
|
};
|
|
85
98
|
return [selected, select];
|
|
86
99
|
}
|
|
87
100
|
// Detect dev mode at build time (Vite replaces this)
|
|
88
|
-
const IS_DEV =
|
|
89
|
-
|
|
90
|
-
import.meta.env.DEV === true;
|
|
91
|
-
function SettingsSelect({ label, value, options, onValueChange, }) {
|
|
92
|
-
const selected = options.find((option) => option.value === value);
|
|
93
|
-
return (_jsxs("div", { className: "space-y-1.5", children: [_jsx("p", { className: "text-[12px] font-medium text-foreground", children: label }), _jsxs(SelectPrimitive.Root, { value: value, onValueChange: onValueChange, children: [_jsxs(SelectPrimitive.Trigger, { className: "flex h-9 w-full items-center justify-between rounded-md border border-border bg-background px-3 text-left text-[12px] text-foreground outline-none transition-colors hover:bg-accent/40 data-[placeholder]:text-muted-foreground", "aria-label": label, style: AGENT_PANEL_CONTROL_STYLE, children: [_jsx(SelectPrimitive.Value, { children: selected?.label ?? value }), _jsx(SelectPrimitive.Icon, { asChild: true, children: _jsx(IconChevronDown, { size: 14, className: "text-muted-foreground" }) })] }), _jsx(SelectPrimitive.Portal, { children: _jsx(SelectPrimitive.Content, { position: "popper", sideOffset: 6, className: "z-[9999] w-[var(--radix-select-trigger-width)] overflow-hidden rounded-lg border border-border bg-popover shadow-lg", children: _jsx(SelectPrimitive.Viewport, { className: "p-1", children: options.map((option) => (_jsxs(SelectPrimitive.Item, { value: option.value, className: "relative flex w-full cursor-pointer select-none items-start gap-2 rounded-md px-8 py-2.5 text-[12px] outline-none data-[highlighted]:bg-accent/60 data-[state=checked]:bg-accent/40", style: AGENT_PANEL_CONTROL_STYLE, children: [_jsx("span", { className: "absolute left-2 top-2.5 flex h-4 w-4 items-center justify-center text-muted-foreground", children: _jsx(SelectPrimitive.ItemIndicator, { children: _jsx(IconCheck, { size: 14 }) }) }), _jsxs("div", { className: "flex min-w-0 flex-col", children: [_jsx(SelectPrimitive.ItemText, { children: _jsx("span", { className: "text-foreground", children: option.label }) }), option.description ? (_jsx("span", { className: "mt-0.5 text-[11px] leading-relaxed text-muted-foreground", children: option.description })) : null] })] }, option.value))) }) }) })] })] }));
|
|
94
|
-
}
|
|
101
|
+
const IS_DEV = import.meta.env?.DEV === true;
|
|
102
|
+
// ─── Settings panel components moved to ./settings/ ────────────────────────
|
|
95
103
|
function IconTooltip({ content, children, }) {
|
|
96
104
|
return (_jsx(TooltipPrimitive.Provider, { delayDuration: 250, children: _jsxs(TooltipPrimitive.Root, { children: [_jsx(TooltipPrimitive.Trigger, { asChild: true, children: children }), _jsx(TooltipPrimitive.Portal, { children: _jsxs(TooltipPrimitive.Content, { side: "bottom", sideOffset: 8, className: "z-[230] overflow-hidden rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-foreground shadow-md", children: [content, _jsx(TooltipPrimitive.Arrow, { className: "fill-popover" })] }) })] }) }));
|
|
97
105
|
}
|
|
98
|
-
// ─── Agent Settings Popover ──────────────────────────────────────────────────
|
|
99
|
-
function AgentSettingsPopover({ isDevMode, onToggle, }) {
|
|
100
|
-
const [open, setOpen] = useState(false);
|
|
101
|
-
const popoverRef = useRef(null);
|
|
102
|
-
const buttonRef = useRef(null);
|
|
103
|
-
// Close on outside click
|
|
104
|
-
useEffect(() => {
|
|
105
|
-
if (!open)
|
|
106
|
-
return;
|
|
107
|
-
function handleClick(e) {
|
|
108
|
-
const target = e.target;
|
|
109
|
-
// Ignore clicks inside the popover itself or its trigger button
|
|
110
|
-
if (popoverRef.current?.contains(target))
|
|
111
|
-
return;
|
|
112
|
-
if (buttonRef.current?.contains(target))
|
|
113
|
-
return;
|
|
114
|
-
// Ignore clicks inside portaled Radix Select content (rendered outside the popover DOM)
|
|
115
|
-
if (target.closest?.("[data-radix-popper-content-wrapper], [data-radix-select-viewport], [role='listbox']"))
|
|
116
|
-
return;
|
|
117
|
-
setOpen(false);
|
|
118
|
-
}
|
|
119
|
-
document.addEventListener("mousedown", handleClick);
|
|
120
|
-
return () => document.removeEventListener("mousedown", handleClick);
|
|
121
|
-
}, [open]);
|
|
122
|
-
// Close on Escape
|
|
123
|
-
useEffect(() => {
|
|
124
|
-
if (!open)
|
|
125
|
-
return;
|
|
126
|
-
function handleKey(e) {
|
|
127
|
-
if (e.key === "Escape")
|
|
128
|
-
setOpen(false);
|
|
129
|
-
}
|
|
130
|
-
document.addEventListener("keydown", handleKey);
|
|
131
|
-
return () => document.removeEventListener("keydown", handleKey);
|
|
132
|
-
}, [open]);
|
|
133
|
-
const environmentOptions = [
|
|
134
|
-
{
|
|
135
|
-
value: "production",
|
|
136
|
-
label: "Production",
|
|
137
|
-
description: "Restricted to app tools only.",
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
value: "development",
|
|
141
|
-
label: "Development",
|
|
142
|
-
description: "Full access to code editing, shell, and files.",
|
|
143
|
-
},
|
|
144
|
-
];
|
|
145
|
-
// Compute fixed position from the button so the popover escapes all
|
|
146
|
-
// stacking contexts (the CLI terminal otherwise paints over it).
|
|
147
|
-
const [pos, setPos] = useState(null);
|
|
148
|
-
useEffect(() => {
|
|
149
|
-
if (!open || !buttonRef.current)
|
|
150
|
-
return;
|
|
151
|
-
const rect = buttonRef.current.getBoundingClientRect();
|
|
152
|
-
setPos({
|
|
153
|
-
top: rect.bottom + 6,
|
|
154
|
-
right: window.innerWidth - rect.right,
|
|
155
|
-
});
|
|
156
|
-
}, [open]);
|
|
157
|
-
return (_jsxs("div", { className: "relative", children: [_jsx("button", { ref: buttonRef, onClick: () => setOpen(!open), className: cn("flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-accent/50", open && "bg-accent/50 text-foreground"), title: "Agent settings", children: _jsx(IconSettings, { size: 14 }) }), open &&
|
|
158
|
-
pos &&
|
|
159
|
-
ReactDOM.createPortal(_jsx("div", { ref: popoverRef, className: "fixed z-[9990] w-72 rounded-lg border border-border bg-popover shadow-md animate-in fade-in-0 zoom-in-95 duration-100", style: { top: pos.top, right: pos.right }, children: _jsx("div", { className: "space-y-3 p-3", children: _jsx(SettingsSelect, { label: "Environment", value: isDevMode ? "development" : "production", options: environmentOptions, onValueChange: (next) => {
|
|
160
|
-
const nextIsDev = next === "development";
|
|
161
|
-
if (nextIsDev !== isDevMode)
|
|
162
|
-
onToggle();
|
|
163
|
-
} }) }) }), document.body)] }));
|
|
164
|
-
}
|
|
165
106
|
function useClientOnly() {
|
|
166
107
|
const [mounted, setMounted] = useState(false);
|
|
167
108
|
useEffect(() => setMounted(true), []);
|
|
168
109
|
return mounted;
|
|
169
110
|
}
|
|
170
|
-
export function AgentPanel({ defaultMode = "chat", className, apiUrl, emptyStateText, suggestions, showHeader = true, onCollapse, }) {
|
|
111
|
+
export function AgentPanel({ defaultMode = "chat", className, apiUrl, emptyStateText, suggestions, showHeader = true, onCollapse, devAppUrl, storageKey, }) {
|
|
171
112
|
const mounted = useClientOnly();
|
|
113
|
+
const keyPrefix = storageKey ? `:${storageKey}` : "";
|
|
114
|
+
const execModeKey = `${EXEC_MODE_KEY}${keyPrefix}`;
|
|
115
|
+
const panelModeKey = `agent-native-panel-mode${keyPrefix}`;
|
|
172
116
|
const [execMode, setExecMode] = useState(() => {
|
|
173
117
|
try {
|
|
174
|
-
const saved = localStorage.getItem(
|
|
118
|
+
const saved = localStorage.getItem(execModeKey);
|
|
175
119
|
if (saved === "build" || saved === "plan")
|
|
176
120
|
return saved;
|
|
177
121
|
}
|
|
@@ -181,17 +125,20 @@ export function AgentPanel({ defaultMode = "chat", className, apiUrl, emptyState
|
|
|
181
125
|
const switchExecMode = useCallback((next) => {
|
|
182
126
|
setExecMode(next);
|
|
183
127
|
try {
|
|
184
|
-
localStorage.setItem(
|
|
128
|
+
localStorage.setItem(execModeKey, next);
|
|
185
129
|
}
|
|
186
130
|
catch { }
|
|
187
131
|
window.dispatchEvent(new CustomEvent("agent-panel:exec-mode-change", {
|
|
188
132
|
detail: { mode: next },
|
|
189
133
|
}));
|
|
190
|
-
}, []);
|
|
134
|
+
}, [execModeKey]);
|
|
191
135
|
const [mode, setMode] = useState(() => {
|
|
192
136
|
try {
|
|
193
|
-
const saved = localStorage.getItem(
|
|
194
|
-
if (saved === "chat" ||
|
|
137
|
+
const saved = localStorage.getItem(panelModeKey);
|
|
138
|
+
if (saved === "chat" ||
|
|
139
|
+
saved === "cli" ||
|
|
140
|
+
saved === "resources" ||
|
|
141
|
+
saved === "settings")
|
|
195
142
|
return saved;
|
|
196
143
|
}
|
|
197
144
|
catch { }
|
|
@@ -199,13 +146,31 @@ export function AgentPanel({ defaultMode = "chat", className, apiUrl, emptyState
|
|
|
199
146
|
});
|
|
200
147
|
useEffect(() => {
|
|
201
148
|
try {
|
|
202
|
-
localStorage.setItem(
|
|
149
|
+
localStorage.setItem(panelModeKey, mode);
|
|
203
150
|
}
|
|
204
151
|
catch { }
|
|
205
|
-
}, [mode]);
|
|
152
|
+
}, [mode, panelModeKey]);
|
|
206
153
|
const switchMode = useCallback((m) => {
|
|
207
154
|
startTransition(() => setMode(m));
|
|
208
155
|
}, []);
|
|
156
|
+
// Listen for mode changes from the frame parent (via AgentSidebar)
|
|
157
|
+
useEffect(() => {
|
|
158
|
+
function handler(e) {
|
|
159
|
+
const detail = e.detail;
|
|
160
|
+
if (detail?.mode)
|
|
161
|
+
switchMode(detail.mode);
|
|
162
|
+
}
|
|
163
|
+
window.addEventListener("agent-panel:set-mode", handler);
|
|
164
|
+
return () => window.removeEventListener("agent-panel:set-mode", handler);
|
|
165
|
+
}, [switchMode]);
|
|
166
|
+
// Open settings tab when requested (replaces the old popover open event)
|
|
167
|
+
useEffect(() => {
|
|
168
|
+
function handleOpenSettings() {
|
|
169
|
+
switchMode("settings");
|
|
170
|
+
}
|
|
171
|
+
window.addEventListener("agent-panel:open-settings", handleOpenSettings);
|
|
172
|
+
return () => window.removeEventListener("agent-panel:open-settings", handleOpenSettings);
|
|
173
|
+
}, [switchMode]);
|
|
209
174
|
// CLI terminal tabs (ephemeral — not persisted to SQL)
|
|
210
175
|
const [cliTabs, setCliTabs] = useState(["cli-1"]);
|
|
211
176
|
const [activeCliTab, setActiveCliTab] = useState("cli-1");
|
|
@@ -217,8 +182,12 @@ export function AgentPanel({ defaultMode = "chat", className, apiUrl, emptyState
|
|
|
217
182
|
}, []);
|
|
218
183
|
const closeCliTab = useCallback((id) => {
|
|
219
184
|
setCliTabs((prev) => {
|
|
220
|
-
if (prev.length <= 1)
|
|
221
|
-
|
|
185
|
+
if (prev.length <= 1) {
|
|
186
|
+
// Last tab — replace with a new one (acts as "clear")
|
|
187
|
+
const newId = `cli-${++cliCounter.current}`;
|
|
188
|
+
setActiveCliTab(newId);
|
|
189
|
+
return [newId];
|
|
190
|
+
}
|
|
222
191
|
const next = prev.filter((t) => t !== id);
|
|
223
192
|
if (id === activeCliTab) {
|
|
224
193
|
const idx = prev.indexOf(id);
|
|
@@ -237,9 +206,25 @@ export function AgentPanel({ defaultMode = "chat", className, apiUrl, emptyState
|
|
|
237
206
|
setActiveCliTab(id);
|
|
238
207
|
}, []);
|
|
239
208
|
const availableClis = useAvailableClis();
|
|
240
|
-
const [selectedCli, selectCli] = useCliSelection();
|
|
209
|
+
const [selectedCli, selectCli] = useCliSelection(keyPrefix);
|
|
241
210
|
const selectedLabel = availableClis.find((c) => c.command === selectedCli)?.label || selectedCli;
|
|
242
211
|
const { isDevMode, canToggle, setDevMode } = useDevMode(apiUrl);
|
|
212
|
+
// Notify frame when dev mode changes — use both a local CustomEvent (for
|
|
213
|
+
// when AgentPanel is rendered directly in the frame) AND postMessage (for
|
|
214
|
+
// when AgentPanel is inside the iframe and needs to cross the boundary).
|
|
215
|
+
const prevIsDevMode = useRef(isDevMode);
|
|
216
|
+
useEffect(() => {
|
|
217
|
+
if (prevIsDevMode.current !== isDevMode) {
|
|
218
|
+
prevIsDevMode.current = isDevMode;
|
|
219
|
+
window.dispatchEvent(new CustomEvent("agent-panel:dev-mode-change", {
|
|
220
|
+
detail: { isDevMode },
|
|
221
|
+
}));
|
|
222
|
+
// Cross iframe boundary to the frame parent
|
|
223
|
+
if (window.parent !== window) {
|
|
224
|
+
window.parent.postMessage({ type: "builder.devModeChange", data: { isDevMode } }, "*");
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}, [isDevMode]);
|
|
243
228
|
const isLocalhost = mounted &&
|
|
244
229
|
typeof window !== "undefined" &&
|
|
245
230
|
(window.location.hostname === "localhost" ||
|
|
@@ -248,16 +233,19 @@ export function AgentPanel({ defaultMode = "chat", className, apiUrl, emptyState
|
|
|
248
233
|
const showDevToggle = canToggle && isLocalhost;
|
|
249
234
|
const renderModeButtons = useCallback((activeMode) => (_jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [_jsxs("button", { onClick: () => switchMode("chat"), className: cn("flex items-center gap-1 rounded-md px-2 py-1 text-[12px] leading-none", activeMode === "chat"
|
|
250
235
|
? "bg-accent text-foreground"
|
|
251
|
-
: "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), title: "Chat mode", style: AGENT_PANEL_CONTROL_STYLE, children: [_jsx(IconMessage, { size: 14 }), "Chat"] }),
|
|
236
|
+
: "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), title: "Chat mode", style: AGENT_PANEL_CONTROL_STYLE, children: [_jsx(IconMessage, { size: 14 }), "Chat"] }), _jsxs("button", { onClick: () => switchMode("cli"), className: cn("flex items-center gap-1 rounded-md px-2 py-1 text-[12px] leading-none", activeMode === "cli"
|
|
237
|
+
? "bg-accent text-foreground"
|
|
238
|
+
: "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), title: "CLI terminal mode", style: AGENT_PANEL_CONTROL_STYLE, children: [_jsx(IconTerminal2, { size: 14 }), "CLI"] }), _jsxs("button", { onClick: () => switchMode("resources"), className: cn("flex items-center gap-1 rounded-md px-2 py-1 text-[12px] leading-none", activeMode === "resources"
|
|
252
239
|
? "bg-accent text-foreground"
|
|
253
|
-
: "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), title: "
|
|
240
|
+
: "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), title: "Workspace files, agents, skills, and tasks", style: AGENT_PANEL_CONTROL_STYLE, children: [_jsx(IconLayoutGrid, { size: 14 }), "Workspace"] }), _jsx("button", { onClick: () => switchMode("settings"), className: cn("flex items-center justify-center rounded-md px-1.5 py-1", activeMode === "settings"
|
|
254
241
|
? "bg-accent text-foreground"
|
|
255
|
-
: "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), title: "
|
|
256
|
-
const renderHeaderActions = useCallback(() => (_jsxs("div", { className: "flex shrink-0 items-center gap-1.5", children: [
|
|
242
|
+
: "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), title: "Setup and configuration", children: _jsx(IconSettings, { size: 14 }) })] })), [isDevMode]);
|
|
243
|
+
const renderHeaderActions = useCallback(() => (_jsxs("div", { className: "flex shrink-0 items-center gap-1.5", children: [_jsx(Suspense, { fallback: null, children: _jsx(SetupButton, {}) }), onCollapse && (_jsx(IconTooltip, { content: "Collapse sidebar", children: _jsx("button", { onClick: onCollapse, className: "flex h-6 w-6 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", children: _jsx(IconLayoutSidebarRightCollapse, { size: 14 }) }) }))] })), [onCollapse]);
|
|
257
244
|
const [tabMenuOpen, setTabMenuOpen] = useState(null);
|
|
258
245
|
const [cliPickerOpen, setCliPickerOpen] = useState(false);
|
|
246
|
+
const cliPickerBtnRef = useRef(null);
|
|
259
247
|
// Ref callback: scroll the active tab into view in the overflow container.
|
|
260
|
-
//
|
|
248
|
+
// Uses getBoundingClientRect for reliable positioning regardless of offsetParent.
|
|
261
249
|
const activeTabRefCb = useCallback((el) => {
|
|
262
250
|
if (!el)
|
|
263
251
|
return;
|
|
@@ -266,78 +254,120 @@ export function AgentPanel({ defaultMode = "chat", className, apiUrl, emptyState
|
|
|
266
254
|
return;
|
|
267
255
|
// Use rAF so layout is settled after React commit
|
|
268
256
|
requestAnimationFrame(() => {
|
|
269
|
-
const
|
|
270
|
-
const
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
if (tabLeft < scrollLeft) {
|
|
274
|
-
container.scrollLeft = tabLeft;
|
|
257
|
+
const containerRect = container.getBoundingClientRect();
|
|
258
|
+
const tabRect = el.getBoundingClientRect();
|
|
259
|
+
if (tabRect.left < containerRect.left) {
|
|
260
|
+
container.scrollLeft += tabRect.left - containerRect.left;
|
|
275
261
|
}
|
|
276
|
-
else if (
|
|
277
|
-
container.scrollLeft
|
|
262
|
+
else if (tabRect.right > containerRect.right) {
|
|
263
|
+
container.scrollLeft += tabRect.right - containerRect.right;
|
|
278
264
|
}
|
|
279
265
|
});
|
|
280
266
|
}, []);
|
|
281
|
-
const renderChatHeader = useCallback(({ tabs, activeTabId, setActiveTabId, addTab, closeTab, closeOtherTabs, closeAllTabs, showHistory, toggleHistory, }) => (_jsxs("div", { className: "flex flex-col shrink-0", children: [_jsxs("div", { className: AGENT_PANEL_HEADER_CLASS, style: AGENT_PANEL_HEADER_STYLE, children: [_jsx("div", { className: "flex min-w-0 flex-1 items-center gap-1 overflow-hidden", children: renderModeButtons(mode) }), _jsx("div", { className: "flex items-center gap-0.5", children: renderHeaderActions() })] }), (mode === "chat" || mode === "cli") &&
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
267
|
+
const renderChatHeader = useCallback(({ tabs, activeTabId, setActiveTabId, addTab, closeTab, closeOtherTabs, closeAllTabs, showHistory, toggleHistory, }) => (_jsxs("div", { className: "flex flex-col shrink-0", children: [_jsxs("div", { className: AGENT_PANEL_HEADER_CLASS, style: AGENT_PANEL_HEADER_STYLE, children: [_jsx("div", { className: "flex min-w-0 flex-1 items-center gap-1 overflow-hidden", children: renderModeButtons(mode) }), _jsx("div", { className: "flex items-center gap-0.5", children: renderHeaderActions() })] }), (mode === "chat" || mode === "cli") &&
|
|
268
|
+
(() => {
|
|
269
|
+
// Compute parent/child tab groups for the sub-tab bar
|
|
270
|
+
const activeTab = tabs.find((t) => t.id === activeTabId);
|
|
271
|
+
// The "focus parent" is the parent thread for the active context
|
|
272
|
+
const focusParentId = activeTab?.parentThreadId || activeTabId;
|
|
273
|
+
const childTabs = tabs.filter((t) => t.parentThreadId === focusParentId);
|
|
274
|
+
const hasSubTabs = childTabs.length > 0;
|
|
275
|
+
// Main row: only show top-level (non-child) tabs
|
|
276
|
+
const mainTabs = tabs.filter((t) => !t.parentThreadId);
|
|
277
|
+
return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center px-2 py-1 border-b border-border gap-0.5", children: [_jsx("div", { className: "flex items-center gap-0.5 min-w-0 overflow-x-auto scrollbar-none flex-1", children: mode === "chat"
|
|
278
|
+
? mainTabs.map((tab) => {
|
|
279
|
+
// Highlight the parent tab if a child is active
|
|
280
|
+
const isActive = tab.id === activeTabId ||
|
|
281
|
+
(tab.id === focusParentId &&
|
|
282
|
+
activeTab?.parentThreadId === tab.id);
|
|
283
|
+
return (_jsxs("div", { role: "button", tabIndex: 0, ref: isActive ? activeTabRefCb : undefined, onClick: () => setActiveTabId(tab.id), className: cn("agent-tab relative flex shrink-0 items-center gap-1 rounded-md px-2.5 py-1.5 text-[11px] font-medium cursor-pointer max-w-[150px]", isActive
|
|
284
|
+
? "bg-accent text-foreground"
|
|
285
|
+
: "text-muted-foreground hover:bg-accent hover:text-foreground"), children: [_jsx("span", { className: "truncate pr-1", children: tab.label }), tab.status === "running" && (_jsx("span", { className: "h-1.5 w-1.5 shrink-0 rounded-full bg-muted-foreground/50 animate-pulse" })), _jsx("button", { type: "button", onClick: (e) => {
|
|
286
|
+
e.stopPropagation();
|
|
287
|
+
closeTab(tab.id);
|
|
288
|
+
}, className: "agent-tab-close flex items-center justify-end text-muted-foreground hover:text-foreground", style: {
|
|
289
|
+
position: "absolute",
|
|
290
|
+
right: 0,
|
|
291
|
+
top: 0,
|
|
292
|
+
bottom: 0,
|
|
293
|
+
width: 28,
|
|
294
|
+
paddingRight: 6,
|
|
295
|
+
borderRadius: "0 6px 6px 0",
|
|
296
|
+
background: "linear-gradient(to right, transparent, hsl(var(--accent)) 40%)",
|
|
297
|
+
}, children: _jsx(IconX, { size: 10 }) })] }, tab.id));
|
|
298
|
+
})
|
|
299
|
+
: cliTabs.map((id, i) => (_jsxs("div", { role: "button", tabIndex: 0, ref: id === activeCliTab ? activeTabRefCb : undefined, onClick: () => setActiveCliTab(id), className: cn("agent-tab relative flex shrink-0 items-center gap-1 rounded-md px-2.5 py-1.5 text-[11px] font-medium cursor-pointer", id === activeCliTab
|
|
300
|
+
? "bg-accent text-foreground"
|
|
301
|
+
: "text-muted-foreground hover:bg-accent hover:text-foreground"), children: [_jsxs("span", { children: ["Terminal ", i + 1] }), _jsx("button", { type: "button", onClick: (e) => {
|
|
302
|
+
e.stopPropagation();
|
|
303
|
+
closeCliTab(id);
|
|
304
|
+
}, className: "agent-tab-close flex items-center justify-end text-muted-foreground hover:text-foreground", style: {
|
|
305
|
+
position: "absolute",
|
|
306
|
+
right: 0,
|
|
307
|
+
top: 0,
|
|
308
|
+
bottom: 0,
|
|
309
|
+
width: 28,
|
|
310
|
+
paddingRight: 6,
|
|
311
|
+
borderRadius: "0 6px 6px 0",
|
|
312
|
+
background: "linear-gradient(to right, transparent, hsl(var(--accent)) 40%)",
|
|
313
|
+
}, children: _jsx(IconX, { size: 10 }) })] }, id))) }), _jsxs("div", { className: "flex items-center gap-0.5 shrink-0 ml-auto", children: [mode === "chat" && (_jsxs(_Fragment, { children: [_jsx(IconTooltip, { content: "New chat", children: _jsx("button", { onClick: addTab, className: "flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", children: _jsx(IconPlus, { size: 14 }) }) }), toggleHistory && (_jsx(IconTooltip, { content: "Chat history", children: _jsx("button", { onClick: toggleHistory, className: cn("flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", showHistory && "bg-accent text-foreground"), children: _jsx(IconHistory, { size: 14 }) }) })), _jsxs("div", { className: "relative", children: [_jsx(IconTooltip, { content: "Tab options", children: _jsx("button", { onClick: () => setTabMenuOpen(tabMenuOpen === "__chat_global"
|
|
314
|
+
? null
|
|
315
|
+
: "__chat_global"), className: cn("flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", tabMenuOpen === "__chat_global" &&
|
|
316
|
+
"bg-accent text-foreground"), children: _jsx(IconDotsVertical, { size: 14 }) }) }), tabMenuOpen === "__chat_global" && (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-40", onClick: () => setTabMenuOpen(null) }), _jsxs("div", { className: "absolute right-0 top-full mt-1 z-50 w-44 rounded-md border border-border bg-popover py-1 shadow-lg", children: [_jsxs("button", { className: "flex w-full items-center justify-between px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: () => {
|
|
317
|
+
closeTab(activeTabId);
|
|
318
|
+
setTabMenuOpen(null);
|
|
319
|
+
}, children: ["Close Tab", _jsxs("kbd", { className: "text-[10px] text-muted-foreground", children: ["\u2318", "W"] })] }), _jsx("button", { className: "flex w-full items-center px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: () => {
|
|
320
|
+
closeOtherTabs(activeTabId);
|
|
321
|
+
setTabMenuOpen(null);
|
|
322
|
+
}, children: "Close Other Tabs" }), _jsx("button", { className: "flex w-full items-center px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: () => {
|
|
323
|
+
closeAllTabs();
|
|
324
|
+
setTabMenuOpen(null);
|
|
325
|
+
}, children: "Close All Tabs" })] })] }))] })] })), mode === "cli" && (_jsxs(_Fragment, { children: [_jsx(IconTooltip, { content: "New terminal", children: _jsx("button", { onClick: addCliTab, className: "flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", children: _jsx(IconPlus, { size: 14 }) }) }), availableClis.length > 0 && (_jsxs("div", { className: "relative", children: [_jsx(IconTooltip, { content: `CLI: ${selectedLabel}`, children: _jsx("button", { ref: cliPickerBtnRef, onClick: () => setCliPickerOpen(!cliPickerOpen), className: cn("flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", cliPickerOpen && "bg-accent text-foreground"), children: _jsx(IconSettings, { size: 14 }) }) }), cliPickerOpen &&
|
|
326
|
+
ReactDOM.createPortal(_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-[9980]", onClick: () => setCliPickerOpen(false) }), _jsx("div", { className: "fixed z-[9990] w-48 rounded-md border border-border bg-popover py-1 shadow-lg", style: (() => {
|
|
327
|
+
const r = cliPickerBtnRef.current?.getBoundingClientRect();
|
|
328
|
+
if (!r)
|
|
329
|
+
return { top: 0, right: 0 };
|
|
330
|
+
return {
|
|
331
|
+
top: r.bottom + 4,
|
|
332
|
+
right: window.innerWidth - r.right,
|
|
333
|
+
};
|
|
334
|
+
})(), children: availableClis.map((cli) => (_jsxs("button", { className: cn("flex w-full items-center gap-2 px-3 py-1.5 text-xs hover:bg-accent", cli.command === selectedCli
|
|
335
|
+
? "text-foreground font-medium"
|
|
336
|
+
: "text-muted-foreground"), onClick: () => {
|
|
337
|
+
selectCli(cli.command);
|
|
338
|
+
setCliPickerOpen(false);
|
|
339
|
+
}, children: [cli.command === selectedCli && (_jsx(IconCheck, { size: 12, className: "shrink-0" })), _jsx("span", { className: cli.command !== selectedCli
|
|
340
|
+
? "ml-5"
|
|
341
|
+
: "", children: cli.label })] }, cli.command))) })] }), document.body)] })), _jsxs("div", { className: "relative", children: [_jsx(IconTooltip, { content: "Tab options", children: _jsx("button", { onClick: () => setTabMenuOpen(tabMenuOpen === "__cli_global"
|
|
342
|
+
? null
|
|
343
|
+
: "__cli_global"), className: cn("flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", tabMenuOpen === "__cli_global" &&
|
|
344
|
+
"bg-accent text-foreground"), children: _jsx(IconDotsVertical, { size: 14 }) }) }), tabMenuOpen === "__cli_global" && (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-40", onClick: () => setTabMenuOpen(null) }), _jsxs("div", { className: "absolute right-0 top-full mt-1 z-50 w-44 rounded-md border border-border bg-popover py-1 shadow-lg", children: [_jsxs("button", { className: "flex w-full items-center justify-between px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: () => {
|
|
345
|
+
closeCliTab(activeCliTab);
|
|
346
|
+
setTabMenuOpen(null);
|
|
347
|
+
}, children: ["Close Tab", _jsxs("kbd", { className: "text-[10px] text-muted-foreground", children: ["\u2318", "W"] })] }), _jsx("button", { className: "flex w-full items-center px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: () => {
|
|
348
|
+
closeOtherCliTabs(activeCliTab);
|
|
349
|
+
setTabMenuOpen(null);
|
|
350
|
+
}, children: "Close Other Tabs" }), _jsx("button", { className: "flex w-full items-center px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: () => {
|
|
351
|
+
closeAllCliTabs();
|
|
352
|
+
setTabMenuOpen(null);
|
|
353
|
+
}, children: "Close All Tabs" })] })] }))] })] }))] })] }), mode === "chat" && hasSubTabs && (_jsx("div", { className: "flex items-center px-2 py-0.5 border-b border-border gap-0.5 bg-muted/30", children: _jsxs("div", { className: "flex items-center gap-0.5 min-w-0 overflow-x-auto scrollbar-none flex-1", children: [_jsx("div", { role: "button", tabIndex: 0, onClick: () => setActiveTabId(focusParentId), className: cn("flex shrink-0 items-center gap-1 rounded-md px-2 py-1 text-[10px] font-medium cursor-pointer", activeTabId === focusParentId
|
|
354
|
+
? "bg-accent text-foreground"
|
|
355
|
+
: "text-muted-foreground hover:bg-accent hover:text-foreground"), children: "Main" }), childTabs.map((tab) => (_jsxs("div", { role: "button", tabIndex: 0, ref: tab.id === activeTabId ? activeTabRefCb : undefined, onClick: () => setActiveTabId(tab.id), className: cn("agent-tab relative flex shrink-0 items-center gap-1 rounded-md px-2 py-1 text-[10px] font-medium cursor-pointer max-w-[140px]", tab.id === activeTabId
|
|
356
|
+
? "bg-accent text-foreground"
|
|
357
|
+
: "text-muted-foreground hover:bg-accent hover:text-foreground"), children: [_jsx("span", { className: "truncate pr-1", children: tab.subAgentName || tab.label }), tab.status === "running" && (_jsx("span", { className: "h-1 w-1 shrink-0 rounded-full bg-muted-foreground/50 animate-pulse" })), _jsx("button", { type: "button", onClick: (e) => {
|
|
358
|
+
e.stopPropagation();
|
|
359
|
+
closeTab(tab.id);
|
|
360
|
+
}, className: "agent-tab-close flex items-center justify-end text-muted-foreground hover:text-foreground", style: {
|
|
361
|
+
position: "absolute",
|
|
362
|
+
right: 0,
|
|
363
|
+
top: 0,
|
|
364
|
+
bottom: 0,
|
|
365
|
+
width: 24,
|
|
366
|
+
paddingRight: 4,
|
|
367
|
+
borderRadius: "0 6px 6px 0",
|
|
368
|
+
background: "linear-gradient(to right, transparent, hsl(var(--accent)) 40%)",
|
|
369
|
+
}, children: _jsx(IconX, { size: 8 }) })] }, tab.id)))] }) }))] }));
|
|
370
|
+
})()] })), [
|
|
341
371
|
mode,
|
|
342
372
|
renderHeaderActions,
|
|
343
373
|
renderModeButtons,
|
|
@@ -356,14 +386,11 @@ export function AgentPanel({ defaultMode = "chat", className, apiUrl, emptyState
|
|
|
356
386
|
]);
|
|
357
387
|
return (_jsxs("div", { className: cn("agent-panel-root flex flex-1 flex-col min-h-0 h-full text-[13px] leading-[1.2] antialiased", className), style: AGENT_PANEL_ROOT_STYLE, children: [_jsx("style", { dangerouslySetInnerHTML: {
|
|
358
388
|
__html: ".agent-tab-close{opacity:0}.agent-tab:hover .agent-tab-close{opacity:1}",
|
|
359
|
-
} }), _jsx("div", { className: cn("flex flex-col min-h-0", mode === "chat" ? "flex-1" : "shrink-0"), children: mounted && (_jsx(MultiTabAssistantChat, { apiUrl: apiUrl, showHeader: false, renderHeader: showHeader ? renderChatHeader : undefined, renderOverlay: undefined, contentHidden: mode !== "chat", emptyStateText: emptyStateText, suggestions: suggestions, onSwitchToCli:
|
|
360
|
-
|
|
361
|
-
: "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), title: "Build mode \u2014 agent executes immediately", children: "Build" }), _jsx("button", { onClick: () => switchExecMode("plan"), className: cn("px-2 py-1 text-[11px] leading-none", execMode === "plan"
|
|
362
|
-
? "bg-amber-500/20 text-amber-700 dark:text-amber-400"
|
|
363
|
-
: "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), title: "Plan mode \u2014 agent plans before executing", children: "Plan" })] })] }) })) }), isDevMode &&
|
|
364
|
-
cliTabs.map((id) => (_jsx("div", { className: cn("min-h-0 relative", mode === "cli" ? "flex-1" : "hidden"), style: {
|
|
389
|
+
} }), mounted && mode === "chat" && (_jsx(Suspense, { fallback: null, children: _jsx(OnboardingPanel, {}) })), _jsx("div", { className: cn("flex flex-col min-h-0", mode === "chat" ? "flex-1" : "shrink-0"), children: mounted && (_jsx(MultiTabAssistantChat, { apiUrl: apiUrl, showHeader: false, renderHeader: showHeader ? renderChatHeader : undefined, renderOverlay: undefined, contentHidden: mode !== "chat", emptyStateText: emptyStateText, suggestions: suggestions, onSwitchToCli: () => switchMode("cli"), execMode: execMode, onExecModeChange: switchExecMode, storageKey: storageKey })) }), isDevMode
|
|
390
|
+
? cliTabs.map((id) => (_jsx("div", { className: cn("min-h-0 relative", mode === "cli" ? "flex-1" : "hidden"), style: {
|
|
365
391
|
display: mode === "cli" && id === activeCliTab ? undefined : "none",
|
|
366
|
-
}, children: _jsx(Suspense, { fallback: _jsx("div", { className: "flex items-center justify-center h-full text-muted-foreground text-sm", children: "Loading terminal..." }), children: _jsx(AgentTerminal, { command: selectedCli,
|
|
392
|
+
}, children: _jsx(Suspense, { fallback: _jsx("div", { className: "flex items-center justify-center h-full text-muted-foreground text-sm", children: "Loading terminal..." }), children: _jsx(AgentTerminal, { command: selectedCli, hideInFrame: false, className: "h-full", style: { background: "transparent" } }) }) }, id)))
|
|
393
|
+
: mode === "cli" && (_jsxs("div", { className: "flex flex-1 flex-col items-center justify-center min-h-0 px-6 gap-3", children: [_jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-full bg-muted", children: _jsx(IconTerminal2, { className: "h-5 w-5 text-muted-foreground" }) }), _jsxs("div", { className: "text-center max-w-[260px]", children: [_jsx("p", { className: "text-sm font-medium text-foreground mb-1", children: "CLI requires dev mode" }), _jsxs("p", { className: "text-xs text-muted-foreground leading-relaxed", children: ["Run this app locally with", " ", _jsx("code", { className: "bg-muted px-1 py-0.5 rounded text-[10px]", children: "pnpm dev" }), " ", "or use", " ", _jsx("span", { className: "font-medium text-foreground", children: "Builder.io" }), " ", "to access the CLI terminal."] })] })] })), mode === "resources" && (_jsx("div", { className: "flex-1 min-h-0", children: _jsx(Suspense, { fallback: _jsx("div", { className: "flex h-full flex-col min-h-0", children: _jsx("div", { className: "flex shrink-0 items-center justify-between border-b border-border px-2 py-1.5", children: _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("div", { className: "h-5 w-16 rounded bg-muted animate-pulse" }), _jsx("div", { className: "h-5 w-14 rounded bg-muted animate-pulse" })] }) }) }), children: _jsx(ResourcesPanel, {}) }) })), mode === "settings" && (_jsx("div", { className: "flex flex-col flex-1 min-h-0", children: _jsx(Suspense, { fallback: _jsxs("div", { className: "p-3 space-y-2", children: [_jsx("div", { className: "h-10 w-full rounded-lg bg-muted animate-pulse" }), _jsx("div", { className: "h-10 w-full rounded-lg bg-muted animate-pulse" }), _jsx("div", { className: "h-10 w-full rounded-lg bg-muted animate-pulse" })] }), children: _jsx(SettingsPanel, { isDevMode: isDevMode, onToggleDevMode: () => setDevMode(!isDevMode), showDevToggle: showDevToggle, devAppUrl: devAppUrl }) }) }))] }));
|
|
367
394
|
}
|
|
368
395
|
// ─── Resize handle ──────────────────────────────────────────────────────────
|
|
369
396
|
const SIDEBAR_STORAGE_KEY = "agent-native-sidebar-width";
|
|
@@ -441,6 +468,12 @@ function ResizeHandle({ position, onDrag, }) {
|
|
|
441
468
|
*/
|
|
442
469
|
export function AgentSidebar({ children, emptyStateText = "How can I help you?", suggestions, sidebarWidth = 380, position = "right", defaultOpen = false, }) {
|
|
443
470
|
const [open, setOpen] = useState(() => {
|
|
471
|
+
// On mobile viewports the sidebar would cover most of the screen, so
|
|
472
|
+
// always start closed regardless of any persisted desktop preference.
|
|
473
|
+
if (typeof window !== "undefined" &&
|
|
474
|
+
window.matchMedia("(max-width: 767px)").matches) {
|
|
475
|
+
return false;
|
|
476
|
+
}
|
|
444
477
|
try {
|
|
445
478
|
const saved = localStorage.getItem(SIDEBAR_OPEN_KEY);
|
|
446
479
|
if (saved !== null)
|
|
@@ -449,7 +482,17 @@ export function AgentSidebar({ children, emptyStateText = "How can I help you?",
|
|
|
449
482
|
catch { }
|
|
450
483
|
return defaultOpen;
|
|
451
484
|
});
|
|
485
|
+
const [presentationMode, setPresentationMode] = useState(false);
|
|
452
486
|
const [width, setWidth] = useState(sidebarWidth);
|
|
487
|
+
// Track mobile viewport so we can switch to overlay mode.
|
|
488
|
+
const [isMobile, setIsMobile] = useState(() => typeof window !== "undefined" &&
|
|
489
|
+
window.matchMedia("(max-width: 767px)").matches);
|
|
490
|
+
useEffect(() => {
|
|
491
|
+
const mq = window.matchMedia("(max-width: 767px)");
|
|
492
|
+
const handler = (e) => setIsMobile(e.matches);
|
|
493
|
+
mq.addEventListener("change", handler);
|
|
494
|
+
return () => mq.removeEventListener("change", handler);
|
|
495
|
+
}, []);
|
|
453
496
|
useEffect(() => {
|
|
454
497
|
try {
|
|
455
498
|
const saved = localStorage.getItem(SIDEBAR_STORAGE_KEY);
|
|
@@ -471,12 +514,27 @@ export function AgentSidebar({ children, emptyStateText = "How can I help you?",
|
|
|
471
514
|
return value;
|
|
472
515
|
});
|
|
473
516
|
}, []);
|
|
517
|
+
// Track whether the frame is controlling the sidebar (code mode = frame active).
|
|
518
|
+
// Default to true when inside an iframe — assume the frame sidebar is active
|
|
519
|
+
// until told otherwise. This prevents both sidebars flashing after hot reloads.
|
|
520
|
+
const [frameCodeMode, setFrameCodeMode] = useState(() => typeof window !== "undefined" && window.parent !== window);
|
|
474
521
|
useEffect(() => {
|
|
475
522
|
const toggleHandler = () => {
|
|
476
|
-
|
|
523
|
+
if (frameCodeMode && window.parent !== window) {
|
|
524
|
+
// Forward toggle to frame parent — the frame sidebar handles it
|
|
525
|
+
window.parent.postMessage({ type: "builder.toggleSidebar" }, "*");
|
|
526
|
+
}
|
|
527
|
+
else {
|
|
528
|
+
setOpenPersisted((prev) => !prev);
|
|
529
|
+
}
|
|
477
530
|
};
|
|
478
531
|
const openHandler = () => {
|
|
479
|
-
|
|
532
|
+
if (frameCodeMode && window.parent !== window) {
|
|
533
|
+
window.parent.postMessage({ type: "builder.toggleSidebar", data: { open: true } }, "*");
|
|
534
|
+
}
|
|
535
|
+
else {
|
|
536
|
+
setOpenPersisted(true);
|
|
537
|
+
}
|
|
480
538
|
};
|
|
481
539
|
window.addEventListener("agent-panel:toggle", toggleHandler);
|
|
482
540
|
window.addEventListener("agent-panel:open", openHandler);
|
|
@@ -484,6 +542,45 @@ export function AgentSidebar({ children, emptyStateText = "How can I help you?",
|
|
|
484
542
|
window.removeEventListener("agent-panel:toggle", toggleHandler);
|
|
485
543
|
window.removeEventListener("agent-panel:open", openHandler);
|
|
486
544
|
};
|
|
545
|
+
}, [setOpenPersisted, frameCodeMode]);
|
|
546
|
+
// Listen for sidebar mode commands from the frame parent.
|
|
547
|
+
// When frame is in "code" mode, hide the app sidebar.
|
|
548
|
+
// When frame is in "app" mode, show the app sidebar, sync width and panel mode.
|
|
549
|
+
useEffect(() => {
|
|
550
|
+
if (window.parent === window)
|
|
551
|
+
return; // Not in an iframe
|
|
552
|
+
function handleMessage(event) {
|
|
553
|
+
if (event.data?.type !== "builder.sidebarMode")
|
|
554
|
+
return;
|
|
555
|
+
const { mode, appMode, width: frameWidth, open: frameOpen, } = event.data.data || {};
|
|
556
|
+
if (mode === "code") {
|
|
557
|
+
// Frame is showing its own sidebar — hide the app's
|
|
558
|
+
setFrameCodeMode(true);
|
|
559
|
+
setOpenPersisted(false);
|
|
560
|
+
}
|
|
561
|
+
else if (mode === "app") {
|
|
562
|
+
// Frame deferred to the app — show and sync width + mode
|
|
563
|
+
setFrameCodeMode(false);
|
|
564
|
+
if (frameOpen !== false) {
|
|
565
|
+
setOpenPersisted(true);
|
|
566
|
+
}
|
|
567
|
+
if (frameWidth &&
|
|
568
|
+
frameWidth >= SIDEBAR_MIN &&
|
|
569
|
+
frameWidth <= SIDEBAR_MAX) {
|
|
570
|
+
setWidth(frameWidth);
|
|
571
|
+
}
|
|
572
|
+
// Sync the panel mode from frame tab selection
|
|
573
|
+
if (appMode === "cli" ||
|
|
574
|
+
appMode === "resources" ||
|
|
575
|
+
appMode === "chat") {
|
|
576
|
+
window.dispatchEvent(new CustomEvent("agent-panel:set-mode", {
|
|
577
|
+
detail: { mode: appMode },
|
|
578
|
+
}));
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
window.addEventListener("message", handleMessage);
|
|
583
|
+
return () => window.removeEventListener("message", handleMessage);
|
|
487
584
|
}, [setOpenPersisted]);
|
|
488
585
|
// Cmd+I / Ctrl+I to focus the agent chat
|
|
489
586
|
useEffect(() => {
|
|
@@ -496,6 +593,16 @@ export function AgentSidebar({ children, emptyStateText = "How can I help you?",
|
|
|
496
593
|
document.addEventListener("keydown", handleKeyDown);
|
|
497
594
|
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
498
595
|
}, []);
|
|
596
|
+
// Hide sidebar during presentation mode
|
|
597
|
+
useEffect(() => {
|
|
598
|
+
const handler = (event) => {
|
|
599
|
+
if (event.data?.type !== "builder.presentationMode")
|
|
600
|
+
return;
|
|
601
|
+
setPresentationMode(event.data.data?.active === true);
|
|
602
|
+
};
|
|
603
|
+
window.addEventListener("message", handler);
|
|
604
|
+
return () => window.removeEventListener("message", handler);
|
|
605
|
+
}, []);
|
|
499
606
|
const handleDrag = useCallback((delta) => {
|
|
500
607
|
setWidth((prev) => {
|
|
501
608
|
const next = Math.min(SIDEBAR_MAX, Math.max(SIDEBAR_MIN, prev + delta));
|
|
@@ -507,8 +614,35 @@ export function AgentSidebar({ children, emptyStateText = "How can I help you?",
|
|
|
507
614
|
});
|
|
508
615
|
}, []);
|
|
509
616
|
const isLeft = position === "left";
|
|
510
|
-
|
|
511
|
-
|
|
617
|
+
// On mobile the sidebar floats as a fixed overlay so the content below isn't
|
|
618
|
+
// squashed. On desktop it participates in the flex layout as before.
|
|
619
|
+
const mobileSidebarStyle = isMobile
|
|
620
|
+
? {
|
|
621
|
+
position: "fixed",
|
|
622
|
+
top: 0,
|
|
623
|
+
[isLeft ? "left" : "right"]: 0,
|
|
624
|
+
height: "100%",
|
|
625
|
+
maxWidth: "85vw",
|
|
626
|
+
zIndex: 50,
|
|
627
|
+
background: "hsl(var(--background))",
|
|
628
|
+
borderLeft: isLeft ? "none" : "1px solid hsl(var(--border))",
|
|
629
|
+
borderRight: isLeft ? "1px solid hsl(var(--border))" : "none",
|
|
630
|
+
}
|
|
631
|
+
: {};
|
|
632
|
+
// Always render the sidebar panel (even when closed) so MultiTabAssistantChat
|
|
633
|
+
// stays mounted and can receive messages (e.g. from voice dictation) while
|
|
634
|
+
// the sidebar is visually hidden. When the user opens the sidebar they'll see
|
|
635
|
+
// any in-progress or completed conversations.
|
|
636
|
+
const sidebar = (_jsxs(_Fragment, { children: [!isMobile &&
|
|
637
|
+
(isLeft ? null : open ? (_jsx(ResizeHandle, { position: position, onDrag: handleDrag })) : null), _jsx("div", { className: "agent-sidebar-panel flex shrink-0 flex-col overflow-hidden text-[13px] leading-[1.2] antialiased", style: {
|
|
638
|
+
...AGENT_PANEL_ROOT_STYLE,
|
|
639
|
+
...mobileSidebarStyle,
|
|
640
|
+
width,
|
|
641
|
+
maxHeight: "100vh",
|
|
642
|
+
display: open ? "flex" : "none",
|
|
643
|
+
}, children: _jsx(AgentPanel, { emptyStateText: emptyStateText, suggestions: suggestions, onCollapse: () => setOpenPersisted(false) }) }), !isMobile &&
|
|
644
|
+
(isLeft ? (open ? (_jsx(ResizeHandle, { position: position, onDrag: handleDrag })) : null) : null)] }));
|
|
645
|
+
return (_jsxs("div", { className: "flex min-w-0 flex-1 h-screen overflow-hidden", children: [isMobile && open && !presentationMode && (_jsx("div", { className: "fixed inset-0 z-40 bg-black/40", onClick: () => setOpenPersisted(false) })), isLeft && !presentationMode ? sidebar : null, _jsx("div", { className: "flex flex-1 flex-col overflow-auto min-w-0", children: children }), !isLeft && !presentationMode ? sidebar : null] }));
|
|
512
646
|
}
|
|
513
647
|
/**
|
|
514
648
|
* Focus the agent chat composer input.
|
|
@@ -536,6 +670,6 @@ export function focusAgentChat() {
|
|
|
536
670
|
* Dispatches a custom event that AgentSidebar listens for.
|
|
537
671
|
*/
|
|
538
672
|
export function AgentToggleButton({ className }) {
|
|
539
|
-
return (_jsx("button", { onClick: () => window.dispatchEvent(new Event("agent-panel:toggle")), className: cn("flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", className), title: "Toggle agent", children: _jsx(IconMessage, { size: 16 }) }));
|
|
673
|
+
return (_jsx("button", { onClick: () => window.dispatchEvent(new Event("agent-panel:toggle")), className: cn("ml-1.5 flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", className), title: "Toggle agent", children: _jsx(IconMessage, { size: 16 }) }));
|
|
540
674
|
}
|
|
541
675
|
//# sourceMappingURL=AgentPanel.js.map
|