@agentuity/cli 2.0.10 → 3.0.0-alpha.0
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.d.ts.map +1 -1
- package/dist/cmd/coder/create.js +18 -0
- package/dist/cmd/coder/create.js.map +1 -1
- package/dist/cmd/coder/index.d.ts.map +1 -1
- package/dist/cmd/coder/index.js +4 -0
- package/dist/cmd/coder/index.js.map +1 -1
- package/dist/cmd/coder/start.d.ts.map +1 -1
- package/dist/cmd/coder/start.js +49 -1
- package/dist/cmd/coder/start.js.map +1 -1
- package/dist/cmd/coder/update.d.ts.map +1 -1
- package/dist/cmd/coder/update.js +21 -1
- package/dist/cmd/coder/update.js.map +1 -1
- package/dist/cmd/coder/workspace/create.d.ts.map +1 -1
- package/dist/cmd/coder/workspace/create.js +17 -1
- package/dist/cmd/coder/workspace/create.js.map +1 -1
- package/dist/cmd/coder/workspace/list.js +2 -2
- package/dist/cmd/coder/workspace/list.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 +25 -31
- 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 +24 -1
- package/src/cmd/coder/index.ts +4 -0
- package/src/cmd/coder/start.ts +60 -1
- package/src/cmd/coder/update.ts +18 -1
- package/src/cmd/coder/workspace/create.ts +20 -2
- package/src/cmd/coder/workspace/list.ts +2 -2
- 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
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework scaffolding catalog.
|
|
3
|
+
*
|
|
4
|
+
* Maps supported frameworks to their official create CLI commands
|
|
5
|
+
* and the augmentation steps needed to integrate with Agentuity.
|
|
6
|
+
*
|
|
7
|
+
* AI examples and landing pages are in separate files to keep
|
|
8
|
+
* this catalog focused on framework configuration.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import {
|
|
12
|
+
nextjsAiExample,
|
|
13
|
+
nuxtAiExample,
|
|
14
|
+
remixAiExample,
|
|
15
|
+
sveltekitAiExample,
|
|
16
|
+
astroAiExample,
|
|
17
|
+
honoAiExample,
|
|
18
|
+
viteReactAiExample,
|
|
19
|
+
} from './frameworks-ai-examples';
|
|
20
|
+
|
|
21
|
+
import {
|
|
22
|
+
nextjsLandingPage,
|
|
23
|
+
nuxtLandingPage,
|
|
24
|
+
remixLandingPage,
|
|
25
|
+
sveltekitLandingPage,
|
|
26
|
+
astroLandingPage,
|
|
27
|
+
viteReactLandingPage,
|
|
28
|
+
} from './frameworks-landing-pages';
|
|
29
|
+
|
|
30
|
+
export interface FrameworkScaffold {
|
|
31
|
+
/** Unique slug (matches detect/frameworks.ts where applicable) */
|
|
32
|
+
slug: string;
|
|
33
|
+
|
|
34
|
+
/** Human-readable name */
|
|
35
|
+
name: string;
|
|
36
|
+
|
|
37
|
+
/** Short description for the select prompt */
|
|
38
|
+
description: string;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Build the create command.
|
|
42
|
+
*
|
|
43
|
+
* @param projectDir - The target directory name (relative, e.g. "my-app")
|
|
44
|
+
* @returns The full command as an argv array (e.g. ["bunx", "create-next-app", "my-app", ...])
|
|
45
|
+
*/
|
|
46
|
+
createCommand: (projectDir: string) => string[];
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Agentuity packages to add as dependencies after scaffolding.
|
|
50
|
+
* `@agentuity/cli` is always added as a devDependency automatically.
|
|
51
|
+
*/
|
|
52
|
+
dependencies?: string[];
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Extra devDependencies to add (beyond @agentuity/cli).
|
|
56
|
+
*/
|
|
57
|
+
devDependencies?: string[];
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Scripts to merge into package.json.
|
|
61
|
+
* These are merged on top of whatever the framework CLI created.
|
|
62
|
+
*/
|
|
63
|
+
scripts?: Record<string, string>;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Generate AI SDK example files for this framework.
|
|
67
|
+
*
|
|
68
|
+
* Returns a map of relative file paths to file contents.
|
|
69
|
+
* Only called if the user opts in to the AI example.
|
|
70
|
+
*/
|
|
71
|
+
aiExample?: () => Record<string, string>;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Replace the framework's default landing page with an Agentuity-branded page.
|
|
75
|
+
*
|
|
76
|
+
* Returns a map of relative file paths to file contents.
|
|
77
|
+
* Files overwrite the framework's default page after scaffolding.
|
|
78
|
+
*/
|
|
79
|
+
landingPage?: () => Record<string, string>;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// ─── Framework Catalog ───────────────────────────────────────────────────────
|
|
83
|
+
|
|
84
|
+
export const frameworkCatalog: FrameworkScaffold[] = [
|
|
85
|
+
{
|
|
86
|
+
slug: 'nextjs',
|
|
87
|
+
name: 'Next.js',
|
|
88
|
+
description: 'Full-stack React framework with App Router',
|
|
89
|
+
createCommand: (dir) => [
|
|
90
|
+
'bunx',
|
|
91
|
+
'create-next-app@latest',
|
|
92
|
+
dir,
|
|
93
|
+
'--ts',
|
|
94
|
+
'--app',
|
|
95
|
+
'--tailwind',
|
|
96
|
+
'--eslint',
|
|
97
|
+
'--src-dir',
|
|
98
|
+
'--import-alias',
|
|
99
|
+
'@/*',
|
|
100
|
+
'--use-bun',
|
|
101
|
+
],
|
|
102
|
+
dependencies: ['ai', '@ai-sdk/openai'],
|
|
103
|
+
scripts: {
|
|
104
|
+
deploy: 'agentuity deploy',
|
|
105
|
+
},
|
|
106
|
+
aiExample: nextjsAiExample,
|
|
107
|
+
landingPage: nextjsLandingPage,
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
slug: 'nuxt',
|
|
111
|
+
name: 'Nuxt',
|
|
112
|
+
description: 'Full-stack Vue framework with server routes',
|
|
113
|
+
createCommand: (dir) => ['bunx', 'nuxi@latest', 'init', dir, '--packageManager', 'bun'],
|
|
114
|
+
dependencies: ['ai', '@ai-sdk/openai'],
|
|
115
|
+
scripts: {
|
|
116
|
+
deploy: 'agentuity deploy',
|
|
117
|
+
},
|
|
118
|
+
aiExample: nuxtAiExample,
|
|
119
|
+
landingPage: nuxtLandingPage,
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
slug: 'remix',
|
|
123
|
+
name: 'Remix',
|
|
124
|
+
description: 'Full-stack React framework with nested routing',
|
|
125
|
+
createCommand: (dir) => [
|
|
126
|
+
'bunx',
|
|
127
|
+
'create-remix@latest',
|
|
128
|
+
dir,
|
|
129
|
+
'--yes',
|
|
130
|
+
'--install',
|
|
131
|
+
'--package-manager',
|
|
132
|
+
'bun',
|
|
133
|
+
],
|
|
134
|
+
dependencies: ['ai', '@ai-sdk/openai'],
|
|
135
|
+
scripts: {
|
|
136
|
+
deploy: 'agentuity deploy',
|
|
137
|
+
},
|
|
138
|
+
aiExample: remixAiExample,
|
|
139
|
+
landingPage: remixLandingPage,
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
slug: 'sveltekit',
|
|
143
|
+
name: 'SvelteKit',
|
|
144
|
+
description: 'Full-stack Svelte framework',
|
|
145
|
+
createCommand: (dir) => [
|
|
146
|
+
'bunx',
|
|
147
|
+
'sv@latest',
|
|
148
|
+
'create',
|
|
149
|
+
dir,
|
|
150
|
+
'--template',
|
|
151
|
+
'minimal',
|
|
152
|
+
'--types',
|
|
153
|
+
'ts',
|
|
154
|
+
],
|
|
155
|
+
dependencies: ['ai', '@ai-sdk/openai'],
|
|
156
|
+
scripts: {
|
|
157
|
+
deploy: 'agentuity deploy',
|
|
158
|
+
},
|
|
159
|
+
aiExample: sveltekitAiExample,
|
|
160
|
+
landingPage: sveltekitLandingPage,
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
slug: 'astro',
|
|
164
|
+
name: 'Astro',
|
|
165
|
+
description: 'Content-focused framework with island architecture',
|
|
166
|
+
createCommand: (dir) => [
|
|
167
|
+
'bunx',
|
|
168
|
+
'create-astro@latest',
|
|
169
|
+
dir,
|
|
170
|
+
'--template',
|
|
171
|
+
'basics',
|
|
172
|
+
'--install',
|
|
173
|
+
'--yes',
|
|
174
|
+
'--typescript',
|
|
175
|
+
'strict',
|
|
176
|
+
],
|
|
177
|
+
dependencies: ['ai', '@ai-sdk/openai'],
|
|
178
|
+
scripts: {
|
|
179
|
+
deploy: 'agentuity deploy',
|
|
180
|
+
},
|
|
181
|
+
aiExample: astroAiExample,
|
|
182
|
+
landingPage: astroLandingPage,
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
slug: 'hono',
|
|
186
|
+
name: 'Hono',
|
|
187
|
+
description: 'Lightweight, fast web framework for the edge',
|
|
188
|
+
createCommand: (dir) => [
|
|
189
|
+
'bunx',
|
|
190
|
+
'create-hono@latest',
|
|
191
|
+
dir,
|
|
192
|
+
'--template',
|
|
193
|
+
'bun',
|
|
194
|
+
'--install',
|
|
195
|
+
'--pm',
|
|
196
|
+
'bun',
|
|
197
|
+
],
|
|
198
|
+
dependencies: ['ai', '@ai-sdk/openai'],
|
|
199
|
+
scripts: {
|
|
200
|
+
deploy: 'agentuity deploy',
|
|
201
|
+
},
|
|
202
|
+
aiExample: honoAiExample,
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
slug: 'vite-react',
|
|
206
|
+
name: 'Vite + React',
|
|
207
|
+
description: 'React SPA with Vite bundler',
|
|
208
|
+
createCommand: (dir) => ['bunx', 'create-vite@latest', dir, '--template', 'react-ts'],
|
|
209
|
+
dependencies: ['ai', '@ai-sdk/openai'],
|
|
210
|
+
scripts: {
|
|
211
|
+
deploy: 'agentuity deploy',
|
|
212
|
+
},
|
|
213
|
+
aiExample: viteReactAiExample,
|
|
214
|
+
landingPage: viteReactLandingPage,
|
|
215
|
+
},
|
|
216
|
+
];
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Find a framework scaffold by slug.
|
|
220
|
+
*/
|
|
221
|
+
export function getFrameworkBySlug(slug: string): FrameworkScaffold | undefined {
|
|
222
|
+
return frameworkCatalog.find((f) => f.slug === slug);
|
|
223
|
+
}
|
|
@@ -118,38 +118,28 @@ export async function getDefaultProjectName(dir: string): Promise<string> {
|
|
|
118
118
|
* @internal Exported for testing
|
|
119
119
|
*/
|
|
120
120
|
export async function isValidProjectStructure(dir: string): Promise<boolean> {
|
|
121
|
-
// Check 1: package.json
|
|
121
|
+
// Check 1: package.json exists (any JS/TS project is valid)
|
|
122
122
|
const pkgPath = join(dir, 'package.json');
|
|
123
|
-
const configPath = join(dir, 'agentuity.config.ts');
|
|
124
123
|
|
|
125
124
|
if (await Bun.file(pkgPath).exists()) {
|
|
126
125
|
try {
|
|
127
126
|
const pkg = await Bun.file(pkgPath).json();
|
|
128
|
-
|
|
129
|
-
if (
|
|
127
|
+
// Valid if it has a name and at least some structure
|
|
128
|
+
if (pkg.name || pkg.dependencies || pkg.devDependencies) {
|
|
130
129
|
return true;
|
|
131
130
|
}
|
|
132
131
|
} catch {
|
|
133
|
-
//
|
|
132
|
+
// Invalid package.json
|
|
134
133
|
}
|
|
135
134
|
}
|
|
136
135
|
|
|
137
|
-
// Check 2: ./agentuity/ subdirectory exists with
|
|
136
|
+
// Check 2: ./agentuity/ subdirectory exists with a package.json (parent project with child)
|
|
138
137
|
const agentuityDir = join(dir, 'agentuity');
|
|
139
138
|
if (existsSync(agentuityDir) && statSync(agentuityDir).isDirectory()) {
|
|
140
139
|
const childPkgPath = join(agentuityDir, 'package.json');
|
|
141
|
-
const childConfigPath = join(agentuityDir, 'agentuity.config.ts');
|
|
142
140
|
|
|
143
141
|
if (await Bun.file(childPkgPath).exists()) {
|
|
144
|
-
|
|
145
|
-
const childPkg = await Bun.file(childPkgPath).json();
|
|
146
|
-
const childDeps = { ...childPkg.dependencies, ...childPkg.devDependencies };
|
|
147
|
-
if (childDeps['@agentuity/runtime'] && (await Bun.file(childConfigPath).exists())) {
|
|
148
|
-
return true;
|
|
149
|
-
}
|
|
150
|
-
} catch {
|
|
151
|
-
// Invalid package.json in child - fall through
|
|
152
|
-
}
|
|
142
|
+
return true;
|
|
153
143
|
}
|
|
154
144
|
}
|
|
155
145
|
|
|
@@ -648,9 +638,8 @@ export async function reconcileProject(opts: ReconcileOptions): Promise<Reconcil
|
|
|
648
638
|
return {
|
|
649
639
|
status: 'error',
|
|
650
640
|
message:
|
|
651
|
-
'This directory does not appear to be a valid
|
|
652
|
-
'Expected
|
|
653
|
-
'or an agentuity/ subdirectory.',
|
|
641
|
+
'This directory does not appear to be a valid project. ' +
|
|
642
|
+
'Expected a package.json with project dependencies.',
|
|
654
643
|
};
|
|
655
644
|
}
|
|
656
645
|
|
|
@@ -743,9 +732,8 @@ export async function runProjectImport(opts: ReconcileOptions): Promise<Reconcil
|
|
|
743
732
|
return {
|
|
744
733
|
status: 'error',
|
|
745
734
|
message:
|
|
746
|
-
'This directory does not appear to be a valid
|
|
747
|
-
'Expected
|
|
748
|
-
'or an agentuity/ subdirectory.',
|
|
735
|
+
'This directory does not appear to be a valid project. ' +
|
|
736
|
+
'Expected a package.json with project dependencies.',
|
|
749
737
|
};
|
|
750
738
|
}
|
|
751
739
|
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework scaffolding and augmentation.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the old template download system. Instead of maintaining
|
|
5
|
+
* custom templates, we run the framework's official create CLI and
|
|
6
|
+
* then augment the result with Agentuity integration.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { existsSync, mkdirSync } from 'node:fs';
|
|
10
|
+
import { join } from 'node:path';
|
|
11
|
+
import type { Logger } from '@agentuity/core';
|
|
12
|
+
import * as tui from '../../tui';
|
|
13
|
+
import type { FrameworkScaffold } from './frameworks';
|
|
14
|
+
|
|
15
|
+
interface ScaffoldOptions {
|
|
16
|
+
/** Absolute path to the target directory */
|
|
17
|
+
dest: string;
|
|
18
|
+
/** The directory name (for display) */
|
|
19
|
+
dirName: string;
|
|
20
|
+
/** Selected framework */
|
|
21
|
+
framework: FrameworkScaffold;
|
|
22
|
+
/** Whether to include AI example */
|
|
23
|
+
includeAiExample: boolean;
|
|
24
|
+
/** Logger */
|
|
25
|
+
logger: Logger;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
interface SetupOptions {
|
|
29
|
+
/** Absolute path to the project directory */
|
|
30
|
+
dest: string;
|
|
31
|
+
/** Human-readable project name */
|
|
32
|
+
projectName: string;
|
|
33
|
+
/** Whether to skip `bun install` */
|
|
34
|
+
noInstall: boolean;
|
|
35
|
+
/** Logger */
|
|
36
|
+
logger: Logger;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Run the framework's official create CLI to scaffold the project.
|
|
41
|
+
*/
|
|
42
|
+
export async function scaffoldFramework(options: ScaffoldOptions): Promise<void> {
|
|
43
|
+
const { dest, dirName, framework, includeAiExample, logger } = options;
|
|
44
|
+
|
|
45
|
+
// Step 1: Run the framework's create command
|
|
46
|
+
const cmd = framework.createCommand(dirName);
|
|
47
|
+
logger.debug('Scaffolding with: %s', cmd.join(' '));
|
|
48
|
+
|
|
49
|
+
const parentDir = join(dest, '..');
|
|
50
|
+
mkdirSync(parentDir, { recursive: true });
|
|
51
|
+
|
|
52
|
+
const exitCode = await tui.runCommand({
|
|
53
|
+
command: `${framework.name} scaffolding`,
|
|
54
|
+
cwd: parentDir,
|
|
55
|
+
cmd,
|
|
56
|
+
clearOnSuccess: true,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
if (exitCode !== 0) {
|
|
60
|
+
throw new Error(`Framework scaffolding failed (exit code ${exitCode})`);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (!existsSync(dest)) {
|
|
64
|
+
throw new Error(`Scaffolding did not create expected directory: ${dest}`);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Step 2: Augment with Agentuity integration
|
|
68
|
+
await augmentProject(dest, framework, includeAiExample, logger);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Augment a scaffolded project with Agentuity integration.
|
|
73
|
+
*
|
|
74
|
+
* - Adds @agentuity/cli as devDependency
|
|
75
|
+
* - Merges deploy/build scripts into package.json
|
|
76
|
+
* - Adds AI example files if requested
|
|
77
|
+
* - Generates AGENTS.md documentation
|
|
78
|
+
*/
|
|
79
|
+
async function augmentProject(
|
|
80
|
+
dest: string,
|
|
81
|
+
framework: FrameworkScaffold,
|
|
82
|
+
includeAiExample: boolean,
|
|
83
|
+
logger: Logger
|
|
84
|
+
): Promise<void> {
|
|
85
|
+
await tui.spinner({
|
|
86
|
+
type: 'progress',
|
|
87
|
+
message: '⚡ Adding Agentuity integration...',
|
|
88
|
+
clearOnSuccess: true,
|
|
89
|
+
callback: async (progress) => {
|
|
90
|
+
// Step 1: Merge package.json
|
|
91
|
+
await mergePackageJson(dest, framework);
|
|
92
|
+
progress(40);
|
|
93
|
+
|
|
94
|
+
// Step 2: Add AI example files
|
|
95
|
+
if (includeAiExample && framework.aiExample) {
|
|
96
|
+
const files = framework.aiExample();
|
|
97
|
+
for (const [relativePath, content] of Object.entries(files)) {
|
|
98
|
+
const filePath = join(dest, relativePath);
|
|
99
|
+
const dir = join(filePath, '..');
|
|
100
|
+
mkdirSync(dir, { recursive: true });
|
|
101
|
+
await Bun.write(filePath, content);
|
|
102
|
+
logger.debug('Created AI example: %s', relativePath);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
progress(50);
|
|
106
|
+
|
|
107
|
+
// Step 3: Replace default landing page with Agentuity-branded page
|
|
108
|
+
if (framework.landingPage) {
|
|
109
|
+
const files = framework.landingPage();
|
|
110
|
+
for (const [relativePath, content] of Object.entries(files)) {
|
|
111
|
+
const filePath = join(dest, relativePath);
|
|
112
|
+
const dir = join(filePath, '..');
|
|
113
|
+
mkdirSync(dir, { recursive: true });
|
|
114
|
+
await Bun.write(filePath, content);
|
|
115
|
+
logger.debug('Created landing page: %s', relativePath);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
progress(75);
|
|
119
|
+
|
|
120
|
+
// Step 4: Add .gitignore entries
|
|
121
|
+
await appendGitignore(dest);
|
|
122
|
+
progress(100);
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Merge Agentuity dependencies and scripts into the project's package.json.
|
|
129
|
+
*/
|
|
130
|
+
async function mergePackageJson(dest: string, framework: FrameworkScaffold): Promise<void> {
|
|
131
|
+
const pkgPath = join(dest, 'package.json');
|
|
132
|
+
const pkg = await Bun.file(pkgPath).json();
|
|
133
|
+
|
|
134
|
+
// Ensure sections exist
|
|
135
|
+
pkg.dependencies = pkg.dependencies ?? {};
|
|
136
|
+
pkg.devDependencies = pkg.devDependencies ?? {};
|
|
137
|
+
pkg.scripts = pkg.scripts ?? {};
|
|
138
|
+
|
|
139
|
+
// Add @agentuity/cli as devDependency
|
|
140
|
+
pkg.devDependencies['@agentuity/cli'] = 'latest';
|
|
141
|
+
|
|
142
|
+
// Add framework-specific dependencies
|
|
143
|
+
if (framework.dependencies) {
|
|
144
|
+
for (const dep of framework.dependencies) {
|
|
145
|
+
if (!pkg.dependencies[dep]) {
|
|
146
|
+
pkg.dependencies[dep] = 'latest';
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// Add framework-specific devDependencies
|
|
152
|
+
if (framework.devDependencies) {
|
|
153
|
+
for (const dep of framework.devDependencies) {
|
|
154
|
+
if (!pkg.devDependencies[dep]) {
|
|
155
|
+
pkg.devDependencies[dep] = 'latest';
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Merge scripts (framework-specific scripts win)
|
|
161
|
+
if (framework.scripts) {
|
|
162
|
+
for (const [name, script] of Object.entries(framework.scripts)) {
|
|
163
|
+
pkg.scripts[name] = script;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
await Bun.write(pkgPath, JSON.stringify(pkg, null, '\t') + '\n');
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Append Agentuity-specific entries to .gitignore.
|
|
172
|
+
*/
|
|
173
|
+
async function appendGitignore(dest: string): Promise<void> {
|
|
174
|
+
const gitignorePath = join(dest, '.gitignore');
|
|
175
|
+
const entries = ['.agentuity/', '.env', '.env.local', 'agentuity.json'];
|
|
176
|
+
|
|
177
|
+
let content = '';
|
|
178
|
+
if (existsSync(gitignorePath)) {
|
|
179
|
+
content = await Bun.file(gitignorePath).text();
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
const missing = entries.filter((entry) => !content.includes(entry));
|
|
183
|
+
if (missing.length > 0) {
|
|
184
|
+
const section = '\n# Agentuity\n' + missing.join('\n') + '\n';
|
|
185
|
+
await Bun.write(gitignorePath, content.trimEnd() + section);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Set up the project after scaffolding: install deps, generate docs.
|
|
191
|
+
*/
|
|
192
|
+
export async function setupProject(options: SetupOptions): Promise<{ success: boolean }> {
|
|
193
|
+
const { dest, projectName, noInstall, logger } = options;
|
|
194
|
+
let hasError = false;
|
|
195
|
+
|
|
196
|
+
tui.info(`🔧 Setting up ${projectName}...`);
|
|
197
|
+
|
|
198
|
+
// Install dependencies (the framework CLI may have already done this,
|
|
199
|
+
// but we need to install our added deps)
|
|
200
|
+
if (!noInstall) {
|
|
201
|
+
const exitCode = await tui.runCommand({
|
|
202
|
+
command: 'bun install',
|
|
203
|
+
cwd: dest,
|
|
204
|
+
cmd: ['bun', 'install'],
|
|
205
|
+
clearOnSuccess: true,
|
|
206
|
+
});
|
|
207
|
+
if (exitCode !== 0) {
|
|
208
|
+
logger.error('Failed to install dependencies');
|
|
209
|
+
hasError = true;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
return { success: !hasError };
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// ─── Git Initialization ──────────────────────────────────────────────────────
|
|
217
|
+
|
|
218
|
+
interface InitGitRepoOptions {
|
|
219
|
+
/** Project name (e.g. "My App") */
|
|
220
|
+
projectName?: string;
|
|
221
|
+
/** Where the project came from (e.g. "Next.js") */
|
|
222
|
+
source?: string;
|
|
223
|
+
/** Git commit author */
|
|
224
|
+
author?: { name: string; email: string };
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Initialize a git repository and create the initial commit.
|
|
229
|
+
*/
|
|
230
|
+
export async function initGitRepo(dest: string, options?: InitGitRepoOptions): Promise<void> {
|
|
231
|
+
// Safety: refuse to init if .git already exists (prevents clobbering existing repos)
|
|
232
|
+
if (existsSync(join(dest, '.git'))) {
|
|
233
|
+
// Framework CLI may have already initialized git — skip
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
const { isGitAvailable, getDefaultBranch } = await import('../../git-helper');
|
|
238
|
+
const gitAvailable = await isGitAvailable();
|
|
239
|
+
|
|
240
|
+
if (gitAvailable) {
|
|
241
|
+
const defaultBranch = (await getDefaultBranch()) || 'main';
|
|
242
|
+
|
|
243
|
+
await tui.runCommand({
|
|
244
|
+
command: `git init -b ${defaultBranch}`,
|
|
245
|
+
cwd: dest,
|
|
246
|
+
cmd: ['git', 'init', '-b', defaultBranch],
|
|
247
|
+
clearOnSuccess: true,
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
// Configure git user in CI/sandbox environments
|
|
251
|
+
if (process.env.CI || process.env.AGENTUITY_SANDBOX_ID) {
|
|
252
|
+
const cfgEmail = options?.author?.email ?? 'bot@agentuity.com';
|
|
253
|
+
const cfgName = options?.author?.name ?? 'Agentuity';
|
|
254
|
+
|
|
255
|
+
await tui.runCommand({
|
|
256
|
+
command: 'git config user.email',
|
|
257
|
+
cwd: dest,
|
|
258
|
+
cmd: ['git', 'config', 'user.email', cfgEmail],
|
|
259
|
+
clearOnSuccess: true,
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
await tui.runCommand({
|
|
263
|
+
command: 'git config user.name',
|
|
264
|
+
cwd: dest,
|
|
265
|
+
cmd: ['git', 'config', 'user.name', cfgName],
|
|
266
|
+
clearOnSuccess: true,
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
await tui.runCommand({
|
|
271
|
+
command: 'git add .',
|
|
272
|
+
cwd: dest,
|
|
273
|
+
cmd: ['git', 'add', '.'],
|
|
274
|
+
clearOnSuccess: true,
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
const authorName = options?.author?.name ?? 'Agentuity';
|
|
278
|
+
const authorEmail = options?.author?.email ?? 'bot@agentuity.com';
|
|
279
|
+
const authorStr = `${authorName} <${authorEmail}>`;
|
|
280
|
+
|
|
281
|
+
await tui.runCommand({
|
|
282
|
+
command: 'git commit',
|
|
283
|
+
cwd: dest,
|
|
284
|
+
cmd: [
|
|
285
|
+
'git',
|
|
286
|
+
'-c',
|
|
287
|
+
'commit.gpgsign=false',
|
|
288
|
+
'commit',
|
|
289
|
+
`--author=${authorStr}`,
|
|
290
|
+
'-m',
|
|
291
|
+
'Initial Setup',
|
|
292
|
+
],
|
|
293
|
+
env: {
|
|
294
|
+
GIT_COMMITTER_NAME: authorName,
|
|
295
|
+
GIT_COMMITTER_EMAIL: authorEmail,
|
|
296
|
+
},
|
|
297
|
+
clearOnSuccess: true,
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
}
|