@agent-native/core 0.4.1 → 0.4.3
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 +31 -0
- package/dist/adapters/convex/adapter.d.ts +24 -0
- package/dist/adapters/convex/adapter.d.ts.map +1 -0
- package/dist/adapters/convex/adapter.js +125 -0
- package/dist/adapters/convex/adapter.js.map +1 -0
- package/dist/adapters/convex/index.d.ts +4 -0
- package/dist/adapters/convex/index.d.ts.map +1 -0
- package/dist/adapters/convex/index.js +3 -0
- package/dist/adapters/convex/index.js.map +1 -0
- package/dist/adapters/drizzle/adapter.d.ts +36 -0
- package/dist/adapters/drizzle/adapter.d.ts.map +1 -0
- package/dist/adapters/drizzle/adapter.js +210 -0
- package/dist/adapters/drizzle/adapter.js.map +1 -0
- package/dist/adapters/drizzle/index.d.ts +3 -0
- package/dist/adapters/drizzle/index.d.ts.map +1 -0
- package/dist/adapters/drizzle/index.js +3 -0
- package/dist/adapters/drizzle/index.js.map +1 -0
- package/dist/adapters/drizzle/schema.d.ts +146 -0
- package/dist/adapters/drizzle/schema.d.ts.map +1 -0
- package/dist/adapters/drizzle/schema.js +20 -0
- package/dist/adapters/drizzle/schema.js.map +1 -0
- package/dist/adapters/firestore/adapter.d.ts +3 -2
- package/dist/adapters/firestore/adapter.d.ts.map +1 -1
- package/dist/adapters/firestore/adapter.js +23 -6
- package/dist/adapters/firestore/adapter.js.map +1 -1
- package/dist/adapters/supabase/adapter.d.ts +2 -1
- package/dist/adapters/supabase/adapter.d.ts.map +1 -1
- package/dist/adapters/supabase/adapter.js +4 -1
- package/dist/adapters/supabase/adapter.js.map +1 -1
- package/dist/adapters/sync/config.d.ts +22 -2
- package/dist/adapters/sync/config.d.ts.map +1 -1
- package/dist/adapters/sync/config.js +175 -16
- package/dist/adapters/sync/config.js.map +1 -1
- package/dist/adapters/sync/create-file-sync.d.ts +32 -0
- package/dist/adapters/sync/create-file-sync.d.ts.map +1 -0
- package/dist/adapters/sync/create-file-sync.js +218 -0
- package/dist/adapters/sync/create-file-sync.js.map +1 -0
- package/dist/adapters/sync/file-sync.d.ts +40 -6
- package/dist/adapters/sync/file-sync.d.ts.map +1 -1
- package/dist/adapters/sync/file-sync.js +442 -97
- package/dist/adapters/sync/file-sync.js.map +1 -1
- package/dist/adapters/sync/index.d.ts +3 -2
- package/dist/adapters/sync/index.d.ts.map +1 -1
- package/dist/adapters/sync/index.js +3 -1
- package/dist/adapters/sync/index.js.map +1 -1
- package/dist/adapters/sync/merge.js +3 -2
- package/dist/adapters/sync/merge.js.map +1 -1
- package/dist/adapters/sync/types.d.ts +36 -2
- package/dist/adapters/sync/types.d.ts.map +1 -1
- package/dist/adapters/sync/types.js +22 -1
- package/dist/adapters/sync/types.js.map +1 -1
- package/dist/agent/index.d.ts +3 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +2 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/production-agent.d.ts +16 -0
- package/dist/agent/production-agent.d.ts.map +1 -0
- package/dist/agent/production-agent.js +158 -0
- package/dist/agent/production-agent.js.map +1 -0
- package/dist/agent/types.d.ts +40 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +2 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/application-state/emitter.d.ts +10 -0
- package/dist/application-state/emitter.d.ts.map +1 -0
- package/dist/application-state/emitter.js +18 -0
- package/dist/application-state/emitter.js.map +1 -0
- package/dist/application-state/handlers.d.ts +20 -0
- package/dist/application-state/handlers.d.ts.map +1 -0
- package/dist/application-state/handlers.js +94 -0
- package/dist/application-state/handlers.js.map +1 -0
- package/dist/application-state/index.d.ts +5 -0
- package/dist/application-state/index.d.ts.map +1 -0
- package/dist/application-state/index.js +9 -0
- package/dist/application-state/index.js.map +1 -0
- package/dist/application-state/script-helpers.d.ts +17 -0
- package/dist/application-state/script-helpers.d.ts.map +1 -0
- package/dist/application-state/script-helpers.js +28 -0
- package/dist/application-state/script-helpers.js.map +1 -0
- package/dist/application-state/store.d.ts +9 -0
- package/dist/application-state/store.d.ts.map +1 -0
- package/dist/application-state/store.js +93 -0
- package/dist/application-state/store.js.map +1 -0
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +40 -24
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/index.js +37 -11
- package/dist/cli/index.js.map +1 -1
- package/dist/client/AgentPanel.d.ts +53 -0
- package/dist/client/AgentPanel.d.ts.map +1 -0
- package/dist/client/AgentPanel.js +70 -0
- package/dist/client/AgentPanel.js.map +1 -0
- package/dist/client/AssistantChat.d.ts +27 -0
- package/dist/client/AssistantChat.d.ts.map +1 -0
- package/dist/client/AssistantChat.js +165 -0
- package/dist/client/AssistantChat.js.map +1 -0
- package/dist/client/ErrorBoundary.d.ts +4 -0
- package/dist/client/ErrorBoundary.d.ts.map +1 -0
- package/dist/client/ErrorBoundary.js +22 -0
- package/dist/client/ErrorBoundary.js.map +1 -0
- package/dist/client/MultiTabAssistantChat.d.ts +4 -0
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -0
- package/dist/client/MultiTabAssistantChat.js +125 -0
- package/dist/client/MultiTabAssistantChat.js.map +1 -0
- package/dist/client/PoweredByBadge.d.ts +14 -0
- package/dist/client/PoweredByBadge.d.ts.map +1 -0
- package/dist/client/PoweredByBadge.js +60 -0
- package/dist/client/PoweredByBadge.js.map +1 -0
- package/dist/client/ProductionAgentPanel.d.ts +6 -0
- package/dist/client/ProductionAgentPanel.d.ts.map +1 -0
- package/dist/client/ProductionAgentPanel.js +6 -0
- package/dist/client/ProductionAgentPanel.js.map +1 -0
- package/dist/client/Turnstile.d.ts +35 -0
- package/dist/client/Turnstile.d.ts.map +1 -0
- package/dist/client/Turnstile.js +77 -0
- package/dist/client/Turnstile.js.map +1 -0
- package/dist/client/agent-chat-adapter.d.ts +10 -0
- package/dist/client/agent-chat-adapter.d.ts.map +1 -0
- package/dist/client/agent-chat-adapter.js +235 -0
- package/dist/client/agent-chat-adapter.js.map +1 -0
- package/dist/client/agent-chat.d.ts +9 -1
- package/dist/client/agent-chat.d.ts.map +1 -1
- package/dist/client/agent-chat.js +11 -1
- package/dist/client/agent-chat.js.map +1 -1
- package/dist/client/index.d.ts +13 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +14 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/terminal/AgentTerminal.d.ts +35 -0
- package/dist/client/terminal/AgentTerminal.d.ts.map +1 -0
- package/dist/client/terminal/AgentTerminal.js +346 -0
- package/dist/client/terminal/AgentTerminal.js.map +1 -0
- package/dist/client/terminal/index.d.ts +7 -0
- package/dist/client/terminal/index.d.ts.map +1 -0
- package/dist/client/terminal/index.js +7 -0
- package/dist/client/terminal/index.js.map +1 -0
- package/dist/client/use-agent-chat.d.ts +1 -1
- package/dist/client/use-agent-chat.d.ts.map +1 -1
- package/dist/client/use-agent-chat.js +1 -1
- package/dist/client/use-agent-chat.js.map +1 -1
- package/dist/client/use-file-sync-status.d.ts +21 -0
- package/dist/client/use-file-sync-status.d.ts.map +1 -0
- package/dist/client/use-file-sync-status.js +65 -0
- package/dist/client/use-file-sync-status.js.map +1 -0
- package/dist/client/use-session.d.ts +16 -0
- package/dist/client/use-session.d.ts.map +1 -0
- package/dist/client/use-session.js +49 -0
- package/dist/client/use-session.js.map +1 -0
- package/dist/client/useProductionAgent.d.ts +23 -0
- package/dist/client/useProductionAgent.d.ts.map +1 -0
- package/dist/client/useProductionAgent.js +137 -0
- package/dist/client/useProductionAgent.js.map +1 -0
- package/dist/db/create-get-db.d.ts +3 -0
- package/dist/db/create-get-db.d.ts.map +1 -0
- package/dist/db/create-get-db.js +18 -0
- package/dist/db/create-get-db.js.map +1 -0
- package/dist/db/index.d.ts +23 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +19 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrations.d.ts +7 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +35 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/index.browser.d.ts +1 -1
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +1 -1
- package/dist/index.browser.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/oauth-tokens/index.d.ts +2 -0
- package/dist/oauth-tokens/index.d.ts.map +1 -0
- package/dist/oauth-tokens/index.js +2 -0
- package/dist/oauth-tokens/index.js.map +1 -0
- package/dist/oauth-tokens/store.d.ts +9 -0
- package/dist/oauth-tokens/store.d.ts.map +1 -0
- package/dist/oauth-tokens/store.js +90 -0
- package/dist/oauth-tokens/store.js.map +1 -0
- package/dist/router/index.d.ts +3 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +5 -0
- package/dist/router/index.js.map +1 -0
- package/dist/scripts/core-scripts.d.ts +10 -0
- package/dist/scripts/core-scripts.d.ts.map +1 -0
- package/dist/scripts/core-scripts.js +15 -0
- package/dist/scripts/core-scripts.js.map +1 -0
- package/dist/scripts/db/exec.d.ts +11 -0
- package/dist/scripts/db/exec.d.ts.map +1 -0
- package/dist/scripts/db/exec.js +101 -0
- package/dist/scripts/db/exec.js.map +1 -0
- package/dist/scripts/db/index.d.ts +2 -0
- package/dist/scripts/db/index.d.ts.map +1 -0
- package/dist/scripts/db/index.js +6 -0
- package/dist/scripts/db/index.js.map +1 -0
- package/dist/scripts/db/query.d.ts +10 -0
- package/dist/scripts/db/query.d.ts.map +1 -0
- package/dist/scripts/db/query.js +112 -0
- package/dist/scripts/db/query.js.map +1 -0
- package/dist/scripts/db/schema.d.ts +12 -0
- package/dist/scripts/db/schema.d.ts.map +1 -0
- package/dist/scripts/db/schema.js +140 -0
- package/dist/scripts/db/schema.js.map +1 -0
- package/dist/scripts/dev/index.d.ts +15 -0
- package/dist/scripts/dev/index.d.ts.map +1 -0
- package/dist/scripts/dev/index.js +118 -0
- package/dist/scripts/dev/index.js.map +1 -0
- package/dist/scripts/dev/list-files.d.ts +5 -0
- package/dist/scripts/dev/list-files.d.ts.map +1 -0
- package/dist/scripts/dev/list-files.js +102 -0
- package/dist/scripts/dev/list-files.js.map +1 -0
- package/dist/scripts/dev/read-file.d.ts +5 -0
- package/dist/scripts/dev/read-file.d.ts.map +1 -0
- package/dist/scripts/dev/read-file.js +68 -0
- package/dist/scripts/dev/read-file.js.map +1 -0
- package/dist/scripts/dev/search-files.d.ts +5 -0
- package/dist/scripts/dev/search-files.d.ts.map +1 -0
- package/dist/scripts/dev/search-files.js +133 -0
- package/dist/scripts/dev/search-files.js.map +1 -0
- package/dist/scripts/dev/shell.d.ts +5 -0
- package/dist/scripts/dev/shell.d.ts.map +1 -0
- package/dist/scripts/dev/shell.js +65 -0
- package/dist/scripts/dev/shell.js.map +1 -0
- package/dist/scripts/dev/write-file.d.ts +5 -0
- package/dist/scripts/dev/write-file.d.ts.map +1 -0
- package/dist/scripts/dev/write-file.js +50 -0
- package/dist/scripts/dev/write-file.js.map +1 -0
- package/dist/scripts/index.d.ts +5 -0
- package/dist/scripts/index.d.ts.map +1 -1
- package/dist/scripts/index.js +5 -0
- package/dist/scripts/index.js.map +1 -1
- package/dist/scripts/runner.d.ts +3 -0
- package/dist/scripts/runner.d.ts.map +1 -1
- package/dist/scripts/runner.js +53 -14
- package/dist/scripts/runner.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +43 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -0
- package/dist/server/agent-chat-plugin.js +92 -0
- package/dist/server/agent-chat-plugin.js.map +1 -0
- package/dist/server/auth-plugin.d.ts +6 -0
- package/dist/server/auth-plugin.d.ts.map +1 -0
- package/dist/server/auth-plugin.js +8 -0
- package/dist/server/auth-plugin.js.map +1 -0
- package/dist/server/auth.d.ts +75 -0
- package/dist/server/auth.d.ts.map +1 -0
- package/dist/server/auth.js +499 -0
- package/dist/server/auth.js.map +1 -0
- package/dist/server/captcha.d.ts +12 -0
- package/dist/server/captcha.d.ts.map +1 -0
- package/dist/server/captcha.js +43 -0
- package/dist/server/captcha.js.map +1 -0
- package/dist/server/create-server.d.ts +20 -10
- package/dist/server/create-server.d.ts.map +1 -1
- package/dist/server/create-server.js +48 -28
- package/dist/server/create-server.js.map +1 -1
- package/dist/server/default-watcher.d.ts +17 -0
- package/dist/server/default-watcher.d.ts.map +1 -0
- package/dist/server/default-watcher.js +37 -0
- package/dist/server/default-watcher.js.map +1 -0
- package/dist/server/file-sync-plugin.d.ts +7 -0
- package/dist/server/file-sync-plugin.d.ts.map +1 -0
- package/dist/server/file-sync-plugin.js +38 -0
- package/dist/server/file-sync-plugin.js.map +1 -0
- package/dist/server/google-auth-plugin.d.ts +22 -0
- package/dist/server/google-auth-plugin.d.ts.map +1 -0
- package/dist/server/google-auth-plugin.js +122 -0
- package/dist/server/google-auth-plugin.js.map +1 -0
- package/dist/server/index.d.ts +13 -2
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +14 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/missing-key.d.ts +9 -5
- package/dist/server/missing-key.d.ts.map +1 -1
- package/dist/server/missing-key.js +12 -7
- package/dist/server/missing-key.js.map +1 -1
- package/dist/server/sse.d.ts +18 -8
- package/dist/server/sse.d.ts.map +1 -1
- package/dist/server/sse.js +90 -19
- package/dist/server/sse.js.map +1 -1
- package/dist/settings/handlers.d.ts +9 -0
- package/dist/settings/handlers.d.ts.map +1 -0
- package/dist/settings/handlers.js +29 -0
- package/dist/settings/handlers.js.map +1 -0
- package/dist/settings/index.d.ts +5 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings/index.js +9 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/settings/script-helpers.d.ts +9 -0
- package/dist/settings/script-helpers.d.ts.map +1 -0
- package/dist/settings/script-helpers.js +16 -0
- package/dist/settings/script-helpers.js.map +1 -0
- package/dist/settings/store.d.ts +7 -0
- package/dist/settings/store.d.ts.map +1 -0
- package/dist/settings/store.js +88 -0
- package/dist/settings/store.js.map +1 -0
- package/dist/settings/user-settings.d.ts +21 -0
- package/dist/settings/user-settings.d.ts.map +1 -0
- package/dist/settings/user-settings.js +35 -0
- package/dist/settings/user-settings.js.map +1 -0
- package/dist/tailwind.preset.js +1 -1
- package/dist/tailwind.preset.js.map +1 -1
- package/dist/terminal/cli-registry.d.ts +16 -0
- package/dist/terminal/cli-registry.d.ts.map +1 -0
- package/dist/terminal/cli-registry.js +42 -0
- package/dist/terminal/cli-registry.js.map +1 -0
- package/dist/terminal/index.d.ts +9 -0
- package/dist/terminal/index.d.ts.map +1 -0
- package/dist/terminal/index.js +9 -0
- package/dist/terminal/index.js.map +1 -0
- package/dist/terminal/pty-server.d.ts +31 -0
- package/dist/terminal/pty-server.d.ts.map +1 -0
- package/dist/terminal/pty-server.js +252 -0
- package/dist/terminal/pty-server.js.map +1 -0
- package/dist/terminal/terminal-plugin.d.ts +23 -0
- package/dist/terminal/terminal-plugin.d.ts.map +1 -0
- package/dist/terminal/terminal-plugin.js +90 -0
- package/dist/terminal/terminal-plugin.js.map +1 -0
- package/dist/vite/client.d.ts +28 -5
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +55 -16
- package/dist/vite/client.js.map +1 -1
- package/dist/vite/dev-api-server.d.ts +10 -0
- package/dist/vite/dev-api-server.d.ts.map +1 -0
- package/dist/vite/dev-api-server.js +160 -0
- package/dist/vite/dev-api-server.js.map +1 -0
- package/dist/vite/index.d.ts +2 -3
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +2 -3
- package/dist/vite/index.js.map +1 -1
- package/package.json +74 -19
- package/src/templates/default/.agents/skills/create-skill/SKILL.md +1 -1
- package/src/templates/default/.agents/skills/delegate-to-agent/SKILL.md +3 -3
- package/src/templates/default/.agents/skills/files-as-database/SKILL.md +82 -63
- package/src/templates/default/.agents/skills/frontend-design/SKILL.md +2 -2
- package/src/templates/default/.agents/skills/scripts/SKILL.md +20 -17
- package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +2 -2
- package/src/templates/default/.agents/skills/sse-file-watcher/SKILL.md +49 -64
- package/src/templates/default/.ignore +0 -0
- package/src/templates/default/AGENTS.md +129 -28
- package/src/templates/default/_gitignore +9 -5
- package/src/templates/default/app/entry.client.tsx +4 -0
- package/src/templates/default/app/entry.server.tsx +55 -0
- package/src/templates/default/app/global.css +95 -0
- package/src/templates/default/app/root.tsx +95 -0
- package/src/templates/default/app/routes/_index.tsx +62 -0
- package/src/templates/default/app/routes.ts +4 -0
- package/src/templates/default/app/vite-env.d.ts +6 -0
- package/src/templates/default/application-state/.gitkeep +0 -0
- package/src/templates/default/components.json +1 -1
- package/src/templates/default/data/sync-config.json +1 -0
- package/src/templates/default/package.json +7 -8
- package/src/templates/default/react-router.config.ts +6 -0
- package/src/templates/default/scripts/run.ts +1 -8
- package/src/templates/default/server/plugins/agent-chat.ts +1 -0
- package/src/templates/default/server/plugins/auth.ts +1 -0
- package/src/templates/default/server/plugins/file-sync.ts +1 -0
- package/src/templates/default/server/plugins/terminal.ts +1 -0
- package/src/templates/default/server/routes/[...page].get.ts +12 -0
- package/src/templates/default/server/routes/api/events.get.ts +3 -0
- package/src/templates/default/server/routes/api/file-sync/status.get.ts +4 -0
- package/src/templates/default/server/routes/api/hello.get.ts +5 -0
- package/src/templates/default/tailwind.config.ts +1 -1
- package/src/templates/default/tsconfig.json +9 -1
- package/src/templates/default/vite.config.ts +4 -1
- package/tsconfig.base.json +5 -3
- package/dist/adapters/neon/adapter.d.ts +0 -28
- package/dist/adapters/neon/adapter.d.ts.map +0 -1
- package/dist/adapters/neon/adapter.js +0 -135
- package/dist/adapters/neon/adapter.js.map +0 -1
- package/dist/adapters/neon/index.d.ts +0 -3
- package/dist/adapters/neon/index.d.ts.map +0 -1
- package/dist/adapters/neon/index.js +0 -3
- package/dist/adapters/neon/index.js.map +0 -1
- package/dist/server/production.d.ts +0 -18
- package/dist/server/production.d.ts.map +0 -1
- package/dist/server/production.js +0 -37
- package/dist/server/production.js.map +0 -1
- package/dist/vite/express-plugin.d.ts +0 -14
- package/dist/vite/express-plugin.d.ts.map +0 -1
- package/dist/vite/express-plugin.js +0 -53
- package/dist/vite/express-plugin.js.map +0 -1
- package/dist/vite/server.d.ts +0 -21
- package/dist/vite/server.d.ts.map +0 -1
- package/dist/vite/server.js +0 -68
- package/dist/vite/server.js.map +0 -1
- package/src/templates/default/client/App.tsx +0 -56
- package/src/templates/default/client/global.css +0 -75
- package/src/templates/default/client/vite-env.d.ts +0 -1
- package/src/templates/default/index.html +0 -14
- package/src/templates/default/server/index.ts +0 -22
- package/src/templates/default/server/node-build.ts +0 -4
- package/src/templates/default/vite.config.server.ts +0 -3
- /package/src/templates/default/{client → app}/lib/utils.ts +0 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { defineEventHandler, readBody, getRouterParam, setResponseStatus, } from "h3";
|
|
2
|
+
import { appStateGet, appStatePut, appStateDelete, appStateList, appStateDeleteByPrefix, } from "./store.js";
|
|
3
|
+
import { getSession } from "../server/auth.js";
|
|
4
|
+
/**
|
|
5
|
+
* Resolve the session ID for app state scoping.
|
|
6
|
+
* - Dev mode: returns "local" (backward-compatible with existing dev databases)
|
|
7
|
+
* - Production with Google OAuth: returns the user's email
|
|
8
|
+
* - Production with token auth: returns "user" (single-user, same as before)
|
|
9
|
+
*/
|
|
10
|
+
async function getSessionId(event) {
|
|
11
|
+
const session = await getSession(event);
|
|
12
|
+
if (!session)
|
|
13
|
+
return "local";
|
|
14
|
+
// Dev mode returns "local@localhost" — keep using "local" for compat
|
|
15
|
+
if (session.email === "local@localhost")
|
|
16
|
+
return "local";
|
|
17
|
+
return session.email;
|
|
18
|
+
}
|
|
19
|
+
function safeKey(key) {
|
|
20
|
+
return key.replace(/[^a-zA-Z0-9_-]/g, "");
|
|
21
|
+
}
|
|
22
|
+
// --- Generic state handlers ---
|
|
23
|
+
export const getState = defineEventHandler(async (event) => {
|
|
24
|
+
const sessionId = await getSessionId(event);
|
|
25
|
+
const key = safeKey(String(getRouterParam(event, "key")));
|
|
26
|
+
const value = await appStateGet(sessionId, key);
|
|
27
|
+
if (!value) {
|
|
28
|
+
setResponseStatus(event, 404);
|
|
29
|
+
return { error: `No state for ${key}` };
|
|
30
|
+
}
|
|
31
|
+
return value;
|
|
32
|
+
});
|
|
33
|
+
export const putState = defineEventHandler(async (event) => {
|
|
34
|
+
const sessionId = await getSessionId(event);
|
|
35
|
+
const key = safeKey(String(getRouterParam(event, "key")));
|
|
36
|
+
const body = await readBody(event);
|
|
37
|
+
await appStatePut(sessionId, key, body);
|
|
38
|
+
return body;
|
|
39
|
+
});
|
|
40
|
+
export const deleteState = defineEventHandler(async (event) => {
|
|
41
|
+
const sessionId = await getSessionId(event);
|
|
42
|
+
const key = safeKey(String(getRouterParam(event, "key")));
|
|
43
|
+
await appStateDelete(sessionId, key);
|
|
44
|
+
return { ok: true };
|
|
45
|
+
});
|
|
46
|
+
// --- Multi-draft compose handlers ---
|
|
47
|
+
function composeDraftKey(id) {
|
|
48
|
+
return `compose-${safeKey(id)}`;
|
|
49
|
+
}
|
|
50
|
+
/** List all compose drafts */
|
|
51
|
+
export const listComposeDrafts = defineEventHandler(async (event) => {
|
|
52
|
+
const sessionId = await getSessionId(event);
|
|
53
|
+
const items = await appStateList(sessionId, "compose-");
|
|
54
|
+
return items.map((item) => item.value);
|
|
55
|
+
});
|
|
56
|
+
/** Get a single compose draft */
|
|
57
|
+
export const getComposeDraft = defineEventHandler(async (event) => {
|
|
58
|
+
const sessionId = await getSessionId(event);
|
|
59
|
+
const id = getRouterParam(event, "id");
|
|
60
|
+
const value = await appStateGet(sessionId, composeDraftKey(id));
|
|
61
|
+
if (!value) {
|
|
62
|
+
setResponseStatus(event, 404);
|
|
63
|
+
return { error: "Draft not found" };
|
|
64
|
+
}
|
|
65
|
+
return value;
|
|
66
|
+
});
|
|
67
|
+
/** Create or update a compose draft */
|
|
68
|
+
export const putComposeDraft = defineEventHandler(async (event) => {
|
|
69
|
+
const sessionId = await getSessionId(event);
|
|
70
|
+
const id = getRouterParam(event, "id");
|
|
71
|
+
const body = await readBody(event);
|
|
72
|
+
const { subject, body: bodyText } = body;
|
|
73
|
+
if (typeof subject !== "string" || typeof bodyText !== "string") {
|
|
74
|
+
setResponseStatus(event, 400);
|
|
75
|
+
return { error: "subject and body are required strings" };
|
|
76
|
+
}
|
|
77
|
+
const state = { ...body, id };
|
|
78
|
+
await appStatePut(sessionId, composeDraftKey(id), state);
|
|
79
|
+
return state;
|
|
80
|
+
});
|
|
81
|
+
/** Delete a single compose draft */
|
|
82
|
+
export const deleteComposeDraft = defineEventHandler(async (event) => {
|
|
83
|
+
const sessionId = await getSessionId(event);
|
|
84
|
+
const id = getRouterParam(event, "id");
|
|
85
|
+
await appStateDelete(sessionId, composeDraftKey(id));
|
|
86
|
+
return { ok: true };
|
|
87
|
+
});
|
|
88
|
+
/** Delete all compose drafts */
|
|
89
|
+
export const deleteAllComposeDrafts = defineEventHandler(async (event) => {
|
|
90
|
+
const sessionId = await getSessionId(event);
|
|
91
|
+
await appStateDeleteByPrefix(sessionId, "compose-");
|
|
92
|
+
return { ok: true };
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/application-state/handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { appStateGet, appStatePut, appStateDelete, appStateList, appStateDeleteByPrefix, } from "./store.js";
|
|
2
|
+
export { getAppStateEmitter, emitAppStateChange, emitAppStateDelete, type AppStateEvent, } from "./emitter.js";
|
|
3
|
+
export { getState, putState, deleteState, listComposeDrafts, getComposeDraft, putComposeDraft, deleteComposeDraft, deleteAllComposeDrafts, } from "./handlers.js";
|
|
4
|
+
export { readAppState, writeAppState, deleteAppState, listAppState, deleteAppStateByPrefix, } from "./script-helpers.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/application-state/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,WAAW,EACX,cAAc,EACd,YAAY,EACZ,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,sBAAsB,GACvB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Store
|
|
2
|
+
export { appStateGet, appStatePut, appStateDelete, appStateList, appStateDeleteByPrefix, } from "./store.js";
|
|
3
|
+
// Emitter (for SSE wiring)
|
|
4
|
+
export { getAppStateEmitter, emitAppStateChange, emitAppStateDelete, } from "./emitter.js";
|
|
5
|
+
// H3 route handlers (for templates)
|
|
6
|
+
export { getState, putState, deleteState, listComposeDrafts, getComposeDraft, putComposeDraft, deleteComposeDraft, deleteAllComposeDrafts, } from "./handlers.js";
|
|
7
|
+
// Script helpers
|
|
8
|
+
export { readAppState, writeAppState, deleteAppState, listAppState, deleteAppStateByPrefix, } from "./script-helpers.js";
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/application-state/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,OAAO,EACL,WAAW,EACX,WAAW,EACX,cAAc,EACd,YAAY,EACZ,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB,2BAA2B;AAC3B,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,cAAc,CAAC;AAEtB,oCAAoC;AACpC,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAEvB,iBAAiB;AACjB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,sBAAsB,GACvB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application state helpers for use in scripts.
|
|
3
|
+
*
|
|
4
|
+
* Scripts run as standalone processes without HTTP context.
|
|
5
|
+
* The session ID is resolved from the AGENT_USER_EMAIL env var
|
|
6
|
+
* (set by the agent runtime for multi-user apps), defaulting to
|
|
7
|
+
* "local" for backward compatibility in dev mode.
|
|
8
|
+
*/
|
|
9
|
+
export declare function readAppState(key: string): Promise<Record<string, unknown> | null>;
|
|
10
|
+
export declare function writeAppState(key: string, value: Record<string, unknown>): Promise<void>;
|
|
11
|
+
export declare function deleteAppState(key: string): Promise<boolean>;
|
|
12
|
+
export declare function listAppState(prefix: string): Promise<Array<{
|
|
13
|
+
key: string;
|
|
14
|
+
value: Record<string, unknown>;
|
|
15
|
+
}>>;
|
|
16
|
+
export declare function deleteAppStateByPrefix(prefix: string): Promise<number>;
|
|
17
|
+
//# sourceMappingURL=script-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-helpers.d.ts","sourceRoot":"","sources":["../../src/application-state/script-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAEzC;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAElE;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAAC,CAEjE;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE5E"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application state helpers for use in scripts.
|
|
3
|
+
*
|
|
4
|
+
* Scripts run as standalone processes without HTTP context.
|
|
5
|
+
* The session ID is resolved from the AGENT_USER_EMAIL env var
|
|
6
|
+
* (set by the agent runtime for multi-user apps), defaulting to
|
|
7
|
+
* "local" for backward compatibility in dev mode.
|
|
8
|
+
*/
|
|
9
|
+
import { appStateGet, appStatePut, appStateDelete, appStateList, appStateDeleteByPrefix, } from "./store.js";
|
|
10
|
+
function getScriptSessionId() {
|
|
11
|
+
return process.env.AGENT_USER_EMAIL ?? "local";
|
|
12
|
+
}
|
|
13
|
+
export async function readAppState(key) {
|
|
14
|
+
return appStateGet(getScriptSessionId(), key);
|
|
15
|
+
}
|
|
16
|
+
export async function writeAppState(key, value) {
|
|
17
|
+
return appStatePut(getScriptSessionId(), key, value);
|
|
18
|
+
}
|
|
19
|
+
export async function deleteAppState(key) {
|
|
20
|
+
return appStateDelete(getScriptSessionId(), key);
|
|
21
|
+
}
|
|
22
|
+
export async function listAppState(prefix) {
|
|
23
|
+
return appStateList(getScriptSessionId(), prefix);
|
|
24
|
+
}
|
|
25
|
+
export async function deleteAppStateByPrefix(prefix) {
|
|
26
|
+
return appStateDeleteByPrefix(getScriptSessionId(), prefix);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=script-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-helpers.js","sourceRoot":"","sources":["../../src/application-state/script-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,WAAW,EACX,WAAW,EACX,cAAc,EACd,YAAY,EACZ,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB,SAAS,kBAAkB;IACzB,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAW;IAEX,OAAO,WAAW,CAAC,kBAAkB,EAAE,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAW,EACX,KAA8B;IAE9B,OAAO,WAAW,CAAC,kBAAkB,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW;IAC9C,OAAO,cAAc,CAAC,kBAAkB,EAAE,EAAE,GAAG,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAc;IAEd,OAAO,YAAY,CAAC,kBAAkB,EAAE,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAAc;IACzD,OAAO,sBAAsB,CAAC,kBAAkB,EAAE,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function appStateGet(sessionId: string, key: string): Promise<Record<string, unknown> | null>;
|
|
2
|
+
export declare function appStatePut(sessionId: string, key: string, value: Record<string, unknown>): Promise<void>;
|
|
3
|
+
export declare function appStateDelete(sessionId: string, key: string): Promise<boolean>;
|
|
4
|
+
export declare function appStateList(sessionId: string, keyPrefix: string): Promise<Array<{
|
|
5
|
+
key: string;
|
|
6
|
+
value: Record<string, unknown>;
|
|
7
|
+
}>>;
|
|
8
|
+
export declare function appStateDeleteByPrefix(sessionId: string, keyPrefix: string): Promise<number>;
|
|
9
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/application-state/store.ts"],"names":[],"mappings":"AAiCA,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CASzC;AAED,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAAC,CAWjE;AAED,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAsBjB"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { createClient } from "@libsql/client";
|
|
2
|
+
import { emitAppStateChange, emitAppStateDelete } from "./emitter.js";
|
|
3
|
+
let _client;
|
|
4
|
+
function getClient() {
|
|
5
|
+
if (!_client) {
|
|
6
|
+
const url = process.env.DATABASE_URL || "file:./data/app.db";
|
|
7
|
+
_client = createClient({
|
|
8
|
+
url,
|
|
9
|
+
authToken: process.env.DATABASE_AUTH_TOKEN,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
return _client;
|
|
13
|
+
}
|
|
14
|
+
let _initialized = false;
|
|
15
|
+
async function ensureTable() {
|
|
16
|
+
if (_initialized)
|
|
17
|
+
return;
|
|
18
|
+
const client = getClient();
|
|
19
|
+
await client.execute(`
|
|
20
|
+
CREATE TABLE IF NOT EXISTS application_state (
|
|
21
|
+
session_id TEXT NOT NULL,
|
|
22
|
+
key TEXT NOT NULL,
|
|
23
|
+
value TEXT NOT NULL,
|
|
24
|
+
updated_at INTEGER NOT NULL,
|
|
25
|
+
PRIMARY KEY (session_id, key)
|
|
26
|
+
)
|
|
27
|
+
`);
|
|
28
|
+
_initialized = true;
|
|
29
|
+
}
|
|
30
|
+
export async function appStateGet(sessionId, key) {
|
|
31
|
+
await ensureTable();
|
|
32
|
+
const client = getClient();
|
|
33
|
+
const { rows } = await client.execute({
|
|
34
|
+
sql: `SELECT value FROM application_state WHERE session_id = ? AND key = ?`,
|
|
35
|
+
args: [sessionId, key],
|
|
36
|
+
});
|
|
37
|
+
if (rows.length === 0)
|
|
38
|
+
return null;
|
|
39
|
+
return JSON.parse(rows[0].value);
|
|
40
|
+
}
|
|
41
|
+
export async function appStatePut(sessionId, key, value) {
|
|
42
|
+
await ensureTable();
|
|
43
|
+
const client = getClient();
|
|
44
|
+
await client.execute({
|
|
45
|
+
sql: `INSERT OR REPLACE INTO application_state (session_id, key, value, updated_at) VALUES (?, ?, ?, ?)`,
|
|
46
|
+
args: [sessionId, key, JSON.stringify(value), Date.now()],
|
|
47
|
+
});
|
|
48
|
+
emitAppStateChange(key);
|
|
49
|
+
}
|
|
50
|
+
export async function appStateDelete(sessionId, key) {
|
|
51
|
+
await ensureTable();
|
|
52
|
+
const client = getClient();
|
|
53
|
+
const result = await client.execute({
|
|
54
|
+
sql: `DELETE FROM application_state WHERE session_id = ? AND key = ?`,
|
|
55
|
+
args: [sessionId, key],
|
|
56
|
+
});
|
|
57
|
+
const deleted = result.rowsAffected > 0;
|
|
58
|
+
if (deleted)
|
|
59
|
+
emitAppStateDelete(key);
|
|
60
|
+
return deleted;
|
|
61
|
+
}
|
|
62
|
+
export async function appStateList(sessionId, keyPrefix) {
|
|
63
|
+
await ensureTable();
|
|
64
|
+
const client = getClient();
|
|
65
|
+
const { rows } = await client.execute({
|
|
66
|
+
sql: `SELECT key, value FROM application_state WHERE session_id = ? AND key LIKE ?`,
|
|
67
|
+
args: [sessionId, keyPrefix + "%"],
|
|
68
|
+
});
|
|
69
|
+
return rows.map((row) => ({
|
|
70
|
+
key: row.key,
|
|
71
|
+
value: JSON.parse(row.value),
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
export async function appStateDeleteByPrefix(sessionId, keyPrefix) {
|
|
75
|
+
await ensureTable();
|
|
76
|
+
const client = getClient();
|
|
77
|
+
// Get keys first so we can emit events
|
|
78
|
+
const { rows } = await client.execute({
|
|
79
|
+
sql: `SELECT key FROM application_state WHERE session_id = ? AND key LIKE ?`,
|
|
80
|
+
args: [sessionId, keyPrefix + "%"],
|
|
81
|
+
});
|
|
82
|
+
if (rows.length === 0)
|
|
83
|
+
return 0;
|
|
84
|
+
const result = await client.execute({
|
|
85
|
+
sql: `DELETE FROM application_state WHERE session_id = ? AND key LIKE ?`,
|
|
86
|
+
args: [sessionId, keyPrefix + "%"],
|
|
87
|
+
});
|
|
88
|
+
for (const row of rows) {
|
|
89
|
+
emitAppStateDelete(row.key);
|
|
90
|
+
}
|
|
91
|
+
return result.rowsAffected;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/application-state/store.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/create.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/cli/create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/cli/create.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAqG7C"}
|
package/dist/cli/create.js
CHANGED
|
@@ -33,30 +33,16 @@ export function createApp(name) {
|
|
|
33
33
|
console.log(`Creating ${name}...`);
|
|
34
34
|
// Copy template
|
|
35
35
|
copyDir(templateDir, targetDir);
|
|
36
|
-
// Replace placeholders in
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
let content = fs.readFileSync(htmlPath, "utf-8");
|
|
47
|
-
content = content.replace(/\{\{APP_TITLE\}\}/g, name
|
|
48
|
-
.split("-")
|
|
49
|
-
.map((w) => w[0].toUpperCase() + w.slice(1))
|
|
50
|
-
.join(" "));
|
|
51
|
-
fs.writeFileSync(htmlPath, content);
|
|
52
|
-
}
|
|
53
|
-
// Replace placeholders in AGENTS.md
|
|
54
|
-
const agentsPath = path.join(targetDir, "AGENTS.md");
|
|
55
|
-
if (fs.existsSync(agentsPath)) {
|
|
56
|
-
let content = fs.readFileSync(agentsPath, "utf-8");
|
|
57
|
-
content = content.replace(/\{\{APP_NAME\}\}/g, name);
|
|
58
|
-
fs.writeFileSync(agentsPath, content);
|
|
59
|
-
}
|
|
36
|
+
// Replace {{APP_NAME}} and {{APP_TITLE}} placeholders in all text files.
|
|
37
|
+
// Previously this was done per-file (package.json, index.html, AGENTS.md),
|
|
38
|
+
// but index.html no longer exists in the React Router framework template and
|
|
39
|
+
// route files like app/routes/_index.tsx also contain {{APP_TITLE}}.
|
|
40
|
+
// A single recursive pass is simpler and future-proof.
|
|
41
|
+
const appTitle = name
|
|
42
|
+
.split("-")
|
|
43
|
+
.map((w) => w[0].toUpperCase() + w.slice(1))
|
|
44
|
+
.join(" ");
|
|
45
|
+
replacePlaceholders(targetDir, name, appTitle);
|
|
60
46
|
// Copy defaults files (gitignored files that get seeded from .defaults on first create)
|
|
61
47
|
for (const base of ["learnings"]) {
|
|
62
48
|
const defaultsFile = path.join(targetDir, `${base}.defaults.md`);
|
|
@@ -98,6 +84,36 @@ export function createApp(name) {
|
|
|
98
84
|
console.log(``);
|
|
99
85
|
console.log(`Your app includes agent skills in .agents/skills/.`);
|
|
100
86
|
console.log(`These teach the AI agent how to work within the framework's architecture.`);
|
|
87
|
+
console.log(``);
|
|
88
|
+
console.log(`Need multi-user collaboration? See: https://agent-native.dev/docs/file-sync`);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Recursively replace {{APP_NAME}} and {{APP_TITLE}} placeholders in all
|
|
92
|
+
* text files under `dir`. Binary files are skipped silently.
|
|
93
|
+
*/
|
|
94
|
+
function replacePlaceholders(dir, appName, appTitle) {
|
|
95
|
+
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
96
|
+
const p = path.join(dir, entry.name);
|
|
97
|
+
if (entry.isSymbolicLink() || entry.isDirectory()) {
|
|
98
|
+
if (!entry.isSymbolicLink())
|
|
99
|
+
replacePlaceholders(p, appName, appTitle);
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
let content;
|
|
103
|
+
try {
|
|
104
|
+
content = fs.readFileSync(p, "utf-8");
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
continue; // skip unreadable / binary files
|
|
108
|
+
}
|
|
109
|
+
if (!content.includes("{{APP_NAME}}") &&
|
|
110
|
+
!content.includes("{{APP_TITLE}}")) {
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
fs.writeFileSync(p, content
|
|
114
|
+
.replace(/\{\{APP_NAME\}\}/g, appName)
|
|
115
|
+
.replace(/\{\{APP_TITLE\}\}/g, appTitle));
|
|
116
|
+
}
|
|
101
117
|
}
|
|
102
118
|
function copyDir(src, dest, root) {
|
|
103
119
|
const resolvedRoot = root ?? path.resolve(src);
|
package/dist/cli/create.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/cli/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/cli/create.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -28,6 +28,17 @@ function findTsxBin() {
|
|
|
28
28
|
return localTsx;
|
|
29
29
|
return "tsx";
|
|
30
30
|
}
|
|
31
|
+
function findReactRouterBin() {
|
|
32
|
+
const localBin = path.resolve("node_modules/.bin/react-router");
|
|
33
|
+
if (fs.existsSync(localBin))
|
|
34
|
+
return localBin;
|
|
35
|
+
return "react-router";
|
|
36
|
+
}
|
|
37
|
+
/** Check if the project uses React Router framework mode (has react-router.config.ts) */
|
|
38
|
+
function isReactRouterFramework() {
|
|
39
|
+
return (fs.existsSync(path.resolve("react-router.config.ts")) ||
|
|
40
|
+
fs.existsSync(path.resolve("react-router.config.js")));
|
|
41
|
+
}
|
|
31
42
|
function run(cmd, cmdArgs, opts) {
|
|
32
43
|
const child = spawn(cmd, cmdArgs, {
|
|
33
44
|
stdio: opts?.stdio ?? "inherit",
|
|
@@ -39,27 +50,32 @@ function run(cmd, cmdArgs, opts) {
|
|
|
39
50
|
}
|
|
40
51
|
switch (command) {
|
|
41
52
|
case "dev": {
|
|
42
|
-
// Like `next dev` — runs Vite dev server
|
|
53
|
+
// Like `next dev` — runs Vite dev server (Nitro plugin handles API routes)
|
|
43
54
|
// Supports --base <path> for mounting under a prefix (e.g. agent-native dev --base /app/)
|
|
44
55
|
const vite = findViteBin();
|
|
45
56
|
run(vite, args);
|
|
46
57
|
break;
|
|
47
58
|
}
|
|
48
59
|
case "build": {
|
|
49
|
-
// Like `next build` — builds client
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
stdio: "inherit"
|
|
56
|
-
}
|
|
60
|
+
// Like `next build` — builds client + server
|
|
61
|
+
// React Router framework mode uses `react-router build`
|
|
62
|
+
// Legacy SPA mode uses `vite build`
|
|
63
|
+
if (isReactRouterFramework()) {
|
|
64
|
+
const rr = findReactRouterBin();
|
|
65
|
+
console.log("Building (React Router framework mode)...");
|
|
66
|
+
execSync(`${rr} build`, { stdio: "inherit" });
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
const vite = findViteBin();
|
|
70
|
+
console.log("Building...");
|
|
71
|
+
execSync(`${vite} build`, { stdio: "inherit" });
|
|
72
|
+
}
|
|
57
73
|
console.log("\nBuild complete.");
|
|
58
74
|
break;
|
|
59
75
|
}
|
|
60
76
|
case "start": {
|
|
61
|
-
// Like `next start` — runs production server
|
|
62
|
-
const serverEntry = path.resolve("
|
|
77
|
+
// Like `next start` — runs Nitro production server
|
|
78
|
+
const serverEntry = path.resolve(".output/server/index.mjs");
|
|
63
79
|
if (!fs.existsSync(serverEntry)) {
|
|
64
80
|
console.error('No production build found. Run "agent-native build" first.');
|
|
65
81
|
process.exit(1);
|
|
@@ -80,6 +96,16 @@ switch (command) {
|
|
|
80
96
|
}
|
|
81
97
|
case "typecheck": {
|
|
82
98
|
// Run TypeScript type checking
|
|
99
|
+
// React Router framework mode generates route types first
|
|
100
|
+
if (isReactRouterFramework()) {
|
|
101
|
+
const rr = findReactRouterBin();
|
|
102
|
+
try {
|
|
103
|
+
execSync(`${rr} typegen`, { stdio: "inherit" });
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// typegen may fail if routes aren't set up yet — continue to tsc
|
|
107
|
+
}
|
|
108
|
+
}
|
|
83
109
|
const tsc = path.resolve("node_modules/.bin/tsc");
|
|
84
110
|
const tscBin = fs.existsSync(tsc) ? tsc : "tsc";
|
|
85
111
|
run(tscBin, ["--noEmit", ...args]);
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,2EAA2E;AAC3E,IAAI,QAAQ,GAAG,SAAS,CAAC;AACzB,IAAI,CAAC;IACH,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,yCAAyC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC,CACxE,CAAC;IACF,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC;AACzB,CAAC;AAAC,MAAM,CAAC,CAAA,CAAC;AAEV,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,qFAAqF;AACrF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AAE7D,SAAS,WAAW;IAClB,qCAAqC;IACrC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACzD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,OAAO,MAAM,CAAC,CAAC,mBAAmB;AACpC,CAAC;AAED,SAAS,UAAU;IACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACvD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC7C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,GAAG,CACV,GAAW,EACX,OAAiB,EACjB,IAAqC;IAErC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE;QAChC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,SAAS;QAC/B,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;QACnC,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,QAAQ,OAAO,EAAE,CAAC;IAChB,KAAK,KAAK,CAAC,CAAC,CAAC;QACX,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentPanel — unified agent component with chat and CLI terminal modes.
|
|
3
|
+
*
|
|
4
|
+
* A self-contained panel with no layout opinions — drop it into a sidebar,
|
|
5
|
+
* popover, dialog, full page, or any container. It fills its parent via
|
|
6
|
+
* flex and min-h-0.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Chat mode: assistant-ui powered chat with tool calls
|
|
10
|
+
* - CLI mode: embedded xterm.js terminal (dev mode only)
|
|
11
|
+
* - Toggle between modes via header buttons
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* // In a sidebar
|
|
15
|
+
* <div style={{ width: 380 }}><AgentPanel /></div>
|
|
16
|
+
*
|
|
17
|
+
* // In a popover
|
|
18
|
+
* <Popover><AgentPanel suggestions={[...]} /></Popover>
|
|
19
|
+
*
|
|
20
|
+
* // Full page
|
|
21
|
+
* <AgentPanel className="h-screen" />
|
|
22
|
+
*/
|
|
23
|
+
import React from "react";
|
|
24
|
+
import type { AssistantChatProps } from "./AssistantChat.js";
|
|
25
|
+
export interface AgentPanelProps extends Omit<AssistantChatProps, "onSwitchToCli" | "showDevHint"> {
|
|
26
|
+
/** Initial mode. Default: "chat" */
|
|
27
|
+
defaultMode?: "chat" | "cli";
|
|
28
|
+
/** CSS class for the outer container */
|
|
29
|
+
className?: string;
|
|
30
|
+
}
|
|
31
|
+
export declare function AgentPanel({ defaultMode, className, apiUrl, emptyStateText, suggestions, showHeader, }: AgentPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
export interface AgentSidebarProps {
|
|
33
|
+
children: React.ReactNode;
|
|
34
|
+
/** Placeholder text for the empty chat state */
|
|
35
|
+
emptyStateText?: string;
|
|
36
|
+
/** Suggestion prompts shown when no messages */
|
|
37
|
+
suggestions?: string[];
|
|
38
|
+
/** Width of the agent sidebar. Default: 380 */
|
|
39
|
+
sidebarWidth?: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Wraps app content with a toggleable agent sidebar.
|
|
43
|
+
* Use AgentToggleButton in your header to open/close it.
|
|
44
|
+
*/
|
|
45
|
+
export declare function AgentSidebar({ children, emptyStateText, suggestions, sidebarWidth, }: AgentSidebarProps): import("react/jsx-runtime").JSX.Element;
|
|
46
|
+
/**
|
|
47
|
+
* Button to toggle the agent sidebar. Place this in your app's header/toolbar.
|
|
48
|
+
* Dispatches a custom event that AgentSidebar listens for.
|
|
49
|
+
*/
|
|
50
|
+
export declare function AgentToggleButton({ className }: {
|
|
51
|
+
className?: string;
|
|
52
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
53
|
+
//# sourceMappingURL=AgentPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentPanel.d.ts","sourceRoot":"","sources":["../../src/client/AgentPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAA8C,MAAM,OAAO,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAmD7D,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAC3C,kBAAkB,EAClB,eAAe,GAAG,aAAa,CAChC;IACC,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC7B,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EACzB,WAAoB,EACpB,SAAS,EACT,MAAM,EACN,cAAc,EACd,WAAW,EACX,UAAiB,GAClB,EAAE,eAAe,2CAiFjB;AAID,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,cAAsC,EACtC,WAAW,EACX,YAAkB,GACnB,EAAE,iBAAiB,2CAgCnB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAatE"}
|