@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
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import cors from "cors";
|
|
1
|
+
import { createApp, createRouter, defineEventHandler, readBody, setResponseStatus, } from "h3";
|
|
3
2
|
import fs from "fs";
|
|
4
3
|
import path from "path";
|
|
5
4
|
import { agentEnv } from "../shared/agent-env.js";
|
|
@@ -29,7 +28,13 @@ function parseEnvFile(content) {
|
|
|
29
28
|
/**
|
|
30
29
|
* Upsert vars into a .env file, preserving existing structure.
|
|
31
30
|
*/
|
|
32
|
-
function upsertEnvFile(envPath, vars) {
|
|
31
|
+
export function upsertEnvFile(envPath, vars) {
|
|
32
|
+
// Sanitize: reject values that could inject additional env vars
|
|
33
|
+
for (const { key, value } of vars) {
|
|
34
|
+
if (/[\n\r\0]/.test(value)) {
|
|
35
|
+
throw new Error(`Invalid env var value for ${key}: must not contain newlines or control characters`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
33
38
|
let content = "";
|
|
34
39
|
try {
|
|
35
40
|
content = fs.readFileSync(envPath, "utf-8");
|
|
@@ -67,51 +72,66 @@ function upsertEnvFile(envPath, vars) {
|
|
|
67
72
|
fs.writeFileSync(envPath, result);
|
|
68
73
|
}
|
|
69
74
|
/**
|
|
70
|
-
* Create a pre-configured
|
|
71
|
-
* - CORS
|
|
72
|
-
* - JSON body parser (50mb limit)
|
|
73
|
-
* - URL-encoded body parser
|
|
75
|
+
* Create a pre-configured H3 app with standard agent-native setup:
|
|
76
|
+
* - CORS headers via middleware
|
|
74
77
|
* - /api/ping health check
|
|
75
78
|
* - /api/env-status and /api/env-vars (when envKeys is provided)
|
|
79
|
+
*
|
|
80
|
+
* Returns { app, router } — mount routes on `router`.
|
|
76
81
|
*/
|
|
77
82
|
export function createServer(options = {}) {
|
|
78
|
-
const app =
|
|
79
|
-
|
|
83
|
+
const app = createApp({
|
|
84
|
+
onError(error, event) {
|
|
85
|
+
console.error("[agent-native] Server error:", error);
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
// CORS middleware
|
|
80
89
|
if (options.cors !== false) {
|
|
81
|
-
app.use(
|
|
90
|
+
app.use(defineEventHandler((event) => {
|
|
91
|
+
const headers = event.node.res;
|
|
92
|
+
headers.setHeader("Access-Control-Allow-Origin", "*");
|
|
93
|
+
headers.setHeader("Access-Control-Allow-Methods", "GET,POST,PUT,PATCH,DELETE,OPTIONS");
|
|
94
|
+
headers.setHeader("Access-Control-Allow-Headers", "Content-Type,Authorization,X-Requested-With");
|
|
95
|
+
if (event.node.req.method === "OPTIONS") {
|
|
96
|
+
headers.writeHead(204);
|
|
97
|
+
headers.end();
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
}));
|
|
82
101
|
}
|
|
83
|
-
|
|
84
|
-
app.use(
|
|
102
|
+
const router = createRouter();
|
|
103
|
+
app.use(router);
|
|
85
104
|
// Health check
|
|
86
105
|
if (!options.disablePing) {
|
|
87
|
-
|
|
106
|
+
router.get("/api/ping", defineEventHandler(() => {
|
|
88
107
|
const message = options.pingMessage ?? process.env.PING_MESSAGE ?? "pong";
|
|
89
|
-
|
|
90
|
-
});
|
|
108
|
+
return { message };
|
|
109
|
+
}));
|
|
91
110
|
}
|
|
92
111
|
// Env key management routes
|
|
93
112
|
if (options.envKeys) {
|
|
94
113
|
const envKeys = options.envKeys;
|
|
95
|
-
|
|
96
|
-
|
|
114
|
+
router.get("/api/env-status", defineEventHandler(() => {
|
|
115
|
+
return envKeys.map((cfg) => ({
|
|
97
116
|
key: cfg.key,
|
|
98
117
|
label: cfg.label,
|
|
99
118
|
required: cfg.required ?? false,
|
|
100
119
|
configured: !!process.env[cfg.key],
|
|
101
|
-
}))
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
const
|
|
120
|
+
}));
|
|
121
|
+
}));
|
|
122
|
+
router.post("/api/env-vars", defineEventHandler(async (event) => {
|
|
123
|
+
const body = await readBody(event);
|
|
124
|
+
const { vars } = body;
|
|
105
125
|
if (!Array.isArray(vars) || vars.length === 0) {
|
|
106
|
-
|
|
107
|
-
return;
|
|
126
|
+
setResponseStatus(event, 400);
|
|
127
|
+
return { error: "vars array required" };
|
|
108
128
|
}
|
|
109
129
|
// Only allow keys that are in the env config
|
|
110
130
|
const allowedKeys = new Set(envKeys.map((k) => k.key));
|
|
111
131
|
const filtered = vars.filter((v) => allowedKeys.has(v.key));
|
|
112
132
|
if (filtered.length === 0) {
|
|
113
|
-
|
|
114
|
-
return;
|
|
133
|
+
setResponseStatus(event, 400);
|
|
134
|
+
return { error: "No recognized env keys in request" };
|
|
115
135
|
}
|
|
116
136
|
// Write to .env file
|
|
117
137
|
const envPath = path.join(process.cwd(), ".env");
|
|
@@ -122,9 +142,9 @@ export function createServer(options = {}) {
|
|
|
122
142
|
}
|
|
123
143
|
// Notify parent (Builder or harness) via postMessage
|
|
124
144
|
agentEnv.setVars(filtered);
|
|
125
|
-
|
|
126
|
-
});
|
|
145
|
+
return { saved: filtered.map((v) => v.key) };
|
|
146
|
+
}));
|
|
127
147
|
}
|
|
128
|
-
return app;
|
|
148
|
+
return { app, router };
|
|
129
149
|
}
|
|
130
150
|
//# sourceMappingURL=create-server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-server.js","sourceRoot":"","sources":["../../src/server/create-server.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"create-server.js","sourceRoot":"","sources":["../../src/server/create-server.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,QAAQ,EACR,iBAAiB,GAElB,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAwBlD;;GAEG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAClD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,OAAO,KAAK,CAAC,CAAC;YAAE,SAAS;QAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,2BAA2B;QAC3B,IACE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC9C,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC9C,CAAC;YACD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAe,EACf,IAA2C;IAE3C,gEAAgE;IAChE,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;QAClC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,6BAA6B,GAAG,mDAAmD,CACpF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE7D,iCAAiC;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACrD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,OAAO,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAChC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YAClC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,kBAAkB;IAClB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,0BAA0B;IAC1B,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,IAAI,CAAC;IAE3C,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC;AAOD;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,UAA+B,EAAE;IAEjC,MAAM,GAAG,GAAG,SAAS,CAAC;QACpB,OAAO,CAAC,KAAK,EAAE,KAAK;YAClB,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;KACF,CAAC,CAAC;IAEH,kBAAkB;IAClB,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,GAAG,CAAC,GAAG,CACL,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/B,OAAO,CAAC,SAAS,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YACtD,OAAO,CAAC,SAAS,CACf,8BAA8B,EAC9B,mCAAmC,CACpC,CAAC;YACF,OAAO,CAAC,SAAS,CACf,8BAA8B,EAC9B,6CAA6C,CAC9C,CAAC;YAEF,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACxC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACvB,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEhB,eAAe;IACf,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CACR,WAAW,EACX,kBAAkB,CAAC,GAAG,EAAE;YACtB,MAAM,OAAO,GACX,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,MAAM,CAAC;YAC5D,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,4BAA4B;IAC5B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAEhC,MAAM,CAAC,GAAG,CACR,iBAAiB,EACjB,kBAAkB,CAAC,GAAG,EAAE;YACtB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC3B,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,KAAK;gBAC/B,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;aACnC,CAAC,CAAC,CAAC;QACN,CAAC,CAAC,CACH,CAAC;QAEF,MAAM,CAAC,IAAI,CACT,eAAe,EACf,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,EAAE,IAAI,EAAE,GAAG,IAEhB,CAAC;YAEF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9C,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;YAC1C,CAAC;YAED,6CAA6C;YAC7C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC;YACxD,CAAC;YAED,qBAAqB;YACrB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;YACjD,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAEjC,oEAAoE;YACpE,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,QAAQ,EAAE,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC3B,CAAC;YAED,qDAAqD;YACrD,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAE3B,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SSEHandlerOptions } from "./sse.js";
|
|
2
|
+
export declare function getDefaultSSEEmitters(): NonNullable<SSEHandlerOptions["extraEmitters"]>;
|
|
3
|
+
/** @deprecated File sync is no longer used. Returns no-op status. */
|
|
4
|
+
export declare function defaultSyncStatusHandler(): {
|
|
5
|
+
enabled: boolean;
|
|
6
|
+
conflicts: number;
|
|
7
|
+
};
|
|
8
|
+
/** @deprecated File sync is no longer used. No-op. */
|
|
9
|
+
export declare function setDefaultSyncResult(_result: any): void;
|
|
10
|
+
/**
|
|
11
|
+
* Create the default SSE handler for all templates.
|
|
12
|
+
*
|
|
13
|
+
* Streams DB change events (application state, settings) to connected clients.
|
|
14
|
+
* No file watcher — all data lives in SQL.
|
|
15
|
+
*/
|
|
16
|
+
export declare function createDefaultSSEHandler(): import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<void>>;
|
|
17
|
+
//# sourceMappingURL=default-watcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-watcher.d.ts","sourceRoot":"","sources":["../../src/server/default-watcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAelD,wBAAgB,qBAAqB,IAAI,WAAW,CAClD,iBAAiB,CAAC,eAAe,CAAC,CACnC,CAGA;AAID,qEAAqE;AACrE,wBAAgB,wBAAwB;;;EAEvC;AAED,sDAAsD;AACtD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,GAAG,QAAI;AAErD;;;;;GAKG;AACH,wBAAgB,uBAAuB,+EAKtC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { createSSEHandler } from "./sse.js";
|
|
2
|
+
import { getAppStateEmitter } from "../application-state/emitter.js";
|
|
3
|
+
import { getSettingsEmitter } from "../settings/store.js";
|
|
4
|
+
const _emitters = [];
|
|
5
|
+
let _emittersRegistered = false;
|
|
6
|
+
/** Ensure the DB change emitters are wired into SSE. */
|
|
7
|
+
function ensureEmitters() {
|
|
8
|
+
if (_emittersRegistered)
|
|
9
|
+
return;
|
|
10
|
+
_emittersRegistered = true;
|
|
11
|
+
_emitters.push({ emitter: getAppStateEmitter(), event: "app-state" });
|
|
12
|
+
_emitters.push({ emitter: getSettingsEmitter(), event: "settings" });
|
|
13
|
+
}
|
|
14
|
+
export function getDefaultSSEEmitters() {
|
|
15
|
+
ensureEmitters();
|
|
16
|
+
return _emitters;
|
|
17
|
+
}
|
|
18
|
+
// --- Legacy file sync compat (deprecated — data is SQL-backed now) ---
|
|
19
|
+
/** @deprecated File sync is no longer used. Returns no-op status. */
|
|
20
|
+
export function defaultSyncStatusHandler() {
|
|
21
|
+
return { enabled: false, conflicts: 0 };
|
|
22
|
+
}
|
|
23
|
+
/** @deprecated File sync is no longer used. No-op. */
|
|
24
|
+
export function setDefaultSyncResult(_result) { }
|
|
25
|
+
/**
|
|
26
|
+
* Create the default SSE handler for all templates.
|
|
27
|
+
*
|
|
28
|
+
* Streams DB change events (application state, settings) to connected clients.
|
|
29
|
+
* No file watcher — all data lives in SQL.
|
|
30
|
+
*/
|
|
31
|
+
export function createDefaultSSEHandler() {
|
|
32
|
+
ensureEmitters();
|
|
33
|
+
return createSSEHandler({
|
|
34
|
+
extraEmitters: _emitters,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=default-watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-watcher.js","sourceRoot":"","sources":["../../src/server/default-watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,SAAS,GAAoD,EAAE,CAAC;AACtE,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAEhC,wDAAwD;AACxD,SAAS,cAAc;IACrB,IAAI,mBAAmB;QAAE,OAAO;IAChC,mBAAmB,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IACtE,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,qBAAqB;IAGnC,cAAc,EAAE,CAAC;IACjB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,wEAAwE;AAExE,qEAAqE;AACrE,MAAM,UAAU,wBAAwB;IACtC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;AAC1C,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,oBAAoB,CAAC,OAAY,IAAG,CAAC;AAErD;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB;IACrC,cAAc,EAAE,CAAC;IACjB,OAAO,gBAAgB,CAAC;QACtB,aAAa,EAAE,SAAS;KACzB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
type NitroPluginDef = (nitroApp: any) => void | Promise<void>;
|
|
2
|
+
export declare function createFileSyncPlugin(options?: {
|
|
3
|
+
contentRoot?: string;
|
|
4
|
+
}): NitroPluginDef;
|
|
5
|
+
export declare const defaultFileSyncPlugin: NitroPluginDef;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=file-sync-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-sync-plugin.d.ts","sourceRoot":"","sources":["../../src/server/file-sync-plugin.ts"],"names":[],"mappings":"AAGA,KAAK,cAAc,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE9D,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,cAAc,CAoCjB;AAED,eAAO,MAAM,qBAAqB,EAAE,cAAuC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import { setDefaultSyncResult } from "./default-watcher.js";
|
|
3
|
+
export function createFileSyncPlugin(options) {
|
|
4
|
+
return async () => {
|
|
5
|
+
// Dynamic import to avoid loading sync deps when not needed
|
|
6
|
+
const { createFileSync } = await import("../adapters/sync/index.js");
|
|
7
|
+
const result = await createFileSync({
|
|
8
|
+
contentRoot: options?.contentRoot || "./data",
|
|
9
|
+
});
|
|
10
|
+
setDefaultSyncResult(result);
|
|
11
|
+
if (result.status === "error") {
|
|
12
|
+
console.warn(`[app] File sync failed: ${result.reason}`);
|
|
13
|
+
}
|
|
14
|
+
process.on("SIGTERM", async () => {
|
|
15
|
+
if (result.status === "ready")
|
|
16
|
+
await result.shutdown();
|
|
17
|
+
process.exit(0);
|
|
18
|
+
});
|
|
19
|
+
if (result.status === "ready") {
|
|
20
|
+
result.fileSync.syncEvents.on("sync", (event) => {
|
|
21
|
+
try {
|
|
22
|
+
if (event.type === "conflict-needs-llm") {
|
|
23
|
+
fs.mkdirSync("application-state", { recursive: true });
|
|
24
|
+
fs.writeFileSync("application-state/sync-conflict.json", JSON.stringify(event, null, 2));
|
|
25
|
+
}
|
|
26
|
+
else if (event.type === "conflict-resolved") {
|
|
27
|
+
fs.rmSync("application-state/sync-conflict.json", { force: true });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
/* best-effort */
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export const defaultFileSyncPlugin = createFileSyncPlugin();
|
|
38
|
+
//# sourceMappingURL=file-sync-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-sync-plugin.js","sourceRoot":"","sources":["../../src/server/file-sync-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAI5D,MAAM,UAAU,oBAAoB,CAAC,OAEpC;IACC,OAAO,KAAK,IAAI,EAAE;QAChB,4DAA4D;QAC5D,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YAClC,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,QAAQ;SAC9C,CAAC,CAAC;QACH,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAE7B,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,2BAA2B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YAC/B,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO;gBAAE,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAU,EAAE,EAAE;gBACnD,IAAI,CAAC;oBACH,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;wBACxC,EAAE,CAAC,SAAS,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;wBACvD,EAAE,CAAC,aAAa,CACd,sCAAsC,EACtC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAC/B,CAAC;oBACJ,CAAC;yBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;wBAC9C,EAAE,CAAC,MAAM,CAAC,sCAAsC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;oBACrE,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,iBAAiB;gBACnB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAmB,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
type NitroPluginDef = (nitroApp: any) => void | Promise<void>;
|
|
2
|
+
export interface GoogleAuthPluginOptions {
|
|
3
|
+
/** Additional paths accessible without authentication */
|
|
4
|
+
publicPaths?: string[];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Create an auth plugin that uses Google OAuth for authentication.
|
|
8
|
+
*
|
|
9
|
+
* When a user visits the app unauthenticated, they see a "Sign in with Google"
|
|
10
|
+
* page. The Google OAuth callback (handled by the template) creates a session
|
|
11
|
+
* tied to the user's Google email. `getSession()` then returns `{ email }` for
|
|
12
|
+
* all subsequent requests.
|
|
13
|
+
*
|
|
14
|
+
* Usage in a template's `server/plugins/auth.ts`:
|
|
15
|
+
* ```ts
|
|
16
|
+
* import { createGoogleAuthPlugin } from "@agent-native/core/server";
|
|
17
|
+
* export default createGoogleAuthPlugin();
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare function createGoogleAuthPlugin(options?: GoogleAuthPluginOptions): NitroPluginDef;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=google-auth-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-auth-plugin.d.ts","sourceRoot":"","sources":["../../src/server/google-auth-plugin.ts"],"names":[],"mappings":"AAIA,KAAK,cAAc,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE9D,MAAM,WAAW,uBAAuB;IACtC,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAwFD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,CAAC,EAAE,uBAAuB,GAChC,cAAc,CAgBhB"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { getCookie } from "h3";
|
|
2
|
+
import { createAuthPlugin } from "./auth-plugin.js";
|
|
3
|
+
import { getSessionEmail } from "./auth.js";
|
|
4
|
+
const GOOGLE_LOGIN_HTML = `<!DOCTYPE html>
|
|
5
|
+
<html lang="en">
|
|
6
|
+
<head>
|
|
7
|
+
<meta charset="UTF-8">
|
|
8
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
9
|
+
<title>Sign in</title>
|
|
10
|
+
<style>
|
|
11
|
+
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
|
12
|
+
body {
|
|
13
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
14
|
+
background: #0a0a0a;
|
|
15
|
+
color: #e5e5e5;
|
|
16
|
+
display: flex;
|
|
17
|
+
align-items: center;
|
|
18
|
+
justify-content: center;
|
|
19
|
+
min-height: 100vh;
|
|
20
|
+
}
|
|
21
|
+
.card {
|
|
22
|
+
width: 100%;
|
|
23
|
+
max-width: 360px;
|
|
24
|
+
padding: 2rem;
|
|
25
|
+
background: #141414;
|
|
26
|
+
border: 1px solid rgba(255,255,255,0.08);
|
|
27
|
+
border-radius: 12px;
|
|
28
|
+
text-align: center;
|
|
29
|
+
}
|
|
30
|
+
h1 { font-size: 1.125rem; font-weight: 600; margin-bottom: 0.5rem; color: #fff; }
|
|
31
|
+
.subtitle { font-size: 0.8125rem; color: #888; margin-bottom: 1.5rem; }
|
|
32
|
+
button {
|
|
33
|
+
width: 100%;
|
|
34
|
+
display: flex;
|
|
35
|
+
align-items: center;
|
|
36
|
+
justify-content: center;
|
|
37
|
+
gap: 0.625rem;
|
|
38
|
+
padding: 0.625rem;
|
|
39
|
+
background: #fff;
|
|
40
|
+
color: #000;
|
|
41
|
+
border: none;
|
|
42
|
+
border-radius: 8px;
|
|
43
|
+
font-size: 0.9375rem;
|
|
44
|
+
font-weight: 500;
|
|
45
|
+
cursor: pointer;
|
|
46
|
+
}
|
|
47
|
+
button:hover { opacity: 0.85; }
|
|
48
|
+
button:disabled { opacity: 0.5; cursor: wait; }
|
|
49
|
+
.error { margin-top: 0.75rem; font-size: 0.8125rem; color: #f87171; display: none; }
|
|
50
|
+
.error.show { display: block; }
|
|
51
|
+
svg { width: 18px; height: 18px; }
|
|
52
|
+
</style>
|
|
53
|
+
</head>
|
|
54
|
+
<body>
|
|
55
|
+
<div class="card">
|
|
56
|
+
<h1>Sign in</h1>
|
|
57
|
+
<p class="subtitle">Continue with your Google account</p>
|
|
58
|
+
<button id="btn" onclick="signIn()">
|
|
59
|
+
<svg viewBox="0 0 24 24"><path fill="#4285F4" d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z"/><path fill="#34A853" d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"/><path fill="#FBBC05" d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"/><path fill="#EA4335" d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"/></svg>
|
|
60
|
+
Sign in with Google
|
|
61
|
+
</button>
|
|
62
|
+
<p class="error" id="err"></p>
|
|
63
|
+
</div>
|
|
64
|
+
<script>
|
|
65
|
+
async function signIn() {
|
|
66
|
+
var btn = document.getElementById('btn');
|
|
67
|
+
var err = document.getElementById('err');
|
|
68
|
+
btn.disabled = true;
|
|
69
|
+
err.classList.remove('show');
|
|
70
|
+
try {
|
|
71
|
+
var res = await fetch('/api/google/auth-url');
|
|
72
|
+
var data = await res.json();
|
|
73
|
+
if (data.url) {
|
|
74
|
+
window.location.href = data.url;
|
|
75
|
+
} else {
|
|
76
|
+
err.textContent = data.message || 'Google OAuth is not configured. Set GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET.';
|
|
77
|
+
err.classList.add('show');
|
|
78
|
+
btn.disabled = false;
|
|
79
|
+
}
|
|
80
|
+
} catch (e) {
|
|
81
|
+
err.textContent = 'Failed to connect. Please try again.';
|
|
82
|
+
err.classList.add('show');
|
|
83
|
+
btn.disabled = false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
</script>
|
|
87
|
+
</body>
|
|
88
|
+
</html>`;
|
|
89
|
+
/**
|
|
90
|
+
* Create an auth plugin that uses Google OAuth for authentication.
|
|
91
|
+
*
|
|
92
|
+
* When a user visits the app unauthenticated, they see a "Sign in with Google"
|
|
93
|
+
* page. The Google OAuth callback (handled by the template) creates a session
|
|
94
|
+
* tied to the user's Google email. `getSession()` then returns `{ email }` for
|
|
95
|
+
* all subsequent requests.
|
|
96
|
+
*
|
|
97
|
+
* Usage in a template's `server/plugins/auth.ts`:
|
|
98
|
+
* ```ts
|
|
99
|
+
* import { createGoogleAuthPlugin } from "@agent-native/core/server";
|
|
100
|
+
* export default createGoogleAuthPlugin();
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
export function createGoogleAuthPlugin(options) {
|
|
104
|
+
return createAuthPlugin({
|
|
105
|
+
getSession: async (event) => {
|
|
106
|
+
const cookie = getCookie(event, "an_session");
|
|
107
|
+
if (!cookie)
|
|
108
|
+
return null;
|
|
109
|
+
const email = await getSessionEmail(cookie);
|
|
110
|
+
if (!email)
|
|
111
|
+
return null;
|
|
112
|
+
return { email, token: cookie };
|
|
113
|
+
},
|
|
114
|
+
publicPaths: [
|
|
115
|
+
"/api/google/callback",
|
|
116
|
+
"/api/google/auth-url",
|
|
117
|
+
...(options?.publicPaths ?? []),
|
|
118
|
+
],
|
|
119
|
+
loginHtml: GOOGLE_LOGIN_HTML,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=google-auth-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-auth-plugin.js","sourceRoot":"","sources":["../../src/server/google-auth-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAS5C,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAoFlB,CAAC;AAET;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAiC;IAEjC,OAAO,gBAAgB,CAAC;QACtB,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YACzB,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC;YACxB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAClC,CAAC;QACD,WAAW,EAAE;YACX,sBAAsB;YACtB,sBAAsB;YACtB,GAAG,CAAC,OAAO,EAAE,WAAW,IAAI,EAAE,CAAC;SAChC;QACD,SAAS,EAAE,iBAAiB;KAC7B,CAAC,CAAC;AACL,CAAC"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
|
-
export { createServer, type CreateServerOptions, type EnvKeyConfig, } from "./create-server.js";
|
|
1
|
+
export { createServer, upsertEnvFile, type CreateServerOptions, type EnvKeyConfig, } from "./create-server.js";
|
|
2
2
|
export { createFileWatcher, createSSEHandler, type FileWatcherOptions, type SSEHandlerOptions, } from "./sse.js";
|
|
3
|
-
export {
|
|
3
|
+
export { mountAuthMiddleware, autoMountAuth, getSession, addSession, removeSession, getSessionEmail, type AuthSession, type AuthOptions, } from "./auth.js";
|
|
4
4
|
export { requireEnvKey, type MissingKeyResponse } from "./missing-key.js";
|
|
5
|
+
export { verifyCaptcha, type CaptchaVerifyResult } from "./captcha.js";
|
|
6
|
+
export { createProductionAgentHandler, type ScriptEntry, type ProductionAgentOptions, type ScriptTool, type AgentMessage, type AgentChatRequest, type AgentChatEvent, } from "../agent/index.js";
|
|
7
|
+
export { createDevScriptRegistry } from "../scripts/dev/index.js";
|
|
8
|
+
export { getDefaultSSEEmitters, setDefaultSyncResult, createDefaultSSEHandler, defaultSyncStatusHandler, } from "./default-watcher.js";
|
|
9
|
+
export { createAuthPlugin, defaultAuthPlugin } from "./auth-plugin.js";
|
|
10
|
+
export { createGoogleAuthPlugin, type GoogleAuthPluginOptions, } from "./google-auth-plugin.js";
|
|
11
|
+
export { createAgentChatPlugin, defaultAgentChatPlugin, type AgentChatPluginOptions, } from "./agent-chat-plugin.js";
|
|
12
|
+
export { createFileSyncPlugin, defaultFileSyncPlugin, } from "./file-sync-plugin.js";
|
|
13
|
+
export { createTerminalPlugin, defaultTerminalPlugin, type TerminalPluginOptions, } from "../terminal/terminal-plugin.js";
|
|
14
|
+
type NitroPluginDef = (nitroApp: any) => void | Promise<void>;
|
|
15
|
+
export declare function defineNitroPlugin(def: NitroPluginDef): NitroPluginDef;
|
|
5
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,UAAU,EACV,aAAa,EACb,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EACL,4BAA4B,EAC5B,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,sBAAsB,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,qBAAqB,GAC3B,MAAM,gCAAgC,CAAC;AAKxC,KAAK,cAAc,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9D,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,cAAc,CAErE"}
|
package/dist/server/index.js
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
|
-
export { createServer, } from "./create-server.js";
|
|
1
|
+
export { createServer, upsertEnvFile, } from "./create-server.js";
|
|
2
2
|
export { createFileWatcher, createSSEHandler, } from "./sse.js";
|
|
3
|
-
export {
|
|
3
|
+
export { mountAuthMiddleware, autoMountAuth, getSession, addSession, removeSession, getSessionEmail, } from "./auth.js";
|
|
4
4
|
export { requireEnvKey } from "./missing-key.js";
|
|
5
|
+
export { verifyCaptcha } from "./captcha.js";
|
|
6
|
+
export { createProductionAgentHandler, } from "../agent/index.js";
|
|
7
|
+
export { createDevScriptRegistry } from "../scripts/dev/index.js";
|
|
8
|
+
export { getDefaultSSEEmitters, setDefaultSyncResult, createDefaultSSEHandler, defaultSyncStatusHandler, } from "./default-watcher.js";
|
|
9
|
+
export { createAuthPlugin, defaultAuthPlugin } from "./auth-plugin.js";
|
|
10
|
+
export { createGoogleAuthPlugin, } from "./google-auth-plugin.js";
|
|
11
|
+
export { createAgentChatPlugin, defaultAgentChatPlugin, } from "./agent-chat-plugin.js";
|
|
12
|
+
export { createFileSyncPlugin, defaultFileSyncPlugin, } from "./file-sync-plugin.js";
|
|
13
|
+
export { createTerminalPlugin, defaultTerminalPlugin, } from "../terminal/terminal-plugin.js";
|
|
14
|
+
export function defineNitroPlugin(def) {
|
|
15
|
+
return def;
|
|
16
|
+
}
|
|
5
17
|
//# sourceMappingURL=index.js.map
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,GAGd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GAGjB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,UAAU,EACV,aAAa,EACb,eAAe,GAGhB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,aAAa,EAA2B,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAA4B,MAAM,cAAc,CAAC;AACvE,OAAO,EACL,4BAA4B,GAO7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EACL,sBAAsB,GAEvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GAEtB,MAAM,gCAAgC,CAAC;AAMxC,MAAM,UAAU,iBAAiB,CAAC,GAAmB;IACnD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type H3Event } from "h3";
|
|
2
2
|
export interface MissingKeyResponse {
|
|
3
3
|
error: "missing_api_key";
|
|
4
4
|
key: string;
|
|
@@ -7,11 +7,15 @@ export interface MissingKeyResponse {
|
|
|
7
7
|
settingsPath: string;
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
|
-
* Check if an env var is set. If not,
|
|
11
|
-
* Returns
|
|
10
|
+
* Check if an env var is set. If not, set response status and return a structured
|
|
11
|
+
* missing_api_key response object. Returns null if the key exists (no action needed).
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* const missing = requireEnvKey(event, 'MY_KEY', 'My Service');
|
|
15
|
+
* if (missing) return missing;
|
|
12
16
|
*/
|
|
13
|
-
export declare function requireEnvKey(
|
|
17
|
+
export declare function requireEnvKey(event: H3Event, key: string, label: string, options?: {
|
|
14
18
|
message?: string;
|
|
15
19
|
settingsPath?: string;
|
|
16
|
-
}):
|
|
20
|
+
}): MissingKeyResponse | null;
|
|
17
21
|
//# sourceMappingURL=missing-key.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"missing-key.d.ts","sourceRoot":"","sources":["../../src/server/missing-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"missing-key.d.ts","sourceRoot":"","sources":["../../src/server/missing-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,IAAI,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,iBAAiB,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GACpD,kBAAkB,GAAG,IAAI,CAY3B"}
|
|
@@ -1,17 +1,22 @@
|
|
|
1
|
+
import { setResponseStatus } from "h3";
|
|
1
2
|
/**
|
|
2
|
-
* Check if an env var is set. If not,
|
|
3
|
-
* Returns
|
|
3
|
+
* Check if an env var is set. If not, set response status and return a structured
|
|
4
|
+
* missing_api_key response object. Returns null if the key exists (no action needed).
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* const missing = requireEnvKey(event, 'MY_KEY', 'My Service');
|
|
8
|
+
* if (missing) return missing;
|
|
4
9
|
*/
|
|
5
|
-
export function requireEnvKey(
|
|
10
|
+
export function requireEnvKey(event, key, label, options) {
|
|
6
11
|
if (process.env[key])
|
|
7
|
-
return
|
|
8
|
-
|
|
12
|
+
return null;
|
|
13
|
+
setResponseStatus(event, 200);
|
|
14
|
+
return {
|
|
9
15
|
error: "missing_api_key",
|
|
10
16
|
key,
|
|
11
17
|
label,
|
|
12
18
|
message: options?.message ?? `Connect your ${label} account to see this data`,
|
|
13
19
|
settingsPath: options?.settingsPath ?? "/settings",
|
|
14
|
-
}
|
|
15
|
-
return true;
|
|
20
|
+
};
|
|
16
21
|
}
|
|
17
22
|
//# sourceMappingURL=missing-key.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"missing-key.js","sourceRoot":"","sources":["../../src/server/missing-key.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"missing-key.js","sourceRoot":"","sources":["../../src/server/missing-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAgB,MAAM,IAAI,CAAC;AAUrD;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAc,EACd,GAAW,EACX,KAAa,EACb,OAAqD;IAErD,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAElC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9B,OAAO;QACL,KAAK,EAAE,iBAAiB;QACxB,GAAG;QACH,KAAK;QACL,OAAO,EACL,OAAO,EAAE,OAAO,IAAI,gBAAgB,KAAK,2BAA2B;QACtE,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,WAAW;KACnD,CAAC;AACJ,CAAC"}
|
package/dist/server/sse.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { type FSWatcher } from "chokidar";
|
|
2
|
-
import { EventEmitter } from "events";
|
|
3
|
-
import type { Request, Response } from "express";
|
|
4
2
|
export type { FSWatcher } from "chokidar";
|
|
5
3
|
export interface FileWatcherOptions {
|
|
6
4
|
/** Glob patterns or regex to ignore. */
|
|
7
|
-
ignored?:
|
|
5
|
+
ignored?: string | RegExp | string[];
|
|
8
6
|
/** Whether to emit events for the initial file scan. Default: false (ignoreInitial: true) */
|
|
9
7
|
emitInitial?: boolean;
|
|
10
8
|
}
|
|
@@ -13,18 +11,30 @@ export interface FileWatcherOptions {
|
|
|
13
11
|
* Returns a chokidar.FSWatcher that emits "all" events on file changes.
|
|
14
12
|
*/
|
|
15
13
|
export declare function createFileWatcher(dir: string | string[], options?: FileWatcherOptions): FSWatcher;
|
|
14
|
+
/** Any object with on/off methods (compatible with EventEmitter, TypedEventEmitter, etc.). */
|
|
15
|
+
interface EventLike {
|
|
16
|
+
on(event: string, listener: (...args: any[]) => void): any;
|
|
17
|
+
off(event: string, listener: (...args: any[]) => void): any;
|
|
18
|
+
}
|
|
16
19
|
export interface SSEHandlerOptions {
|
|
17
|
-
/** Additional EventEmitters to stream events from (e.g.
|
|
20
|
+
/** Additional EventEmitters to stream events from (e.g. DB change events). */
|
|
18
21
|
extraEmitters?: Array<{
|
|
19
|
-
emitter:
|
|
22
|
+
emitter: EventLike;
|
|
20
23
|
event: string;
|
|
21
24
|
}>;
|
|
25
|
+
/** Optional file watcher for streaming file change events (e.g. code modifications). */
|
|
26
|
+
watcher?: FSWatcher;
|
|
27
|
+
/** Content root for computing relative paths. If provided, absolute paths are stripped. */
|
|
28
|
+
contentRoot?: string;
|
|
22
29
|
}
|
|
23
30
|
/**
|
|
24
|
-
* Create an
|
|
31
|
+
* Create an H3 event handler that streams Server-Sent Events.
|
|
32
|
+
*
|
|
33
|
+
* Streams events from DB change emitters (application state, settings)
|
|
34
|
+
* and optionally from a file watcher.
|
|
25
35
|
*
|
|
26
36
|
* Usage:
|
|
27
|
-
*
|
|
37
|
+
* router.get("/api/events", createSSEHandler({ extraEmitters }));
|
|
28
38
|
*/
|
|
29
|
-
export declare function createSSEHandler(
|
|
39
|
+
export declare function createSSEHandler(options?: SSEHandlerOptions): import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<void>>;
|
|
30
40
|
//# sourceMappingURL=sse.d.ts.map
|
package/dist/server/sse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/server/sse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/server/sse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAKjD,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,WAAW,kBAAkB;IACjC,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;IACrC,6FAA6F;IAC7F,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,EACtB,OAAO,GAAE,kBAAuB,GAC/B,SAAS,CAKX;AAED,8FAA8F;AAC9F,UAAU,SAAS;IAEjB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,CAAC;IAE3D,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,CAAC;CAC7D;AAED,MAAM,WAAW,iBAAiB;IAChC,8EAA8E;IAC9E,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,wFAAwF;IACxF,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,8EA+F/D"}
|