@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
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agent-engines
|
|
3
|
+
description: >-
|
|
4
|
+
How to inspect and configure the AI engine (model provider) powering the
|
|
5
|
+
agent. Use when the user asks to switch models, check which engine is active,
|
|
6
|
+
test a new provider, or register a custom engine.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Agent Engines
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
The framework supports pluggable AI engines beneath the agent loop. The **Anthropic engine** is the default and best-in-class path (Claude models). Additional engines can be added via the Vercel AI SDK (OpenAI, Google Gemini, Groq, Mistral, Cohere, Ollama).
|
|
14
|
+
|
|
15
|
+
## Available Tools
|
|
16
|
+
|
|
17
|
+
| Tool | Purpose |
|
|
18
|
+
|---|---|
|
|
19
|
+
| `list-agent-engines` | List all registered engines, their capabilities, and the current selection |
|
|
20
|
+
| `set-agent-engine` | Set the active engine and model (persisted in settings) |
|
|
21
|
+
| `test-agent-engine` | Send a trivial prompt to verify the engine works (connectivity + API key) |
|
|
22
|
+
|
|
23
|
+
## Checking the Current Engine
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
list-agent-engines
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Returns the registry of all engines (name, label, capabilities, supported models) plus the currently active engine and model.
|
|
30
|
+
|
|
31
|
+
## Switching Engines
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
set-agent-engine --engine "ai-sdk:openai" --model "gpt-4o"
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Changes take effect on the next conversation. The setting is persisted via the settings store (`agent-engine` key).
|
|
38
|
+
|
|
39
|
+
Resolution order (highest priority first):
|
|
40
|
+
1. Explicit `engine` option passed to `createAgentChatPlugin()` in the server plugin
|
|
41
|
+
2. Settings store (`agent-engine` key)
|
|
42
|
+
3. `AGENT_ENGINE` environment variable
|
|
43
|
+
4. Default: `"anthropic"` (requires `ANTHROPIC_API_KEY`)
|
|
44
|
+
|
|
45
|
+
## Testing a New Engine
|
|
46
|
+
|
|
47
|
+
Before switching, verify the engine is working:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
test-agent-engine --engine "ai-sdk:openai" --model "gpt-4o"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Returns `{ ok, latencyMs, response, capabilities }`. If `ok: false`, the error message explains what's wrong (missing API key, package not installed, etc.).
|
|
54
|
+
|
|
55
|
+
## Built-in Engines
|
|
56
|
+
|
|
57
|
+
| Engine Name | Provider | Requires |
|
|
58
|
+
|---|---|---|
|
|
59
|
+
| `anthropic` | Anthropic Claude SDK | `ANTHROPIC_API_KEY` |
|
|
60
|
+
| `ai-sdk:anthropic` | Claude via Vercel AI SDK | `ANTHROPIC_API_KEY` |
|
|
61
|
+
| `ai-sdk:openai` | OpenAI via Vercel AI SDK | `OPENAI_API_KEY` |
|
|
62
|
+
| `ai-sdk:google` | Google Gemini via Vercel AI SDK | `GOOGLE_GENERATIVE_AI_API_KEY` |
|
|
63
|
+
| `ai-sdk:groq` | Groq LPU via Vercel AI SDK | `GROQ_API_KEY` |
|
|
64
|
+
| `ai-sdk:mistral` | Mistral via Vercel AI SDK | `MISTRAL_API_KEY` |
|
|
65
|
+
| `ai-sdk:cohere` | Cohere via Vercel AI SDK | `COHERE_API_KEY` |
|
|
66
|
+
| `ai-sdk:ollama` | Local Ollama via Vercel AI SDK | None (local) |
|
|
67
|
+
|
|
68
|
+
## Engine Capabilities
|
|
69
|
+
|
|
70
|
+
Each engine advertises its capabilities:
|
|
71
|
+
|
|
72
|
+
| Capability | Anthropic | AI SDK: Anthropic | AI SDK: OpenAI | AI SDK: Google |
|
|
73
|
+
|---|---|---|---|---|
|
|
74
|
+
| `thinking` | ✓ | ✓ | ✗ | ✓ |
|
|
75
|
+
| `promptCaching` | ✓ | ✓ | ✗ | ✗ |
|
|
76
|
+
| `vision` | ✓ | ✓ | ✓ | ✓ |
|
|
77
|
+
| `computerUse` | ✓ | ✗ | ✗ | ✗ |
|
|
78
|
+
| `parallelToolCalls` | ✓ | ✓ | ✓ | ✓ |
|
|
79
|
+
|
|
80
|
+
## Anthropic-Exclusive Features
|
|
81
|
+
|
|
82
|
+
When using the `anthropic` engine (or `ai-sdk:anthropic`):
|
|
83
|
+
|
|
84
|
+
- **Prompt caching** is applied automatically to the system prompt — cutting latency and cost on repeated turns.
|
|
85
|
+
- **Extended thinking** can be enabled via `providerOptions.anthropic.thinking` — the agent reasons longer before responding.
|
|
86
|
+
|
|
87
|
+
These features are silently ignored when a non-Anthropic engine is active (capability-gated, no breakage).
|
|
88
|
+
|
|
89
|
+
## Registering a Custom Engine
|
|
90
|
+
|
|
91
|
+
Register custom engines in a server plugin at startup:
|
|
92
|
+
|
|
93
|
+
```ts
|
|
94
|
+
// server/plugins/my-engine.ts
|
|
95
|
+
import { registerAgentEngine } from "@agent-native/core/server";
|
|
96
|
+
|
|
97
|
+
registerAgentEngine({
|
|
98
|
+
name: "my-engine",
|
|
99
|
+
label: "My Custom Engine",
|
|
100
|
+
description: "...",
|
|
101
|
+
capabilities: {
|
|
102
|
+
thinking: false,
|
|
103
|
+
promptCaching: false,
|
|
104
|
+
vision: false,
|
|
105
|
+
computerUse: false,
|
|
106
|
+
parallelToolCalls: true,
|
|
107
|
+
},
|
|
108
|
+
defaultModel: "my-model-v1",
|
|
109
|
+
supportedModels: ["my-model-v1", "my-model-v2"],
|
|
110
|
+
requiredEnvVars: ["MY_ENGINE_API_KEY"],
|
|
111
|
+
create: (config) => new MyEngine(config),
|
|
112
|
+
});
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
After registering, the engine appears in `list-agent-engines` output and can be selected via `set-agent-engine`.
|
|
116
|
+
|
|
117
|
+
## Env Vars Reference
|
|
118
|
+
|
|
119
|
+
| Variable | Purpose |
|
|
120
|
+
|---|---|
|
|
121
|
+
| `ANTHROPIC_API_KEY` | Required for `anthropic` and `ai-sdk:anthropic` engines |
|
|
122
|
+
| `OPENAI_API_KEY` | Required for `ai-sdk:openai` |
|
|
123
|
+
| `GOOGLE_GENERATIVE_AI_API_KEY` | Required for `ai-sdk:google` |
|
|
124
|
+
| `GROQ_API_KEY` | Required for `ai-sdk:groq` |
|
|
125
|
+
| `MISTRAL_API_KEY` | Required for `ai-sdk:mistral` |
|
|
126
|
+
| `COHERE_API_KEY` | Required for `ai-sdk:cohere` |
|
|
127
|
+
| `AGENT_ENGINE` | Default engine name (overridden by settings store) |
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: real-time-collab
|
|
3
|
+
description: >-
|
|
4
|
+
How to enable multi-user collaborative editing with Yjs CRDT, TipTap
|
|
5
|
+
Collaboration extension, live cursors, and agent-driven edits.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Real-Time Collaboration
|
|
9
|
+
|
|
10
|
+
The framework provides a Yjs-based collaborative editing system in `@agent-native/core/collab`. Multiple users can edit the same document simultaneously with live cursor positions, and the AI agent can make surgical edits that appear in real-time.
|
|
11
|
+
|
|
12
|
+
## Architecture
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
User A (TipTap + Collaboration ext) ←→ Y.XmlFragment ←→ Server (_collab_docs table)
|
|
16
|
+
User B (TipTap + Collaboration ext) ←→ Y.XmlFragment ←→ ↑
|
|
17
|
+
Agent (edit-document action) ←→ search-replace endpoint ─┘
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
- **Yjs Y.Doc** stores the document as a `Y.XmlFragment` (ProseMirror node tree)
|
|
21
|
+
- **TipTap's Collaboration extension** binds the editor to the Y.XmlFragment via `ySyncPlugin`
|
|
22
|
+
- **CollaborationCaret extension** renders remote users' cursors with names and colors
|
|
23
|
+
- **Polling** (every 2s) syncs Y.Doc updates and awareness state between clients and server
|
|
24
|
+
- **SQL `_collab_docs` table** persists Yjs state (base64-encoded binary)
|
|
25
|
+
|
|
26
|
+
## Enabling Collaboration in a Template
|
|
27
|
+
|
|
28
|
+
### 1. Install dependencies
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
pnpm add @tiptap/extension-collaboration @tiptap/extension-collaboration-caret @tiptap/y-tiptap --filter your-template
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### 2. Add Vite optimizeDeps
|
|
35
|
+
|
|
36
|
+
In `vite.config.ts`:
|
|
37
|
+
```ts
|
|
38
|
+
export default defineConfig({
|
|
39
|
+
plugins: [reactRouter()],
|
|
40
|
+
optimizeDeps: {
|
|
41
|
+
include: [
|
|
42
|
+
"yjs",
|
|
43
|
+
"y-protocols/awareness",
|
|
44
|
+
"@tiptap/extension-collaboration",
|
|
45
|
+
"@tiptap/extension-collaboration-caret",
|
|
46
|
+
"@tiptap/y-tiptap",
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
This prevents Vite from re-bundling TipTap in incompatible ways during dev.
|
|
53
|
+
|
|
54
|
+
### 3. Add the collab server plugin
|
|
55
|
+
|
|
56
|
+
Create `server/plugins/collab.ts`:
|
|
57
|
+
```ts
|
|
58
|
+
import { createCollabPlugin } from "@agent-native/core/server";
|
|
59
|
+
export default createCollabPlugin({
|
|
60
|
+
table: "your_table",
|
|
61
|
+
contentColumn: "content",
|
|
62
|
+
idColumn: "id",
|
|
63
|
+
autoSeed: false, // Client-side seeding on first load
|
|
64
|
+
});
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
This mounts routes under `/_agent-native/collab/`:
|
|
68
|
+
- `GET /:docId/state` — fetch Y.Doc state
|
|
69
|
+
- `POST /:docId/update` — apply client update
|
|
70
|
+
- `POST /:docId/text` — apply full text (diff-based)
|
|
71
|
+
- `POST /:docId/search-replace` — surgical text find/replace in Y.XmlFragment
|
|
72
|
+
- `POST /:docId/awareness` — sync cursor/presence state
|
|
73
|
+
|
|
74
|
+
### 4. Use the `useCollaborativeDoc` hook
|
|
75
|
+
|
|
76
|
+
```ts
|
|
77
|
+
import { useCollaborativeDoc, generateTabId } from "@agent-native/core/client";
|
|
78
|
+
|
|
79
|
+
const TAB_ID = generateTabId();
|
|
80
|
+
|
|
81
|
+
const { ydoc, awareness, isLoading, activeUsers } = useCollaborativeDoc({
|
|
82
|
+
docId: documentId,
|
|
83
|
+
requestSource: TAB_ID,
|
|
84
|
+
user: { name: "Steve", email: "steve@example.com", color: "#60a5fa" },
|
|
85
|
+
});
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
The hook:
|
|
89
|
+
- Creates a stable `Y.Doc` per docId (never changes identity)
|
|
90
|
+
- Fetches server state and applies it
|
|
91
|
+
- Sends local updates to server
|
|
92
|
+
- Polls for remote updates (every 2s)
|
|
93
|
+
- Tracks active users via awareness
|
|
94
|
+
|
|
95
|
+
### 5. Add Collaboration extension to TipTap
|
|
96
|
+
|
|
97
|
+
```ts
|
|
98
|
+
import Collaboration from "@tiptap/extension-collaboration";
|
|
99
|
+
import CollaborationCaret from "@tiptap/extension-collaboration-caret";
|
|
100
|
+
import { Awareness } from "y-protocols/awareness";
|
|
101
|
+
|
|
102
|
+
// Create awareness locally (must use same y-protocols as the caret extension)
|
|
103
|
+
const awareness = new Awareness(ydoc);
|
|
104
|
+
awareness.setLocalStateField("user", { name, color });
|
|
105
|
+
|
|
106
|
+
const editor = useEditor({
|
|
107
|
+
extensions: [
|
|
108
|
+
StarterKit.configure({ history: false }), // Disable history — Yjs handles undo
|
|
109
|
+
Collaboration.configure({ document: ydoc }),
|
|
110
|
+
CollaborationCaret.configure({
|
|
111
|
+
provider: { awareness },
|
|
112
|
+
user: { name, color },
|
|
113
|
+
}),
|
|
114
|
+
// ... other extensions
|
|
115
|
+
],
|
|
116
|
+
content: initialContent, // Seeds Y.XmlFragment on first load
|
|
117
|
+
});
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Important:** Disable `history` in StarterKit when using Collaboration — Yjs handles undo/redo.
|
|
121
|
+
|
|
122
|
+
### 6. Seed the Y.XmlFragment
|
|
123
|
+
|
|
124
|
+
The Collaboration extension does NOT auto-seed from the `content` prop. You must seed manually:
|
|
125
|
+
|
|
126
|
+
```ts
|
|
127
|
+
useEffect(() => {
|
|
128
|
+
if (!editor || !ydoc || !content) return;
|
|
129
|
+
const fragment = ydoc.getXmlFragment("default");
|
|
130
|
+
if (fragment.length === 0) {
|
|
131
|
+
editor.commands.setContent(parseContent(content));
|
|
132
|
+
}
|
|
133
|
+
}, [editor, ydoc, content]);
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**Critical:** Guard against saving empty content back to SQL when the editor is in collab mode but hasn't been seeded yet:
|
|
137
|
+
|
|
138
|
+
```ts
|
|
139
|
+
onUpdate: ({ editor }) => {
|
|
140
|
+
const md = editor.storage.markdown.getMarkdown();
|
|
141
|
+
if (!md.trim() && ydoc) return; // Don't save empty during seeding
|
|
142
|
+
onChange(md);
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Agent Edits via `edit-document`
|
|
147
|
+
|
|
148
|
+
The `edit-document` action uses search-and-replace:
|
|
149
|
+
```bash
|
|
150
|
+
pnpm action edit-document --id <docId> --find "old text" --replace "new text"
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
When collab state exists, the action calls the server's `search-replace` endpoint which:
|
|
154
|
+
1. Walks the Y.XmlFragment tree
|
|
155
|
+
2. Finds the text in Y.XmlText nodes
|
|
156
|
+
3. Applies minimal delete/insert operations
|
|
157
|
+
4. Emits a Yjs update via the poll system
|
|
158
|
+
5. Client receives the update → ySyncPlugin applies a targeted ProseMirror transaction → cursor preserved
|
|
159
|
+
|
|
160
|
+
**Important:** Actions run in a separate process, so they must use the HTTP endpoint (not the collab module directly) to emit updates to the server's poll system.
|
|
161
|
+
|
|
162
|
+
## Key Modules
|
|
163
|
+
|
|
164
|
+
| Module | Path | Purpose |
|
|
165
|
+
|--------|------|---------|
|
|
166
|
+
| `@agent-native/core/collab` | `packages/core/src/collab/` | Server-side Yjs management |
|
|
167
|
+
| `useCollaborativeDoc` | `packages/core/src/collab/client.ts` | Client hook |
|
|
168
|
+
| `createCollabPlugin` | `packages/core/src/server/collab-plugin.ts` | Route mounting |
|
|
169
|
+
| `searchAndReplace` | `packages/core/src/collab/ydoc-manager.ts` | Y.XmlFragment text mutation |
|
|
170
|
+
|
|
171
|
+
## Common Pitfalls
|
|
172
|
+
|
|
173
|
+
1. **TipTap version mismatch** — All `@tiptap/*` packages must be the same version. The Collaboration extension requires `editor.utils` which was added in v3.22.2.
|
|
174
|
+
|
|
175
|
+
2. **Empty editor on first load** — The Collaboration extension uses Y.XmlFragment as the source of truth. If the fragment is empty, the editor shows empty. Seed manually (see above).
|
|
176
|
+
|
|
177
|
+
3. **Data loss from empty saves** — The `onUpdate` handler fires when the editor initializes with an empty Y.XmlFragment. If this empty content is saved to SQL, it overwrites the real content. Always guard against saving empty content in collab mode.
|
|
178
|
+
|
|
179
|
+
4. **Stale content on document switch** — Use `key={documentId}` on the editor component to force a full remount when switching documents. This ensures the Y.Doc, seeding, and editor state are all fresh.
|
|
180
|
+
|
|
181
|
+
5. **Separate process for actions** — Actions run via `pnpm action` in a new Node.js process. The in-memory EventEmitter in the action process doesn't reach the dev server's poll system. Use HTTP endpoints for collab operations from actions.
|
|
182
|
+
|
|
183
|
+
6. **Vite dep optimization** — Adding Yjs-related packages to a template changes Vite's dependency bundling, which can break TipTap's React integration. Always add them to `optimizeDeps.include`.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security
|
|
3
|
+
description: >-
|
|
4
|
+
Data security model, user/org scoping, and auth patterns. Use when adding
|
|
5
|
+
tables with user data, implementing multi-user features, setting up A2A
|
|
6
|
+
cross-app calls, or reviewing data access patterns.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Security & Data Scoping
|
|
10
|
+
|
|
11
|
+
## How Data Isolation Works
|
|
12
|
+
|
|
13
|
+
In production, the framework enforces data isolation at the SQL level. Agents and users can only see and modify data they own. This is automatic — you don't write WHERE clauses yourself.
|
|
14
|
+
|
|
15
|
+
### Per-User Scoping (`owner_email`)
|
|
16
|
+
|
|
17
|
+
Every table with user-specific data **must** have an `owner_email` text column.
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
import { table, text, integer } from "@agent-native/core/db/schema";
|
|
21
|
+
|
|
22
|
+
export const notes = table("notes", {
|
|
23
|
+
id: text("id").primaryKey(),
|
|
24
|
+
title: text("title").notNull(),
|
|
25
|
+
content: text("content"),
|
|
26
|
+
owner_email: text("owner_email").notNull(), // REQUIRED for user data
|
|
27
|
+
});
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**What happens automatically:**
|
|
31
|
+
- `db-query` creates temporary views with `WHERE owner_email = <current user>`
|
|
32
|
+
- `db-exec` INSERT statements get `owner_email` auto-injected
|
|
33
|
+
- `db-exec` UPDATE/DELETE statements are scoped to the current user's rows
|
|
34
|
+
- The current user comes from `AGENT_USER_EMAIL` (set from the auth session)
|
|
35
|
+
|
|
36
|
+
### Per-Org Scoping (`org_id`)
|
|
37
|
+
|
|
38
|
+
For multi-user apps where teams share data, add an `org_id` column:
|
|
39
|
+
|
|
40
|
+
```ts
|
|
41
|
+
export const projects = table("projects", {
|
|
42
|
+
id: text("id").primaryKey(),
|
|
43
|
+
name: text("name").notNull(),
|
|
44
|
+
owner_email: text("owner_email").notNull(), // who created it
|
|
45
|
+
org_id: text("org_id").notNull(), // which org it belongs to
|
|
46
|
+
});
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
When both columns are present, queries are scoped by **both**: `WHERE owner_email = ? AND org_id = ?`.
|
|
50
|
+
|
|
51
|
+
The `org_id` comes from `AGENT_ORG_ID` which is automatically set from the user's active organization in Better Auth.
|
|
52
|
+
|
|
53
|
+
### Validation
|
|
54
|
+
|
|
55
|
+
Run `pnpm action db-check-scoping` to verify all tables have proper ownership columns. Use `--require-org` for multi-org apps.
|
|
56
|
+
|
|
57
|
+
## Auth Model
|
|
58
|
+
|
|
59
|
+
### Better Auth (Default)
|
|
60
|
+
|
|
61
|
+
The framework uses Better Auth for authentication. It's always on by default — users create an account on first visit.
|
|
62
|
+
|
|
63
|
+
**Environment variables:**
|
|
64
|
+
- `BETTER_AUTH_SECRET` — signing key (auto-generated if not set)
|
|
65
|
+
- `GOOGLE_CLIENT_ID` + `GOOGLE_CLIENT_SECRET` — enable Google OAuth
|
|
66
|
+
- `GITHUB_CLIENT_ID` + `GITHUB_CLIENT_SECRET` — enable GitHub OAuth
|
|
67
|
+
- `AUTH_MODE=local` — disable auth for solo local dev (escape hatch)
|
|
68
|
+
|
|
69
|
+
### Organizations
|
|
70
|
+
|
|
71
|
+
Better Auth's organization plugin is built-in. Every app supports:
|
|
72
|
+
- Creating organizations
|
|
73
|
+
- Inviting members (owner/admin/member roles)
|
|
74
|
+
- Switching active organization
|
|
75
|
+
- Per-org data scoping via `org_id`
|
|
76
|
+
|
|
77
|
+
The active organization ID flows from `session.orgId` → `AGENT_ORG_ID` → SQL scoping automatically.
|
|
78
|
+
|
|
79
|
+
### ACCESS_TOKEN (Legacy)
|
|
80
|
+
|
|
81
|
+
For simple deployments, set `ACCESS_TOKEN` or `ACCESS_TOKENS` (comma-separated) as environment variables. This provides a shared token for all users — no per-user identity.
|
|
82
|
+
|
|
83
|
+
## A2A Security
|
|
84
|
+
|
|
85
|
+
### Cross-App Identity
|
|
86
|
+
|
|
87
|
+
When apps call each other via A2A, they need to verify identity. Set the same `A2A_SECRET` on all apps that need to trust each other:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# On both apps
|
|
91
|
+
A2A_SECRET=your-shared-secret-at-least-32-chars
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
**How it works:**
|
|
95
|
+
1. App A signs a JWT with `A2A_SECRET` containing `sub: "steve@builder.io"`
|
|
96
|
+
2. App B receives the call, verifies the JWT signature
|
|
97
|
+
3. App B sets `AGENT_USER_EMAIL` from the verified `sub` claim
|
|
98
|
+
4. Data scoping applies — App B only shows steve's data
|
|
99
|
+
|
|
100
|
+
Without `A2A_SECRET`, A2A calls are unauthenticated (fine for local dev, not production).
|
|
101
|
+
|
|
102
|
+
## Rules for Agents
|
|
103
|
+
|
|
104
|
+
1. **Every new table with user data must have `owner_email`.** No exceptions.
|
|
105
|
+
2. **Never bypass scoping** — don't raw-query tables without going through `db-query`/`db-exec`.
|
|
106
|
+
3. **Don't expose user data in application state** — application state is per-session, not per-user. Use SQL tables with `owner_email` for persistent user data.
|
|
107
|
+
4. **Don't hardcode emails** — use `AGENT_USER_EMAIL` environment variable.
|
|
108
|
+
5. **Test with multiple users** — create two accounts and verify data isolation.
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: storing-data
|
|
3
|
+
description: >-
|
|
4
|
+
How and where to store application data. Use when adding new data models,
|
|
5
|
+
deciding between settings vs Drizzle tables, reading/writing app config,
|
|
6
|
+
or working with application state.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Storing Data
|
|
10
|
+
|
|
11
|
+
## Where Data Goes
|
|
12
|
+
|
|
13
|
+
All data lives in one SQLite database (`data/app.db`). In production, set `DATABASE_URL` to point to Turso, Neon, Supabase, or D1 — same code, no changes needed.
|
|
14
|
+
|
|
15
|
+
There are three storage layers, each for a different kind of data:
|
|
16
|
+
|
|
17
|
+
### 1. Settings — app configuration
|
|
18
|
+
|
|
19
|
+
Key-value store for persistent config that the user or agent can change. Theme, preferences, integration API keys, availability schedules.
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
import { getSetting, putSetting } from "@agent-native/core/settings";
|
|
23
|
+
|
|
24
|
+
// Read (returns null if not set)
|
|
25
|
+
const prefs = await getSetting("user-preferences");
|
|
26
|
+
|
|
27
|
+
// Write (creates or replaces)
|
|
28
|
+
await putSetting("user-preferences", { theme: "dark", density: "comfortable" });
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
From scripts:
|
|
32
|
+
```ts
|
|
33
|
+
import { readSetting, writeSetting } from "@agent-native/core/settings";
|
|
34
|
+
const prefs = await readSetting("user-preferences");
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
SSE: writes automatically notify the UI via `{ source: "settings", type: "change", key }`.
|
|
38
|
+
|
|
39
|
+
### 2. Application State — ephemeral UI state
|
|
40
|
+
|
|
41
|
+
For state the agent and UI share in real-time: what the user is looking at, compose drafts, navigation commands. Scoped by session — cleared between sessions.
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
import { readAppState, writeAppState, deleteAppState, listAppState } from "@agent-native/core/application-state";
|
|
45
|
+
|
|
46
|
+
// Write state (UI updates instantly via SSE)
|
|
47
|
+
await writeAppState("navigate", { view: "inbox", threadId: "t-123" });
|
|
48
|
+
|
|
49
|
+
// Read state
|
|
50
|
+
const nav = await readAppState("navigation");
|
|
51
|
+
|
|
52
|
+
// List by prefix (e.g., all compose drafts)
|
|
53
|
+
const drafts = await listAppState("compose-");
|
|
54
|
+
|
|
55
|
+
// Delete (one-shot commands: UI reads, then agent or UI deletes)
|
|
56
|
+
await deleteAppState("navigate");
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
SSE: writes automatically notify the UI via `{ source: "app-state", type: "change", key }`.
|
|
60
|
+
|
|
61
|
+
### 3. Drizzle Tables — structured domain data
|
|
62
|
+
|
|
63
|
+
For data with schemas, relationships, and queries: forms, bookings, emails, compositions. Define tables in `server/db/schema.ts` using Drizzle ORM.
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
import { table, text, integer } from "@agent-native/core/db/schema";
|
|
67
|
+
|
|
68
|
+
export const bookings = table("bookings", {
|
|
69
|
+
id: text("id").primaryKey(),
|
|
70
|
+
name: text("name").notNull(),
|
|
71
|
+
email: text("email").notNull(),
|
|
72
|
+
startTime: integer("start_time").notNull(),
|
|
73
|
+
endTime: integer("end_time").notNull(),
|
|
74
|
+
});
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Query via `getDb()` singleton from `server/db/index.ts`.
|
|
78
|
+
|
|
79
|
+
### 4. OAuth Tokens — credentials
|
|
80
|
+
|
|
81
|
+
For OAuth tokens acquired at runtime (Google, etc.). Never store these in settings — use the dedicated encrypted store.
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
import { saveOAuthTokens, getOAuthTokens, listOAuthAccounts } from "@agent-native/core/oauth-tokens";
|
|
85
|
+
|
|
86
|
+
await saveOAuthTokens("google", "user@gmail.com", { access_token: "...", refresh_token: "..." });
|
|
87
|
+
const tokens = await getOAuthTokens("google", "user@gmail.com");
|
|
88
|
+
const accounts = await listOAuthAccounts("google");
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Which Layer to Use
|
|
92
|
+
|
|
93
|
+
| Data | Layer | Why |
|
|
94
|
+
|------|-------|-----|
|
|
95
|
+
| User preferences, theme, config | Settings | Persistent KV, SSE notifications, simple read/write |
|
|
96
|
+
| What the user sees on screen | Application State | Ephemeral, real-time sync, agent ↔ UI bridge |
|
|
97
|
+
| Compose drafts, wizard steps | Application State | Temporary, deleted when done |
|
|
98
|
+
| Domain records (forms, bookings) | Drizzle table | Needs schema, queries, relationships |
|
|
99
|
+
| OAuth refresh tokens | OAuth Tokens | Secure, per-provider, per-account |
|
|
100
|
+
|
|
101
|
+
## Environment Variables
|
|
102
|
+
|
|
103
|
+
Infrastructure config stays in `.env` — these differ per deployment:
|
|
104
|
+
|
|
105
|
+
- `DATABASE_URL` — database connection (default: `file:./data/app.db`)
|
|
106
|
+
- `DATABASE_AUTH_TOKEN` — for remote databases
|
|
107
|
+
- `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` — OAuth app credentials
|
|
108
|
+
- `ACCESS_TOKEN` — production auth token
|
|
109
|
+
|
|
110
|
+
Everything else (user settings, tokens, app state) goes in SQL.
|
|
@@ -1,4 +1,17 @@
|
|
|
1
1
|
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"UserPromptSubmit": [
|
|
4
|
+
{
|
|
5
|
+
"hooks": [
|
|
6
|
+
{
|
|
7
|
+
"type": "command",
|
|
8
|
+
"command": "pnpm action view-screen 2>/dev/null || echo '{\"view\": \"unknown\"}'",
|
|
9
|
+
"timeout": 10
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
},
|
|
2
15
|
"permissions": {
|
|
3
16
|
"allow": [
|
|
4
17
|
"Read",
|
|
@@ -52,18 +52,33 @@ The `navigation` key is written by the UI whenever the route changes. The `navig
|
|
|
52
52
|
|
|
53
53
|
## Agent Operations
|
|
54
54
|
|
|
55
|
-
**Always
|
|
55
|
+
**Always know what the user is currently viewing before you edit anything.** The user's view can change mid-conversation. Stale IDs lead to editing the wrong record.
|
|
56
|
+
|
|
57
|
+
### If you are the built-in agent-chat agent
|
|
58
|
+
|
|
59
|
+
A `<current-screen>` block is auto-injected into every user message with the current view, IDs, and selected item. You can trust it for the first action of a turn without calling `view-screen`. If the user says "this" or "now do X" after several tool calls, the user may have navigated — call `view-screen` again for a fresh snapshot.
|
|
60
|
+
|
|
61
|
+
### If you are an external CLI agent (Claude Code, Codex, Cursor, etc.)
|
|
62
|
+
|
|
63
|
+
You do NOT get auto-injected screen state. **Call `pnpm action view-screen` at the start of every task and before any edit** so you're acting on the IDs the user currently sees, not what was open earlier. Do not rely on cached context from previous turns.
|
|
56
64
|
|
|
57
65
|
### Actions
|
|
58
66
|
|
|
59
|
-
| Action | Args
|
|
60
|
-
| ------------- |
|
|
61
|
-
| `view-screen` |
|
|
62
|
-
| `navigate` | `--view <name>` or `--path <url>`
|
|
63
|
-
| `hello` | `[--name <name>]`
|
|
64
|
-
| `db-schema` |
|
|
65
|
-
| `db-query` | `--sql "SELECT ..."`
|
|
66
|
-
| `db-exec` | `--sql "INSERT ..."`
|
|
67
|
+
| Action | Args | Purpose |
|
|
68
|
+
| ------------- | ------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------- |
|
|
69
|
+
| `view-screen` | | See current UI state |
|
|
70
|
+
| `navigate` | `--view <name>` or `--path <url>` | Navigate the UI |
|
|
71
|
+
| `hello` | `[--name <name>]` | Example script |
|
|
72
|
+
| `db-schema` | | Show all tables, columns, types |
|
|
73
|
+
| `db-query` | `--sql "SELECT ..."` | Run a SELECT query |
|
|
74
|
+
| `db-exec` | `--sql "INSERT ..."` | Run INSERT/UPDATE/DELETE (use for short/multi-column writes) |
|
|
75
|
+
| `db-patch` | `--table <t> --column <c> --where "<clause>" --find "<old>" --replace "<new>"` | Surgical search/replace on a large text column — sends a diff instead of the full value |
|
|
76
|
+
|
|
77
|
+
**Pick the right SQL tool:**
|
|
78
|
+
|
|
79
|
+
- Use `db-exec UPDATE` for short columns, multi-column writes, or computed updates.
|
|
80
|
+
- Use `db-patch` when you only need to tweak a small slice of a **large** text/JSON column (documents, slide HTML, dashboard/form JSON). It saves tokens by sending `{find, replace}` instead of re-transmitting the whole column. Targets exactly one row per call — narrow `--where` by primary key. Supports `--edits '[{find,replace},...]'` for batch edits and `--all` for replace-every-occurrence.
|
|
81
|
+
- If a template-specific action exists (e.g. `edit-document`, `update-slide`), prefer it — those also push live updates to any open collaborative editor.
|
|
67
82
|
|
|
68
83
|
## Skills
|
|
69
84
|
|
|
@@ -78,6 +93,7 @@ Skills in `.agents/skills/` provide detailed guidance for each architectural rul
|
|
|
78
93
|
| `self-modifying-code` | Before editing source, components, or styles |
|
|
79
94
|
| `capture-learnings` | Before recording user preferences or corrections |
|
|
80
95
|
| `frontend-design` | Before building or restyling any UI component, page, or layout |
|
|
96
|
+
| `agent-engines` | Before switching LLM providers or registering a custom engine |
|
|
81
97
|
|
|
82
98
|
## When Adding Features
|
|
83
99
|
|
|
@@ -13,7 +13,7 @@ import type { ScriptTool } from "@agent-native/core";
|
|
|
13
13
|
|
|
14
14
|
export const tool: ScriptTool = {
|
|
15
15
|
description:
|
|
16
|
-
"See what the user is currently looking at on screen. Returns the current navigation state.
|
|
16
|
+
"See what the user is currently looking at on screen. Returns the current navigation state. Note: basic screen context is auto-included with each message — use this tool only when you need a detailed or refreshed snapshot.",
|
|
17
17
|
parameters: {
|
|
18
18
|
type: "object",
|
|
19
19
|
properties: {},
|
|
@@ -11,11 +11,11 @@
|
|
|
11
11
|
"script": "agent-native script"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@agent-native/core": "^0.
|
|
14
|
+
"@agent-native/core": "^0.6.0",
|
|
15
15
|
"@assistant-ui/react": "^0.12.19",
|
|
16
16
|
"@assistant-ui/react-markdown": "^0.12.6",
|
|
17
17
|
"@tabler/icons-react": "^3.40.0",
|
|
18
|
-
"h3": "^1.
|
|
18
|
+
"h3": "^2.0.1-rc.20",
|
|
19
19
|
"isbot": "^5"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global auth middleware — runs for ALL requests (page routes, API routes,
|
|
3
|
+
* framework routes). The auth plugin configures the guard; this middleware
|
|
4
|
+
* enforces it on every request.
|
|
5
|
+
*
|
|
6
|
+
* Without this, auth only runs for /_agent-native/* routes because the
|
|
7
|
+
* framework handler's middleware registry is scoped to that catch-all.
|
|
8
|
+
* Page routes (/, /settings) and API routes (/api/*) would bypass auth.
|
|
9
|
+
*/
|
|
10
|
+
import { defineEventHandler } from "h3";
|
|
11
|
+
import { runAuthGuard } from "@agent-native/core/server";
|
|
12
|
+
|
|
13
|
+
export default defineEventHandler(async (event) => {
|
|
14
|
+
return runAuthGuard(event);
|
|
15
|
+
});
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { defineEventHandler, toWebRequest } from "h3";
|
|
1
|
+
import { createH3SSRHandler } from "@agent-native/core/server/ssr-handler";
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
// virtual module provided by React Router Vite plugin
|
|
3
|
+
export default createH3SSRHandler(
|
|
6
4
|
() => import("virtual:react-router/server-build"),
|
|
7
5
|
);
|
|
8
|
-
|
|
9
|
-
export default defineEventHandler(async (event) => {
|
|
10
|
-
const webReq = toWebRequest(event);
|
|
11
|
-
return handler(webReq);
|
|
12
|
-
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSR entry point for Nitro.
|
|
3
|
+
*
|
|
4
|
+
* This wraps React Router's request handler so Nitro can use it as an
|
|
5
|
+
* SSR service. The file must be a real file (not a virtual module) so
|
|
6
|
+
* Nitro can resolve it during build.
|
|
7
|
+
*
|
|
8
|
+
* Similar to how TanStack Start provides a server.ts entry for Nitro.
|
|
9
|
+
*/
|
|
10
|
+
import { createRequestHandler } from "react-router";
|
|
11
|
+
|
|
12
|
+
const handler = createRequestHandler(
|
|
13
|
+
() => import("virtual:react-router/server-build"),
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
export default {
|
|
17
|
+
async fetch(request: Request) {
|
|
18
|
+
return handler(request);
|
|
19
|
+
},
|
|
20
|
+
};
|