@agent-native/core 0.7.12 → 0.7.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/a2a/client.d.ts +44 -1
- package/dist/a2a/client.d.ts.map +1 -1
- package/dist/a2a/client.js +88 -11
- package/dist/a2a/client.js.map +1 -1
- package/dist/a2a/handlers.d.ts +10 -0
- package/dist/a2a/handlers.d.ts.map +1 -1
- package/dist/a2a/handlers.js +287 -62
- package/dist/a2a/handlers.js.map +1 -1
- package/dist/a2a/server.d.ts.map +1 -1
- package/dist/a2a/server.js +95 -17
- package/dist/a2a/server.js.map +1 -1
- package/dist/a2a/task-store.d.ts +11 -1
- package/dist/a2a/task-store.d.ts.map +1 -1
- package/dist/a2a/task-store.js +38 -2
- package/dist/a2a/task-store.js.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.js +26 -8
- package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
- package/dist/agent/engine/builder-engine.d.ts +19 -0
- package/dist/agent/engine/builder-engine.d.ts.map +1 -0
- package/dist/agent/engine/builder-engine.js +412 -0
- package/dist/agent/engine/builder-engine.js.map +1 -0
- package/dist/agent/engine/builtin.d.ts.map +1 -1
- package/dist/agent/engine/builtin.js +26 -10
- package/dist/agent/engine/builtin.js.map +1 -1
- package/dist/agent/engine/index.d.ts +1 -1
- package/dist/agent/engine/index.d.ts.map +1 -1
- package/dist/agent/engine/index.js +1 -1
- package/dist/agent/engine/index.js.map +1 -1
- package/dist/agent/engine/registry.d.ts +20 -1
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js +49 -1
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/agent/engine/types.d.ts +30 -0
- package/dist/agent/engine/types.d.ts.map +1 -1
- package/dist/agent/engine/types.js +19 -1
- package/dist/agent/engine/types.js.map +1 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +65 -7
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +11 -1
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/thread-data-builder.d.ts +4 -0
- package/dist/agent/thread-data-builder.d.ts.map +1 -1
- package/dist/agent/thread-data-builder.js +1 -0
- package/dist/agent/thread-data-builder.js.map +1 -1
- package/dist/agent/types.d.ts +8 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/chat-threads/store.d.ts +3 -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/checkpoints/service.d.ts +1 -0
- package/dist/checkpoints/service.d.ts.map +1 -1
- package/dist/checkpoints/service.js +26 -2
- package/dist/checkpoints/service.js.map +1 -1
- package/dist/cli/create.d.ts +30 -0
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +25 -13
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/templates-meta.d.ts.map +1 -1
- package/dist/cli/templates-meta.js +11 -0
- package/dist/cli/templates-meta.js.map +1 -1
- package/dist/client/AgentPanel.d.ts +3 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +22 -11
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AgentTaskCard.d.ts.map +1 -1
- package/dist/client/AgentTaskCard.js +2 -0
- package/dist/client/AgentTaskCard.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +2 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +159 -84
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/ConnectBuilderCard.d.ts +1 -7
- package/dist/client/ConnectBuilderCard.d.ts.map +1 -1
- package/dist/client/ConnectBuilderCard.js +30 -132
- package/dist/client/ConnectBuilderCard.js.map +1 -1
- package/dist/client/ErrorBoundary.d.ts +1 -3
- package/dist/client/ErrorBoundary.d.ts.map +1 -1
- package/dist/client/ErrorBoundary.js +37 -9
- package/dist/client/ErrorBoundary.js.map +1 -1
- package/dist/client/FeedbackButton.d.ts.map +1 -1
- package/dist/client/FeedbackButton.js +4 -3
- package/dist/client/FeedbackButton.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +169 -52
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/agent-chat.d.ts +11 -0
- package/dist/client/agent-chat.d.ts.map +1 -1
- package/dist/client/agent-chat.js +1 -1
- package/dist/client/agent-chat.js.map +1 -1
- package/dist/client/analytics.d.ts +5 -8
- package/dist/client/analytics.d.ts.map +1 -1
- package/dist/client/analytics.js +53 -11
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/builder-mark.d.ts +9 -0
- package/dist/client/builder-mark.d.ts.map +1 -0
- package/dist/client/builder-mark.js +10 -0
- package/dist/client/builder-mark.js.map +1 -0
- package/dist/client/components/AgentPresenceChip.d.ts +12 -0
- package/dist/client/components/AgentPresenceChip.d.ts.map +1 -0
- package/dist/client/components/AgentPresenceChip.js +42 -0
- package/dist/client/components/AgentPresenceChip.js.map +1 -0
- package/dist/client/components/PresenceBar.d.ts +17 -0
- package/dist/client/components/PresenceBar.d.ts.map +1 -0
- package/dist/client/components/PresenceBar.js +118 -0
- package/dist/client/components/PresenceBar.js.map +1 -0
- package/dist/client/components/ui/popover.d.ts +8 -0
- package/dist/client/components/ui/popover.d.ts.map +1 -0
- package/dist/client/components/ui/popover.js +11 -0
- package/dist/client/components/ui/popover.js.map +1 -0
- package/dist/client/composer/ComposerPlusMenu.d.ts +7 -0
- package/dist/client/composer/ComposerPlusMenu.d.ts.map +1 -0
- package/dist/client/composer/ComposerPlusMenu.js +183 -0
- package/dist/client/composer/ComposerPlusMenu.js.map +1 -0
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +244 -19
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/composer/types.d.ts +1 -0
- package/dist/client/composer/types.d.ts.map +1 -1
- package/dist/client/composer/useVoiceDictation.d.ts +2 -0
- package/dist/client/composer/useVoiceDictation.d.ts.map +1 -1
- package/dist/client/composer/useVoiceDictation.js +89 -12
- package/dist/client/composer/useVoiceDictation.js.map +1 -1
- package/dist/client/error-format.d.ts +2 -0
- package/dist/client/error-format.d.ts.map +1 -0
- package/dist/client/error-format.js +31 -0
- package/dist/client/error-format.js.map +1 -0
- package/dist/client/index.d.ts +6 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +8 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/observability/ObservabilityDashboard.d.ts +5 -0
- package/dist/client/observability/ObservabilityDashboard.d.ts.map +1 -0
- package/dist/client/observability/ObservabilityDashboard.js +169 -0
- package/dist/client/observability/ObservabilityDashboard.js.map +1 -0
- package/dist/client/observability/ThumbsFeedback.d.ts +8 -0
- package/dist/client/observability/ThumbsFeedback.d.ts.map +1 -0
- package/dist/client/observability/ThumbsFeedback.js +64 -0
- package/dist/client/observability/ThumbsFeedback.js.map +1 -0
- package/dist/client/observability/index.d.ts +4 -0
- package/dist/client/observability/index.d.ts.map +1 -0
- package/dist/client/observability/index.js +4 -0
- package/dist/client/observability/index.js.map +1 -0
- package/dist/client/observability/useObservability.d.ts +128 -0
- package/dist/client/observability/useObservability.d.ts.map +1 -0
- package/dist/client/observability/useObservability.js +109 -0
- package/dist/client/observability/useObservability.js.map +1 -0
- package/dist/client/onboarding/OnboardingPanel.d.ts.map +1 -1
- package/dist/client/onboarding/OnboardingPanel.js +34 -92
- package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
- package/dist/client/org/RequireActiveOrg.d.ts +33 -0
- package/dist/client/org/RequireActiveOrg.d.ts.map +1 -0
- package/dist/client/org/RequireActiveOrg.js +68 -0
- package/dist/client/org/RequireActiveOrg.js.map +1 -0
- package/dist/client/org/TeamPage.d.ts.map +1 -1
- package/dist/client/org/TeamPage.js +125 -4
- package/dist/client/org/TeamPage.js.map +1 -1
- package/dist/client/org/hooks.d.ts +30 -0
- package/dist/client/org/hooks.d.ts.map +1 -1
- package/dist/client/org/hooks.js +115 -15
- package/dist/client/org/hooks.js.map +1 -1
- package/dist/client/org/index.d.ts +3 -2
- package/dist/client/org/index.d.ts.map +1 -1
- package/dist/client/org/index.js +2 -1
- package/dist/client/org/index.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +8 -4
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/settings/AutomationsSection.d.ts.map +1 -1
- package/dist/client/settings/AutomationsSection.js +2 -1
- package/dist/client/settings/AutomationsSection.js.map +1 -1
- package/dist/client/settings/BrowserSection.js +1 -1
- package/dist/client/settings/BrowserSection.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +133 -20
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.js +10 -4
- package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
- package/dist/client/settings/useBuilderStatus.d.ts +26 -0
- package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
- package/dist/client/settings/useBuilderStatus.js +128 -4
- package/dist/client/settings/useBuilderStatus.js.map +1 -1
- package/dist/client/sse-event-processor.d.ts +2 -0
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +16 -2
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/client/tools/ToolEditor.d.ts +5 -0
- package/dist/client/tools/ToolEditor.d.ts.map +1 -0
- package/dist/client/tools/ToolEditor.js +98 -0
- package/dist/client/tools/ToolEditor.js.map +1 -0
- package/dist/client/tools/ToolViewer.d.ts +5 -0
- package/dist/client/tools/ToolViewer.d.ts.map +1 -0
- package/dist/client/tools/ToolViewer.js +309 -0
- package/dist/client/tools/ToolViewer.js.map +1 -0
- package/dist/client/tools/ToolViewerPage.d.ts +2 -0
- package/dist/client/tools/ToolViewerPage.d.ts.map +1 -0
- package/dist/client/tools/ToolViewerPage.js +23 -0
- package/dist/client/tools/ToolViewerPage.js.map +1 -0
- package/dist/client/tools/ToolsListPage.d.ts +2 -0
- package/dist/client/tools/ToolsListPage.d.ts.map +1 -0
- package/dist/client/tools/ToolsListPage.js +72 -0
- package/dist/client/tools/ToolsListPage.js.map +1 -0
- package/dist/client/tools/ToolsSidebarSection.d.ts +2 -0
- package/dist/client/tools/ToolsSidebarSection.d.ts.map +1 -0
- package/dist/client/tools/ToolsSidebarSection.js +188 -0
- package/dist/client/tools/ToolsSidebarSection.js.map +1 -0
- package/dist/client/tools/index.d.ts +6 -0
- package/dist/client/tools/index.d.ts.map +1 -0
- package/dist/client/tools/index.js +6 -0
- package/dist/client/tools/index.js.map +1 -0
- package/dist/client/transcription/BuilderTranscriptionCta.d.ts +9 -0
- package/dist/client/transcription/BuilderTranscriptionCta.d.ts.map +1 -0
- package/dist/client/transcription/BuilderTranscriptionCta.js +18 -0
- package/dist/client/transcription/BuilderTranscriptionCta.js.map +1 -0
- package/dist/client/transcription/use-live-transcription.d.ts +29 -0
- package/dist/client/transcription/use-live-transcription.d.ts.map +1 -0
- package/dist/client/transcription/use-live-transcription.js +156 -0
- package/dist/client/transcription/use-live-transcription.js.map +1 -0
- package/dist/client/use-builder-enabled.d.ts +17 -0
- package/dist/client/use-builder-enabled.d.ts.map +1 -0
- package/dist/client/use-builder-enabled.js +36 -0
- package/dist/client/use-builder-enabled.js.map +1 -0
- package/dist/client/use-chat-threads.d.ts +1 -0
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js +29 -0
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/client/use-db-sync.d.ts.map +1 -1
- package/dist/client/use-db-sync.js +10 -8
- package/dist/client/use-db-sync.js.map +1 -1
- package/dist/client/useProductionAgent.d.ts.map +1 -1
- package/dist/client/useProductionAgent.js +3 -1
- package/dist/client/useProductionAgent.js.map +1 -1
- package/dist/collab/agent-identity.d.ts +15 -0
- package/dist/collab/agent-identity.d.ts.map +1 -0
- package/dist/collab/agent-identity.js +14 -0
- package/dist/collab/agent-identity.js.map +1 -0
- package/dist/collab/agent-presence.d.ts +59 -0
- package/dist/collab/agent-presence.d.ts.map +1 -0
- package/dist/collab/agent-presence.js +165 -0
- package/dist/collab/agent-presence.js.map +1 -0
- package/dist/collab/awareness.d.ts +7 -0
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/awareness.js +2 -2
- package/dist/collab/awareness.js.map +1 -1
- package/dist/collab/client-struct.d.ts +43 -0
- package/dist/collab/client-struct.d.ts.map +1 -0
- package/dist/collab/client-struct.js +272 -0
- package/dist/collab/client-struct.js.map +1 -0
- package/dist/collab/client.d.ts +2 -0
- package/dist/collab/client.d.ts.map +1 -1
- package/dist/collab/client.js +15 -1
- package/dist/collab/client.js.map +1 -1
- package/dist/collab/index.d.ts +6 -1
- package/dist/collab/index.d.ts.map +1 -1
- package/dist/collab/index.js +11 -1
- package/dist/collab/index.js.map +1 -1
- package/dist/collab/json-to-yjs.d.ts +72 -0
- package/dist/collab/json-to-yjs.d.ts.map +1 -0
- package/dist/collab/json-to-yjs.js +456 -0
- package/dist/collab/json-to-yjs.js.map +1 -0
- package/dist/collab/struct-routes.d.ts +52 -0
- package/dist/collab/struct-routes.d.ts.map +1 -0
- package/dist/collab/struct-routes.js +74 -0
- package/dist/collab/struct-routes.js.map +1 -0
- package/dist/collab/ydoc-manager.d.ts +19 -0
- package/dist/collab/ydoc-manager.d.ts.map +1 -1
- package/dist/collab/ydoc-manager.js +49 -0
- package/dist/collab/ydoc-manager.js.map +1 -1
- package/dist/db/migrations.d.ts +9 -0
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +75 -10
- package/dist/db/migrations.js.map +1 -1
- package/dist/deploy/build.js +1 -1
- package/dist/file-upload/builder.d.ts.map +1 -1
- package/dist/file-upload/builder.js +13 -5
- package/dist/file-upload/builder.js.map +1 -1
- package/dist/integrations/adapters/email.d.ts +17 -0
- package/dist/integrations/adapters/email.d.ts.map +1 -0
- package/dist/integrations/adapters/email.js +620 -0
- package/dist/integrations/adapters/email.js.map +1 -0
- package/dist/integrations/adapters/telegram.d.ts.map +1 -1
- package/dist/integrations/adapters/telegram.js +19 -3
- package/dist/integrations/adapters/telegram.js.map +1 -1
- package/dist/integrations/index.d.ts +1 -0
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/index.js +1 -0
- package/dist/integrations/index.js.map +1 -1
- package/dist/integrations/internal-token.d.ts +18 -0
- package/dist/integrations/internal-token.d.ts.map +1 -0
- package/dist/integrations/internal-token.js +86 -0
- package/dist/integrations/internal-token.js.map +1 -0
- package/dist/integrations/pending-tasks-retry-job.d.ts +15 -0
- package/dist/integrations/pending-tasks-retry-job.d.ts.map +1 -0
- package/dist/integrations/pending-tasks-retry-job.js +199 -0
- package/dist/integrations/pending-tasks-retry-job.js.map +1 -0
- package/dist/integrations/pending-tasks-store.d.ts +40 -0
- package/dist/integrations/pending-tasks-store.d.ts.map +1 -0
- package/dist/integrations/pending-tasks-store.js +151 -0
- package/dist/integrations/pending-tasks-store.js.map +1 -0
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +151 -9
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/integrations/task-queue-stats.d.ts +22 -0
- package/dist/integrations/task-queue-stats.d.ts.map +1 -0
- package/dist/integrations/task-queue-stats.js +117 -0
- package/dist/integrations/task-queue-stats.js.map +1 -0
- package/dist/integrations/types.d.ts +2 -0
- package/dist/integrations/types.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.d.ts +23 -4
- package/dist/integrations/webhook-handler.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.js +217 -59
- package/dist/integrations/webhook-handler.js.map +1 -1
- package/dist/jobs/tools.d.ts.map +1 -1
- package/dist/jobs/tools.js +137 -161
- package/dist/jobs/tools.js.map +1 -1
- package/dist/mcp-client/manager.d.ts +3 -0
- package/dist/mcp-client/manager.d.ts.map +1 -1
- package/dist/mcp-client/manager.js +5 -0
- package/dist/mcp-client/manager.js.map +1 -1
- package/dist/notifications/actions.d.ts +2 -2
- package/dist/notifications/actions.d.ts.map +1 -1
- package/dist/notifications/actions.js +77 -69
- package/dist/notifications/actions.js.map +1 -1
- package/dist/oauth-tokens/google-refresh.d.ts.map +1 -1
- package/dist/oauth-tokens/google-refresh.js +6 -0
- package/dist/oauth-tokens/google-refresh.js.map +1 -1
- package/dist/observability/evals.d.ts +22 -0
- package/dist/observability/evals.d.ts.map +1 -0
- package/dist/observability/evals.js +371 -0
- package/dist/observability/evals.js.map +1 -0
- package/dist/observability/experiments.d.ts +24 -0
- package/dist/observability/experiments.d.ts.map +1 -0
- package/dist/observability/experiments.js +274 -0
- package/dist/observability/experiments.js.map +1 -0
- package/dist/observability/feedback.d.ts +14 -0
- package/dist/observability/feedback.d.ts.map +1 -0
- package/dist/observability/feedback.js +256 -0
- package/dist/observability/feedback.js.map +1 -0
- package/dist/observability/index.d.ts +6 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +5 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/plugin.d.ts +2 -0
- package/dist/observability/plugin.d.ts.map +1 -0
- package/dist/observability/plugin.js +12 -0
- package/dist/observability/plugin.js.map +1 -0
- package/dist/observability/routes.d.ts +68 -0
- package/dist/observability/routes.d.ts.map +1 -0
- package/dist/observability/routes.js +301 -0
- package/dist/observability/routes.js.map +1 -0
- package/dist/observability/store.d.ts +77 -0
- package/dist/observability/store.d.ts.map +1 -0
- package/dist/observability/store.js +976 -0
- package/dist/observability/store.js.map +1 -0
- package/dist/observability/traces.d.ts +37 -0
- package/dist/observability/traces.d.ts.map +1 -0
- package/dist/observability/traces.js +182 -0
- package/dist/observability/traces.js.map +1 -0
- package/dist/observability/types.d.ts +159 -0
- package/dist/observability/types.d.ts.map +1 -0
- package/dist/observability/types.js +16 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/onboarding/default-steps.d.ts.map +1 -1
- package/dist/onboarding/default-steps.js +15 -7
- package/dist/onboarding/default-steps.js.map +1 -1
- package/dist/onboarding/types.d.ts +10 -1
- package/dist/onboarding/types.d.ts.map +1 -1
- package/dist/org/context.d.ts +43 -1
- package/dist/org/context.d.ts.map +1 -1
- package/dist/org/context.js +299 -6
- package/dist/org/context.js.map +1 -1
- package/dist/org/handlers.d.ts +76 -0
- package/dist/org/handlers.d.ts.map +1 -1
- package/dist/org/handlers.js +460 -32
- package/dist/org/handlers.js.map +1 -1
- package/dist/org/index.d.ts +2 -2
- package/dist/org/index.d.ts.map +1 -1
- package/dist/org/index.js +2 -2
- package/dist/org/index.js.map +1 -1
- package/dist/org/migrations.d.ts.map +1 -1
- package/dist/org/migrations.js +8 -0
- package/dist/org/migrations.js.map +1 -1
- package/dist/org/plugin.d.ts +6 -0
- package/dist/org/plugin.d.ts.map +1 -1
- package/dist/org/plugin.js +71 -7
- package/dist/org/plugin.js.map +1 -1
- package/dist/org/schema.d.ts +38 -0
- package/dist/org/schema.d.ts.map +1 -1
- package/dist/org/schema.js +2 -0
- package/dist/org/schema.js.map +1 -1
- package/dist/org/types.d.ts +7 -0
- package/dist/org/types.d.ts.map +1 -1
- package/dist/progress/actions.d.ts +3 -0
- package/dist/progress/actions.d.ts.map +1 -1
- package/dist/progress/actions.js +86 -110
- package/dist/progress/actions.js.map +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/progress/routes.js +1 -1
- package/dist/scripts/agent-engines/list-agent-engines.js +1 -1
- package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
- package/dist/scripts/agent-engines/manage-agent-engine.d.ts +10 -0
- package/dist/scripts/agent-engines/manage-agent-engine.d.ts.map +1 -0
- package/dist/scripts/agent-engines/manage-agent-engine.js +47 -0
- package/dist/scripts/agent-engines/manage-agent-engine.js.map +1 -0
- package/dist/scripts/agent-engines/set-agent-engine.js +2 -2
- package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -1
- package/dist/scripts/call-agent.d.ts.map +1 -1
- package/dist/scripts/call-agent.js +90 -18
- package/dist/scripts/call-agent.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/migrate-user-api-keys.d.ts +24 -0
- package/dist/scripts/db/migrate-user-api-keys.d.ts.map +1 -0
- package/dist/scripts/db/migrate-user-api-keys.js +224 -0
- package/dist/scripts/db/migrate-user-api-keys.js.map +1 -0
- package/dist/scripts/db/wipe-leaked-builder-keys.d.ts +27 -0
- package/dist/scripts/db/wipe-leaked-builder-keys.d.ts.map +1 -0
- package/dist/scripts/db/wipe-leaked-builder-keys.js +163 -0
- package/dist/scripts/db/wipe-leaked-builder-keys.js.map +1 -0
- package/dist/secrets/register-framework-secrets.d.ts +5 -0
- package/dist/secrets/register-framework-secrets.d.ts.map +1 -1
- package/dist/secrets/register-framework-secrets.js +7 -44
- package/dist/secrets/register-framework-secrets.js.map +1 -1
- package/dist/secrets/substitution.d.ts.map +1 -1
- package/dist/secrets/substitution.js +14 -2
- package/dist/secrets/substitution.js.map +1 -1
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +39 -0
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/action-routes.js +1 -1
- package/dist/server/action-routes.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +39 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +869 -458
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-teams.js +1 -1
- package/dist/server/agent-teams.js.map +1 -1
- package/dist/server/analytics.d.ts +5 -6
- package/dist/server/analytics.d.ts.map +1 -1
- package/dist/server/analytics.js +6 -14
- package/dist/server/analytics.js.map +1 -1
- package/dist/server/app-name.d.ts +5 -2
- package/dist/server/app-name.d.ts.map +1 -1
- package/dist/server/app-name.js +14 -3
- package/dist/server/app-name.js.map +1 -1
- package/dist/server/app-url.d.ts.map +1 -1
- package/dist/server/app-url.js +10 -1
- package/dist/server/app-url.js.map +1 -1
- package/dist/server/auth.d.ts +16 -0
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +373 -7
- package/dist/server/auth.js.map +1 -1
- package/dist/server/better-auth-instance.d.ts +2 -0
- package/dist/server/better-auth-instance.d.ts.map +1 -1
- package/dist/server/better-auth-instance.js +4 -0
- package/dist/server/better-auth-instance.js.map +1 -1
- package/dist/server/builder-browser.d.ts +59 -1
- package/dist/server/builder-browser.d.ts.map +1 -1
- package/dist/server/builder-browser.js +139 -23
- package/dist/server/builder-browser.js.map +1 -1
- package/dist/server/collab-plugin.d.ts +4 -0
- package/dist/server/collab-plugin.d.ts.map +1 -1
- package/dist/server/collab-plugin.js +30 -4
- package/dist/server/collab-plugin.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +241 -33
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/credential-provider.d.ts +50 -2
- package/dist/server/credential-provider.d.ts.map +1 -1
- package/dist/server/credential-provider.js +125 -2
- package/dist/server/credential-provider.js.map +1 -1
- package/dist/server/design-token-utils.d.ts +132 -0
- package/dist/server/design-token-utils.d.ts.map +1 -0
- package/dist/server/design-token-utils.js +714 -0
- package/dist/server/design-token-utils.js.map +1 -0
- package/dist/server/email.d.ts +10 -0
- package/dist/server/email.d.ts.map +1 -1
- package/dist/server/email.js +63 -16
- package/dist/server/email.js.map +1 -1
- package/dist/server/framework-request-handler.d.ts.map +1 -1
- package/dist/server/framework-request-handler.js +38 -3
- package/dist/server/framework-request-handler.js.map +1 -1
- package/dist/server/google-oauth.d.ts +18 -1
- package/dist/server/google-oauth.d.ts.map +1 -1
- package/dist/server/google-oauth.js +21 -4
- package/dist/server/google-oauth.js.map +1 -1
- package/dist/server/index.d.ts +3 -3
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +3 -3
- package/dist/server/index.js.map +1 -1
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +43 -5
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/server/poll.d.ts.map +1 -1
- package/dist/server/poll.js +46 -5
- package/dist/server/poll.js.map +1 -1
- package/dist/server/ssr-handler.d.ts.map +1 -1
- package/dist/server/ssr-handler.js +2 -1
- package/dist/server/ssr-handler.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts.map +1 -1
- package/dist/server/transcribe-voice.js +125 -21
- package/dist/server/transcribe-voice.js.map +1 -1
- package/dist/sharing/schema.d.ts +1 -1
- package/dist/styles/agent-native.css +16 -2
- package/dist/templates/default/.agents/skills/progress/SKILL.md +14 -12
- package/dist/templates/default/app/root.tsx +57 -13
- package/dist/templates/default/react-router.config.ts +3 -0
- package/dist/terminal/terminal-plugin.d.ts.map +1 -1
- package/dist/terminal/terminal-plugin.js +23 -3
- package/dist/terminal/terminal-plugin.js.map +1 -1
- package/dist/tools/actions.d.ts +3 -0
- package/dist/tools/actions.d.ts.map +1 -0
- package/dist/tools/actions.js +140 -0
- package/dist/tools/actions.js.map +1 -0
- package/dist/tools/fetch-tool.js +1 -1
- package/dist/tools/fetch-tool.js.map +1 -1
- package/dist/tools/html-shell.d.ts +2 -0
- package/dist/tools/html-shell.d.ts.map +1 -0
- package/dist/tools/html-shell.js +387 -0
- package/dist/tools/html-shell.js.map +1 -0
- package/dist/tools/routes.d.ts +2 -0
- package/dist/tools/routes.d.ts.map +1 -0
- package/dist/tools/routes.js +576 -0
- package/dist/tools/routes.js.map +1 -0
- package/dist/tools/schema.d.ts +575 -0
- package/dist/tools/schema.d.ts.map +1 -0
- package/dist/tools/schema.js +112 -0
- package/dist/tools/schema.js.map +1 -0
- package/dist/tools/store.d.ts +40 -0
- package/dist/tools/store.d.ts.map +1 -0
- package/dist/tools/store.js +190 -0
- package/dist/tools/store.js.map +1 -0
- package/dist/tools/theme.d.ts +2 -0
- package/dist/tools/theme.d.ts.map +1 -0
- package/dist/tools/theme.js +67 -0
- package/dist/tools/theme.js.map +1 -0
- package/dist/transcription/builder-transcription.d.ts +27 -0
- package/dist/transcription/builder-transcription.d.ts.map +1 -0
- package/dist/transcription/builder-transcription.js +53 -0
- package/dist/transcription/builder-transcription.js.map +1 -0
- package/dist/triggers/actions.d.ts +3 -0
- package/dist/triggers/actions.d.ts.map +1 -1
- package/dist/triggers/actions.js +189 -213
- package/dist/triggers/actions.js.map +1 -1
- package/dist/vite/action-types-plugin.d.ts.map +1 -1
- package/dist/vite/action-types-plugin.js +10 -2
- package/dist/vite/action-types-plugin.js.map +1 -1
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +26 -6
- package/dist/vite/client.js.map +1 -1
- package/docs/content/a2a-protocol.md +2 -2
- package/docs/content/agent-mentions.md +1 -1
- package/docs/content/authentication.md +51 -0
- package/docs/content/automations.md +22 -19
- package/docs/content/cloneable-saas.md +59 -62
- package/docs/content/deployment.md +21 -61
- package/docs/content/faq.md +73 -43
- package/docs/content/getting-started.md +37 -61
- package/docs/content/key-concepts.md +1 -1
- package/docs/content/mcp-clients.md +14 -1
- package/docs/content/messaging.md +284 -0
- package/docs/content/{enterprise-workspace.md → multi-app-workspace.md} +3 -3
- package/docs/content/multi-tenancy.md +1 -1
- package/docs/content/progress.md +11 -11
- package/docs/content/pure-agent-apps.md +55 -28
- package/docs/content/template-calendar.md +61 -56
- package/docs/content/template-clips.md +22 -18
- package/docs/content/template-content.md +36 -26
- package/docs/content/template-dispatch.md +5 -4
- package/docs/content/template-forms.md +13 -11
- package/docs/content/template-slides.md +43 -31
- package/docs/content/template-video.md +49 -22
- package/docs/content/tools.md +107 -0
- package/docs/content/what-is-agent-native.md +89 -105
- package/docs/content/workspace-management.md +1 -1
- package/package.json +12 -2
- package/src/templates/default/.agents/skills/progress/SKILL.md +14 -12
- package/src/templates/default/app/root.tsx +57 -13
- package/src/templates/default/react-router.config.ts +3 -0
- package/docs/content/integrations.md +0 -198
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useRef, useEffect } from "react";
|
|
3
|
+
import { IconPlus, IconUpload, IconBulb, IconClock, IconBolt, IconTool, IconPlugConnected, IconLoader2, IconCheck, IconArrowLeft, } from "@tabler/icons-react";
|
|
4
|
+
import { ComposerPrimitive } from "@assistant-ui/react";
|
|
5
|
+
import { cn } from "../utils.js";
|
|
6
|
+
import { Popover, PopoverTrigger, PopoverContent, } from "../components/ui/popover.js";
|
|
7
|
+
import { useOrg } from "../org/hooks.js";
|
|
8
|
+
import { useCreateMcpServer, testMcpServerUrl, } from "../resources/use-mcp-servers.js";
|
|
9
|
+
export function ComposerPlusMenu({ onSelectMode }) {
|
|
10
|
+
const [open, setOpen] = useState(false);
|
|
11
|
+
const [view, setView] = useState("menu");
|
|
12
|
+
// MCP state
|
|
13
|
+
const { data: org } = useOrg();
|
|
14
|
+
const canCreateOrgMcp = !org?.orgId || org.role === "owner" || org.role === "admin";
|
|
15
|
+
const hasOrg = !!org?.orgId;
|
|
16
|
+
const defaultMcpScope = hasOrg && canCreateOrgMcp ? "org" : "user";
|
|
17
|
+
const [mcpScope, setMcpScope] = useState(defaultMcpScope);
|
|
18
|
+
const [mcpName, setMcpName] = useState("");
|
|
19
|
+
const [mcpUrl, setMcpUrl] = useState("");
|
|
20
|
+
const [mcpDescription, setMcpDescription] = useState("");
|
|
21
|
+
const [mcpHeadersText, setMcpHeadersText] = useState("");
|
|
22
|
+
const [mcpBusy, setMcpBusy] = useState(false);
|
|
23
|
+
const [mcpError, setMcpError] = useState(null);
|
|
24
|
+
const [mcpTestResult, setMcpTestResult] = useState(null);
|
|
25
|
+
const createMcp = useCreateMcpServer();
|
|
26
|
+
const inputRef = useRef(null);
|
|
27
|
+
const fileUploadRef = useRef(null);
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
if (open) {
|
|
30
|
+
setView("menu");
|
|
31
|
+
setMcpScope(defaultMcpScope);
|
|
32
|
+
setMcpName("");
|
|
33
|
+
setMcpUrl("");
|
|
34
|
+
setMcpDescription("");
|
|
35
|
+
setMcpHeadersText("");
|
|
36
|
+
setMcpError(null);
|
|
37
|
+
setMcpTestResult(null);
|
|
38
|
+
setMcpBusy(false);
|
|
39
|
+
}
|
|
40
|
+
}, [open, defaultMcpScope]);
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
if (view === "mcp-server") {
|
|
43
|
+
const t = setTimeout(() => inputRef.current?.focus(), 50);
|
|
44
|
+
return () => clearTimeout(t);
|
|
45
|
+
}
|
|
46
|
+
}, [view]);
|
|
47
|
+
const parseHeaderLines = (text) => {
|
|
48
|
+
const out = {};
|
|
49
|
+
for (const line of text.split(/\r?\n/)) {
|
|
50
|
+
const trimmed = line.trim();
|
|
51
|
+
if (!trimmed)
|
|
52
|
+
continue;
|
|
53
|
+
const idx = trimmed.indexOf(":");
|
|
54
|
+
if (idx <= 0)
|
|
55
|
+
continue;
|
|
56
|
+
const key = trimmed.slice(0, idx).trim();
|
|
57
|
+
const val = trimmed.slice(idx + 1).trim();
|
|
58
|
+
if (!key || !val)
|
|
59
|
+
continue;
|
|
60
|
+
out[key] = val;
|
|
61
|
+
}
|
|
62
|
+
return Object.keys(out).length > 0 ? out : undefined;
|
|
63
|
+
};
|
|
64
|
+
const submitMcpServer = async () => {
|
|
65
|
+
const name = mcpName.trim();
|
|
66
|
+
const url = mcpUrl.trim();
|
|
67
|
+
if (!name || !url || mcpBusy)
|
|
68
|
+
return;
|
|
69
|
+
setMcpError(null);
|
|
70
|
+
setMcpBusy(true);
|
|
71
|
+
try {
|
|
72
|
+
await createMcp.mutateAsync({
|
|
73
|
+
scope: mcpScope,
|
|
74
|
+
name,
|
|
75
|
+
url,
|
|
76
|
+
headers: parseHeaderLines(mcpHeadersText),
|
|
77
|
+
description: mcpDescription.trim() || undefined,
|
|
78
|
+
});
|
|
79
|
+
setOpen(false);
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
setMcpError(err?.message ?? String(err));
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
setMcpBusy(false);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
const runMcpTest = async () => {
|
|
89
|
+
const url = mcpUrl.trim();
|
|
90
|
+
if (!url || mcpBusy)
|
|
91
|
+
return;
|
|
92
|
+
setMcpTestResult(null);
|
|
93
|
+
setMcpError(null);
|
|
94
|
+
setMcpBusy(true);
|
|
95
|
+
try {
|
|
96
|
+
const res = await testMcpServerUrl(url, parseHeaderLines(mcpHeadersText));
|
|
97
|
+
if (res.ok) {
|
|
98
|
+
setMcpTestResult({
|
|
99
|
+
ok: true,
|
|
100
|
+
message: `${res.toolCount ?? 0} tool${res.toolCount === 1 ? "" : "s"} available`,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
setMcpTestResult({ ok: false, message: res.error ?? "Failed" });
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
setMcpTestResult({ ok: false, message: err?.message ?? String(err) });
|
|
109
|
+
}
|
|
110
|
+
finally {
|
|
111
|
+
setMcpBusy(false);
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
const menuItems = [
|
|
115
|
+
{
|
|
116
|
+
icon: _jsx(IconUpload, { className: "h-3.5 w-3.5" }),
|
|
117
|
+
label: "Upload File",
|
|
118
|
+
desc: "Attach a file to this message",
|
|
119
|
+
action: () => {
|
|
120
|
+
setOpen(false);
|
|
121
|
+
setTimeout(() => fileUploadRef.current?.click(), 0);
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
icon: _jsx(IconBulb, { className: "h-3.5 w-3.5" }),
|
|
126
|
+
label: "Create Skill",
|
|
127
|
+
desc: "Teach the agent a new ability",
|
|
128
|
+
action: () => {
|
|
129
|
+
onSelectMode?.("skill");
|
|
130
|
+
setOpen(false);
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
icon: _jsx(IconClock, { className: "h-3.5 w-3.5" }),
|
|
135
|
+
label: "Scheduled Task",
|
|
136
|
+
desc: "Run something on a schedule",
|
|
137
|
+
action: () => {
|
|
138
|
+
onSelectMode?.("job");
|
|
139
|
+
setOpen(false);
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
icon: _jsx(IconBolt, { className: "h-3.5 w-3.5" }),
|
|
144
|
+
label: "Create Automation",
|
|
145
|
+
desc: "Set up a when-X-do-Y rule",
|
|
146
|
+
action: () => {
|
|
147
|
+
onSelectMode?.("automation");
|
|
148
|
+
setOpen(false);
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
icon: _jsx(IconTool, { className: "h-3.5 w-3.5" }),
|
|
153
|
+
label: "Create Tool",
|
|
154
|
+
desc: "Build an interactive mini app",
|
|
155
|
+
action: () => {
|
|
156
|
+
onSelectMode?.("tool");
|
|
157
|
+
setOpen(false);
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
icon: _jsx(IconPlugConnected, { className: "h-3.5 w-3.5" }),
|
|
162
|
+
label: "Connect MCP Server",
|
|
163
|
+
desc: "Expose external tools to the agent",
|
|
164
|
+
action: () => setView("mcp-server"),
|
|
165
|
+
},
|
|
166
|
+
];
|
|
167
|
+
const backButton = (_jsxs("button", { type: "button", onClick: () => setView("menu"), className: "flex items-center gap-1 text-[11px] text-muted-foreground hover:text-foreground mb-1.5", children: [_jsx(IconArrowLeft, { className: "h-3 w-3" }), "Back"] }));
|
|
168
|
+
return (_jsxs(_Fragment, { children: [_jsx(ComposerPrimitive.AddAttachment, { asChild: true, children: _jsx("button", { ref: fileUploadRef, type: "button", className: "hidden", tabIndex: -1, "aria-hidden": true }) }), _jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx("button", { type: "button", className: "shrink-0 flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-accent/50 disabled:opacity-30 disabled:cursor-not-allowed", title: "Add...", children: _jsx(IconPlus, { className: "h-4 w-4" }) }) }), _jsxs(PopoverContent, { side: "top", align: "start", sideOffset: 8, className: "w-[260px] p-0 rounded-lg", style: { fontSize: 13, lineHeight: "normal" }, onOpenAutoFocus: (e) => e.preventDefault(), children: [view === "menu" && (_jsx("div", { className: "py-1", children: menuItems.map((item) => (_jsxs("button", { onClick: item.action, className: "flex w-full items-center gap-2.5 px-3 py-2 text-left hover:bg-accent/50", children: [_jsx("span", { className: "text-muted-foreground", children: item.icon }), _jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "text-[12px] font-medium text-foreground", children: item.label }), _jsx("div", { className: "mt-0.5 text-[10px] text-muted-foreground/60", children: item.desc })] })] }, item.label))) })), view === "mcp-server" && (_jsxs("div", { className: "p-3", children: [backButton, _jsx("label", { className: "mb-1 block text-[11px] font-semibold text-foreground", children: "Connect MCP Server" }), _jsx("p", { className: "mb-2 text-[10px] text-muted-foreground/60 leading-relaxed", children: "Point at any Streamable HTTP MCP server. Its tools become available to the agent." }), _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex gap-1 rounded-md border border-border p-0.5", children: [_jsx("button", { type: "button", onClick: () => setMcpScope("user"), className: cn("flex-1 rounded px-2 py-1 text-[11px] font-medium", mcpScope === "user"
|
|
169
|
+
? "bg-accent text-foreground"
|
|
170
|
+
: "text-muted-foreground hover:text-foreground"), children: "Personal" }), _jsx("button", { type: "button", onClick: () => hasOrg && canCreateOrgMcp && setMcpScope("org"), disabled: !hasOrg || !canCreateOrgMcp, title: !hasOrg
|
|
171
|
+
? "Join an organization to share MCP servers"
|
|
172
|
+
: !canCreateOrgMcp
|
|
173
|
+
? "Only owners and admins can add org-scope servers"
|
|
174
|
+
: undefined, className: cn("flex-1 rounded px-2 py-1 text-[11px] font-medium", mcpScope === "org"
|
|
175
|
+
? "bg-accent text-foreground"
|
|
176
|
+
: "text-muted-foreground hover:text-foreground", (!hasOrg || !canCreateOrgMcp) &&
|
|
177
|
+
"cursor-not-allowed opacity-40 hover:text-muted-foreground"), children: "Organization" })] }), _jsx("input", { ref: inputRef, value: mcpName, onChange: (e) => setMcpName(e.target.value), className: "w-full rounded-md border border-border bg-background px-2.5 py-1.5 text-[13px] text-foreground outline-none placeholder:text-muted-foreground/50 focus:ring-1 focus:ring-accent", placeholder: "Server name (e.g. zapier)" }), _jsx("input", { value: mcpUrl, onChange: (e) => setMcpUrl(e.target.value), className: "w-full rounded-md border border-border bg-background px-2.5 py-1.5 text-[13px] text-foreground outline-none placeholder:text-muted-foreground/50 focus:ring-1 focus:ring-accent", placeholder: "https://mcp.example.com/" }), _jsx("input", { value: mcpDescription, onChange: (e) => setMcpDescription(e.target.value), className: "w-full rounded-md border border-border bg-background px-2.5 py-1.5 text-[13px] text-foreground outline-none placeholder:text-muted-foreground/50 focus:ring-1 focus:ring-accent", placeholder: "Description (optional)" }), _jsx("label", { className: "block text-[10px] font-medium text-muted-foreground/70", children: "Headers (one per line, e.g. Authorization: Bearer ...)" }), _jsx("textarea", { value: mcpHeadersText, onChange: (e) => setMcpHeadersText(e.target.value), rows: 2, className: "w-full resize-y rounded-md border border-border bg-background px-2.5 py-1.5 text-[12px] text-foreground outline-none placeholder:text-muted-foreground/50 focus:ring-1 focus:ring-accent", style: {
|
|
178
|
+
fontFamily: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace',
|
|
179
|
+
}, placeholder: "Authorization: Bearer sk-..." }), mcpTestResult && (_jsxs("div", { className: cn("flex items-center gap-1 text-[11px]", mcpTestResult.ok
|
|
180
|
+
? "text-green-600 dark:text-green-400"
|
|
181
|
+
: "text-red-600 dark:text-red-400"), children: [mcpTestResult.ok && _jsx(IconCheck, { className: "h-3 w-3" }), mcpTestResult.message] })), mcpError && (_jsx("div", { className: "text-[11px] text-red-600 dark:text-red-400", children: mcpError }))] }), _jsxs("div", { className: "mt-2.5 flex items-center justify-between gap-2", children: [_jsx("button", { type: "button", onClick: runMcpTest, disabled: !mcpUrl.trim() || mcpBusy, className: "rounded-md border border-border bg-background px-2.5 py-1.5 text-[11px] font-medium text-foreground hover:bg-accent disabled:opacity-40 disabled:pointer-events-none", children: "Test" }), _jsx("button", { type: "button", onClick: submitMcpServer, disabled: !mcpName.trim() || !mcpUrl.trim() || mcpBusy, className: "rounded-md bg-accent px-3 py-1.5 text-[12px] font-medium text-foreground hover:bg-accent/80 disabled:opacity-40 disabled:pointer-events-none", children: mcpBusy ? (_jsx(IconLoader2, { className: "h-3 w-3 animate-spin" })) : ("Connect") })] })] }))] })] })] }));
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=ComposerPlusMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComposerPlusMenu.js","sourceRoot":"","sources":["../../../src/client/composer/ComposerPlusMenu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TiptapComposer.d.ts","sourceRoot":"","sources":["../../../src/client/composer/TiptapComposer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"TiptapComposer.d.ts","sourceRoot":"","sources":["../../../src/client/composer/TiptapComposer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AA2Bf,OAAO,KAAK,EAGV,SAAS,EAGV,MAAM,YAAY,CAAC;AAMpB,MAAM,WAAW,oBAAoB;IACnC,KAAK,IAAI,IAAI,CAAC;CACf;AAsHD,KAAK,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAEjC,UAAU,mBAAmB;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC3C,oFAAoF;IACpF,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IAC3D,4FAA4F;IAC5F,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,0FAA0F;IAC1F,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC,qFAAqF;IACrF,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,mEAAmE;IACnE,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC5C,oEAAoE;IACpE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,KAAK,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC,CAAC;IACH,uCAAuC;IACvC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACzD;AAwQD,wBAAgB,cAAc,CAAC,EAC7B,WAAgC,EAChC,QAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,YAAmB,EACnB,aAAa,EACb,eAAe,EACf,aAAa,GACd,EAAE,mBAAmB,2CA61BrB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useState, useRef, useEffect, useCallback, useImperativeHandle, useMemo, } from "react";
|
|
3
|
-
import {
|
|
3
|
+
import { useComposer, useComposerRuntime, } from "@assistant-ui/react";
|
|
4
4
|
import { useEditor, EditorContent } from "@tiptap/react";
|
|
5
5
|
import StarterKit from "@tiptap/starter-kit";
|
|
6
6
|
import Placeholder from "@tiptap/extension-placeholder";
|
|
@@ -10,16 +10,91 @@ import { MentionReference } from "./extensions/MentionReference.js";
|
|
|
10
10
|
import { MentionPopover } from "./MentionPopover.js";
|
|
11
11
|
import { useMentionSearch } from "./use-mention-search.js";
|
|
12
12
|
import { useSkills } from "./use-skills.js";
|
|
13
|
-
import { IconArrowUp,
|
|
13
|
+
import { IconArrowUp, IconCheck, IconChevronDown, IconBulb, IconClock, IconBolt, IconTool, IconX, } from "@tabler/icons-react";
|
|
14
14
|
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
15
15
|
import { useVoiceDictation } from "./useVoiceDictation.js";
|
|
16
16
|
import { VoiceButton, VoiceRecordingOverlay } from "./VoiceButton.js";
|
|
17
|
+
import { ComposerPlusMenu } from "./ComposerPlusMenu.js";
|
|
18
|
+
import { sendToAgentChat } from "../agent-chat.js";
|
|
17
19
|
const BUILT_IN_COMMANDS = [
|
|
18
20
|
{ name: "clear", description: "Start a new chat", icon: "clear" },
|
|
19
21
|
{ name: "new", description: "Start a new chat", icon: "new" },
|
|
20
22
|
{ name: "history", description: "Browse chat history", icon: "history" },
|
|
21
23
|
{ name: "help", description: "Show available commands", icon: "help" },
|
|
22
24
|
];
|
|
25
|
+
const COMPOSER_MODE_CONFIGS = {
|
|
26
|
+
skill: {
|
|
27
|
+
label: "Create Skill",
|
|
28
|
+
icon: IconBulb,
|
|
29
|
+
placeholder: "Describe the skill you want to create...",
|
|
30
|
+
messagePrefix: "Create a skill: ",
|
|
31
|
+
getContext: (prompt) => `The user wants to create an agent skill. Their description: "${prompt}"
|
|
32
|
+
|
|
33
|
+
Follow the create-skill pattern to build this. Before writing:
|
|
34
|
+
|
|
35
|
+
1. **Determine the skill name** — derive a hyphen-case name from the description (e.g. "code review" → "code-review")
|
|
36
|
+
2. **Determine the skill type** — Pattern (architectural rule), Workflow (step-by-step), or Generator (scaffolding)
|
|
37
|
+
3. **Write the skill** as a personal resource at path "skills/<name>.md" using resource-write
|
|
38
|
+
|
|
39
|
+
The skill file MUST have YAML frontmatter with name and description (under 40 words), then markdown with:
|
|
40
|
+
- Clear rule/purpose statement
|
|
41
|
+
- Why this skill exists
|
|
42
|
+
- How to follow it (with code examples where helpful)
|
|
43
|
+
- Common violations to avoid
|
|
44
|
+
- Related skills
|
|
45
|
+
|
|
46
|
+
After creating, update the shared AGENTS.md resource to reference the new skill in its skills table.
|
|
47
|
+
|
|
48
|
+
Keep the skill concise (under 500 lines) and actionable.`,
|
|
49
|
+
},
|
|
50
|
+
job: {
|
|
51
|
+
label: "Scheduled Task",
|
|
52
|
+
icon: IconClock,
|
|
53
|
+
placeholder: "Describe what should happen and when...",
|
|
54
|
+
messagePrefix: "Create a recurring job: ",
|
|
55
|
+
getContext: (prompt) => `The user wants to create a recurring job. Their description: "${prompt}"
|
|
56
|
+
|
|
57
|
+
Use the manage-jobs tool with action "create" to create this. You need to:
|
|
58
|
+
1. Derive a hyphen-case name from the description
|
|
59
|
+
2. Convert the schedule to a cron expression (e.g., "every weekday at 9am" → "0 9 * * 1-5")
|
|
60
|
+
3. Write clear, self-contained instructions for what the agent should do each time the job runs
|
|
61
|
+
4. Create it in personal scope
|
|
62
|
+
|
|
63
|
+
The job will run automatically on the schedule. Make the instructions specific — include which actions to call and what to do with results.`,
|
|
64
|
+
},
|
|
65
|
+
automation: {
|
|
66
|
+
label: "Create Automation",
|
|
67
|
+
icon: IconBolt,
|
|
68
|
+
placeholder: "Describe what you want to automate...",
|
|
69
|
+
messagePrefix: "Create an automation: ",
|
|
70
|
+
beforeSend: () => {
|
|
71
|
+
window.dispatchEvent(new CustomEvent("agent-panel:set-mode", {
|
|
72
|
+
detail: { mode: "chat" },
|
|
73
|
+
}));
|
|
74
|
+
},
|
|
75
|
+
getContext: (prompt) => `The user wants to create a new automation. Scope: personal. Their description: "${prompt}"
|
|
76
|
+
|
|
77
|
+
Use manage-automations with action=define to create it. Ask clarifying questions if needed about what event to trigger on, conditions, and what actions to take.`,
|
|
78
|
+
},
|
|
79
|
+
tool: {
|
|
80
|
+
label: "Create Tool",
|
|
81
|
+
icon: IconTool,
|
|
82
|
+
placeholder: "Describe the interactive tool you want to build...",
|
|
83
|
+
messagePrefix: "Create a tool: ",
|
|
84
|
+
getContext: (prompt) => `The user wants to create an interactive tool (mini app). Their description: "${prompt}"
|
|
85
|
+
|
|
86
|
+
Use the create-tool action with Alpine.js HTML content. The tool runs as a sandboxed iframe with Tailwind CSS.
|
|
87
|
+
|
|
88
|
+
After creating the tool, navigate the user to it with set-url-path using pathname "/tools/<id>".
|
|
89
|
+
|
|
90
|
+
Make the tool functional and visually polished. Tools can use toolFetch() for external API calls, appAction()/appFetch() for app operations, toolData for tool-specific persistence, and dbQuery()/dbExec() only for existing app tables.`,
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
function ComposerModeChip({ mode, onRemove, }) {
|
|
94
|
+
const config = COMPOSER_MODE_CONFIGS[mode];
|
|
95
|
+
const Icon = config.icon;
|
|
96
|
+
return (_jsxs("span", { className: "inline-flex items-center gap-1 rounded-md border border-border bg-muted/50 px-1.5 py-0.5 text-xs font-medium text-foreground", children: [_jsx(Icon, { className: "h-3 w-3 text-muted-foreground" }), config.label, _jsx("button", { type: "button", onClick: onRemove, className: "ml-0.5 rounded-sm text-muted-foreground hover:text-foreground cursor-pointer", children: _jsx(IconX, { className: "h-3 w-3" }) })] }));
|
|
97
|
+
}
|
|
23
98
|
function ModeSelector({ mode, onChange, }) {
|
|
24
99
|
const [open, setOpen] = useState(false);
|
|
25
100
|
return (_jsxs(PopoverPrimitive.Root, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverPrimitive.Trigger, { asChild: true, children: _jsxs("button", { type: "button", className: "shrink-0 flex items-center gap-1 rounded-md px-2 py-1 text-[12px] font-medium text-muted-foreground hover:text-foreground hover:bg-accent/50", children: [mode === "build" ? "Act" : "Plan", _jsx(IconChevronDown, { className: "h-3 w-3 opacity-60" })] }) }), _jsx(PopoverPrimitive.Portal, { children: _jsxs(PopoverPrimitive.Content, { side: "top", align: "end", sideOffset: 6, className: "w-60 rounded-lg border border-border bg-popover shadow-lg z-50 py-1 animate-in fade-in-0 zoom-in-95", style: { fontSize: 13 }, children: [_jsxs("button", { type: "button", onClick: () => {
|
|
@@ -30,25 +105,56 @@ function ModeSelector({ mode, onChange, }) {
|
|
|
30
105
|
setOpen(false);
|
|
31
106
|
}, className: "flex w-full items-center gap-3 px-3 py-2 hover:bg-accent/50 text-left", children: [_jsxs("div", { className: "flex-1 min-w-0", children: [_jsx("span", { className: "font-medium text-foreground text-[13px]", children: "Plan" }), _jsx("p", { className: "text-[11px] text-muted-foreground mt-0.5", children: "Collaborate on an approach before taking action" })] }), mode === "plan" && (_jsx(IconCheck, { className: "h-3.5 w-3.5 shrink-0 text-blue-500" }))] })] }) })] }));
|
|
32
107
|
}
|
|
108
|
+
const FRIENDLY_MODEL_NAMES = {
|
|
109
|
+
"grok-code-fast": "Grok Code Fast",
|
|
110
|
+
"qwen3-coder": "Qwen3 Coder",
|
|
111
|
+
"kimi-k2-5": "Kimi K2.5",
|
|
112
|
+
"deepseek-v3-1": "DeepSeek v3.1",
|
|
113
|
+
};
|
|
33
114
|
function friendlyModelName(model) {
|
|
115
|
+
if (FRIENDLY_MODEL_NAMES[model])
|
|
116
|
+
return FRIENDLY_MODEL_NAMES[model];
|
|
34
117
|
// Claude: claude-{tier}-{major}-{minor}[-dateYYYYMMDD] → Tier Major.Minor
|
|
35
118
|
const claude = model.match(/^claude-(opus|sonnet|haiku)-(\d+)-(\d+)(?:-\d{8,})?$/);
|
|
36
119
|
if (claude) {
|
|
37
120
|
const tier = claude[1][0].toUpperCase() + claude[1].slice(1);
|
|
38
121
|
return `${tier} ${claude[2]}.${claude[3]}`;
|
|
39
122
|
}
|
|
40
|
-
|
|
41
|
-
|
|
123
|
+
// GPT: gpt-{major}-{minor}[-suffix] or gpt-{major}.{minor}[-suffix]
|
|
124
|
+
if (model.startsWith("gpt-")) {
|
|
125
|
+
const rest = model.slice(4);
|
|
126
|
+
const gpt = rest.match(/^(\d+)[.-](\d+)(?:[.-](.+))?$/);
|
|
127
|
+
if (gpt) {
|
|
128
|
+
const suffix = gpt[3]
|
|
129
|
+
? " " +
|
|
130
|
+
gpt[3]
|
|
131
|
+
.split("-")
|
|
132
|
+
.map((s) => s[0].toUpperCase() + s.slice(1))
|
|
133
|
+
.join(" ")
|
|
134
|
+
: "";
|
|
135
|
+
return `GPT-${gpt[1]}.${gpt[2]}${suffix}`;
|
|
136
|
+
}
|
|
137
|
+
return `GPT-${rest}`;
|
|
138
|
+
}
|
|
42
139
|
if (/^o\d/.test(model))
|
|
43
140
|
return model;
|
|
44
|
-
// Gemini: gemini-{
|
|
141
|
+
// Gemini: gemini-{major}-{minor}-{variant}[-preview] → Gemini Major.Minor Variant
|
|
142
|
+
const geminiVersioned = model.match(/^gemini-(\d+)-(\d+)-(.+?)(?:-preview)?$/);
|
|
143
|
+
if (geminiVersioned) {
|
|
144
|
+
const variant = geminiVersioned[3]
|
|
145
|
+
.split("-")
|
|
146
|
+
.map((s) => s[0].toUpperCase() + s.slice(1))
|
|
147
|
+
.join(" ");
|
|
148
|
+
return `Gemini ${geminiVersioned[1]}.${geminiVersioned[2]} ${variant}`;
|
|
149
|
+
}
|
|
150
|
+
// Gemini: gemini-{version.parts}[-preview] → Gemini Version Parts
|
|
45
151
|
const gemini = model.match(/^gemini-(.+?)(?:-preview)?$/);
|
|
46
152
|
if (gemini) {
|
|
47
153
|
const parts = gemini[1]
|
|
48
154
|
.split("-")
|
|
49
155
|
.map((s) => s[0].toUpperCase() + s.slice(1))
|
|
50
156
|
.join(" ");
|
|
51
|
-
return `Gemini ${parts}
|
|
157
|
+
return `Gemini ${parts}`;
|
|
52
158
|
}
|
|
53
159
|
return model;
|
|
54
160
|
}
|
|
@@ -85,7 +191,10 @@ function ModelSelector({ model, engines, onChange, }) {
|
|
|
85
191
|
const [open, setOpen] = useState(false);
|
|
86
192
|
return (_jsxs(PopoverPrimitive.Root, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverPrimitive.Trigger, { asChild: true, children: _jsxs("button", { type: "button", className: "shrink-0 flex items-center gap-1 rounded-md px-2 py-1 text-[12px] font-medium text-muted-foreground hover:text-foreground hover:bg-accent/50", children: [friendlyModelName(model), _jsx(IconChevronDown, { className: "h-3 w-3 opacity-60" })] }) }), _jsx(PopoverPrimitive.Portal, { children: _jsx(PopoverPrimitive.Content, { side: "top", align: "end", sideOffset: 6, className: "w-64 max-h-72 overflow-y-auto rounded-lg border border-border bg-popover shadow-lg z-50 py-1 animate-in fade-in-0 zoom-in-95", style: { fontSize: 13 }, children: engines.map((group) => {
|
|
87
193
|
const models = latestModelsOnly(group.models);
|
|
88
|
-
return (_jsxs("div", { children: [_jsxs("div", { className: "flex items-center gap-2 px-3 py-1.5", children: [_jsx("span", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide", children: group.label }), !group.configured && (_jsx("
|
|
194
|
+
return (_jsxs("div", { children: [_jsxs("div", { className: "flex items-center gap-2 px-3 py-1.5", children: [_jsx("span", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide", children: group.label }), !group.configured && (_jsx("button", { type: "button", className: "text-[10px] text-muted-foreground/60 hover:text-foreground cursor-pointer", onClick: () => {
|
|
195
|
+
window.dispatchEvent(new CustomEvent("agent-panel:open-settings"));
|
|
196
|
+
setOpen(false);
|
|
197
|
+
}, children: "needs API key" }))] }), models.map((m) => (_jsxs("button", { type: "button", onClick: () => {
|
|
89
198
|
if (!group.configured) {
|
|
90
199
|
window.dispatchEvent(new CustomEvent("agent-panel:open-settings"));
|
|
91
200
|
setOpen(false);
|
|
@@ -105,6 +214,8 @@ export function TiptapComposer({ placeholder = "Message agent...", disabled = fa
|
|
|
105
214
|
const [editorHasText, setEditorHasText] = useState(false);
|
|
106
215
|
const composerText = useComposer((state) => state.text);
|
|
107
216
|
const canSend = editorHasText && !disabled;
|
|
217
|
+
const [composerMode, setComposerMode] = useState(null);
|
|
218
|
+
const composerModeRef = useRef(null);
|
|
108
219
|
const isMac = typeof navigator !== "undefined" &&
|
|
109
220
|
/Mac|iPhone|iPad/.test(navigator.userAgent);
|
|
110
221
|
// Refs for values accessed in handleKeyDown (ProseMirror doesn't re-bind)
|
|
@@ -153,8 +264,10 @@ export function TiptapComposer({ placeholder = "Message agent...", disabled = fa
|
|
|
153
264
|
// changes visible to Placeholder's function form.
|
|
154
265
|
const placeholderRef = useRef(placeholder);
|
|
155
266
|
useEffect(() => {
|
|
156
|
-
placeholderRef.current =
|
|
157
|
-
|
|
267
|
+
placeholderRef.current = composerMode
|
|
268
|
+
? COMPOSER_MODE_CONFIGS[composerMode].placeholder
|
|
269
|
+
: placeholder;
|
|
270
|
+
}, [placeholder, composerMode]);
|
|
158
271
|
const editor = useEditor({
|
|
159
272
|
extensions: [
|
|
160
273
|
StarterKit.configure({
|
|
@@ -288,6 +401,17 @@ export function TiptapComposer({ placeholder = "Message agent...", disabled = fa
|
|
|
288
401
|
return false;
|
|
289
402
|
}
|
|
290
403
|
}
|
|
404
|
+
// Backspace removes composer mode chip when editor is empty
|
|
405
|
+
if (event.key === "Backspace" && composerModeRef.current) {
|
|
406
|
+
const { from, to } = view.state.selection;
|
|
407
|
+
if (view.state.doc.textContent.trim() === "" &&
|
|
408
|
+
from === to &&
|
|
409
|
+
from <= 1) {
|
|
410
|
+
setComposerMode(null);
|
|
411
|
+
composerModeRef.current = null;
|
|
412
|
+
return true;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
291
415
|
// Shift+Tab toggles build/plan mode
|
|
292
416
|
if (event.key === "Tab" && event.shiftKey) {
|
|
293
417
|
event.preventDefault();
|
|
@@ -355,19 +479,89 @@ export function TiptapComposer({ placeholder = "Message agent...", disabled = fa
|
|
|
355
479
|
editor?.commands.focus("end");
|
|
356
480
|
},
|
|
357
481
|
}));
|
|
358
|
-
const
|
|
482
|
+
const handleSelectMode = useCallback((mode) => {
|
|
483
|
+
setComposerMode(mode);
|
|
484
|
+
composerModeRef.current = mode;
|
|
485
|
+
setTimeout(() => editor?.commands.focus("end"), 50);
|
|
486
|
+
}, [editor]);
|
|
487
|
+
// --- Live voice transcription: text appears in the editor as the user speaks ---
|
|
488
|
+
const voiceAnchorRef = useRef(null);
|
|
489
|
+
const prevVoiceInsertRef = useRef("");
|
|
490
|
+
const handleLiveUpdate = useCallback((finalText, interimText) => {
|
|
359
491
|
const ed = editor;
|
|
360
|
-
if (!ed
|
|
492
|
+
if (!ed)
|
|
493
|
+
return;
|
|
494
|
+
if (voiceAnchorRef.current == null) {
|
|
495
|
+
const { from } = ed.state.selection;
|
|
496
|
+
const prevChar = from > 1 ? ed.state.doc.textBetween(from - 1, from) : "";
|
|
497
|
+
if (prevChar && !/\s/.test(prevChar)) {
|
|
498
|
+
ed.chain().insertContent(" ").run();
|
|
499
|
+
}
|
|
500
|
+
voiceAnchorRef.current = ed.state.selection.from;
|
|
501
|
+
prevVoiceInsertRef.current = "";
|
|
502
|
+
}
|
|
503
|
+
const anchor = voiceAnchorRef.current;
|
|
504
|
+
const prevLen = prevVoiceInsertRef.current.length;
|
|
505
|
+
const newText = finalText + interimText;
|
|
506
|
+
if (newText === prevVoiceInsertRef.current)
|
|
361
507
|
return;
|
|
362
|
-
const { from } = ed.state.selection;
|
|
363
|
-
const prevChar = from > 1 ? ed.state.doc.textBetween(from - 1, from) : "";
|
|
364
|
-
const needsLead = prevChar && !/\s/.test(prevChar);
|
|
365
508
|
ed.chain()
|
|
366
|
-
.
|
|
367
|
-
.
|
|
509
|
+
.deleteRange({ from: anchor, to: anchor + prevLen })
|
|
510
|
+
.insertContentAt(anchor, newText)
|
|
368
511
|
.run();
|
|
512
|
+
prevVoiceInsertRef.current = newText;
|
|
369
513
|
}, [editor]);
|
|
370
|
-
const
|
|
514
|
+
const insertTranscript = useCallback((text) => {
|
|
515
|
+
const ed = editor;
|
|
516
|
+
if (!ed)
|
|
517
|
+
return;
|
|
518
|
+
const anchor = voiceAnchorRef.current;
|
|
519
|
+
if (anchor != null) {
|
|
520
|
+
const prevLen = prevVoiceInsertRef.current.length;
|
|
521
|
+
if (text) {
|
|
522
|
+
ed.chain()
|
|
523
|
+
.focus()
|
|
524
|
+
.deleteRange({ from: anchor, to: anchor + prevLen })
|
|
525
|
+
.insertContentAt(anchor, text + " ")
|
|
526
|
+
.run();
|
|
527
|
+
}
|
|
528
|
+
else if (prevLen > 0) {
|
|
529
|
+
ed.chain()
|
|
530
|
+
.deleteRange({ from: anchor, to: anchor + prevLen })
|
|
531
|
+
.run();
|
|
532
|
+
}
|
|
533
|
+
voiceAnchorRef.current = null;
|
|
534
|
+
prevVoiceInsertRef.current = "";
|
|
535
|
+
}
|
|
536
|
+
else if (text) {
|
|
537
|
+
const { from } = ed.state.selection;
|
|
538
|
+
const prevChar = from > 1 ? ed.state.doc.textBetween(from - 1, from) : "";
|
|
539
|
+
const needsLead = prevChar && !/\s/.test(prevChar);
|
|
540
|
+
ed.chain()
|
|
541
|
+
.focus()
|
|
542
|
+
.insertContent((needsLead ? " " : "") + text + " ")
|
|
543
|
+
.run();
|
|
544
|
+
}
|
|
545
|
+
}, [editor]);
|
|
546
|
+
const voice = useVoiceDictation({
|
|
547
|
+
onTranscript: insertTranscript,
|
|
548
|
+
onLiveUpdate: handleLiveUpdate,
|
|
549
|
+
});
|
|
550
|
+
// Clean up live text if voice session ends without a final transcript (cancel/error)
|
|
551
|
+
useEffect(() => {
|
|
552
|
+
if (voice.state === "idle" && voiceAnchorRef.current != null) {
|
|
553
|
+
const anchor = voiceAnchorRef.current;
|
|
554
|
+
const prevLen = prevVoiceInsertRef.current.length;
|
|
555
|
+
if (editor && prevLen > 0) {
|
|
556
|
+
editor
|
|
557
|
+
.chain()
|
|
558
|
+
.deleteRange({ from: anchor, to: anchor + prevLen })
|
|
559
|
+
.run();
|
|
560
|
+
}
|
|
561
|
+
voiceAnchorRef.current = null;
|
|
562
|
+
prevVoiceInsertRef.current = "";
|
|
563
|
+
}
|
|
564
|
+
}, [voice.state, editor]);
|
|
371
565
|
// Global shortcut: Cmd/Ctrl + Shift + M toggles dictation. Escape cancels
|
|
372
566
|
// while recording. Scoped to avoid firing when focus is outside the app.
|
|
373
567
|
useEffect(() => {
|
|
@@ -497,6 +691,26 @@ export function TiptapComposer({ placeholder = "Message agent...", disabled = fa
|
|
|
497
691
|
return;
|
|
498
692
|
}
|
|
499
693
|
}
|
|
694
|
+
// Composer mode: send with context via agent chat bridge
|
|
695
|
+
if (composerMode) {
|
|
696
|
+
const config = COMPOSER_MODE_CONFIGS[composerMode];
|
|
697
|
+
config.beforeSend?.();
|
|
698
|
+
sendToAgentChat({
|
|
699
|
+
message: `${config.messagePrefix}${trimmed}`,
|
|
700
|
+
context: config.getContext(trimmed),
|
|
701
|
+
submit: true,
|
|
702
|
+
});
|
|
703
|
+
ed.commands.clearContent();
|
|
704
|
+
setEditorHasText(false);
|
|
705
|
+
setComposerMode(null);
|
|
706
|
+
composerModeRef.current = null;
|
|
707
|
+
try {
|
|
708
|
+
localStorage.removeItem(DRAFT_KEY);
|
|
709
|
+
}
|
|
710
|
+
catch { }
|
|
711
|
+
closePopover();
|
|
712
|
+
return;
|
|
713
|
+
}
|
|
500
714
|
if (onSubmit) {
|
|
501
715
|
onSubmit(text, references);
|
|
502
716
|
}
|
|
@@ -510,7 +724,14 @@ export function TiptapComposer({ placeholder = "Message agent...", disabled = fa
|
|
|
510
724
|
}
|
|
511
725
|
catch { }
|
|
512
726
|
closePopover();
|
|
513
|
-
}, [
|
|
727
|
+
}, [
|
|
728
|
+
closePopover,
|
|
729
|
+
composerMode,
|
|
730
|
+
composerRuntime,
|
|
731
|
+
editor,
|
|
732
|
+
onSubmit,
|
|
733
|
+
syncComposerState,
|
|
734
|
+
]);
|
|
514
735
|
// Helper functions that operate on the editor view directly
|
|
515
736
|
// These are called from handleKeyDown which can't use React state
|
|
516
737
|
function selectMention(view, pop, item) {
|
|
@@ -685,6 +906,10 @@ export function TiptapComposer({ placeholder = "Message agent...", disabled = fa
|
|
|
685
906
|
height: 0;
|
|
686
907
|
pointer-events: none;
|
|
687
908
|
}
|
|
688
|
-
` }),
|
|
909
|
+
` }), composerMode && (_jsx("div", { className: "px-2.5 pt-2 pb-0", children: _jsx(ComposerModeChip, { mode: composerMode, onRemove: () => {
|
|
910
|
+
setComposerMode(null);
|
|
911
|
+
composerModeRef.current = null;
|
|
912
|
+
editor?.commands.focus("end");
|
|
913
|
+
} }) })), _jsx("div", { className: composerMode ? "px-2 pt-1 pb-1" : "px-2 pt-2 pb-1", children: _jsx(EditorContent, { editor: editor, className: "aui-composer flex-1 min-w-0 [&_.ProseMirror]:outline-none [&_.ProseMirror_p]:m-0 px-0.5" }) }), voiceEnabled && _jsx(VoiceRecordingOverlay, { voice: voice }), _jsxs("div", { className: "flex items-center gap-1 px-2 py-1.5", children: [attachButton ?? _jsx(ComposerPlusMenu, { onSelectMode: handleSelectMode }), _jsx("div", { className: "flex-1" }), actionButton ?? (_jsxs(_Fragment, { children: [selectedModel && availableModels && onModelChange && (_jsx(ModelSelector, { model: selectedModel, engines: availableModels, onChange: onModelChange })), execMode && onExecModeChange && (_jsx(ModeSelector, { mode: execMode, onChange: onExecModeChange })), voiceEnabled && (_jsx(VoiceButton, { voice: voice, isMac: isMac, disabled: disabled })), extraActionButton, _jsx("button", { type: "button", onClick: submitComposer, disabled: !canSend, className: "shrink-0 flex h-7 w-7 items-center justify-center rounded-md bg-primary text-primary-foreground hover:opacity-90 disabled:opacity-30 disabled:cursor-not-allowed", title: "Send message", children: _jsx(IconArrowUp, { className: "h-3.5 w-3.5" }) })] }))] }), _jsx(MentionPopover, { ref: popoverRef, type: popover?.type ?? "@", position: popover?.position ?? null, mentionItems: mentionItems, skills: filteredSkills, commands: filteredCommands, hint: hint, isLoading: popover?.type === "@" ? mentionsLoading : skillsLoading, query: popover?.query ?? "", onSelectMention: handleSelectMention, onSelectSkill: handleSelectSkill, onSelectCommand: handleSelectCommand, onClose: closePopover })] }));
|
|
689
914
|
}
|
|
690
915
|
//# sourceMappingURL=TiptapComposer.js.map
|