@agent-native/core 0.5.0-dev.b51eaae → 0.6.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 +15 -43
- 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 +216 -76
- 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 +22 -1
- 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.d.ts +8 -2
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +287 -32
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/index.js +19 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/client/AgentPanel.d.ts +5 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +407 -111
- 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/composer/MentionPopover.d.ts +4 -1
- package/dist/client/composer/MentionPopover.d.ts.map +1 -1
- package/dist/client/composer/MentionPopover.js +36 -6
- 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 +146 -16
- 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 +5 -0
- 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 +149 -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/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 +23 -0
- package/dist/client/org/TeamPage.d.ts.map +1 -0
- package/dist/client/org/TeamPage.js +145 -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 +94 -13
- 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 +18 -3
- 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 +135 -110
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/resources/use-resources.d.ts +10 -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/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 +607 -42
- package/dist/deploy/build.js.map +1 -1
- package/dist/deploy/route-discovery.d.ts +17 -4
- package/dist/deploy/route-discovery.d.ts.map +1 -1
- package/dist/deploy/route-discovery.js +117 -35
- package/dist/deploy/route-discovery.js.map +1 -1
- 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/slack.d.ts +10 -0
- package/dist/integrations/adapters/slack.d.ts.map +1 -0
- package/dist/integrations/adapters/slack.js +215 -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 +184 -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/index.d.ts +8 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +10 -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 +213 -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 +111 -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 +31 -0
- package/dist/integrations/webhook-handler.d.ts.map +1 -0
- package/dist/integrations/webhook-handler.js +210 -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 +29 -0
- package/dist/jobs/scheduler.d.ts.map +1 -0
- package/dist/jobs/scheduler.js +205 -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 +192 -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/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 +30 -7
- package/dist/oauth-tokens/store.js.map +1 -1
- 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/handlers.d.ts +10 -1
- package/dist/resources/handlers.d.ts.map +1 -1
- package/dist/resources/handlers.js +82 -9
- package/dist/resources/handlers.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 +44 -0
- 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 +10 -6
- 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 +89 -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 +2 -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 +64 -46
- 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/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/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 +1 -9
- package/dist/scripts/utils.d.ts.map +1 -1
- package/dist/scripts/utils.js +2 -40
- package/dist/scripts/utils.js.map +1 -1
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +84 -16
- 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 +105 -0
- package/dist/server/action-routes.js.map +1 -0
- package/dist/server/agent-chat-plugin.d.ts +20 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +1149 -256
- 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 +69 -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 +367 -0
- package/dist/server/agent-teams.js.map +1 -0
- package/dist/server/agents-bundle.d.ts +87 -0
- package/dist/server/agents-bundle.d.ts.map +1 -0
- package/dist/server/agents-bundle.js +231 -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 +54 -33
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +529 -611
- 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 +144 -0
- package/dist/server/better-auth-instance.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 +97 -27
- 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/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 +168 -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 +13 -12
- 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 +40 -18
- 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 +9 -4
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +12 -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 +4 -6
- package/dist/server/oauth-helpers.d.ts.map +1 -1
- package/dist/server/oauth-helpers.js +6 -8
- 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 +347 -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/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 +142 -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 +108 -0
- package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +79 -0
- 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 +37 -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 +107 -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/templates/default/.agents/skills/actions/SKILL.md +142 -0
- package/dist/templates/templates/default/.agents/skills/agent-engines/SKILL.md +127 -0
- package/dist/templates/templates/default/.agents/skills/capture-learnings/SKILL.md +50 -0
- package/dist/templates/templates/default/.agents/skills/create-skill/SKILL.md +167 -0
- package/dist/templates/templates/default/.agents/skills/delegate-to-agent/SKILL.md +90 -0
- package/dist/templates/templates/default/.agents/skills/frontend-design/SKILL.md +69 -0
- package/dist/templates/templates/default/.agents/skills/real-time-collab/SKILL.md +183 -0
- package/dist/templates/templates/default/.agents/skills/real-time-sync/SKILL.md +112 -0
- package/dist/templates/templates/default/.agents/skills/security/SKILL.md +108 -0
- package/dist/templates/templates/default/.agents/skills/self-modifying-code/SKILL.md +79 -0
- package/dist/templates/templates/default/.agents/skills/storing-data/SKILL.md +110 -0
- package/dist/templates/templates/default/.claude/settings.json +100 -0
- package/dist/templates/templates/default/.env.example +5 -0
- package/dist/templates/templates/default/.ignore +0 -0
- package/dist/templates/templates/default/.prettierrc +5 -0
- package/dist/templates/templates/default/AGENTS.md +110 -0
- package/dist/templates/templates/default/DEVELOPING.md +117 -0
- package/dist/templates/templates/default/_gitignore +37 -0
- package/dist/templates/templates/default/actions/hello.ts +20 -0
- package/dist/templates/templates/default/actions/navigate.ts +53 -0
- package/dist/templates/templates/default/actions/run.ts +2 -0
- package/dist/templates/templates/default/actions/view-screen.ts +39 -0
- package/dist/templates/templates/default/app/entry.client.tsx +4 -0
- package/dist/templates/templates/default/app/entry.server.tsx +56 -0
- package/dist/templates/templates/default/app/global.css +95 -0
- package/dist/templates/templates/default/app/lib/utils.ts +1 -0
- package/dist/templates/templates/default/app/root.tsx +107 -0
- package/dist/templates/templates/default/app/routes/_index.tsx +62 -0
- package/dist/templates/templates/default/app/routes.ts +4 -0
- package/dist/templates/templates/default/app/vite-env.d.ts +6 -0
- package/dist/templates/templates/default/components.json +20 -0
- package/dist/templates/templates/default/data/.gitkeep +0 -0
- package/dist/templates/templates/default/data/sync-config.json +1 -0
- package/dist/templates/templates/default/learnings.defaults.md +5 -0
- package/dist/templates/templates/default/learnings.md +0 -0
- package/dist/templates/templates/default/package.json +46 -0
- package/dist/templates/templates/default/postcss.config.js +6 -0
- package/dist/templates/templates/default/public/icon-180.svg +4 -0
- package/dist/templates/templates/default/public/icon-192.svg +4 -0
- package/dist/templates/templates/default/public/icon-512.svg +4 -0
- package/dist/templates/templates/default/public/manifest.json +13 -0
- package/dist/templates/templates/default/react-router.config.ts +6 -0
- package/dist/templates/templates/default/server/middleware/auth.ts +15 -0
- package/dist/templates/templates/default/server/plugins/.gitkeep +0 -0
- package/dist/templates/templates/default/server/routes/[...page].get.ts +5 -0
- package/dist/templates/templates/default/server/routes/api/hello.get.ts +5 -0
- package/dist/templates/templates/default/shared/api.ts +6 -0
- package/dist/templates/templates/default/ssr-entry.ts +20 -0
- package/dist/templates/templates/default/tailwind.config.ts +7 -0
- package/dist/templates/templates/default/tsconfig.json +11 -0
- package/dist/templates/templates/default/vite.config.ts +6 -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 +87 -0
- package/dist/vite/agents-bundle-plugin.js.map +1 -0
- package/dist/vite/client.d.ts +5 -0
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +222 -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/package.json +68 -20
- package/src/templates/default/.agents/skills/actions/SKILL.md +12 -6
- 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 +108 -0
- package/src/templates/default/.agents/skills/storing-data/SKILL.md +110 -0
- package/src/templates/default/.claude/settings.json +13 -0
- package/src/templates/default/AGENTS.md +25 -9
- package/src/templates/default/actions/view-screen.ts +1 -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/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/.agents/skills/files-as-database → dist/templates/default/.agents/skills/storing-data}/SKILL.md +0 -0
- /package/{src/templates/default/application-state/.gitkeep → dist/templates/default/.ignore} +0 -0
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import { useState, useRef, useEffect, useCallback } from "react";
|
|
3
3
|
import { IconX, IconPlus, IconHistory, IconSearch } from "@tabler/icons-react";
|
|
4
4
|
import { AssistantChat, } from "./AssistantChat.js";
|
|
5
|
-
import {
|
|
5
|
+
import { getFrameOrigin } from "./frame.js";
|
|
6
6
|
import { cn } from "./utils.js";
|
|
7
7
|
import { useChatThreads } from "./use-chat-threads.js";
|
|
8
8
|
// ─── Skeleton Loader ─────────────────────────────────────────────────────────
|
|
@@ -82,55 +82,139 @@ function HistoryPopover({ threads, openTabIds, onSelect, onClose, onSearch, }) {
|
|
|
82
82
|
onClose();
|
|
83
83
|
}, className: "w-full px-3 py-2 text-left hover:bg-accent/50", children: [_jsxs("div", { className: "flex items-baseline justify-between gap-2", children: [_jsx("span", { className: "text-xs font-medium text-foreground truncate", children: thread.title || thread.preview || "Chat" }), _jsx("span", { className: "text-[10px] text-muted-foreground shrink-0", children: formatTime(thread.updatedAt) })] }), thread.preview && thread.title !== thread.preview && (_jsx("div", { className: "text-[11px] text-muted-foreground truncate mt-0.5", children: thread.preview }))] }, thread.id)))) })] })] }));
|
|
84
84
|
}
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
// ─── Help Popover ────────────────────────────────────────────────────────────
|
|
86
|
+
function HelpPopover({ onClose }) {
|
|
87
|
+
useEffect(() => {
|
|
88
|
+
const handler = (e) => {
|
|
89
|
+
if (e.key === "Escape")
|
|
90
|
+
onClose();
|
|
91
|
+
};
|
|
92
|
+
window.addEventListener("keydown", handler);
|
|
93
|
+
return () => window.removeEventListener("keydown", handler);
|
|
94
|
+
}, [onClose]);
|
|
95
|
+
const commands = [
|
|
96
|
+
{
|
|
97
|
+
name: "/clear",
|
|
98
|
+
description: "Start a new chat (keeps current chat in history)",
|
|
99
|
+
},
|
|
100
|
+
{ name: "/new", description: "Same as /clear" },
|
|
101
|
+
{ name: "/history", description: "Browse and search past chats" },
|
|
102
|
+
{ name: "/help", description: "Show this list of commands" },
|
|
103
|
+
{ name: "@", description: "Mention files, agents, or resources" },
|
|
104
|
+
];
|
|
105
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-40", onClick: onClose }), _jsxs("div", { className: "absolute right-2 top-0 z-50 w-72 rounded-lg border border-border bg-popover shadow-lg", children: [_jsxs("div", { className: "flex items-center justify-between px-3 py-2 border-b border-border", children: [_jsx("span", { className: "text-xs font-medium text-foreground", children: "Available Commands" }), _jsx("button", { onClick: onClose, className: "flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground", children: _jsx(IconX, { size: 12 }) })] }), _jsx("div", { className: "py-1", children: commands.map((cmd) => (_jsxs("div", { className: "px-3 py-1.5", children: [_jsx("div", { className: "text-xs font-medium text-foreground", children: cmd.name }), _jsx("div", { className: "text-[11px] text-muted-foreground", children: cmd.description })] }, cmd.name))) })] })] }));
|
|
106
|
+
}
|
|
107
|
+
export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderOverlay, contentHidden = false, apiUrl = "/_agent-native/agent-chat", storageKey, ...props }) {
|
|
108
|
+
const { threads, activeThreadId, isLoading, createThread, switchThread, deleteThread, saveThreadData, generateTitle, searchThreads, refreshThreads, } = useChatThreads(apiUrl, storageKey);
|
|
109
|
+
// Namespace all localStorage keys by storageKey when provided (for per-app isolation in frame)
|
|
110
|
+
const keyPrefix = storageKey ? `:${storageKey}` : "";
|
|
111
|
+
// Track which tabs have been focused at least once (lazy mount for sub-agent tabs)
|
|
112
|
+
const mountedTabsRef = useRef(new Set());
|
|
87
113
|
const activeThreadIdRef = useRef(activeThreadId);
|
|
88
114
|
activeThreadIdRef.current = activeThreadId;
|
|
115
|
+
// Mark the active tab as mounted so it persists when switched away
|
|
116
|
+
if (activeThreadId)
|
|
117
|
+
mountedTabsRef.current.add(activeThreadId);
|
|
89
118
|
const chatRefs = useRef(new Map());
|
|
90
119
|
const pendingSends = useRef(new Map());
|
|
91
120
|
const [runningThreads, setRunningThreads] = useState(new Set());
|
|
92
121
|
const [showHistory, setShowHistory] = useState(false);
|
|
93
122
|
const newThreadIds = useRef(new Set());
|
|
123
|
+
// Parent-child thread mapping — persisted to localStorage.
|
|
124
|
+
// Maps childThreadId → parentThreadId for sub-agent tabs.
|
|
125
|
+
const PARENT_MAP_KEY = `agent-chat-parent-map${keyPrefix}`;
|
|
126
|
+
const [parentMap, setParentMap] = useState(() => {
|
|
127
|
+
try {
|
|
128
|
+
const saved = localStorage.getItem(PARENT_MAP_KEY);
|
|
129
|
+
if (saved)
|
|
130
|
+
return JSON.parse(saved);
|
|
131
|
+
}
|
|
132
|
+
catch { }
|
|
133
|
+
return {};
|
|
134
|
+
});
|
|
135
|
+
// Persist parent map to localStorage
|
|
136
|
+
useEffect(() => {
|
|
137
|
+
try {
|
|
138
|
+
localStorage.setItem(PARENT_MAP_KEY, JSON.stringify(parentMap));
|
|
139
|
+
}
|
|
140
|
+
catch { }
|
|
141
|
+
}, [parentMap, PARENT_MAP_KEY]);
|
|
142
|
+
// Sub-agent display names — persisted to localStorage.
|
|
143
|
+
// Maps childThreadId → short name (e.g. "Research", "Draft email").
|
|
144
|
+
const SUB_AGENT_NAMES_KEY = `agent-chat-sub-agent-names${keyPrefix}`;
|
|
145
|
+
const [subAgentNames, setSubAgentNames] = useState(() => {
|
|
146
|
+
try {
|
|
147
|
+
const saved = localStorage.getItem(SUB_AGENT_NAMES_KEY);
|
|
148
|
+
if (saved)
|
|
149
|
+
return JSON.parse(saved);
|
|
150
|
+
}
|
|
151
|
+
catch { }
|
|
152
|
+
return {};
|
|
153
|
+
});
|
|
154
|
+
useEffect(() => {
|
|
155
|
+
try {
|
|
156
|
+
localStorage.setItem(SUB_AGENT_NAMES_KEY, JSON.stringify(subAgentNames));
|
|
157
|
+
}
|
|
158
|
+
catch { }
|
|
159
|
+
}, [subAgentNames, SUB_AGENT_NAMES_KEY]);
|
|
94
160
|
// Open tabs — persisted to localStorage so they survive refresh.
|
|
95
|
-
const OPEN_TABS_KEY =
|
|
161
|
+
const OPEN_TABS_KEY = `agent-chat-open-tabs${keyPrefix}`;
|
|
96
162
|
const [openTabIds, setOpenTabIds] = useState(() => {
|
|
97
163
|
try {
|
|
98
164
|
const saved = localStorage.getItem(OPEN_TABS_KEY);
|
|
99
165
|
if (saved) {
|
|
100
166
|
const parsed = JSON.parse(saved);
|
|
101
|
-
if (Array.isArray(parsed) && parsed.length > 0)
|
|
167
|
+
if (Array.isArray(parsed) && parsed.length > 0) {
|
|
168
|
+
// Mark restored tabs as mounted
|
|
169
|
+
for (const id of parsed)
|
|
170
|
+
mountedTabsRef.current.add(id);
|
|
102
171
|
return parsed;
|
|
172
|
+
}
|
|
103
173
|
}
|
|
104
174
|
}
|
|
105
175
|
catch { }
|
|
106
176
|
return [];
|
|
107
177
|
});
|
|
108
178
|
const initializedRef = useRef(false);
|
|
109
|
-
// Persist open tab IDs to localStorage
|
|
179
|
+
// Persist open tab IDs to localStorage (exclude sub-agent tabs — they're session-only)
|
|
110
180
|
useEffect(() => {
|
|
111
|
-
|
|
181
|
+
const mainTabs = openTabIds.filter((id) => !parentMap[id]);
|
|
182
|
+
if (mainTabs.length > 0) {
|
|
112
183
|
try {
|
|
113
|
-
localStorage.setItem(OPEN_TABS_KEY, JSON.stringify(
|
|
184
|
+
localStorage.setItem(OPEN_TABS_KEY, JSON.stringify(mainTabs));
|
|
114
185
|
}
|
|
115
186
|
catch { }
|
|
116
187
|
}
|
|
117
|
-
}, [openTabIds]);
|
|
188
|
+
}, [openTabIds, parentMap, OPEN_TABS_KEY]);
|
|
118
189
|
// Initialize open tabs once threads load — validate saved tabs still exist
|
|
119
190
|
useEffect(() => {
|
|
120
191
|
if (initializedRef.current || !activeThreadId || threads.length === 0)
|
|
121
192
|
return;
|
|
122
193
|
initializedRef.current = true;
|
|
123
194
|
const threadIds = new Set(threads.map((t) => t.id));
|
|
195
|
+
// If the active thread is a sub-agent, switch to its parent or the most recent main thread
|
|
196
|
+
if (parentMap[activeThreadId]) {
|
|
197
|
+
const parent = parentMap[activeThreadId];
|
|
198
|
+
if (parent && threadIds.has(parent)) {
|
|
199
|
+
switchThread(parent);
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
// Fall back to most recent main thread
|
|
203
|
+
const mainThread = threads.find((t) => !parentMap[t.id]);
|
|
204
|
+
if (mainThread)
|
|
205
|
+
switchThread(mainThread.id);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
124
208
|
setOpenTabIds((prev) => {
|
|
125
|
-
// Filter out any saved tabs that no longer exist
|
|
126
|
-
const valid = prev.filter((id) => threadIds.has(id));
|
|
127
|
-
// Ensure active thread is included
|
|
128
|
-
if (!valid.includes(activeThreadId)) {
|
|
209
|
+
// Filter out any saved tabs that no longer exist, and any sub-agent tabs
|
|
210
|
+
const valid = prev.filter((id) => threadIds.has(id) && !parentMap[id]);
|
|
211
|
+
// Ensure active thread is included (only if it's not a sub-agent)
|
|
212
|
+
if (!parentMap[activeThreadId] && !valid.includes(activeThreadId)) {
|
|
129
213
|
valid.push(activeThreadId);
|
|
130
214
|
}
|
|
131
215
|
return valid.length > 0 ? valid : [activeThreadId];
|
|
132
216
|
});
|
|
133
|
-
}, [activeThreadId, threads]);
|
|
217
|
+
}, [activeThreadId, threads, parentMap, switchThread]);
|
|
134
218
|
// Ensure active thread is always in open tabs.
|
|
135
219
|
// Use functional update to check inside the setter — avoids race with the
|
|
136
220
|
// initialization effect that may have already added the ID in the same batch.
|
|
@@ -139,6 +223,22 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
|
|
|
139
223
|
setOpenTabIds((prev) => prev.includes(activeThreadId) ? prev : [...prev, activeThreadId]);
|
|
140
224
|
}
|
|
141
225
|
}, [activeThreadId]);
|
|
226
|
+
// Ensure at least one tab is always open — auto-create if sidebar is empty
|
|
227
|
+
const autoCreatingRef = useRef(false);
|
|
228
|
+
useEffect(() => {
|
|
229
|
+
if (isLoading || autoCreatingRef.current)
|
|
230
|
+
return;
|
|
231
|
+
if (openTabIds.length === 0) {
|
|
232
|
+
autoCreatingRef.current = true;
|
|
233
|
+
createThread().then((id) => {
|
|
234
|
+
autoCreatingRef.current = false;
|
|
235
|
+
if (id) {
|
|
236
|
+
newThreadIds.current.add(id);
|
|
237
|
+
setOpenTabIds([id]);
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
}, [isLoading, openTabIds, createThread]);
|
|
142
242
|
// Focus the composer when switching tabs
|
|
143
243
|
useEffect(() => {
|
|
144
244
|
if (!activeThreadId)
|
|
@@ -150,6 +250,7 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
|
|
|
150
250
|
return () => clearTimeout(t);
|
|
151
251
|
}, [activeThreadId]);
|
|
152
252
|
// Ref callback: scroll the active tab into view in the overflow container.
|
|
253
|
+
// Uses getBoundingClientRect for reliable positioning regardless of offsetParent.
|
|
153
254
|
const activeTabRefCb = useCallback((el) => {
|
|
154
255
|
if (!el)
|
|
155
256
|
return;
|
|
@@ -157,15 +258,13 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
|
|
|
157
258
|
if (!container)
|
|
158
259
|
return;
|
|
159
260
|
requestAnimationFrame(() => {
|
|
160
|
-
const
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
if (tabLeft < scrollLeft) {
|
|
165
|
-
container.scrollLeft = tabLeft;
|
|
261
|
+
const containerRect = container.getBoundingClientRect();
|
|
262
|
+
const tabRect = el.getBoundingClientRect();
|
|
263
|
+
if (tabRect.left < containerRect.left) {
|
|
264
|
+
container.scrollLeft += tabRect.left - containerRect.left;
|
|
166
265
|
}
|
|
167
|
-
else if (
|
|
168
|
-
container.scrollLeft
|
|
266
|
+
else if (tabRect.right > containerRect.right) {
|
|
267
|
+
container.scrollLeft += tabRect.right - containerRect.right;
|
|
169
268
|
}
|
|
170
269
|
});
|
|
171
270
|
}, []);
|
|
@@ -186,7 +285,7 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
|
|
|
186
285
|
}, [threads]);
|
|
187
286
|
// Listen for builder.submitChat postMessages
|
|
188
287
|
useEffect(() => {
|
|
189
|
-
const
|
|
288
|
+
const execModeKey = `agent-native-exec-mode${keyPrefix}`;
|
|
190
289
|
const PLAN_MODE_INSTRUCTION = `PLAN MODE ACTIVE: Before making any changes, you MUST:\n` +
|
|
191
290
|
`1. Explore the codebase to understand what's needed\n` +
|
|
192
291
|
`2. Write a plan to \`.builder/plans/YYYY-MM-DD-<topic>.md\`\n` +
|
|
@@ -194,7 +293,7 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
|
|
|
194
293
|
`Do NOT edit any files, run any scripts, or make any changes until the user says to proceed.`;
|
|
195
294
|
const handler = (event) => {
|
|
196
295
|
if (event.origin !== window.location.origin &&
|
|
197
|
-
event.origin !==
|
|
296
|
+
event.origin !== getFrameOrigin()) {
|
|
198
297
|
return;
|
|
199
298
|
}
|
|
200
299
|
if (event.data?.type !== "builder.submitChat")
|
|
@@ -205,7 +304,7 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
|
|
|
205
304
|
const context = event.data.data?.context;
|
|
206
305
|
const isPlanMode = (() => {
|
|
207
306
|
try {
|
|
208
|
-
return localStorage.getItem(
|
|
307
|
+
return localStorage.getItem(execModeKey) === "plan";
|
|
209
308
|
}
|
|
210
309
|
catch {
|
|
211
310
|
return false;
|
|
@@ -230,7 +329,7 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
|
|
|
230
329
|
};
|
|
231
330
|
window.addEventListener("message", handler);
|
|
232
331
|
return () => window.removeEventListener("message", handler);
|
|
233
|
-
}, []);
|
|
332
|
+
}, [keyPrefix]);
|
|
234
333
|
// Process pending sends when refs mount
|
|
235
334
|
useEffect(() => {
|
|
236
335
|
for (const [tabId, message] of pendingSends.current) {
|
|
@@ -268,13 +367,20 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
|
|
|
268
367
|
const id = await createThread();
|
|
269
368
|
if (id) {
|
|
270
369
|
newThreadIds.current.add(id);
|
|
271
|
-
setOpenTabIds((prev) => [...prev, id]);
|
|
272
370
|
}
|
|
273
371
|
}, [createThread]);
|
|
274
372
|
const closeTab = useCallback((tabId) => {
|
|
275
373
|
setOpenTabIds((prev) => {
|
|
276
|
-
if (prev.length <= 1)
|
|
277
|
-
|
|
374
|
+
if (prev.length <= 1) {
|
|
375
|
+
// Last tab — create a new one and replace the old tab atomically
|
|
376
|
+
createThread().then((newId) => {
|
|
377
|
+
if (newId) {
|
|
378
|
+
newThreadIds.current.add(newId);
|
|
379
|
+
setOpenTabIds([newId]);
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
return prev; // Keep old tab until new one is ready
|
|
383
|
+
}
|
|
278
384
|
const next = prev.filter((id) => id !== tabId);
|
|
279
385
|
if (tabId === activeThreadIdRef.current && next.length > 0) {
|
|
280
386
|
const idx = prev.indexOf(tabId);
|
|
@@ -285,7 +391,20 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
|
|
|
285
391
|
chatRefs.current.delete(tabId);
|
|
286
392
|
pendingSends.current.delete(tabId);
|
|
287
393
|
newThreadIds.current.delete(tabId);
|
|
288
|
-
|
|
394
|
+
// Clean up parent map and sub-agent names
|
|
395
|
+
setParentMap((prev) => {
|
|
396
|
+
if (!(tabId in prev))
|
|
397
|
+
return prev;
|
|
398
|
+
const { [tabId]: _, ...rest } = prev;
|
|
399
|
+
return rest;
|
|
400
|
+
});
|
|
401
|
+
setSubAgentNames((prev) => {
|
|
402
|
+
if (!(tabId in prev))
|
|
403
|
+
return prev;
|
|
404
|
+
const { [tabId]: _, ...rest } = prev;
|
|
405
|
+
return rest;
|
|
406
|
+
});
|
|
407
|
+
}, [switchThread, createThread]);
|
|
289
408
|
const closeOtherTabs = useCallback((tabId) => {
|
|
290
409
|
setOpenTabIds([tabId]);
|
|
291
410
|
if (activeThreadIdRef.current !== tabId) {
|
|
@@ -299,6 +418,17 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
|
|
|
299
418
|
newThreadIds.current.delete(key);
|
|
300
419
|
}
|
|
301
420
|
}
|
|
421
|
+
// Clean up parent map and sub-agent names — only keep entries for the surviving tab
|
|
422
|
+
setParentMap((prev) => {
|
|
423
|
+
if (tabId in prev)
|
|
424
|
+
return { [tabId]: prev[tabId] };
|
|
425
|
+
return {};
|
|
426
|
+
});
|
|
427
|
+
setSubAgentNames((prev) => {
|
|
428
|
+
if (tabId in prev)
|
|
429
|
+
return { [tabId]: prev[tabId] };
|
|
430
|
+
return {};
|
|
431
|
+
});
|
|
302
432
|
}, [switchThread]);
|
|
303
433
|
const closeAllTabs = useCallback(async () => {
|
|
304
434
|
const id = await createThread();
|
|
@@ -309,6 +439,8 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
|
|
|
309
439
|
// Clean up all old refs
|
|
310
440
|
chatRefs.current.clear();
|
|
311
441
|
pendingSends.current.clear();
|
|
442
|
+
setParentMap({});
|
|
443
|
+
setSubAgentNames({});
|
|
312
444
|
}
|
|
313
445
|
}, [createThread, switchThread]);
|
|
314
446
|
const clearActiveTab = useCallback(() => {
|
|
@@ -320,25 +452,125 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
|
|
|
320
452
|
}
|
|
321
453
|
switchThread(threadId);
|
|
322
454
|
}, [openTabIds, switchThread]);
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
455
|
+
// Listen for agent-task-open events (from AgentTaskCard "Open" button)
|
|
456
|
+
useEffect(() => {
|
|
457
|
+
function handleOpenTask(e) {
|
|
458
|
+
const detail = e.detail;
|
|
459
|
+
const threadId = detail?.threadId;
|
|
460
|
+
if (!threadId)
|
|
461
|
+
return;
|
|
462
|
+
// The current active thread is the parent that spawned this sub-agent
|
|
463
|
+
const parentId = activeThreadIdRef.current;
|
|
464
|
+
if (parentId && parentId !== threadId) {
|
|
465
|
+
setParentMap((prev) => prev[threadId] === parentId
|
|
466
|
+
? prev
|
|
467
|
+
: { ...prev, [threadId]: parentId });
|
|
468
|
+
}
|
|
469
|
+
// Store the sub-agent name/description for the tab label
|
|
470
|
+
const name = detail.name || detail.description || "";
|
|
471
|
+
if (name) {
|
|
472
|
+
setSubAgentNames((prev) => prev[threadId] === name ? prev : { ...prev, [threadId]: name });
|
|
473
|
+
}
|
|
474
|
+
// Refresh thread list so the new sub-agent thread appears with its title
|
|
475
|
+
refreshThreads();
|
|
476
|
+
// Open the sub-agent thread as a tab — insert after parent for visual grouping
|
|
477
|
+
if (!openTabIds.includes(threadId)) {
|
|
478
|
+
setOpenTabIds((prev) => {
|
|
479
|
+
if (parentId) {
|
|
480
|
+
const parentIdx = prev.indexOf(parentId);
|
|
481
|
+
if (parentIdx !== -1) {
|
|
482
|
+
// Insert after the parent (and any existing children of that parent)
|
|
483
|
+
const next = [...prev];
|
|
484
|
+
let insertIdx = parentIdx + 1;
|
|
485
|
+
// Skip past any existing children of the same parent
|
|
486
|
+
while (insertIdx < next.length &&
|
|
487
|
+
parentMap[next[insertIdx]] === parentId) {
|
|
488
|
+
insertIdx++;
|
|
489
|
+
}
|
|
490
|
+
next.splice(insertIdx, 0, threadId);
|
|
491
|
+
return next;
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
return [...prev, threadId];
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
switchThread(threadId);
|
|
498
|
+
}
|
|
499
|
+
window.addEventListener("agent-task-open", handleOpenTask);
|
|
500
|
+
return () => window.removeEventListener("agent-task-open", handleOpenTask);
|
|
501
|
+
}, [openTabIds, switchThread, refreshThreads, parentMap]);
|
|
502
|
+
// Watch for agent-issued chat-command in application-state
|
|
503
|
+
const lastChatCommandRef = useRef(0);
|
|
504
|
+
useEffect(() => {
|
|
505
|
+
let stopped = false;
|
|
506
|
+
let timer = null;
|
|
507
|
+
async function pollChatCommand() {
|
|
508
|
+
if (stopped)
|
|
509
|
+
return;
|
|
510
|
+
try {
|
|
511
|
+
const res = await fetch("/_agent-native/application-state/chat-command");
|
|
512
|
+
if (res.ok) {
|
|
513
|
+
const data = await res.json();
|
|
514
|
+
if (data?.value?.command === "open-thread" &&
|
|
515
|
+
data.value.threadId &&
|
|
516
|
+
data.value.timestamp > lastChatCommandRef.current) {
|
|
517
|
+
lastChatCommandRef.current = data.value.timestamp;
|
|
518
|
+
const threadId = data.value.threadId;
|
|
519
|
+
// Open the thread as a tab and focus it
|
|
520
|
+
if (!openTabIds.includes(threadId)) {
|
|
521
|
+
setOpenTabIds((prev) => [...prev, threadId]);
|
|
522
|
+
}
|
|
523
|
+
switchThread(threadId);
|
|
524
|
+
// Clear the command
|
|
525
|
+
fetch("/_agent-native/application-state/chat-command", {
|
|
526
|
+
method: "DELETE",
|
|
527
|
+
}).catch(() => { });
|
|
528
|
+
}
|
|
333
529
|
}
|
|
334
|
-
}
|
|
530
|
+
}
|
|
531
|
+
catch { }
|
|
532
|
+
if (!stopped) {
|
|
533
|
+
timer = setTimeout(pollChatCommand, 2000);
|
|
534
|
+
}
|
|
335
535
|
}
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
536
|
+
pollChatCommand();
|
|
537
|
+
return () => {
|
|
538
|
+
stopped = true;
|
|
539
|
+
if (timer)
|
|
540
|
+
clearTimeout(timer);
|
|
541
|
+
};
|
|
542
|
+
}, [openTabIds, switchThread]);
|
|
543
|
+
const handleGenerateTitle = useCallback((threadId, message) => {
|
|
544
|
+
generateTitle(threadId, message).then((title) => {
|
|
545
|
+
if (title) {
|
|
546
|
+
// Persist the generated title to the server
|
|
547
|
+
saveThreadData(threadId, {
|
|
548
|
+
threadData: "",
|
|
549
|
+
title,
|
|
550
|
+
preview: message.slice(0, 120),
|
|
551
|
+
});
|
|
552
|
+
}
|
|
553
|
+
});
|
|
554
|
+
}, [generateTitle, saveThreadData]);
|
|
555
|
+
const handleSaveThread = useCallback((threadId, data) => {
|
|
556
|
+
saveThreadData(threadId, data);
|
|
557
|
+
}, [saveThreadData]);
|
|
558
|
+
// ─── Slash command handler ──────────────────────────────────────────
|
|
559
|
+
const [helpVisible, setHelpVisible] = useState(false);
|
|
560
|
+
const handleSlashCommand = useCallback((command) => {
|
|
561
|
+
switch (command) {
|
|
562
|
+
case "clear":
|
|
563
|
+
case "new":
|
|
564
|
+
addTab();
|
|
565
|
+
break;
|
|
566
|
+
case "history":
|
|
567
|
+
setShowHistory(true);
|
|
568
|
+
break;
|
|
569
|
+
case "help":
|
|
570
|
+
setHelpVisible(true);
|
|
571
|
+
break;
|
|
340
572
|
}
|
|
341
|
-
}, [
|
|
573
|
+
}, [addTab]);
|
|
342
574
|
// Build tabs from open thread IDs
|
|
343
575
|
const threadMap = new Map(threads.map((t) => [t.id, t]));
|
|
344
576
|
const tabs = openTabIds
|
|
@@ -347,14 +579,28 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
|
|
|
347
579
|
const t = threadMap.get(id);
|
|
348
580
|
return {
|
|
349
581
|
id,
|
|
350
|
-
label: t?.title || t?.preview?.slice(0,
|
|
582
|
+
label: t?.title || t?.preview?.slice(0, 30) || "New chat",
|
|
351
583
|
status: runningThreads.has(id)
|
|
352
584
|
? "running"
|
|
353
585
|
: (messageCounts[id] ?? t?.messageCount ?? 0) > 0
|
|
354
586
|
? "completed"
|
|
355
587
|
: "idle",
|
|
588
|
+
parentThreadId: parentMap[id],
|
|
589
|
+
subAgentName: subAgentNames[id],
|
|
356
590
|
};
|
|
357
591
|
});
|
|
592
|
+
// Include sub-agent tabs that aren't in threadMap yet (just created, not refreshed)
|
|
593
|
+
for (const id of openTabIds) {
|
|
594
|
+
if (!tabs.some((t) => t.id === id)) {
|
|
595
|
+
tabs.push({
|
|
596
|
+
id,
|
|
597
|
+
label: subAgentNames[id] || (parentMap[id] ? "Sub-agent..." : "New chat"),
|
|
598
|
+
status: "running",
|
|
599
|
+
parentThreadId: parentMap[id],
|
|
600
|
+
subAgentName: subAgentNames[id],
|
|
601
|
+
});
|
|
602
|
+
}
|
|
603
|
+
}
|
|
358
604
|
const headerProps = {
|
|
359
605
|
tabs,
|
|
360
606
|
activeTabId: activeThreadId ?? "",
|
|
@@ -376,21 +622,57 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
|
|
|
376
622
|
}
|
|
377
623
|
return (_jsxs("div", { className: "flex flex-1 flex-col h-full min-h-0 overflow-x-hidden", children: [_jsx("style", { dangerouslySetInnerHTML: {
|
|
378
624
|
__html: ".agent-tab-close{opacity:0}.agent-tab:hover .agent-tab-close{opacity:1}",
|
|
379
|
-
} }), renderHeader
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
625
|
+
} }), renderHeader
|
|
626
|
+
? renderHeader(headerProps)
|
|
627
|
+
: showTabBar
|
|
628
|
+
? (() => {
|
|
629
|
+
const activeTab = tabs.find((t) => t.id === activeThreadId);
|
|
630
|
+
const focusParentId = activeTab?.parentThreadId || activeThreadId;
|
|
631
|
+
const childTabs = tabs.filter((t) => t.parentThreadId === focusParentId);
|
|
632
|
+
const hasSubTabs = childTabs.length > 0;
|
|
633
|
+
const mainTabs = tabs.filter((t) => !t.parentThreadId);
|
|
634
|
+
return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center px-1 py-1 border-b border-border shrink-0 gap-0.5", children: [_jsx("div", { className: "flex items-center gap-0.5 min-w-0 overflow-x-auto scrollbar-none flex-1", children: mainTabs.map((tab) => {
|
|
635
|
+
const isActive = tab.id === activeThreadId ||
|
|
636
|
+
(tab.id === focusParentId &&
|
|
637
|
+
activeTab?.parentThreadId === tab.id);
|
|
638
|
+
return (_jsxs("button", { ref: isActive ? activeTabRefCb : undefined, onClick: () => switchThread(tab.id), className: cn("agent-tab relative flex items-center gap-1 px-2.5 py-1.5 rounded-md text-[11px] font-medium shrink-0 max-w-[130px]", isActive
|
|
639
|
+
? "bg-accent text-foreground"
|
|
640
|
+
: "text-muted-foreground hover:text-foreground hover:bg-accent"), children: [_jsx("span", { className: "truncate pr-1", children: tab.label }), tab.status === "running" && (_jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-muted-foreground/50 shrink-0 animate-pulse" })), _jsx("span", { role: "button", onClick: (e) => {
|
|
641
|
+
e.stopPropagation();
|
|
642
|
+
closeTab(tab.id);
|
|
643
|
+
}, className: "agent-tab-close flex items-center justify-end text-muted-foreground hover:!text-foreground", style: {
|
|
644
|
+
position: "absolute",
|
|
645
|
+
right: 0,
|
|
646
|
+
top: 0,
|
|
647
|
+
bottom: 0,
|
|
648
|
+
width: 28,
|
|
649
|
+
paddingRight: 6,
|
|
650
|
+
borderRadius: "0 6px 6px 0",
|
|
651
|
+
background: "linear-gradient(to right, transparent, hsl(var(--accent)) 40%)",
|
|
652
|
+
}, children: _jsx(IconX, { size: 8 }) })] }, tab.id));
|
|
653
|
+
}) }), _jsxs("div", { className: "flex items-center gap-px shrink-0 ml-auto", children: [_jsx("button", { onClick: addTab, className: "flex h-6 w-6 items-center justify-center rounded text-muted-foreground/60 hover:text-foreground hover:bg-accent/50", title: "New chat", children: _jsx(IconPlus, { size: 12 }) }), _jsx("button", { onClick: () => setShowHistory(!showHistory), className: cn("flex h-6 w-6 items-center justify-center rounded text-muted-foreground/60 hover:text-foreground hover:bg-accent/50", showHistory && "bg-accent text-foreground"), title: "Chat history", children: _jsx(IconHistory, { size: 12 }) })] })] }), hasSubTabs && (_jsx("div", { className: "flex items-center px-1 py-0.5 border-b border-border shrink-0 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("button", { onClick: () => switchThread(focusParentId), className: cn("flex shrink-0 items-center gap-1 rounded-md px-2 py-1 text-[10px] font-medium cursor-pointer", activeThreadId === focusParentId
|
|
654
|
+
? "bg-accent text-foreground"
|
|
655
|
+
: "text-muted-foreground hover:bg-accent hover:text-foreground"), children: "Main" }), childTabs.map((tab) => (_jsxs("button", { ref: tab.id === activeThreadId
|
|
656
|
+
? activeTabRefCb
|
|
657
|
+
: undefined, onClick: () => switchThread(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-[130px]", tab.id === activeThreadId
|
|
658
|
+
? "bg-accent text-foreground"
|
|
659
|
+
: "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: "w-1 h-1 rounded-full bg-muted-foreground/50 shrink-0 animate-pulse" })), _jsx("span", { role: "button", onClick: (e) => {
|
|
660
|
+
e.stopPropagation();
|
|
661
|
+
closeTab(tab.id);
|
|
662
|
+
}, className: "agent-tab-close flex items-center justify-end text-muted-foreground hover:!text-foreground", style: {
|
|
663
|
+
position: "absolute",
|
|
664
|
+
right: 0,
|
|
665
|
+
top: 0,
|
|
666
|
+
bottom: 0,
|
|
667
|
+
width: 24,
|
|
668
|
+
paddingRight: 4,
|
|
669
|
+
borderRadius: "0 6px 6px 0",
|
|
670
|
+
background: "linear-gradient(to right, transparent, hsl(var(--accent)) 40%)",
|
|
671
|
+
}, children: _jsx(IconX, { size: 8 }) })] }, tab.id)))] }) }))] }));
|
|
672
|
+
})()
|
|
673
|
+
: null, _jsxs("div", { className: "relative flex-1 flex flex-col min-h-0", children: [renderOverlay ? renderOverlay(headerProps) : null, showHistory && (_jsx(HistoryPopover, { threads: threads, openTabIds: new Set(openTabIds), onSelect: openFromHistory, onClose: () => setShowHistory(false), onSearch: searchThreads })), helpVisible && _jsx(HelpPopover, { onClose: () => setHelpVisible(false) }), [...new Set(openTabIds)]
|
|
674
|
+
.filter((tabId) => tabId === activeThreadId || mountedTabsRef.current.has(tabId))
|
|
675
|
+
.map((tabId) => (_jsx("div", { className: "flex-1 min-h-0", style: {
|
|
394
676
|
display: contentHidden || tabId !== activeThreadId ? "none" : "flex",
|
|
395
677
|
}, children: _jsx(AssistantChat, { ...props, ref: (handle) => {
|
|
396
678
|
if (handle) {
|
|
@@ -399,6 +681,6 @@ export function MultiTabAssistantChat({ showTabBar = true, renderHeader, renderO
|
|
|
399
681
|
else {
|
|
400
682
|
chatRefs.current.delete(tabId);
|
|
401
683
|
}
|
|
402
|
-
}, threadId: tabId, tabId: tabId, apiUrl: apiUrl, isNewThread: newThreadIds.current.has(tabId), onMessageCountChange: (count) => setMessageCounts((prev) => prev[tabId] === count ? prev : { ...prev, [tabId]: count }), onSaveThread:
|
|
684
|
+
}, threadId: tabId, tabId: tabId, apiUrl: apiUrl, isNewThread: newThreadIds.current.has(tabId), onMessageCountChange: (count) => setMessageCounts((prev) => prev[tabId] === count ? prev : { ...prev, [tabId]: count }), onSaveThread: handleSaveThread, onGenerateTitle: handleGenerateTitle, onSlashCommand: handleSlashCommand }) }, tabId)))] })] }));
|
|
403
685
|
}
|
|
404
686
|
//# sourceMappingURL=MultiTabAssistantChat.js.map
|