@agentuity/cli 2.0.11 → 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.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
|
@@ -1,401 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Vite Builder
|
|
3
|
-
*
|
|
4
|
-
* Utilities for running Vite builds (client, server, workbench)
|
|
5
|
-
*/
|
|
6
|
-
import { join } from 'node:path';
|
|
7
|
-
import { existsSync, rmSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs';
|
|
8
|
-
import { createHash } from 'node:crypto';
|
|
9
|
-
import { createRequire } from 'node:module';
|
|
10
|
-
/**
|
|
11
|
-
* Read the pre-built beacon script from @agentuity/frontend package.
|
|
12
|
-
* Tries multiple resolution strategies for workspace/installed/symlink scenarios.
|
|
13
|
-
*/
|
|
14
|
-
async function readBeaconScript(projectRoot) {
|
|
15
|
-
let frontendPath = null;
|
|
16
|
-
try {
|
|
17
|
-
frontendPath = await Bun.resolve('@agentuity/frontend', projectRoot);
|
|
18
|
-
}
|
|
19
|
-
catch {
|
|
20
|
-
// Not found from project root
|
|
21
|
-
}
|
|
22
|
-
if (!frontendPath) {
|
|
23
|
-
try {
|
|
24
|
-
const thisDir = new URL('.', import.meta.url).pathname;
|
|
25
|
-
frontendPath = await Bun.resolve('@agentuity/frontend', thisDir);
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
// Not found from CLI directory
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
if (!frontendPath) {
|
|
32
|
-
try {
|
|
33
|
-
const projectRequire = createRequire(join(projectRoot, 'package.json'));
|
|
34
|
-
frontendPath = projectRequire.resolve('@agentuity/frontend');
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
// Not found via createRequire
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
if (!frontendPath) {
|
|
41
|
-
throw new Error('Could not resolve @agentuity/frontend. Ensure the package is installed and built.');
|
|
42
|
-
}
|
|
43
|
-
const packageDir = join(frontendPath, '..');
|
|
44
|
-
const beaconPath = join(packageDir, 'beacon.js');
|
|
45
|
-
const beaconFile = Bun.file(beaconPath);
|
|
46
|
-
if (!(await beaconFile.exists())) {
|
|
47
|
-
throw new Error(`Beacon script not found at ${beaconPath}. Run "bun run build" in @agentuity/frontend first.`);
|
|
48
|
-
}
|
|
49
|
-
return beaconFile.text();
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Post-build step: inject the analytics beacon into the built index.html.
|
|
53
|
-
*
|
|
54
|
-
* 1. Reads the beacon script from @agentuity/frontend
|
|
55
|
-
* 2. Writes it as a content-hashed asset file
|
|
56
|
-
* 3. Injects a <script data-agentuity-beacon> tag into the HTML
|
|
57
|
-
*
|
|
58
|
-
* This runs after `vite build` completes so it works regardless of the
|
|
59
|
-
* user's vite.config.ts — no Vite plugin required.
|
|
60
|
-
*/
|
|
61
|
-
async function injectBeacon(rootDir, cdnBaseUrl, logger) {
|
|
62
|
-
const clientDir = join(rootDir, '.agentuity/client');
|
|
63
|
-
const indexHtmlPath = join(clientDir, 'index.html');
|
|
64
|
-
if (!existsSync(indexHtmlPath)) {
|
|
65
|
-
logger.debug('No index.html found, skipping beacon injection');
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
let beaconCode;
|
|
69
|
-
try {
|
|
70
|
-
beaconCode = await readBeaconScript(rootDir);
|
|
71
|
-
}
|
|
72
|
-
catch (error) {
|
|
73
|
-
logger.warn('Failed to read beacon script, skipping injection: %s', error instanceof Error ? error.message : String(error));
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
// Write beacon as a content-hashed asset (matches Vite's naming convention)
|
|
77
|
-
const hash = createHash('sha256').update(beaconCode).digest('hex').slice(0, 8);
|
|
78
|
-
const beaconFileName = `agentuity-beacon-${hash}.js`;
|
|
79
|
-
const assetsDir = join(clientDir, 'assets');
|
|
80
|
-
mkdirSync(assetsDir, { recursive: true });
|
|
81
|
-
writeFileSync(join(assetsDir, beaconFileName), beaconCode);
|
|
82
|
-
// If a Vite manifest exists, add the beacon so the metadata generator
|
|
83
|
-
// includes it in the asset list. When no manifest exists, the directory
|
|
84
|
-
// scanner in metadata-generator.ts picks up assets/ directly.
|
|
85
|
-
const manifestPath = join(clientDir, '.vite', 'manifest.json');
|
|
86
|
-
if (existsSync(manifestPath)) {
|
|
87
|
-
const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
88
|
-
manifest['agentuity-beacon'] = { file: `assets/${beaconFileName}` };
|
|
89
|
-
writeFileSync(manifestPath, JSON.stringify(manifest));
|
|
90
|
-
}
|
|
91
|
-
// Build the beacon URL using the CDN base
|
|
92
|
-
const normalizedBase = cdnBaseUrl.endsWith('/') ? cdnBaseUrl : `${cdnBaseUrl}/`;
|
|
93
|
-
const beaconUrl = `${normalizedBase}assets/${beaconFileName}`;
|
|
94
|
-
// Inject the script tag into index.html
|
|
95
|
-
// The script must be sync (no async/defer) to patch history API before router loads.
|
|
96
|
-
// The data-agentuity-beacon attribute is the marker the runtime looks for.
|
|
97
|
-
const beaconScript = `<script data-agentuity-beacon src="${beaconUrl}"></script>`;
|
|
98
|
-
let html = readFileSync(indexHtmlPath, 'utf-8');
|
|
99
|
-
if (html.includes('</head>')) {
|
|
100
|
-
html = html.replace('</head>', `${beaconScript}</head>`);
|
|
101
|
-
}
|
|
102
|
-
else if (html.includes('<body')) {
|
|
103
|
-
html = html.replace(/<body([^>]*)>/, `<body$1>${beaconScript}`);
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
html = beaconScript + html;
|
|
107
|
-
}
|
|
108
|
-
writeFileSync(indexHtmlPath, html);
|
|
109
|
-
logger.debug('Injected analytics beacon: %s', beaconUrl);
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Run a Vite build for the specified mode
|
|
113
|
-
* Uses inline Vite config (customizable via agentuity.config.ts)
|
|
114
|
-
*/
|
|
115
|
-
export async function runViteBuild(options) {
|
|
116
|
-
const { rootDir, mode, dev = false, logger, profile } = options;
|
|
117
|
-
logger.debug(`Running Vite build for mode: ${mode}`);
|
|
118
|
-
// For server mode, use Bun.build (preserves process.env at runtime)
|
|
119
|
-
if (mode === 'server') {
|
|
120
|
-
const srcDir = join(rootDir, 'src');
|
|
121
|
-
// Generate documentation files (if they don't exist)
|
|
122
|
-
const { generateDocumentation } = await import('./docs-generator');
|
|
123
|
-
await generateDocumentation(srcDir, logger);
|
|
124
|
-
// Generate/update prompt files in dev mode only (non-blocking)
|
|
125
|
-
if (dev) {
|
|
126
|
-
import('./prompt-generator')
|
|
127
|
-
.then(({ generatePromptFiles }) => generatePromptFiles(srcDir, logger))
|
|
128
|
-
.catch((err) => logger.warn('Failed to generate prompt files: %s', err.message));
|
|
129
|
-
}
|
|
130
|
-
// Generate lifecycle types (if setup() exists)
|
|
131
|
-
const { generateLifecycleTypes } = await import('./lifecycle-generator');
|
|
132
|
-
await generateLifecycleTypes(rootDir, srcDir, logger);
|
|
133
|
-
// Generate environment types from local .env files
|
|
134
|
-
const { generateEnvTypes } = await import('./env-types-generator');
|
|
135
|
-
await generateEnvTypes({
|
|
136
|
-
rootDir,
|
|
137
|
-
srcDir,
|
|
138
|
-
logger,
|
|
139
|
-
isProduction: !dev,
|
|
140
|
-
profile,
|
|
141
|
-
});
|
|
142
|
-
// Build with Bun.build (app.ts is the entrypoint)
|
|
143
|
-
const { installExternalsAndBuild } = await import('./server-bundler');
|
|
144
|
-
await installExternalsAndBuild({
|
|
145
|
-
rootDir,
|
|
146
|
-
dev,
|
|
147
|
-
logger,
|
|
148
|
-
});
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
// Dynamically import vite for workbench builds
|
|
152
|
-
const { build: viteBuild } = await import('vite');
|
|
153
|
-
// For client/workbench, use inline config with vite.config.ts loading
|
|
154
|
-
let viteConfig;
|
|
155
|
-
if (mode === 'client') {
|
|
156
|
-
// For client builds, spawn vite as a subprocess.
|
|
157
|
-
// This avoids issues with Bun's module loading that cause problems
|
|
158
|
-
// with certain plugins like @sveltejs/vite-plugin-svelte.
|
|
159
|
-
// The vite.config.ts in the project handles all configuration.
|
|
160
|
-
const buildMode = dev ? 'development' : 'production';
|
|
161
|
-
const clientOutDir = join(rootDir, '.agentuity/client');
|
|
162
|
-
// Ensure vite.config.ts exists (fallback for projects created before v2 template update)
|
|
163
|
-
const viteConfigPath = join(rootDir, 'vite.config.ts');
|
|
164
|
-
if (!existsSync(viteConfigPath)) {
|
|
165
|
-
logger.debug('Generating fallback vite.config.ts');
|
|
166
|
-
const fallbackConfig = `import react from '@vitejs/plugin-react';
|
|
167
|
-
import { defineConfig } from 'vite';
|
|
168
|
-
import { join } from 'node:path';
|
|
169
|
-
|
|
170
|
-
export default defineConfig({
|
|
171
|
-
plugins: [react()],
|
|
172
|
-
root: '.',
|
|
173
|
-
build: {
|
|
174
|
-
rollupOptions: {
|
|
175
|
-
input: join(__dirname, 'src/web/index.html'),
|
|
176
|
-
},
|
|
177
|
-
},
|
|
178
|
-
});
|
|
179
|
-
`;
|
|
180
|
-
await Bun.write(viteConfigPath, fallbackConfig);
|
|
181
|
-
}
|
|
182
|
-
// Construct CDN base URL for production builds so Vite prefixes all
|
|
183
|
-
// asset URLs (CSS, JS chunks) with the CDN origin instead of "/".
|
|
184
|
-
const cdnBaseUrl = !dev && options.deploymentId
|
|
185
|
-
? `https://${options.region === 'local' ? 'localstack-static-assets.t3.storageapi.dev' : 'cdn.agentuity.com'}/${options.deploymentId}/client/`
|
|
186
|
-
: undefined;
|
|
187
|
-
const args = [
|
|
188
|
-
'bun',
|
|
189
|
-
'x',
|
|
190
|
-
'vite',
|
|
191
|
-
'build',
|
|
192
|
-
'--mode',
|
|
193
|
-
buildMode,
|
|
194
|
-
'--outDir',
|
|
195
|
-
clientOutDir,
|
|
196
|
-
'--logLevel',
|
|
197
|
-
'error',
|
|
198
|
-
'--clearScreen',
|
|
199
|
-
'false',
|
|
200
|
-
];
|
|
201
|
-
if (cdnBaseUrl) {
|
|
202
|
-
args.push('--base', cdnBaseUrl);
|
|
203
|
-
}
|
|
204
|
-
logger.debug('Spawning vite build for client (subprocess mode)');
|
|
205
|
-
logger.debug(' outDir: %s', clientOutDir);
|
|
206
|
-
logger.debug(' mode: %s', buildMode);
|
|
207
|
-
if (cdnBaseUrl) {
|
|
208
|
-
logger.debug(' base (CDN): %s', cdnBaseUrl);
|
|
209
|
-
}
|
|
210
|
-
const viteProcess = Bun.spawn(args, {
|
|
211
|
-
cwd: rootDir,
|
|
212
|
-
stdout: 'inherit',
|
|
213
|
-
stderr: 'inherit',
|
|
214
|
-
});
|
|
215
|
-
const exitCode = await viteProcess.exited;
|
|
216
|
-
if (exitCode !== 0) {
|
|
217
|
-
throw new Error(`Vite build exited with code ${exitCode}`);
|
|
218
|
-
}
|
|
219
|
-
logger.debug('Vite build complete for mode: client');
|
|
220
|
-
return;
|
|
221
|
-
}
|
|
222
|
-
else if (mode === 'workbench') {
|
|
223
|
-
const { workbenchRoute = '/workbench' } = options;
|
|
224
|
-
// Ensure route ends with / for Vite base
|
|
225
|
-
const base = workbenchRoute.endsWith('/') ? workbenchRoute : `${workbenchRoute}/`;
|
|
226
|
-
// Workbench is built with React (internal UI)
|
|
227
|
-
// Use CLI's bundled React plugin since workbench is our code
|
|
228
|
-
const reactModule = await import('@vitejs/plugin-react');
|
|
229
|
-
const react = reactModule.default;
|
|
230
|
-
viteConfig = {
|
|
231
|
-
root: join(rootDir, '.agentuity/workbench-src'), // Use generated workbench source
|
|
232
|
-
base, // All workbench assets are under the configured route
|
|
233
|
-
plugins: [react()],
|
|
234
|
-
envPrefix: ['VITE_', 'AGENTUITY_PUBLIC_', 'PUBLIC_'],
|
|
235
|
-
build: {
|
|
236
|
-
outDir: join(rootDir, '.agentuity/workbench'),
|
|
237
|
-
rollupOptions: {
|
|
238
|
-
input: join(rootDir, '.agentuity/workbench-src/index.html'),
|
|
239
|
-
},
|
|
240
|
-
manifest: true,
|
|
241
|
-
emptyOutDir: true,
|
|
242
|
-
},
|
|
243
|
-
logLevel: 'warn',
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
else {
|
|
247
|
-
throw new Error(`Unknown build mode: ${mode}`);
|
|
248
|
-
}
|
|
249
|
-
// For workbench mode, use programmatic vite build
|
|
250
|
-
const buildMode = dev ? 'development' : 'production';
|
|
251
|
-
await viteBuild({
|
|
252
|
-
...viteConfig,
|
|
253
|
-
mode: buildMode,
|
|
254
|
-
});
|
|
255
|
-
logger.debug(`Vite build complete for mode: ${mode}`);
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Run all builds in sequence: client -> workbench (if enabled) -> server
|
|
259
|
-
*/
|
|
260
|
-
export async function runAllBuilds(options) {
|
|
261
|
-
const { rootDir, projectId = '', dev = false, logger, collector } = options;
|
|
262
|
-
if (!dev) {
|
|
263
|
-
rmSync(join(rootDir, '.agentuity'), { force: true, recursive: true });
|
|
264
|
-
}
|
|
265
|
-
const result = {
|
|
266
|
-
workbench: { included: false, duration: 0 },
|
|
267
|
-
client: { included: false, duration: 0 },
|
|
268
|
-
server: { included: false, duration: 0 },
|
|
269
|
-
static: { included: false, duration: 0, routes: 0 },
|
|
270
|
-
};
|
|
271
|
-
// Load runtime config from createApp() in app.ts (v2 approach)
|
|
272
|
-
const { getWorkbenchConfig, loadRuntimeConfig } = await import('./config-loader');
|
|
273
|
-
const runtimeConfig = await loadRuntimeConfig(rootDir, logger);
|
|
274
|
-
const workbenchConfig = getWorkbenchConfig(dev, runtimeConfig);
|
|
275
|
-
// Generate workbench files BEFORE any builds if enabled (dev mode only)
|
|
276
|
-
if (workbenchConfig.enabled) {
|
|
277
|
-
logger.debug('Workbench enabled (dev mode), generating files before build...');
|
|
278
|
-
const { generateWorkbenchFiles } = await import('./workbench-generator');
|
|
279
|
-
await generateWorkbenchFiles(rootDir, projectId, workbenchConfig, logger);
|
|
280
|
-
}
|
|
281
|
-
// 1. Discover agents and routes BEFORE builds
|
|
282
|
-
logger.debug('Discovering agents and routes...');
|
|
283
|
-
const { discoverAgents } = await import('./agent-discovery');
|
|
284
|
-
const { discoverRoutes } = await import('./route-discovery');
|
|
285
|
-
const srcDir = join(rootDir, 'src');
|
|
286
|
-
const agentMetadata = await discoverAgents(srcDir, projectId, options.deploymentId || '', logger);
|
|
287
|
-
const { routes } = await discoverRoutes(srcDir, projectId, options.deploymentId || '', logger);
|
|
288
|
-
// Agent metadata is used for metadata.json generation (no registry codegen needed)
|
|
289
|
-
// Check if web frontend exists
|
|
290
|
-
const hasWebFrontend = await Bun.file(join(rootDir, 'src', 'web', 'index.html')).exists();
|
|
291
|
-
// Check if analytics is enabled
|
|
292
|
-
// v2: analytics config comes from createApp()
|
|
293
|
-
const analyticsFromRuntime = runtimeConfig?.analytics;
|
|
294
|
-
const analyticsEnabled = analyticsFromRuntime !== undefined ? analyticsFromRuntime !== false : true;
|
|
295
|
-
// 2. Build client (only if web frontend exists)
|
|
296
|
-
if (hasWebFrontend) {
|
|
297
|
-
logger.debug('Building client assets...');
|
|
298
|
-
const endClientDiagnostic = collector?.startDiagnostic('client-build');
|
|
299
|
-
const started = Date.now();
|
|
300
|
-
await runViteBuild({
|
|
301
|
-
...options,
|
|
302
|
-
mode: 'client',
|
|
303
|
-
workbenchEnabled: workbenchConfig.enabled,
|
|
304
|
-
workbenchRoute: workbenchConfig.route,
|
|
305
|
-
analyticsEnabled,
|
|
306
|
-
});
|
|
307
|
-
// Normalize index.html location: vite may output to src/web/index.html
|
|
308
|
-
// depending on the project's vite.config.ts configuration
|
|
309
|
-
const clientDir = join(rootDir, '.agentuity/client');
|
|
310
|
-
const nestedIndexHtml = join(clientDir, 'src/web/index.html');
|
|
311
|
-
const rootIndexHtml = join(clientDir, 'index.html');
|
|
312
|
-
if (existsSync(nestedIndexHtml) && !existsSync(rootIndexHtml)) {
|
|
313
|
-
const { renameSync, mkdirSync: mkdirSyncFs } = await import('node:fs');
|
|
314
|
-
// Ensure target directory exists
|
|
315
|
-
mkdirSyncFs(clientDir, { recursive: true });
|
|
316
|
-
renameSync(nestedIndexHtml, rootIndexHtml);
|
|
317
|
-
logger.debug('Moved index.html from src/web/ to client root');
|
|
318
|
-
}
|
|
319
|
-
// Post-build: inject analytics beacon into the built HTML.
|
|
320
|
-
// Must run AFTER the index.html normalization above (Vite may
|
|
321
|
-
// output to src/web/index.html which gets moved to the client root).
|
|
322
|
-
const isLocalRegion = options.region === 'local';
|
|
323
|
-
const cdnDomain = isLocalRegion
|
|
324
|
-
? 'localstack-static-assets.t3.storageapi.dev'
|
|
325
|
-
: 'cdn.agentuity.com';
|
|
326
|
-
const cdnBaseUrl = !dev && options.deploymentId
|
|
327
|
-
? `https://${cdnDomain}/${options.deploymentId}/client/`
|
|
328
|
-
: undefined;
|
|
329
|
-
if (cdnBaseUrl && analyticsEnabled) {
|
|
330
|
-
await injectBeacon(rootDir, cdnBaseUrl, logger);
|
|
331
|
-
}
|
|
332
|
-
result.client.included = true;
|
|
333
|
-
result.client.duration = Date.now() - started;
|
|
334
|
-
endClientDiagnostic?.();
|
|
335
|
-
}
|
|
336
|
-
else {
|
|
337
|
-
logger.debug('Skipping client build - no src/web/index.html found');
|
|
338
|
-
}
|
|
339
|
-
// 2b. Static rendering (if entry-server.tsx exists)
|
|
340
|
-
const entryServerPath = join(rootDir, 'src', 'web', 'entry-server.tsx');
|
|
341
|
-
if (existsSync(entryServerPath) && hasWebFrontend) {
|
|
342
|
-
logger.debug('Running static rendering (pre-rendering all routes)...');
|
|
343
|
-
const endStaticDiagnostic = collector?.startDiagnostic('static-render');
|
|
344
|
-
const { runStaticRender } = await import('./static-renderer');
|
|
345
|
-
const staticResult = await runStaticRender({
|
|
346
|
-
rootDir,
|
|
347
|
-
logger,
|
|
348
|
-
dev,
|
|
349
|
-
});
|
|
350
|
-
result.static.included = true;
|
|
351
|
-
result.static.duration = staticResult.duration;
|
|
352
|
-
result.static.routes = staticResult.routes;
|
|
353
|
-
endStaticDiagnostic?.();
|
|
354
|
-
}
|
|
355
|
-
// 3. Build workbench (if enabled in config)
|
|
356
|
-
if (workbenchConfig.enabled) {
|
|
357
|
-
logger.debug('Building workbench assets...');
|
|
358
|
-
const endWorkbenchDiagnostic = collector?.startDiagnostic('workbench-build');
|
|
359
|
-
const started = Date.now();
|
|
360
|
-
await runViteBuild({
|
|
361
|
-
...options,
|
|
362
|
-
mode: 'workbench',
|
|
363
|
-
workbenchRoute: workbenchConfig.route,
|
|
364
|
-
workbenchEnabled: true,
|
|
365
|
-
});
|
|
366
|
-
result.workbench.included = true;
|
|
367
|
-
result.workbench.duration = Date.now() - started;
|
|
368
|
-
endWorkbenchDiagnostic?.();
|
|
369
|
-
}
|
|
370
|
-
// 4. Build server
|
|
371
|
-
logger.debug('Building server...');
|
|
372
|
-
const endServerDiagnostic = collector?.startDiagnostic('server-build');
|
|
373
|
-
const serverStarted = Date.now();
|
|
374
|
-
await runViteBuild({ ...options, mode: 'server' });
|
|
375
|
-
result.server.included = true;
|
|
376
|
-
result.server.duration = Date.now() - serverStarted;
|
|
377
|
-
endServerDiagnostic?.();
|
|
378
|
-
// 5. Generate metadata (after all builds complete)
|
|
379
|
-
logger.debug('Generating metadata...');
|
|
380
|
-
const endMetadataDiagnostic = collector?.startDiagnostic('metadata-generation');
|
|
381
|
-
const { generateMetadata, writeMetadataFile } = await import('./metadata-generator');
|
|
382
|
-
// Generate metadata
|
|
383
|
-
const metadata = await generateMetadata({
|
|
384
|
-
rootDir,
|
|
385
|
-
projectId,
|
|
386
|
-
orgId: options.orgId,
|
|
387
|
-
deploymentId: options.deploymentId,
|
|
388
|
-
agents: agentMetadata,
|
|
389
|
-
routes,
|
|
390
|
-
logger,
|
|
391
|
-
dev,
|
|
392
|
-
deploymentOptions: options.deploymentOptions,
|
|
393
|
-
deploymentConfig: options.deploymentConfig,
|
|
394
|
-
});
|
|
395
|
-
writeMetadataFile(rootDir, metadata, dev, logger);
|
|
396
|
-
endMetadataDiagnostic?.();
|
|
397
|
-
logger.debug('Registry and metadata generation complete');
|
|
398
|
-
logger.debug('All builds complete');
|
|
399
|
-
return result;
|
|
400
|
-
}
|
|
401
|
-
//# sourceMappingURL=vite-builder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vite-builder.js","sourceRoot":"","sources":["../../../../src/cmd/build/vite/vite-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Workbench file generator for Vite builds
|
|
3
|
-
*/
|
|
4
|
-
import type { Logger, WorkbenchConfig } from '../../../types';
|
|
5
|
-
/**
|
|
6
|
-
* Generate workbench files in .agentuity/workbench-src/
|
|
7
|
-
* This keeps them separate from user's source code
|
|
8
|
-
*/
|
|
9
|
-
export declare function generateWorkbenchFiles(rootDir: string, _projectId: string, config: WorkbenchConfig, logger: Logger): Promise<void>;
|
|
10
|
-
//# sourceMappingURL=workbench-generator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workbench-generator.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/workbench-generator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAqF9D;;;GAGG;AACH,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CA+Cf"}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Workbench file generator for Vite builds
|
|
3
|
-
*/
|
|
4
|
-
import { join } from 'node:path';
|
|
5
|
-
import { mkdirSync, existsSync, cpSync } from 'node:fs';
|
|
6
|
-
import { encodeWorkbenchConfig, } from '@agentuity/core';
|
|
7
|
-
/**
|
|
8
|
-
* Find the @agentuity/workbench package path
|
|
9
|
-
*/
|
|
10
|
-
async function findWorkbenchPackage(rootDir, logger) {
|
|
11
|
-
// Try app-level node_modules first
|
|
12
|
-
const appLevel = join(rootDir, 'node_modules', '@agentuity', 'workbench');
|
|
13
|
-
if (existsSync(appLevel)) {
|
|
14
|
-
return appLevel;
|
|
15
|
-
}
|
|
16
|
-
// Try workspace root (walk up looking for workspace)
|
|
17
|
-
let current = rootDir;
|
|
18
|
-
while (true) {
|
|
19
|
-
const pkgPath = join(current, 'package.json');
|
|
20
|
-
if (existsSync(pkgPath)) {
|
|
21
|
-
try {
|
|
22
|
-
const pkg = JSON.parse(await Bun.file(pkgPath).text());
|
|
23
|
-
if (pkg.workspaces) {
|
|
24
|
-
// Found workspace root
|
|
25
|
-
const workspaceWorkbench = join(current, 'node_modules', '@agentuity', 'workbench');
|
|
26
|
-
if (existsSync(workspaceWorkbench)) {
|
|
27
|
-
return workspaceWorkbench;
|
|
28
|
-
}
|
|
29
|
-
// Try workspace packages directory
|
|
30
|
-
const packagesWorkbench = join(current, 'packages', 'workbench');
|
|
31
|
-
if (existsSync(packagesWorkbench)) {
|
|
32
|
-
return packagesWorkbench;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
// Ignore parse errors
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
const parent = join(current, '..');
|
|
41
|
-
if (parent === current)
|
|
42
|
-
break;
|
|
43
|
-
current = parent;
|
|
44
|
-
}
|
|
45
|
-
logger.warn('Could not find @agentuity/workbench package');
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Generate workbench main.tsx file
|
|
50
|
-
*/
|
|
51
|
-
function generateMainTsx(config) {
|
|
52
|
-
const encodedConfig = encodeWorkbenchConfig(config);
|
|
53
|
-
return `// Generated workbench entry point
|
|
54
|
-
import React from 'react';
|
|
55
|
-
import { createRoot } from 'react-dom/client';
|
|
56
|
-
import { App } from '@agentuity/workbench';
|
|
57
|
-
import './styles.css'; // Import CSS for Vite HMR
|
|
58
|
-
|
|
59
|
-
// Root element
|
|
60
|
-
const rootElement = document.getElementById('root');
|
|
61
|
-
if (!rootElement) {
|
|
62
|
-
throw new Error('Root element not found');
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// Render the app
|
|
66
|
-
const root = createRoot(rootElement);
|
|
67
|
-
root.render(<App configBase64="${encodedConfig}" />);
|
|
68
|
-
`;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Generate workbench index.html file
|
|
72
|
-
*/
|
|
73
|
-
function generateIndexHtml() {
|
|
74
|
-
return `<!DOCTYPE html>
|
|
75
|
-
<html lang="en">
|
|
76
|
-
<head>
|
|
77
|
-
<meta charset="UTF-8">
|
|
78
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
79
|
-
<title>Agentuity Workbench</title>
|
|
80
|
-
</head>
|
|
81
|
-
<body>
|
|
82
|
-
<div id="root"></div>
|
|
83
|
-
<script type="module" src="./main.tsx"></script>
|
|
84
|
-
</body>
|
|
85
|
-
</html>`;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Generate workbench files in .agentuity/workbench-src/
|
|
89
|
-
* This keeps them separate from user's source code
|
|
90
|
-
*/
|
|
91
|
-
export async function generateWorkbenchFiles(rootDir, _projectId, config, logger) {
|
|
92
|
-
const workbenchDir = join(rootDir, '.agentuity', 'workbench-src');
|
|
93
|
-
// Create directory if it doesn't exist
|
|
94
|
-
if (!existsSync(workbenchDir)) {
|
|
95
|
-
mkdirSync(workbenchDir, { recursive: true });
|
|
96
|
-
logger.debug('Created workbench directory: %s', workbenchDir);
|
|
97
|
-
}
|
|
98
|
-
// Create core workbench config
|
|
99
|
-
const coreConfig = {
|
|
100
|
-
route: config.route ?? '/workbench',
|
|
101
|
-
headers: config.headers ?? {},
|
|
102
|
-
};
|
|
103
|
-
// Generate main.tsx
|
|
104
|
-
const mainTsxPath = join(workbenchDir, 'main.tsx');
|
|
105
|
-
await Bun.write(mainTsxPath, generateMainTsx(coreConfig));
|
|
106
|
-
logger.debug('Generated workbench main.tsx');
|
|
107
|
-
// Generate index.html
|
|
108
|
-
const indexHtmlPath = join(workbenchDir, 'index.html');
|
|
109
|
-
await Bun.write(indexHtmlPath, generateIndexHtml());
|
|
110
|
-
logger.debug('Generated workbench index.html');
|
|
111
|
-
// Copy standalone CSS from @agentuity/workbench package
|
|
112
|
-
const workbenchPackage = await findWorkbenchPackage(rootDir, logger);
|
|
113
|
-
if (workbenchPackage) {
|
|
114
|
-
const distCss = join(workbenchPackage, 'dist', 'standalone.css');
|
|
115
|
-
const srcCss = join(workbenchPackage, 'src', 'standalone.css');
|
|
116
|
-
const destCss = join(workbenchDir, 'styles.css');
|
|
117
|
-
if (existsSync(distCss)) {
|
|
118
|
-
cpSync(distCss, destCss);
|
|
119
|
-
logger.debug('Copied workbench standalone.css from dist');
|
|
120
|
-
}
|
|
121
|
-
else if (existsSync(srcCss)) {
|
|
122
|
-
cpSync(srcCss, destCss);
|
|
123
|
-
logger.warn('Using source standalone.css (ensure @agentuity/workbench is built)');
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
logger.error('Workbench styles not found in package: %s', workbenchPackage);
|
|
127
|
-
throw new Error('Workbench styles not found. Ensure @agentuity/workbench is installed.');
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
throw new Error('Could not find @agentuity/workbench package. Ensure it is installed.');
|
|
132
|
-
}
|
|
133
|
-
logger.trace('Workbench files generated successfully');
|
|
134
|
-
}
|
|
135
|
-
//# sourceMappingURL=workbench-generator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workbench-generator.js","sourceRoot":"","sources":["../../../../src/cmd/build/vite/workbench-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WebSocket-aware front-door TCP proxy for dev mode.
|
|
3
|
-
*
|
|
4
|
-
* Bun's node:http has several bugs that prevent Vite's built-in http-proxy
|
|
5
|
-
* from proxying WebSocket upgrades (see linked PRs). Rather than polyfilling
|
|
6
|
-
* those bugs, this module places a lightweight `net.createServer` on the
|
|
7
|
-
* user-facing port. It inspects the first bytes of each TCP connection and
|
|
8
|
-
* routes accordingly:
|
|
9
|
-
*
|
|
10
|
-
* - **WebSocket upgrades to backend paths** → piped directly to Bun backend
|
|
11
|
-
* (Bun's native `server.upgrade()` works perfectly over raw TCP)
|
|
12
|
-
* - **Everything else** (HTTP requests, Vite HMR WebSocket) → piped to Vite
|
|
13
|
-
*
|
|
14
|
-
* From the browser's perspective there is only one port. Vite and Bun both
|
|
15
|
-
* listen on internal ports that are never exposed.
|
|
16
|
-
*
|
|
17
|
-
* Bun bugs this works around:
|
|
18
|
-
* - https://github.com/oven-sh/bun/pull/27237 (socket.write drops data)
|
|
19
|
-
* - https://github.com/oven-sh/bun/pull/26264 (missing destroySoon)
|
|
20
|
-
* - https://github.com/oven-sh/bun/pull/27859 (http.request upgrade event)
|
|
21
|
-
* - Server-side upgrade socket read broken (HTTP parser doesn't hand off)
|
|
22
|
-
*
|
|
23
|
-
* This entire module can be removed once those Bun PRs are merged and the
|
|
24
|
-
* Vite `ws: true` proxy works natively under Bun.
|
|
25
|
-
*
|
|
26
|
-
* ```
|
|
27
|
-
* Browser ──TCP──▶ net.Server (:3500, user-facing)
|
|
28
|
-
* │
|
|
29
|
-
* ┌───────────┴───────────┐
|
|
30
|
-
* ▼ (WS upgrade to ▼ (everything else)
|
|
31
|
-
* backend paths)
|
|
32
|
-
* Bun backend (:3501) Vite server (:3502)
|
|
33
|
-
* ```
|
|
34
|
-
*/
|
|
35
|
-
import { type Server } from 'node:net';
|
|
36
|
-
import type { Logger } from '../../../types';
|
|
37
|
-
export interface WsProxyOptions {
|
|
38
|
-
/** Port the front-door proxy listens on (user-facing) */
|
|
39
|
-
port: number;
|
|
40
|
-
/** Port of the Vite dev server (internal) */
|
|
41
|
-
vitePort: number;
|
|
42
|
-
/** Port of the Bun backend server (internal) */
|
|
43
|
-
backendPort: number;
|
|
44
|
-
/** Route path prefixes that should be proxied to the backend */
|
|
45
|
-
routePaths: string[];
|
|
46
|
-
logger: Logger;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Start a front-door TCP proxy that routes WebSocket upgrades to the Bun
|
|
50
|
-
* backend and everything else to Vite. Returns the `net.Server` instance.
|
|
51
|
-
*/
|
|
52
|
-
export declare function startWsProxy(options: WsProxyOptions): Promise<Server>;
|
|
53
|
-
//# sourceMappingURL=ws-proxy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ws-proxy.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/ws-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAyB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,WAAW,cAAc;IAC9B,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAuErE"}
|