@agentuity/cli 2.0.11 → 3.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cmd/ai/prompt/index.d.ts.map +1 -1
- package/dist/cmd/ai/prompt/index.js +2 -7
- package/dist/cmd/ai/prompt/index.js.map +1 -1
- package/dist/cmd/build/adapters/generic.d.ts +29 -0
- package/dist/cmd/build/adapters/generic.d.ts.map +1 -0
- package/dist/cmd/build/adapters/generic.js +190 -0
- package/dist/cmd/build/adapters/generic.js.map +1 -0
- package/dist/cmd/build/adapters/index.d.ts +15 -0
- package/dist/cmd/build/adapters/index.d.ts.map +1 -0
- package/dist/cmd/build/adapters/index.js +24 -0
- package/dist/cmd/build/adapters/index.js.map +1 -0
- package/dist/cmd/build/adapters/nextjs.d.ts +11 -0
- package/dist/cmd/build/adapters/nextjs.d.ts.map +1 -0
- package/dist/cmd/build/adapters/nextjs.js +118 -0
- package/dist/cmd/build/adapters/nextjs.js.map +1 -0
- package/dist/cmd/build/adapters/static-server.d.ts +23 -0
- package/dist/cmd/build/adapters/static-server.d.ts.map +1 -0
- package/dist/cmd/build/adapters/static-server.js +137 -0
- package/dist/cmd/build/adapters/static-server.js.map +1 -0
- package/dist/cmd/build/adapters/types.d.ts +71 -0
- package/dist/cmd/build/adapters/types.d.ts.map +1 -0
- package/dist/cmd/build/adapters/types.js +8 -0
- package/dist/cmd/build/adapters/types.js.map +1 -0
- package/dist/cmd/build/detect/engine.d.ts +24 -0
- package/dist/cmd/build/detect/engine.d.ts.map +1 -0
- package/dist/cmd/build/detect/engine.js +91 -0
- package/dist/cmd/build/detect/engine.js.map +1 -0
- package/dist/cmd/build/detect/frameworks.d.ts +66 -0
- package/dist/cmd/build/detect/frameworks.d.ts.map +1 -0
- package/dist/cmd/build/detect/frameworks.js +278 -0
- package/dist/cmd/build/detect/frameworks.js.map +1 -0
- package/dist/cmd/build/detect/generic.d.ts +13 -0
- package/dist/cmd/build/detect/generic.d.ts.map +1 -0
- package/dist/cmd/build/detect/generic.js +62 -0
- package/dist/cmd/build/detect/generic.js.map +1 -0
- package/dist/cmd/build/detect/index.d.ts +27 -0
- package/dist/cmd/build/detect/index.d.ts.map +1 -0
- package/dist/cmd/build/detect/index.js +76 -0
- package/dist/cmd/build/detect/index.js.map +1 -0
- package/dist/cmd/build/detect/types.d.ts +91 -0
- package/dist/cmd/build/detect/types.d.ts.map +1 -0
- package/dist/cmd/build/detect/types.js +9 -0
- package/dist/cmd/build/detect/types.js.map +1 -0
- package/dist/cmd/build/detect/util.d.ts +41 -0
- package/dist/cmd/build/detect/util.d.ts.map +1 -0
- package/dist/cmd/build/detect/util.js +101 -0
- package/dist/cmd/build/detect/util.js.map +1 -0
- package/dist/cmd/build/index.d.ts.map +1 -1
- package/dist/cmd/build/index.js +49 -22
- package/dist/cmd/build/index.js.map +1 -1
- package/dist/cmd/build/package/index.d.ts +30 -0
- package/dist/cmd/build/package/index.d.ts.map +1 -0
- package/dist/cmd/build/package/index.js +39 -0
- package/dist/cmd/build/package/index.js.map +1 -0
- package/dist/cmd/build/package/launch.d.ts +56 -0
- package/dist/cmd/build/package/launch.d.ts.map +1 -0
- package/dist/cmd/build/package/launch.js +56 -0
- package/dist/cmd/build/package/launch.js.map +1 -0
- package/dist/cmd/build/typecheck.d.ts.map +1 -1
- package/dist/cmd/build/typecheck.js +8 -0
- package/dist/cmd/build/typecheck.js.map +1 -1
- package/dist/cmd/cloud/deploy.d.ts.map +1 -1
- package/dist/cmd/cloud/deploy.js +63 -13
- package/dist/cmd/cloud/deploy.js.map +1 -1
- package/dist/cmd/coder/create.js +7 -7
- package/dist/cmd/coder/create.js.map +1 -1
- package/dist/cmd/coder/update.js +8 -8
- package/dist/cmd/coder/update.js.map +1 -1
- package/dist/cmd/coder/workspace/create.js +9 -9
- package/dist/cmd/coder/workspace/create.js.map +1 -1
- package/dist/cmd/dev/index.d.ts +9 -0
- package/dist/cmd/dev/index.d.ts.map +1 -1
- package/dist/cmd/dev/index.js +127 -923
- package/dist/cmd/dev/index.js.map +1 -1
- package/dist/cmd/project/auth/shared.d.ts.map +1 -1
- package/dist/cmd/project/auth/shared.js +14 -38
- package/dist/cmd/project/auth/shared.js.map +1 -1
- package/dist/cmd/project/create.d.ts.map +1 -1
- package/dist/cmd/project/create.js +12 -19
- package/dist/cmd/project/create.js.map +1 -1
- package/dist/cmd/project/frameworks-ai-examples.d.ts +15 -0
- package/dist/cmd/project/frameworks-ai-examples.d.ts.map +1 -0
- package/dist/cmd/project/frameworks-ai-examples.js +160 -0
- package/dist/cmd/project/frameworks-ai-examples.js.map +1 -0
- package/dist/cmd/project/frameworks-landing-pages.d.ts +17 -0
- package/dist/cmd/project/frameworks-landing-pages.d.ts.map +1 -0
- package/dist/cmd/project/frameworks-landing-pages.js +242 -0
- package/dist/cmd/project/frameworks-landing-pages.js.map +1 -0
- package/dist/cmd/project/frameworks.d.ts +58 -0
- package/dist/cmd/project/frameworks.d.ts.map +1 -0
- package/dist/cmd/project/frameworks.js +152 -0
- package/dist/cmd/project/frameworks.js.map +1 -0
- package/dist/cmd/project/reconcile.d.ts.map +1 -1
- package/dist/cmd/project/reconcile.js +10 -23
- package/dist/cmd/project/reconcile.js.map +1 -1
- package/dist/cmd/project/remote-import.js +1 -1
- package/dist/cmd/project/scaffold.d.ts +58 -0
- package/dist/cmd/project/scaffold.d.ts.map +1 -0
- package/dist/cmd/project/scaffold.js +223 -0
- package/dist/cmd/project/scaffold.js.map +1 -0
- package/dist/cmd/project/template-flow.d.ts +8 -4
- package/dist/cmd/project/template-flow.d.ts.map +1 -1
- package/dist/cmd/project/template-flow.js +93 -144
- package/dist/cmd/project/template-flow.js.map +1 -1
- package/dist/deploy-metadata.d.ts +49 -0
- package/dist/deploy-metadata.d.ts.map +1 -0
- package/dist/deploy-metadata.js +183 -0
- package/dist/deploy-metadata.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +24 -30
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +13 -8
- package/src/cmd/ai/prompt/index.ts +2 -7
- package/src/cmd/build/adapters/generic.ts +239 -0
- package/src/cmd/build/adapters/index.ts +30 -0
- package/src/cmd/build/adapters/nextjs.ts +146 -0
- package/src/cmd/build/adapters/static-server.ts +143 -0
- package/src/cmd/build/adapters/types.ts +93 -0
- package/src/cmd/build/detect/engine.ts +111 -0
- package/src/cmd/build/detect/frameworks.ts +335 -0
- package/src/cmd/build/detect/generic.ts +71 -0
- package/src/cmd/build/detect/index.ts +122 -0
- package/src/cmd/build/detect/types.ts +109 -0
- package/src/cmd/build/detect/util.ts +104 -0
- package/src/cmd/build/index.ts +64 -24
- package/src/cmd/build/package/index.ts +66 -0
- package/src/cmd/build/package/launch.ts +104 -0
- package/src/cmd/build/typecheck.ts +9 -0
- package/src/cmd/cloud/deploy.ts +86 -13
- package/src/cmd/coder/create.ts +8 -8
- package/src/cmd/coder/update.ts +7 -7
- package/src/cmd/coder/workspace/create.ts +10 -10
- package/src/cmd/dev/index.ts +155 -1059
- package/src/cmd/project/auth/shared.ts +14 -39
- package/src/cmd/project/create.ts +14 -19
- package/src/cmd/project/frameworks-ai-examples.ts +166 -0
- package/src/cmd/project/frameworks-landing-pages.ts +267 -0
- package/src/cmd/project/frameworks.ts +223 -0
- package/src/cmd/project/reconcile.ts +10 -22
- package/src/cmd/project/remote-import.ts +1 -1
- package/src/cmd/project/scaffold.ts +300 -0
- package/src/cmd/project/template-flow.ts +102 -156
- package/src/deploy-metadata.ts +253 -0
- package/src/index.ts +0 -2
- package/src/types.ts +0 -31
- package/dist/agents-docs.d.ts +0 -23
- package/dist/agents-docs.d.ts.map +0 -1
- package/dist/agents-docs.js +0 -56
- package/dist/agents-docs.js.map +0 -1
- package/dist/cmd/ai/prompt/agent.d.ts +0 -10
- package/dist/cmd/ai/prompt/agent.d.ts.map +0 -1
- package/dist/cmd/ai/prompt/agent.js +0 -28
- package/dist/cmd/ai/prompt/agent.js.map +0 -1
- package/dist/cmd/build/app-router-detector.d.ts +0 -39
- package/dist/cmd/build/app-router-detector.d.ts.map +0 -1
- package/dist/cmd/build/app-router-detector.js +0 -229
- package/dist/cmd/build/app-router-detector.js.map +0 -1
- package/dist/cmd/build/format-schema.d.ts +0 -6
- package/dist/cmd/build/format-schema.d.ts.map +0 -1
- package/dist/cmd/build/format-schema.js +0 -60
- package/dist/cmd/build/format-schema.js.map +0 -1
- package/dist/cmd/build/vite/agent-discovery.d.ts +0 -37
- package/dist/cmd/build/vite/agent-discovery.d.ts.map +0 -1
- package/dist/cmd/build/vite/agent-discovery.js +0 -263
- package/dist/cmd/build/vite/agent-discovery.js.map +0 -1
- package/dist/cmd/build/vite/beacon-plugin.d.ts +0 -19
- package/dist/cmd/build/vite/beacon-plugin.d.ts.map +0 -1
- package/dist/cmd/build/vite/beacon-plugin.js +0 -137
- package/dist/cmd/build/vite/beacon-plugin.js.map +0 -1
- package/dist/cmd/build/vite/browser-env-plugin.d.ts +0 -9
- package/dist/cmd/build/vite/browser-env-plugin.d.ts.map +0 -1
- package/dist/cmd/build/vite/browser-env-plugin.js +0 -28
- package/dist/cmd/build/vite/browser-env-plugin.js.map +0 -1
- package/dist/cmd/build/vite/bun-dev-server.d.ts +0 -67
- package/dist/cmd/build/vite/bun-dev-server.d.ts.map +0 -1
- package/dist/cmd/build/vite/bun-dev-server.js +0 -340
- package/dist/cmd/build/vite/bun-dev-server.js.map +0 -1
- package/dist/cmd/build/vite/bundle-files.d.ts +0 -12
- package/dist/cmd/build/vite/bundle-files.d.ts.map +0 -1
- package/dist/cmd/build/vite/bundle-files.js +0 -107
- package/dist/cmd/build/vite/bundle-files.js.map +0 -1
- package/dist/cmd/build/vite/config-loader.d.ts +0 -29
- package/dist/cmd/build/vite/config-loader.d.ts.map +0 -1
- package/dist/cmd/build/vite/config-loader.js +0 -57
- package/dist/cmd/build/vite/config-loader.js.map +0 -1
- package/dist/cmd/build/vite/db-rewrite.d.ts +0 -50
- package/dist/cmd/build/vite/db-rewrite.d.ts.map +0 -1
- package/dist/cmd/build/vite/db-rewrite.js +0 -169
- package/dist/cmd/build/vite/db-rewrite.js.map +0 -1
- package/dist/cmd/build/vite/docs-generator.d.ts +0 -13
- package/dist/cmd/build/vite/docs-generator.d.ts.map +0 -1
- package/dist/cmd/build/vite/docs-generator.js +0 -97
- package/dist/cmd/build/vite/docs-generator.js.map +0 -1
- package/dist/cmd/build/vite/env-types-generator.d.ts +0 -26
- package/dist/cmd/build/vite/env-types-generator.d.ts.map +0 -1
- package/dist/cmd/build/vite/env-types-generator.js +0 -110
- package/dist/cmd/build/vite/env-types-generator.js.map +0 -1
- package/dist/cmd/build/vite/index.d.ts +0 -3
- package/dist/cmd/build/vite/index.d.ts.map +0 -1
- package/dist/cmd/build/vite/index.js +0 -4
- package/dist/cmd/build/vite/index.js.map +0 -1
- package/dist/cmd/build/vite/lifecycle-generator.d.ts +0 -19
- package/dist/cmd/build/vite/lifecycle-generator.d.ts.map +0 -1
- package/dist/cmd/build/vite/lifecycle-generator.js +0 -328
- package/dist/cmd/build/vite/lifecycle-generator.js.map +0 -1
- package/dist/cmd/build/vite/metadata-generator.d.ts +0 -36
- package/dist/cmd/build/vite/metadata-generator.d.ts.map +0 -1
- package/dist/cmd/build/vite/metadata-generator.js +0 -575
- package/dist/cmd/build/vite/metadata-generator.js.map +0 -1
- package/dist/cmd/build/vite/prompt-generator.d.ts +0 -23
- package/dist/cmd/build/vite/prompt-generator.d.ts.map +0 -1
- package/dist/cmd/build/vite/prompt-generator.js +0 -123
- package/dist/cmd/build/vite/prompt-generator.js.map +0 -1
- package/dist/cmd/build/vite/public-asset-path-plugin.d.ts +0 -45
- package/dist/cmd/build/vite/public-asset-path-plugin.d.ts.map +0 -1
- package/dist/cmd/build/vite/public-asset-path-plugin.js +0 -166
- package/dist/cmd/build/vite/public-asset-path-plugin.js.map +0 -1
- package/dist/cmd/build/vite/route-discovery.d.ts +0 -64
- package/dist/cmd/build/vite/route-discovery.d.ts.map +0 -1
- package/dist/cmd/build/vite/route-discovery.js +0 -187
- package/dist/cmd/build/vite/route-discovery.js.map +0 -1
- package/dist/cmd/build/vite/server-bundler.d.ts +0 -20
- package/dist/cmd/build/vite/server-bundler.d.ts.map +0 -1
- package/dist/cmd/build/vite/server-bundler.js +0 -388
- package/dist/cmd/build/vite/server-bundler.js.map +0 -1
- package/dist/cmd/build/vite/static-renderer.d.ts +0 -26
- package/dist/cmd/build/vite/static-renderer.d.ts.map +0 -1
- package/dist/cmd/build/vite/static-renderer.js +0 -188
- package/dist/cmd/build/vite/static-renderer.js.map +0 -1
- package/dist/cmd/build/vite/tailwind-source-plugin.d.ts +0 -15
- package/dist/cmd/build/vite/tailwind-source-plugin.d.ts.map +0 -1
- package/dist/cmd/build/vite/tailwind-source-plugin.js +0 -61
- package/dist/cmd/build/vite/tailwind-source-plugin.js.map +0 -1
- package/dist/cmd/build/vite/vite-asset-server-config.d.ts +0 -24
- package/dist/cmd/build/vite/vite-asset-server-config.d.ts.map +0 -1
- package/dist/cmd/build/vite/vite-asset-server-config.js +0 -285
- package/dist/cmd/build/vite/vite-asset-server-config.js.map +0 -1
- package/dist/cmd/build/vite/vite-asset-server.d.ts +0 -30
- package/dist/cmd/build/vite/vite-asset-server.d.ts.map +0 -1
- package/dist/cmd/build/vite/vite-asset-server.js +0 -109
- package/dist/cmd/build/vite/vite-asset-server.js.map +0 -1
- package/dist/cmd/build/vite/vite-builder.d.ts +0 -59
- package/dist/cmd/build/vite/vite-builder.d.ts.map +0 -1
- package/dist/cmd/build/vite/vite-builder.js +0 -401
- package/dist/cmd/build/vite/vite-builder.js.map +0 -1
- package/dist/cmd/build/vite/workbench-generator.d.ts +0 -10
- package/dist/cmd/build/vite/workbench-generator.d.ts.map +0 -1
- package/dist/cmd/build/vite/workbench-generator.js +0 -135
- package/dist/cmd/build/vite/workbench-generator.js.map +0 -1
- package/dist/cmd/build/vite/ws-proxy.d.ts +0 -53
- package/dist/cmd/build/vite/ws-proxy.d.ts.map +0 -1
- package/dist/cmd/build/vite/ws-proxy.js +0 -95
- package/dist/cmd/build/vite/ws-proxy.js.map +0 -1
- package/dist/cmd/build/vite-bundler.d.ts +0 -29
- package/dist/cmd/build/vite-bundler.d.ts.map +0 -1
- package/dist/cmd/build/vite-bundler.js +0 -93
- package/dist/cmd/build/vite-bundler.js.map +0 -1
- package/dist/cmd/dev/agents.d.ts +0 -2
- package/dist/cmd/dev/agents.d.ts.map +0 -1
- package/dist/cmd/dev/agents.js +0 -123
- package/dist/cmd/dev/agents.js.map +0 -1
- package/dist/cmd/dev/api.d.ts +0 -20
- package/dist/cmd/dev/api.d.ts.map +0 -1
- package/dist/cmd/dev/api.js +0 -42
- package/dist/cmd/dev/api.js.map +0 -1
- package/dist/cmd/dev/dev-lock.d.ts +0 -62
- package/dist/cmd/dev/dev-lock.d.ts.map +0 -1
- package/dist/cmd/dev/dev-lock.js +0 -250
- package/dist/cmd/dev/dev-lock.js.map +0 -1
- package/dist/cmd/dev/download.d.ts +0 -11
- package/dist/cmd/dev/download.d.ts.map +0 -1
- package/dist/cmd/dev/download.js +0 -94
- package/dist/cmd/dev/download.js.map +0 -1
- package/dist/cmd/dev/file-watcher.d.ts +0 -24
- package/dist/cmd/dev/file-watcher.d.ts.map +0 -1
- package/dist/cmd/dev/file-watcher.js +0 -349
- package/dist/cmd/dev/file-watcher.js.map +0 -1
- package/dist/cmd/dev/process-manager.d.ts +0 -104
- package/dist/cmd/dev/process-manager.d.ts.map +0 -1
- package/dist/cmd/dev/process-manager.js +0 -204
- package/dist/cmd/dev/process-manager.js.map +0 -1
- package/dist/cmd/dev/sync.d.ts +0 -12
- package/dist/cmd/dev/sync.d.ts.map +0 -1
- package/dist/cmd/dev/sync.js +0 -227
- package/dist/cmd/dev/sync.js.map +0 -1
- package/dist/cmd/dev/templates.d.ts +0 -3
- package/dist/cmd/dev/templates.d.ts.map +0 -1
- package/dist/cmd/dev/templates.js +0 -58
- package/dist/cmd/dev/templates.js.map +0 -1
- package/dist/cmd/project/download.d.ts +0 -35
- package/dist/cmd/project/download.d.ts.map +0 -1
- package/dist/cmd/project/download.js +0 -403
- package/dist/cmd/project/download.js.map +0 -1
- package/dist/cmd/project/templates.d.ts +0 -9
- package/dist/cmd/project/templates.d.ts.map +0 -1
- package/dist/cmd/project/templates.js +0 -34
- package/dist/cmd/project/templates.js.map +0 -1
- package/src/agents-docs.ts +0 -86
- package/src/cmd/ai/prompt/agent.md +0 -305
- package/src/cmd/ai/prompt/agent.ts +0 -31
- package/src/cmd/build/app-router-detector.ts +0 -320
- package/src/cmd/build/format-schema.ts +0 -66
- package/src/cmd/build/vite/agent-discovery.ts +0 -380
- package/src/cmd/build/vite/beacon-plugin.ts +0 -164
- package/src/cmd/build/vite/browser-env-plugin.ts +0 -34
- package/src/cmd/build/vite/bun-dev-server.ts +0 -458
- package/src/cmd/build/vite/bundle-files.ts +0 -135
- package/src/cmd/build/vite/config-loader.ts +0 -76
- package/src/cmd/build/vite/db-rewrite.ts +0 -189
- package/src/cmd/build/vite/docs-generator.ts +0 -103
- package/src/cmd/build/vite/env-types-generator.ts +0 -145
- package/src/cmd/build/vite/index.ts +0 -3
- package/src/cmd/build/vite/lifecycle-generator.ts +0 -381
- package/src/cmd/build/vite/metadata-generator.ts +0 -713
- package/src/cmd/build/vite/prompt-generator.ts +0 -169
- package/src/cmd/build/vite/public-asset-path-plugin.ts +0 -209
- package/src/cmd/build/vite/route-discovery.ts +0 -271
- package/src/cmd/build/vite/server-bundler.ts +0 -481
- package/src/cmd/build/vite/static-renderer.ts +0 -239
- package/src/cmd/build/vite/tailwind-source-plugin.ts +0 -73
- package/src/cmd/build/vite/vite-asset-server-config.ts +0 -349
- package/src/cmd/build/vite/vite-asset-server.ts +0 -154
- package/src/cmd/build/vite/vite-builder.ts +0 -503
- package/src/cmd/build/vite/workbench-generator.ts +0 -152
- package/src/cmd/build/vite/ws-proxy.ts +0 -126
- package/src/cmd/build/vite-bundler.ts +0 -137
- package/src/cmd/dev/agents.ts +0 -140
- package/src/cmd/dev/api.ts +0 -65
- package/src/cmd/dev/dev-lock.ts +0 -332
- package/src/cmd/dev/download.ts +0 -117
- package/src/cmd/dev/file-watcher.ts +0 -423
- package/src/cmd/dev/process-manager.ts +0 -261
- package/src/cmd/dev/sync.ts +0 -411
- package/src/cmd/dev/templates.ts +0 -66
- package/src/cmd/project/download.ts +0 -505
- package/src/cmd/project/templates.ts +0 -56
|
@@ -514,67 +514,42 @@ export function printIntegrationExamples(): void {
|
|
|
514
514
|
tui.newline();
|
|
515
515
|
|
|
516
516
|
console.log(tui.muted('━'.repeat(60)));
|
|
517
|
-
console.log(tui.bold(' 1. Set up your API routes
|
|
517
|
+
console.log(tui.bold(' 1. Set up your API routes:'));
|
|
518
518
|
console.log(tui.muted('━'.repeat(60)));
|
|
519
519
|
console.log(`
|
|
520
|
-
import {
|
|
520
|
+
import { Hono } from 'hono';
|
|
521
521
|
import { mountAuthRoutes } from '@agentuity/auth';
|
|
522
|
-
import { auth, authMiddleware } from '
|
|
522
|
+
import { auth, authMiddleware } from './auth';
|
|
523
523
|
|
|
524
|
-
const
|
|
524
|
+
const app = new Hono();
|
|
525
525
|
|
|
526
526
|
// Mount auth routes (sign-in, sign-up, sign-out, session, etc.)
|
|
527
|
-
|
|
528
|
-
api.on(['GET', 'POST'], '/api/auth/*', mountAuthRoutes(auth));
|
|
527
|
+
app.on(['GET', 'POST'], '/api/auth/*', mountAuthRoutes(auth));
|
|
529
528
|
|
|
530
529
|
// Protect your API routes with auth middleware
|
|
531
|
-
|
|
530
|
+
app.use('/api/*', authMiddleware);
|
|
532
531
|
|
|
533
|
-
|
|
532
|
+
app.get('/api/me', async (c) => {
|
|
534
533
|
const user = await c.var.auth.getUser();
|
|
535
534
|
return c.json({ id: user.id, email: user.email });
|
|
536
535
|
});
|
|
537
536
|
|
|
538
|
-
export default
|
|
537
|
+
export default app;
|
|
539
538
|
`);
|
|
540
539
|
|
|
541
540
|
console.log(tui.muted('━'.repeat(60)));
|
|
542
|
-
console.log(tui.bold(' 2.
|
|
541
|
+
console.log(tui.bold(' 2. Use the auth client in your frontend:'));
|
|
543
542
|
console.log(tui.muted('━'.repeat(60)));
|
|
544
543
|
console.log(`
|
|
545
|
-
import {
|
|
546
|
-
import { createAuthClient, AuthProvider } from '@agentuity/auth/react';
|
|
544
|
+
import { createAuthClient } from '@agentuity/auth/client';
|
|
547
545
|
|
|
548
546
|
const authClient = createAuthClient();
|
|
549
547
|
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
<AgentuityProvider>
|
|
553
|
-
<AuthProvider authClient={authClient}>
|
|
554
|
-
{/* your app */}
|
|
555
|
-
</AuthProvider>
|
|
556
|
-
</AgentuityProvider>
|
|
557
|
-
);
|
|
558
|
-
}
|
|
559
|
-
`);
|
|
548
|
+
// Sign in
|
|
549
|
+
await authClient.signIn.email({ email, password });
|
|
560
550
|
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
console.log(tui.muted('━'.repeat(60)));
|
|
564
|
-
console.log(`
|
|
565
|
-
import { createAgent } from '@agentuity/runtime';
|
|
566
|
-
|
|
567
|
-
export default createAgent('my-agent', {
|
|
568
|
-
schema: { input: s.object({ name: s.string() }), output: s.string() },
|
|
569
|
-
handler: async (ctx, input) => {
|
|
570
|
-
// ctx.auth is available when using auth middleware
|
|
571
|
-
if (ctx.auth) {
|
|
572
|
-
const user = await ctx.auth.getUser();
|
|
573
|
-
return \`Hello, \${user.email}!\`;
|
|
574
|
-
}
|
|
575
|
-
return 'Hello, anonymous!';
|
|
576
|
-
},
|
|
577
|
-
});
|
|
551
|
+
// Get session
|
|
552
|
+
const session = await authClient.getSession();
|
|
578
553
|
`);
|
|
579
554
|
|
|
580
555
|
tui.newline();
|
|
@@ -11,7 +11,7 @@ const ProjectCreateResponseSchema = z.object({
|
|
|
11
11
|
path: z.string().describe('Project directory path'),
|
|
12
12
|
projectId: z.string().optional().describe('Project ID if registered'),
|
|
13
13
|
orgId: z.string().optional().describe('Organization ID if registered'),
|
|
14
|
-
|
|
14
|
+
framework: z.string().describe('Framework used'),
|
|
15
15
|
installed: z.boolean().describe('Whether dependencies were installed'),
|
|
16
16
|
built: z.boolean().describe('Whether the project was built'),
|
|
17
17
|
domains: z.array(z.string()).optional().describe('Array of custom domains'),
|
|
@@ -29,33 +29,30 @@ export const createProjectSubcommand = createSubcommand({
|
|
|
29
29
|
examples: [
|
|
30
30
|
{ command: getCommand('project create'), description: 'Create new project' },
|
|
31
31
|
{
|
|
32
|
-
command: getCommand('project create --name my-ai-
|
|
33
|
-
description: 'Create
|
|
32
|
+
command: getCommand('project create --name my-ai-app'),
|
|
33
|
+
description: 'Create named project',
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
|
-
command: getCommand('project create --name
|
|
37
|
-
description: 'Create
|
|
36
|
+
command: getCommand('project create --name my-app --framework nextjs'),
|
|
37
|
+
description: 'Create with Next.js',
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
|
-
command: getCommand('project create --
|
|
41
|
-
description: '
|
|
40
|
+
command: getCommand('project create --framework hono --no-install'),
|
|
41
|
+
description: 'Scaffold without installing',
|
|
42
42
|
},
|
|
43
|
-
{ command: getCommand('project new --no-register'), description: '
|
|
43
|
+
{ command: getCommand('project new --no-register'), description: 'Skip cloud registration' },
|
|
44
44
|
],
|
|
45
45
|
schema: {
|
|
46
46
|
options: z.object({
|
|
47
47
|
name: z.string().optional().describe('Project name'),
|
|
48
48
|
dir: z.string().optional().describe('Directory to create the project in'),
|
|
49
49
|
domains: z.array(z.string()).optional().describe('Array of custom domains'),
|
|
50
|
-
|
|
51
|
-
templateDir: z
|
|
50
|
+
framework: z
|
|
52
51
|
.string()
|
|
53
52
|
.optional()
|
|
54
|
-
.describe(
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
.optional()
|
|
58
|
-
.describe('GitHub branch to use for templates (default: main)'),
|
|
53
|
+
.describe(
|
|
54
|
+
'Framework to use (e.g., nextjs, astro, sveltekit, remix, nuxt, hono, vite-react)'
|
|
55
|
+
),
|
|
59
56
|
install: z
|
|
60
57
|
.boolean()
|
|
61
58
|
.optional()
|
|
@@ -101,9 +98,7 @@ export const createProjectSubcommand = createSubcommand({
|
|
|
101
98
|
projectName: opts.name,
|
|
102
99
|
dir: opts.dir,
|
|
103
100
|
domains: opts.domains,
|
|
104
|
-
|
|
105
|
-
templateDir: opts.templateDir,
|
|
106
|
-
templateBranch: opts.templateBranch,
|
|
101
|
+
framework: opts.framework,
|
|
107
102
|
noInstall: opts.install === false,
|
|
108
103
|
noBuild: opts.build === false,
|
|
109
104
|
skipPrompts: opts.confirm === true,
|
|
@@ -130,7 +125,7 @@ export const createProjectSubcommand = createSubcommand({
|
|
|
130
125
|
path: result.path,
|
|
131
126
|
projectId: result.projectId,
|
|
132
127
|
orgId: result.orgId,
|
|
133
|
-
|
|
128
|
+
framework: result.framework,
|
|
134
129
|
installed: result.installed,
|
|
135
130
|
built: result.built,
|
|
136
131
|
domains: result.domains,
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI SDK example generators for each framework.
|
|
3
|
+
*
|
|
4
|
+
* Each function returns a map of relative file paths to file contents
|
|
5
|
+
* that demonstrate a simple AI chat endpoint using the Vercel AI SDK
|
|
6
|
+
* with the Agentuity AI Gateway.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export function nextjsAiExample(): Record<string, string> {
|
|
10
|
+
return {
|
|
11
|
+
'app/api/chat/route.ts': `import { generateText } from 'ai';
|
|
12
|
+
import { openai } from '@ai-sdk/openai';
|
|
13
|
+
import { NextResponse } from 'next/server';
|
|
14
|
+
|
|
15
|
+
export async function POST(request: Request) {
|
|
16
|
+
\tconst { message } = await request.json();
|
|
17
|
+
|
|
18
|
+
\tconst { text } = await generateText({
|
|
19
|
+
\t\tmodel: openai('gpt-4o-mini'),
|
|
20
|
+
\t\tprompt: message,
|
|
21
|
+
\t});
|
|
22
|
+
|
|
23
|
+
\treturn NextResponse.json({ reply: text });
|
|
24
|
+
}
|
|
25
|
+
`,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function nuxtAiExample(): Record<string, string> {
|
|
30
|
+
return {
|
|
31
|
+
'server/api/chat.post.ts': `import { generateText } from 'ai';
|
|
32
|
+
import { openai } from '@ai-sdk/openai';
|
|
33
|
+
|
|
34
|
+
export default defineEventHandler(async (event) => {
|
|
35
|
+
\tconst { message } = await readBody(event);
|
|
36
|
+
|
|
37
|
+
\tconst { text } = await generateText({
|
|
38
|
+
\t\tmodel: openai('gpt-4o-mini'),
|
|
39
|
+
\t\tprompt: message,
|
|
40
|
+
\t});
|
|
41
|
+
|
|
42
|
+
\treturn { reply: text };
|
|
43
|
+
});
|
|
44
|
+
`,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function remixAiExample(): Record<string, string> {
|
|
49
|
+
return {
|
|
50
|
+
'app/routes/api.chat.ts': `import { type ActionFunctionArgs, json } from '@remix-run/node';
|
|
51
|
+
import { generateText } from 'ai';
|
|
52
|
+
import { openai } from '@ai-sdk/openai';
|
|
53
|
+
|
|
54
|
+
export async function action({ request }: ActionFunctionArgs) {
|
|
55
|
+
\tconst { message } = await request.json();
|
|
56
|
+
|
|
57
|
+
\tconst { text } = await generateText({
|
|
58
|
+
\t\tmodel: openai('gpt-4o-mini'),
|
|
59
|
+
\t\tprompt: message,
|
|
60
|
+
\t});
|
|
61
|
+
|
|
62
|
+
\treturn json({ reply: text });
|
|
63
|
+
}
|
|
64
|
+
`,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export function sveltekitAiExample(): Record<string, string> {
|
|
69
|
+
return {
|
|
70
|
+
'src/routes/api/chat/+server.ts': `import { json } from '@sveltejs/kit';
|
|
71
|
+
import type { RequestHandler } from './$types';
|
|
72
|
+
import { generateText } from 'ai';
|
|
73
|
+
import { openai } from '@ai-sdk/openai';
|
|
74
|
+
|
|
75
|
+
export const POST: RequestHandler = async ({ request }) => {
|
|
76
|
+
\tconst { message } = await request.json();
|
|
77
|
+
|
|
78
|
+
\tconst { text } = await generateText({
|
|
79
|
+
\t\tmodel: openai('gpt-4o-mini'),
|
|
80
|
+
\t\tprompt: message,
|
|
81
|
+
\t});
|
|
82
|
+
|
|
83
|
+
\treturn json({ reply: text });
|
|
84
|
+
};
|
|
85
|
+
`,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export function astroAiExample(): Record<string, string> {
|
|
90
|
+
return {
|
|
91
|
+
'src/pages/api/chat.ts': `import type { APIRoute } from 'astro';
|
|
92
|
+
import { generateText } from 'ai';
|
|
93
|
+
import { openai } from '@ai-sdk/openai';
|
|
94
|
+
|
|
95
|
+
export const POST: APIRoute = async ({ request }) => {
|
|
96
|
+
\tconst { message } = await request.json();
|
|
97
|
+
|
|
98
|
+
\tconst { text } = await generateText({
|
|
99
|
+
\t\tmodel: openai('gpt-4o-mini'),
|
|
100
|
+
\t\tprompt: message,
|
|
101
|
+
\t});
|
|
102
|
+
|
|
103
|
+
\treturn new Response(
|
|
104
|
+
\t\tJSON.stringify({ reply: text }),
|
|
105
|
+
\t\t{ headers: { 'Content-Type': 'application/json' } }
|
|
106
|
+
\t);
|
|
107
|
+
};
|
|
108
|
+
`,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export function honoAiExample(): Record<string, string> {
|
|
113
|
+
return {
|
|
114
|
+
'src/index.ts': `import { Hono } from 'hono';
|
|
115
|
+
import { generateText } from 'ai';
|
|
116
|
+
import { openai } from '@ai-sdk/openai';
|
|
117
|
+
|
|
118
|
+
const app = new Hono();
|
|
119
|
+
|
|
120
|
+
app.get('/', (c) => c.text('Hello from Hono + Agentuity!'));
|
|
121
|
+
|
|
122
|
+
app.post('/api/chat', async (c) => {
|
|
123
|
+
\tconst { message } = await c.req.json();
|
|
124
|
+
|
|
125
|
+
\tconst { text } = await generateText({
|
|
126
|
+
\t\tmodel: openai('gpt-4o-mini'),
|
|
127
|
+
\t\tprompt: message,
|
|
128
|
+
\t});
|
|
129
|
+
|
|
130
|
+
\treturn c.json({ reply: text });
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
export default app;
|
|
134
|
+
`,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export function viteReactAiExample(): Record<string, string> {
|
|
139
|
+
return {
|
|
140
|
+
'server.ts': `import { generateText } from 'ai';
|
|
141
|
+
import { openai } from '@ai-sdk/openai';
|
|
142
|
+
|
|
143
|
+
Bun.serve({
|
|
144
|
+
\tport: process.env.PORT ?? 3000,
|
|
145
|
+
\tasync fetch(request) {
|
|
146
|
+
\t\tconst url = new URL(request.url);
|
|
147
|
+
|
|
148
|
+
\t\tif (url.pathname === '/api/chat' && request.method === 'POST') {
|
|
149
|
+
\t\t\tconst { message } = await request.json();
|
|
150
|
+
|
|
151
|
+
\t\t\tconst { text } = await generateText({
|
|
152
|
+
\t\t\t\tmodel: openai('gpt-4o-mini'),
|
|
153
|
+
\t\t\t\tprompt: message,
|
|
154
|
+
\t\t\t});
|
|
155
|
+
|
|
156
|
+
\t\t\treturn Response.json({ reply: text });
|
|
157
|
+
\t\t}
|
|
158
|
+
|
|
159
|
+
\t\treturn new Response('Not Found', { status: 404 });
|
|
160
|
+
\t},
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
console.log('Server running on http://localhost:' + (process.env.PORT ?? 3000));
|
|
164
|
+
`,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentuity-branded landing page generators for each framework.
|
|
3
|
+
*
|
|
4
|
+
* Each function returns a map of relative file paths to file contents
|
|
5
|
+
* that replace the framework's default landing page with a dark-themed
|
|
6
|
+
* Agentuity welcome page matching the brand design system.
|
|
7
|
+
*
|
|
8
|
+
* Design: dark background (#09090b), cyan accent (#00FFFF), Agentuity
|
|
9
|
+
* logo, "Welcome to Agentuity" heading, and framework-specific next steps.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
// ─── Shared ──────────────────────────────────────────────────────────────────
|
|
13
|
+
|
|
14
|
+
const AGENTUITY_LOGO_SVG = `<svg xmlns="http://www.w3.org/2000/svg" width="48" height="42" viewBox="0 0 220 191" fill="none">
|
|
15
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M220 191H0L31.427 136.5H0L8 122.5H180.5L220 191ZM47.588 136.5L24.234 177H195.766L172.412 136.5H47.588Z" fill="#00FFFF"/>
|
|
16
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M110 0L157.448 82.5H189L197 96.5H54.5L110 0ZM78.702 82.5L110 28.081L141.298 82.5H78.702Z" fill="#00FFFF"/>
|
|
17
|
+
</svg>`;
|
|
18
|
+
|
|
19
|
+
const SHARED_STYLES = `
|
|
20
|
+
<style>
|
|
21
|
+
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
22
|
+
body { background: #09090b; color: #a1a1aa; font-family: system-ui, -apple-system, sans-serif; min-height: 100vh; display: flex; justify-content: center; }
|
|
23
|
+
.wrap { max-width: 48rem; width: 100%; padding: 4rem; display: flex; flex-direction: column; gap: 1rem; }
|
|
24
|
+
.header { text-align: center; margin-bottom: 2rem; }
|
|
25
|
+
.header svg { margin-bottom: 1rem; }
|
|
26
|
+
.header h1 { font-size: 3rem; font-weight: 100; color: #fff; }
|
|
27
|
+
.header p { font-size: 1.125rem; color: #71717a; }
|
|
28
|
+
.header em { font-style: italic; font-family: Georgia, serif; }
|
|
29
|
+
.card { background: #000; border: 1px solid #1c1c1e; border-radius: 0.5rem; padding: 2rem; }
|
|
30
|
+
.card h3 { color: #fff; font-size: 1.25rem; font-weight: 400; margin-bottom: 1.5rem; }
|
|
31
|
+
.step { display: flex; gap: 0.75rem; align-items: flex-start; margin-bottom: 1.25rem; }
|
|
32
|
+
.step:last-child { margin-bottom: 0; }
|
|
33
|
+
.check { width: 1rem; height: 1rem; border: 1px solid #22c55e; background: #052e16; border-radius: 0.25rem; display: flex; align-items: center; justify-content: center; flex-shrink: 0; margin-top: 0.1rem; }
|
|
34
|
+
.check svg { width: 0.625rem; height: 0.625rem; }
|
|
35
|
+
.step h4 { color: #fff; font-size: 0.875rem; font-weight: 400; margin-bottom: 0.25rem; }
|
|
36
|
+
.step p { font-size: 0.75rem; }
|
|
37
|
+
code { color: #fff; background: #1c1c1e; padding: 0.125rem 0.375rem; border-radius: 0.25rem; font-size: 0.75rem; }
|
|
38
|
+
a.badge { position: fixed; bottom: 1rem; right: 1rem; display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem 0.75rem; background: #09090b; border: 1px solid #27272a; border-radius: 0.5rem; color: #a1a1aa; font-size: 0.75rem; text-decoration: none; transition: border-color 0.2s; z-index: 50; }
|
|
39
|
+
a.badge:hover { border-color: #00FFFF; }
|
|
40
|
+
a.badge svg { width: 16px; height: 14px; }
|
|
41
|
+
</style>`;
|
|
42
|
+
|
|
43
|
+
const CHECK_SVG =
|
|
44
|
+
'<svg fill="none" stroke="#22c55e" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>';
|
|
45
|
+
|
|
46
|
+
const BADGE_SVG =
|
|
47
|
+
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 220 191" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M220 191H0L31.427 136.5H0L8 122.5H180.5L220 191ZM47.588 136.5L24.234 177H195.766L172.412 136.5H47.588Z" fill="#00FFFF"/><path fill-rule="evenodd" clip-rule="evenodd" d="M110 0L157.448 82.5H189L197 96.5H54.5L110 0ZM78.702 82.5L110 28.081L141.298 82.5H78.702Z" fill="#00FFFF"/></svg>';
|
|
48
|
+
|
|
49
|
+
function buildPage(frameworkLabel: string, steps: { title: string; text: string }[]): string {
|
|
50
|
+
const stepsHtml = steps
|
|
51
|
+
.map(
|
|
52
|
+
(s) => `
|
|
53
|
+
<div class="step">
|
|
54
|
+
<div class="check">${CHECK_SVG}</div>
|
|
55
|
+
<div><h4>${s.title}</h4><p>${s.text}</p></div>
|
|
56
|
+
</div>`
|
|
57
|
+
)
|
|
58
|
+
.join('');
|
|
59
|
+
|
|
60
|
+
return `<!DOCTYPE html>
|
|
61
|
+
<html lang="en">
|
|
62
|
+
<head>
|
|
63
|
+
<meta charset="utf-8"/>
|
|
64
|
+
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
65
|
+
<title>Agentuity + ${frameworkLabel}</title>
|
|
66
|
+
${SHARED_STYLES}
|
|
67
|
+
</head>
|
|
68
|
+
<body>
|
|
69
|
+
<div class="wrap">
|
|
70
|
+
<div class="header">
|
|
71
|
+
${AGENTUITY_LOGO_SVG}
|
|
72
|
+
<h1>Welcome to Agentuity</h1>
|
|
73
|
+
<p><em>${frameworkLabel}</em> + AI Gateway</p>
|
|
74
|
+
</div>
|
|
75
|
+
<div class="card">
|
|
76
|
+
<h3>Getting started</h3>
|
|
77
|
+
${stepsHtml}
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
<a class="badge" href="https://agentuity.dev/" target="_blank" rel="noopener noreferrer">${BADGE_SVG} Powered by Agentuity</a>
|
|
81
|
+
</body>
|
|
82
|
+
</html>`;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// ─── Framework-specific Landing Pages ────────────────────────────────────────
|
|
86
|
+
|
|
87
|
+
export function nextjsLandingPage(): Record<string, string> {
|
|
88
|
+
return {
|
|
89
|
+
'src/app/page.tsx': `export default function Home() {
|
|
90
|
+
return (
|
|
91
|
+
<div
|
|
92
|
+
style={{ background: '#09090b', color: '#a1a1aa', fontFamily: 'system-ui, -apple-system, sans-serif', minHeight: '100vh', display: 'flex', justifyContent: 'center' }}
|
|
93
|
+
dangerouslySetInnerHTML={{
|
|
94
|
+
__html: \`${buildReactInnerHtml('Next.js', [
|
|
95
|
+
{
|
|
96
|
+
title: 'AI Gateway',
|
|
97
|
+
text: 'Run <code>agentuity dev</code> to start with AI Gateway routing.',
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
title: 'API route',
|
|
101
|
+
text: 'Edit <code>app/api/chat/route.ts</code> to customize the AI endpoint.',
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
title: 'Deploy',
|
|
105
|
+
text: 'Run <code>agentuity deploy</code> to ship to production.',
|
|
106
|
+
},
|
|
107
|
+
])}\`
|
|
108
|
+
}}
|
|
109
|
+
/>
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
`,
|
|
113
|
+
'src/app/globals.css': `body { margin: 0; }
|
|
114
|
+
`,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export function nuxtLandingPage(): Record<string, string> {
|
|
119
|
+
return {
|
|
120
|
+
'app.vue': `<template>
|
|
121
|
+
<div v-html="html" />
|
|
122
|
+
</template>
|
|
123
|
+
|
|
124
|
+
<script setup lang="ts">
|
|
125
|
+
const html = \`${buildPage('Nuxt', [
|
|
126
|
+
{
|
|
127
|
+
title: 'AI Gateway',
|
|
128
|
+
text: 'Run <code>agentuity dev</code> to start with AI Gateway routing.',
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
title: 'Server route',
|
|
132
|
+
text: 'Edit <code>server/api/chat.post.ts</code> to customize the AI endpoint.',
|
|
133
|
+
},
|
|
134
|
+
{ title: 'Deploy', text: 'Run <code>agentuity deploy</code> to ship to production.' },
|
|
135
|
+
])}\`;
|
|
136
|
+
</script>
|
|
137
|
+
`,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export function remixLandingPage(): Record<string, string> {
|
|
142
|
+
return {
|
|
143
|
+
'app/routes/_index.tsx': `export default function Index() {
|
|
144
|
+
return (
|
|
145
|
+
<div
|
|
146
|
+
style={{ background: '#09090b', color: '#a1a1aa', fontFamily: 'system-ui, -apple-system, sans-serif', minHeight: '100vh', display: 'flex', justifyContent: 'center' }}
|
|
147
|
+
dangerouslySetInnerHTML={{
|
|
148
|
+
__html: \`${buildReactInnerHtml('Remix', [
|
|
149
|
+
{
|
|
150
|
+
title: 'AI Gateway',
|
|
151
|
+
text: 'Run <code>agentuity dev</code> to start with AI Gateway routing.',
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
title: 'Action route',
|
|
155
|
+
text: 'Edit <code>app/routes/api.chat.ts</code> to customize the AI endpoint.',
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
title: 'Deploy',
|
|
159
|
+
text: 'Run <code>agentuity deploy</code> to ship to production.',
|
|
160
|
+
},
|
|
161
|
+
])}\`
|
|
162
|
+
}}
|
|
163
|
+
/>
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
`,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export function sveltekitLandingPage(): Record<string, string> {
|
|
171
|
+
return {
|
|
172
|
+
'src/routes/+page.svelte': `{@html \`${buildPage('SvelteKit', [
|
|
173
|
+
{
|
|
174
|
+
title: 'AI Gateway',
|
|
175
|
+
text: 'Run <code>agentuity dev</code> to start with AI Gateway routing.',
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
title: 'Server route',
|
|
179
|
+
text: 'Edit <code>src/routes/api/chat/+server.ts</code> to customize the AI endpoint.',
|
|
180
|
+
},
|
|
181
|
+
{ title: 'Deploy', text: 'Run <code>agentuity deploy</code> to ship to production.' },
|
|
182
|
+
])}\`}
|
|
183
|
+
`,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export function astroLandingPage(): Record<string, string> {
|
|
188
|
+
return {
|
|
189
|
+
'src/pages/index.astro': `---
|
|
190
|
+
---
|
|
191
|
+
${buildPage('Astro', [
|
|
192
|
+
{
|
|
193
|
+
title: 'AI Gateway',
|
|
194
|
+
text: 'Run <code>agentuity dev</code> to start with AI Gateway routing.',
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
title: 'API route',
|
|
198
|
+
text: 'Edit <code>src/pages/api/chat.ts</code> to customize the AI endpoint.',
|
|
199
|
+
},
|
|
200
|
+
{ title: 'Deploy', text: 'Run <code>agentuity deploy</code> to ship to production.' },
|
|
201
|
+
])}
|
|
202
|
+
`,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
export function viteReactLandingPage(): Record<string, string> {
|
|
207
|
+
return {
|
|
208
|
+
'src/App.tsx': `export default function App() {
|
|
209
|
+
return (
|
|
210
|
+
<div
|
|
211
|
+
style={{ background: '#09090b', color: '#a1a1aa', fontFamily: 'system-ui, -apple-system, sans-serif', minHeight: '100vh', display: 'flex', justifyContent: 'center' }}
|
|
212
|
+
dangerouslySetInnerHTML={{
|
|
213
|
+
__html: \`${buildReactInnerHtml('Vite + React', [
|
|
214
|
+
{
|
|
215
|
+
title: 'AI Gateway',
|
|
216
|
+
text: 'Run <code>agentuity dev</code> to start with AI Gateway routing.',
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
title: 'Server',
|
|
220
|
+
text: 'Edit <code>server.ts</code> to customize the AI endpoint.',
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
title: 'Deploy',
|
|
224
|
+
text: 'Run <code>agentuity deploy</code> to ship to production.',
|
|
225
|
+
},
|
|
226
|
+
])}\`
|
|
227
|
+
}}
|
|
228
|
+
/>
|
|
229
|
+
);
|
|
230
|
+
}
|
|
231
|
+
`,
|
|
232
|
+
'src/index.css': `body { margin: 0; }
|
|
233
|
+
`,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
238
|
+
|
|
239
|
+
/** Build inner HTML for React's dangerouslySetInnerHTML (no <html>/<body> wrapper) */
|
|
240
|
+
function buildReactInnerHtml(
|
|
241
|
+
frameworkLabel: string,
|
|
242
|
+
steps: { title: string; text: string }[]
|
|
243
|
+
): string {
|
|
244
|
+
const stepsHtml = steps
|
|
245
|
+
.map(
|
|
246
|
+
(s) => `
|
|
247
|
+
<div class="step">
|
|
248
|
+
<div class="check">${CHECK_SVG}</div>
|
|
249
|
+
<div><h4>${s.title}</h4><p>${s.text}</p></div>
|
|
250
|
+
</div>`
|
|
251
|
+
)
|
|
252
|
+
.join('');
|
|
253
|
+
|
|
254
|
+
return `${SHARED_STYLES}
|
|
255
|
+
<div class="wrap">
|
|
256
|
+
<div class="header">
|
|
257
|
+
${AGENTUITY_LOGO_SVG}
|
|
258
|
+
<h1>Welcome to Agentuity</h1>
|
|
259
|
+
<p><em>${frameworkLabel}</em> + AI Gateway</p>
|
|
260
|
+
</div>
|
|
261
|
+
<div class="card">
|
|
262
|
+
<h3>Getting started</h3>
|
|
263
|
+
${stepsHtml}
|
|
264
|
+
</div>
|
|
265
|
+
</div>
|
|
266
|
+
<a class="badge" href="https://agentuity.dev/" target="_blank" rel="noopener noreferrer">${BADGE_SVG} Powered by Agentuity</a>`;
|
|
267
|
+
}
|