@agentuity/cli 0.0.100 → 0.0.102
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/AGENTS.md +19 -188
- package/bin/cli.ts +13 -6
- package/dist/api.d.ts +1 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +1 -1
- package/dist/api.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +41 -12
- package/dist/cli.js.map +1 -1
- package/dist/cmd/ai/index.d.ts.map +1 -1
- package/dist/cmd/ai/index.js +6 -1
- package/dist/cmd/ai/index.js.map +1 -1
- package/dist/cmd/ai/prompt/agent.d.ts +7 -0
- package/dist/cmd/ai/prompt/agent.d.ts.map +1 -1
- package/dist/cmd/ai/prompt/agent.js +12 -323
- package/dist/cmd/ai/prompt/agent.js.map +1 -1
- package/dist/cmd/ai/prompt/api.d.ts +7 -0
- package/dist/cmd/ai/prompt/api.d.ts.map +1 -1
- package/dist/cmd/ai/prompt/api.js +12 -260
- package/dist/cmd/ai/prompt/api.js.map +1 -1
- package/dist/cmd/ai/prompt/version.d.ts +35 -0
- package/dist/cmd/ai/prompt/version.d.ts.map +1 -0
- package/dist/cmd/ai/prompt/version.js +55 -0
- package/dist/cmd/ai/prompt/version.js.map +1 -0
- package/dist/cmd/ai/prompt/web.d.ts +7 -0
- package/dist/cmd/ai/prompt/web.d.ts.map +1 -1
- package/dist/cmd/ai/prompt/web.js +12 -283
- package/dist/cmd/ai/prompt/web.js.map +1 -1
- package/dist/cmd/ai/skills/generate.d.ts +3 -0
- package/dist/cmd/ai/skills/generate.d.ts.map +1 -0
- package/dist/cmd/ai/skills/generate.js +65 -0
- package/dist/cmd/ai/skills/generate.js.map +1 -0
- package/dist/cmd/ai/skills/generator.d.ts +4 -0
- package/dist/cmd/ai/skills/generator.d.ts.map +1 -0
- package/dist/cmd/ai/skills/generator.js +402 -0
- package/dist/cmd/ai/skills/generator.js.map +1 -0
- package/dist/cmd/ai/skills/index.d.ts +4 -0
- package/dist/cmd/ai/skills/index.d.ts.map +1 -0
- package/dist/cmd/ai/skills/index.js +21 -0
- package/dist/cmd/ai/skills/index.js.map +1 -0
- package/dist/cmd/auth/signup.d.ts.map +1 -1
- package/dist/cmd/auth/signup.js +1 -0
- package/dist/cmd/auth/signup.js.map +1 -1
- package/dist/cmd/build/ast.d.ts +2 -1
- package/dist/cmd/build/ast.d.ts.map +1 -1
- package/dist/cmd/build/ast.js +135 -47
- package/dist/cmd/build/ast.js.map +1 -1
- package/dist/cmd/build/entry-generator.d.ts.map +1 -1
- package/dist/cmd/build/entry-generator.js +255 -188
- package/dist/cmd/build/entry-generator.js.map +1 -1
- package/dist/cmd/build/vite/agent-discovery.d.ts.map +1 -1
- package/dist/cmd/build/vite/agent-discovery.js +103 -45
- package/dist/cmd/build/vite/agent-discovery.js.map +1 -1
- package/dist/cmd/build/vite/bun-dev-server.d.ts +7 -1
- package/dist/cmd/build/vite/bun-dev-server.d.ts.map +1 -1
- package/dist/cmd/build/vite/bun-dev-server.js +52 -26
- package/dist/cmd/build/vite/bun-dev-server.js.map +1 -1
- package/dist/cmd/build/vite/docs-generator.d.ts +13 -0
- package/dist/cmd/build/vite/docs-generator.d.ts.map +1 -0
- package/dist/cmd/build/vite/docs-generator.js +81 -0
- package/dist/cmd/build/vite/docs-generator.js.map +1 -0
- package/dist/cmd/build/vite/index.d.ts +3 -3
- package/dist/cmd/build/vite/index.d.ts.map +1 -1
- package/dist/cmd/build/vite/index.js +9 -7
- package/dist/cmd/build/vite/index.js.map +1 -1
- package/dist/cmd/build/vite/lifecycle-generator.d.ts +1 -1
- package/dist/cmd/build/vite/lifecycle-generator.d.ts.map +1 -1
- package/dist/cmd/build/vite/lifecycle-generator.js +19 -5
- package/dist/cmd/build/vite/lifecycle-generator.js.map +1 -1
- package/dist/cmd/build/vite/metadata-generator.d.ts.map +1 -1
- package/dist/cmd/build/vite/metadata-generator.js +203 -7
- package/dist/cmd/build/vite/metadata-generator.js.map +1 -1
- package/dist/cmd/build/vite/prompt-generator.d.ts +23 -0
- package/dist/cmd/build/vite/prompt-generator.d.ts.map +1 -0
- package/dist/cmd/build/vite/prompt-generator.js +123 -0
- package/dist/cmd/build/vite/prompt-generator.js.map +1 -0
- package/dist/cmd/build/vite/registry-generator.d.ts +3 -3
- package/dist/cmd/build/vite/registry-generator.d.ts.map +1 -1
- package/dist/cmd/build/vite/registry-generator.js +644 -103
- package/dist/cmd/build/vite/registry-generator.js.map +1 -1
- package/dist/cmd/build/vite/route-discovery.d.ts +4 -0
- package/dist/cmd/build/vite/route-discovery.d.ts.map +1 -1
- package/dist/cmd/build/vite/route-discovery.js.map +1 -1
- package/dist/cmd/build/vite/server-bundler.d.ts +4 -0
- package/dist/cmd/build/vite/server-bundler.d.ts.map +1 -1
- package/dist/cmd/build/vite/server-bundler.js +63 -17
- package/dist/cmd/build/vite/server-bundler.js.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server-config.d.ts.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server-config.js +4 -0
- package/dist/cmd/build/vite/vite-asset-server-config.js.map +1 -1
- package/dist/cmd/build/vite/vite-builder.d.ts +1 -1
- package/dist/cmd/build/vite/vite-builder.d.ts.map +1 -1
- package/dist/cmd/build/vite/vite-builder.js +118 -96
- package/dist/cmd/build/vite/vite-builder.js.map +1 -1
- package/dist/cmd/build/vite-bundler.js +6 -6
- package/dist/cmd/build/vite-bundler.js.map +1 -1
- package/dist/cmd/cloud/deploy.d.ts.map +1 -1
- package/dist/cmd/cloud/deploy.js +89 -32
- package/dist/cmd/cloud/deploy.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/create-namespace.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/create-namespace.js +3 -1
- package/dist/cmd/cloud/keyvalue/create-namespace.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete-namespace.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete-namespace.js +3 -1
- package/dist/cmd/cloud/keyvalue/delete-namespace.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete.js +3 -1
- package/dist/cmd/cloud/keyvalue/delete.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/set.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/set.js +4 -2
- package/dist/cmd/cloud/keyvalue/set.js.map +1 -1
- package/dist/cmd/cloud/stream/get.d.ts.map +1 -1
- package/dist/cmd/cloud/stream/get.js +2 -13
- package/dist/cmd/cloud/stream/get.js.map +1 -1
- package/dist/cmd/cloud/vector/delete-namespace.d.ts +3 -0
- package/dist/cmd/cloud/vector/delete-namespace.d.ts.map +1 -0
- package/dist/cmd/cloud/vector/delete-namespace.js +77 -0
- package/dist/cmd/cloud/vector/delete-namespace.js.map +1 -0
- package/dist/cmd/cloud/vector/index.d.ts.map +1 -1
- package/dist/cmd/cloud/vector/index.js +21 -4
- package/dist/cmd/cloud/vector/index.js.map +1 -1
- package/dist/cmd/cloud/vector/list-namespaces.d.ts +3 -0
- package/dist/cmd/cloud/vector/list-namespaces.d.ts.map +1 -0
- package/dist/cmd/cloud/vector/list-namespaces.js +42 -0
- package/dist/cmd/cloud/vector/list-namespaces.js.map +1 -0
- package/dist/cmd/cloud/vector/stats.d.ts +3 -0
- package/dist/cmd/cloud/vector/stats.d.ts.map +1 -0
- package/dist/cmd/cloud/vector/stats.js +142 -0
- package/dist/cmd/cloud/vector/stats.js.map +1 -0
- package/dist/cmd/cloud/vector/upsert.d.ts +3 -0
- package/dist/cmd/cloud/vector/upsert.d.ts.map +1 -0
- package/dist/cmd/cloud/vector/upsert.js +192 -0
- package/dist/cmd/cloud/vector/upsert.js.map +1 -0
- package/dist/cmd/dev/file-watcher.d.ts.map +1 -1
- package/dist/cmd/dev/file-watcher.js +94 -33
- package/dist/cmd/dev/file-watcher.js.map +1 -1
- package/dist/cmd/dev/index.d.ts.map +1 -1
- package/dist/cmd/dev/index.js +298 -61
- package/dist/cmd/dev/index.js.map +1 -1
- package/dist/cmd/dev/skills.d.ts +10 -0
- package/dist/cmd/dev/skills.d.ts.map +1 -0
- package/dist/cmd/dev/skills.js +57 -0
- package/dist/cmd/dev/skills.js.map +1 -0
- package/dist/cmd/dev/sync.d.ts.map +1 -1
- package/dist/cmd/dev/sync.js +19 -3
- package/dist/cmd/dev/sync.js.map +1 -1
- package/dist/cmd/index.d.ts.map +1 -1
- package/dist/cmd/index.js +1 -0
- package/dist/cmd/index.js.map +1 -1
- package/dist/cmd/project/create.d.ts.map +1 -1
- package/dist/cmd/project/create.js +3 -0
- package/dist/cmd/project/create.js.map +1 -1
- package/dist/cmd/project/template-flow.d.ts +1 -0
- package/dist/cmd/project/template-flow.d.ts.map +1 -1
- package/dist/cmd/project/template-flow.js +30 -5
- package/dist/cmd/project/template-flow.js.map +1 -1
- package/dist/cmd/setup/index.d.ts.map +1 -1
- package/dist/cmd/setup/index.js +1 -0
- package/dist/cmd/setup/index.js.map +1 -1
- package/dist/cmd/upgrade/index.d.ts +15 -0
- package/dist/cmd/upgrade/index.d.ts.map +1 -1
- package/dist/cmd/upgrade/index.js +59 -4
- package/dist/cmd/upgrade/index.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -0
- package/dist/config.js.map +1 -1
- package/dist/domain.d.ts +45 -0
- package/dist/domain.d.ts.map +1 -0
- package/dist/domain.js +200 -0
- package/dist/domain.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/schema-generator.d.ts +2 -0
- package/dist/schema-generator.d.ts.map +1 -1
- package/dist/schema-generator.js +18 -0
- package/dist/schema-generator.js.map +1 -1
- package/dist/steps.d.ts +1 -1
- package/dist/steps.d.ts.map +1 -1
- package/dist/steps.js +16 -5
- package/dist/steps.js.map +1 -1
- package/dist/tui/prompt.d.ts +1 -2
- package/dist/tui/prompt.d.ts.map +1 -1
- package/dist/tui/prompt.js +8 -4
- package/dist/tui/prompt.js.map +1 -1
- package/dist/tui.d.ts +16 -0
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +23 -2
- package/dist/tui.js.map +1 -1
- package/dist/types.d.ts +9 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -3
- package/dist/types.js.map +1 -1
- package/package.json +5 -8
- package/src/api.ts +1 -1
- package/src/cli.ts +47 -12
- package/src/cmd/ai/index.ts +6 -1
- package/src/cmd/ai/prompt/agent.md +306 -0
- package/src/cmd/ai/prompt/agent.ts +12 -322
- package/src/cmd/ai/prompt/api.md +360 -0
- package/src/cmd/ai/prompt/api.ts +13 -260
- package/src/cmd/ai/prompt/version.ts +61 -0
- package/src/cmd/ai/prompt/web.md +509 -0
- package/src/cmd/ai/prompt/web.ts +12 -282
- package/src/cmd/ai/skills/generate.ts +75 -0
- package/src/cmd/ai/skills/generator.ts +519 -0
- package/src/cmd/ai/skills/index.ts +23 -0
- package/src/cmd/auth/signup.ts +1 -0
- package/src/cmd/build/ast.ts +161 -48
- package/src/cmd/build/entry-generator.ts +258 -187
- package/src/cmd/build/vite/agent-discovery.ts +151 -58
- package/src/cmd/build/vite/bun-dev-server.ts +57 -27
- package/src/cmd/build/vite/docs-generator.ts +87 -0
- package/src/cmd/build/vite/index.ts +9 -7
- package/src/cmd/build/vite/lifecycle-generator.ts +19 -5
- package/src/cmd/build/vite/metadata-generator.ts +251 -7
- package/src/cmd/build/vite/prompt-generator.ts +169 -0
- package/src/cmd/build/vite/registry-generator.ts +750 -108
- package/src/cmd/build/vite/route-discovery.ts +4 -0
- package/src/cmd/build/vite/server-bundler.ts +73 -23
- package/src/cmd/build/vite/vite-asset-server-config.ts +5 -0
- package/src/cmd/build/vite/vite-builder.ts +134 -100
- package/src/cmd/build/vite-bundler.ts +6 -6
- package/src/cmd/cloud/deploy.ts +114 -36
- package/src/cmd/cloud/keyvalue/create-namespace.ts +3 -1
- package/src/cmd/cloud/keyvalue/delete-namespace.ts +3 -1
- package/src/cmd/cloud/keyvalue/delete.ts +3 -1
- package/src/cmd/cloud/keyvalue/set.ts +4 -2
- package/src/cmd/cloud/stream/get.ts +2 -9
- package/src/cmd/cloud/vector/delete-namespace.ts +89 -0
- package/src/cmd/cloud/vector/index.ts +21 -4
- package/src/cmd/cloud/vector/list-namespaces.ts +46 -0
- package/src/cmd/cloud/vector/stats.ts +160 -0
- package/src/cmd/cloud/vector/upsert.ts +216 -0
- package/src/cmd/dev/file-watcher.ts +109 -34
- package/src/cmd/dev/index.ts +364 -60
- package/src/cmd/dev/skills.ts +82 -0
- package/src/cmd/dev/sync.ts +41 -6
- package/src/cmd/index.ts +1 -0
- package/src/cmd/project/create.ts +3 -0
- package/src/cmd/project/template-flow.ts +37 -5
- package/src/cmd/setup/index.ts +1 -0
- package/src/cmd/upgrade/index.ts +68 -4
- package/src/config.ts +9 -0
- package/src/domain.ts +273 -0
- package/src/index.ts +0 -5
- package/src/runtime-bootstrap.md +1 -1
- package/src/schema-generator.ts +23 -0
- package/src/steps.ts +16 -5
- package/src/tui/prompt.ts +11 -5
- package/src/tui.ts +21 -2
- package/src/types/md.d.ts +8 -0
- package/src/types.ts +12 -3
- package/dist/cmd/cloud/domain.d.ts +0 -17
- package/dist/cmd/cloud/domain.d.ts.map +0 -1
- package/dist/cmd/cloud/domain.js +0 -79
- package/dist/cmd/cloud/domain.js.map +0 -1
- package/dist/runtime-bootstrap.d.ts +0 -56
- package/dist/runtime-bootstrap.d.ts.map +0 -1
- package/dist/runtime-bootstrap.js +0 -95
- package/dist/runtime-bootstrap.js.map +0 -1
- package/src/cmd/cloud/domain.ts +0 -100
- package/src/runtime-bootstrap.ts +0 -131
|
@@ -4,38 +4,76 @@
|
|
|
4
4
|
* Utilities for running Vite builds (client, server, workbench)
|
|
5
5
|
*/
|
|
6
6
|
import { join } from 'node:path';
|
|
7
|
+
import { existsSync, renameSync, rmSync } from 'node:fs';
|
|
7
8
|
import { browserEnvPlugin } from './browser-env-plugin';
|
|
9
|
+
/**
|
|
10
|
+
* Vite plugin to flatten the output structure for index.html
|
|
11
|
+
*
|
|
12
|
+
* When root is set to the project root (for TanStack Router compatibility),
|
|
13
|
+
* Vite outputs index.html to .agentuity/client/src/web/index.html instead of
|
|
14
|
+
* .agentuity/client/index.html. This plugin moves it to the expected location.
|
|
15
|
+
*/
|
|
16
|
+
function flattenHtmlOutputPlugin(outDir) {
|
|
17
|
+
return {
|
|
18
|
+
name: 'agentuity:flatten-html-output',
|
|
19
|
+
apply: 'build',
|
|
20
|
+
closeBundle() {
|
|
21
|
+
const nestedHtmlPath = join(outDir, 'src', 'web', 'index.html');
|
|
22
|
+
const targetHtmlPath = join(outDir, 'index.html');
|
|
23
|
+
if (existsSync(nestedHtmlPath)) {
|
|
24
|
+
renameSync(nestedHtmlPath, targetHtmlPath);
|
|
25
|
+
// Clean up empty src/web directory structure
|
|
26
|
+
const srcWebDir = join(outDir, 'src', 'web');
|
|
27
|
+
const srcDir = join(outDir, 'src');
|
|
28
|
+
try {
|
|
29
|
+
rmSync(srcWebDir, { recursive: true, force: true });
|
|
30
|
+
rmSync(srcDir, { recursive: true, force: true });
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// Ignore cleanup errors
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
8
39
|
/**
|
|
9
40
|
* Run a Vite build for the specified mode
|
|
10
|
-
*
|
|
41
|
+
* Uses inline Vite config (customizable via agentuity.config.ts)
|
|
11
42
|
*/
|
|
12
43
|
export async function runViteBuild(options) {
|
|
13
44
|
const { rootDir, mode, dev = false, projectId = '', deploymentId = '', logger } = options;
|
|
14
45
|
logger.debug(`Running Vite build for mode: ${mode}`);
|
|
15
46
|
// For server mode, use Bun.build (preserves process.env at runtime)
|
|
16
47
|
if (mode === 'server') {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
logger
|
|
25
|
-
|
|
26
|
-
});
|
|
27
|
-
// Then, build with Bun.build
|
|
28
|
-
const { installExternalsAndBuild } = await import('./server-bundler');
|
|
29
|
-
await installExternalsAndBuild({
|
|
30
|
-
rootDir,
|
|
31
|
-
dev,
|
|
32
|
-
logger,
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
logger.error('server-bundler import or execution failed: %s', error);
|
|
37
|
-
throw error;
|
|
48
|
+
const srcDir = join(rootDir, 'src');
|
|
49
|
+
// Generate documentation files (if they don't exist)
|
|
50
|
+
const { generateDocumentation } = await import('./docs-generator');
|
|
51
|
+
await generateDocumentation(srcDir, logger);
|
|
52
|
+
// Generate/update prompt files in dev mode only (non-blocking)
|
|
53
|
+
if (dev) {
|
|
54
|
+
import('./prompt-generator')
|
|
55
|
+
.then(({ generatePromptFiles }) => generatePromptFiles(srcDir, logger))
|
|
56
|
+
.catch((err) => logger.warn('Failed to generate prompt files: %s', err.message));
|
|
38
57
|
}
|
|
58
|
+
// Generate lifecycle types (if setup() exists)
|
|
59
|
+
const { generateLifecycleTypes } = await import('./lifecycle-generator');
|
|
60
|
+
await generateLifecycleTypes(rootDir, srcDir, logger);
|
|
61
|
+
// Then, generate the entry file
|
|
62
|
+
const { generateEntryFile } = await import('../entry-generator');
|
|
63
|
+
await generateEntryFile({
|
|
64
|
+
rootDir,
|
|
65
|
+
projectId,
|
|
66
|
+
deploymentId: deploymentId || '',
|
|
67
|
+
logger,
|
|
68
|
+
mode: dev ? 'dev' : 'prod',
|
|
69
|
+
});
|
|
70
|
+
// Finally, build with Bun.build
|
|
71
|
+
const { installExternalsAndBuild } = await import('./server-bundler');
|
|
72
|
+
await installExternalsAndBuild({
|
|
73
|
+
rootDir,
|
|
74
|
+
dev,
|
|
75
|
+
logger,
|
|
76
|
+
});
|
|
39
77
|
return;
|
|
40
78
|
}
|
|
41
79
|
// Dynamically import vite and react plugin
|
|
@@ -50,7 +88,8 @@ export async function runViteBuild(options) {
|
|
|
50
88
|
// Use workbench config passed from runAllBuilds
|
|
51
89
|
const { workbenchEnabled = false, workbenchRoute = '/workbench' } = options;
|
|
52
90
|
// Load custom user plugins from agentuity.config.ts if it exists
|
|
53
|
-
const
|
|
91
|
+
const clientOutDir = join(rootDir, '.agentuity/client');
|
|
92
|
+
const plugins = [react(), browserEnvPlugin(), flattenHtmlOutputPlugin(clientOutDir)];
|
|
54
93
|
const { loadAgentuityConfig } = await import('./config-loader');
|
|
55
94
|
const userConfig = await loadAgentuityConfig(rootDir, logger);
|
|
56
95
|
const userPlugins = userConfig?.plugins || [];
|
|
@@ -64,12 +103,16 @@ export async function runViteBuild(options) {
|
|
|
64
103
|
logger.debug('Loaded %d custom define(s) from agentuity.config.ts', Object.keys(userDefine).length);
|
|
65
104
|
}
|
|
66
105
|
// Determine CDN base URL for production builds
|
|
106
|
+
// Use CDN for all non-dev builds with a deploymentId (including local region)
|
|
67
107
|
const isLocalRegion = options.region === 'local';
|
|
68
|
-
const
|
|
69
|
-
?
|
|
70
|
-
:
|
|
108
|
+
const cdnDomain = isLocalRegion
|
|
109
|
+
? 'localstack-static-assets.t3.storage.dev'
|
|
110
|
+
: 'static.agentuity.com';
|
|
111
|
+
const cdnBaseUrl = !dev && deploymentId ? `https://${cdnDomain}/${deploymentId}/client/` : undefined;
|
|
71
112
|
viteConfig = {
|
|
72
|
-
root
|
|
113
|
+
// Use project root as Vite root so plugins (e.g., TanStack Router) resolve paths
|
|
114
|
+
// from the repo root, matching where agentuity.config.ts is located
|
|
115
|
+
root: rootDir,
|
|
73
116
|
plugins,
|
|
74
117
|
envPrefix: ['VITE_', 'AGENTUITY_PUBLIC_', 'PUBLIC_'],
|
|
75
118
|
publicDir: join(rootDir, 'src', 'web', 'public'),
|
|
@@ -84,7 +127,7 @@ export async function runViteBuild(options) {
|
|
|
84
127
|
: 'undefined',
|
|
85
128
|
},
|
|
86
129
|
build: {
|
|
87
|
-
outDir:
|
|
130
|
+
outDir: clientOutDir,
|
|
88
131
|
rollupOptions: {
|
|
89
132
|
input: htmlPath,
|
|
90
133
|
},
|
|
@@ -131,19 +174,13 @@ export async function runViteBuild(options) {
|
|
|
131
174
|
throw new Error(`Unknown build mode: ${mode}`);
|
|
132
175
|
}
|
|
133
176
|
// Build with Vite
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
logger.debug(`Vite build complete for mode: ${mode}`);
|
|
142
|
-
}
|
|
143
|
-
catch (error) {
|
|
144
|
-
logger.error(`Vite build failed for mode ${mode}:`, error);
|
|
145
|
-
throw error;
|
|
146
|
-
}
|
|
177
|
+
// Force the build to use the correct mode
|
|
178
|
+
const buildMode = dev ? 'development' : 'production';
|
|
179
|
+
await viteBuild({
|
|
180
|
+
...viteConfig,
|
|
181
|
+
mode: buildMode,
|
|
182
|
+
});
|
|
183
|
+
logger.debug(`Vite build complete for mode: ${mode}`);
|
|
147
184
|
}
|
|
148
185
|
/**
|
|
149
186
|
* Run all builds in sequence: client -> workbench (if enabled) -> server
|
|
@@ -165,74 +202,59 @@ export async function runAllBuilds(options) {
|
|
|
165
202
|
const { generateWorkbenchFiles } = await import('./workbench-generator');
|
|
166
203
|
await generateWorkbenchFiles(rootDir, projectId, workbenchConfig, logger);
|
|
167
204
|
}
|
|
205
|
+
// 1. Discover agents and routes BEFORE builds
|
|
206
|
+
logger.debug('Discovering agents and routes...');
|
|
207
|
+
const { generateAgentRegistry, generateRouteRegistry } = await import('./registry-generator');
|
|
208
|
+
const { discoverAgents } = await import('./agent-discovery');
|
|
209
|
+
const { discoverRoutes } = await import('./route-discovery');
|
|
210
|
+
const srcDir = join(rootDir, 'src');
|
|
211
|
+
const agentMetadata = await discoverAgents(srcDir, projectId, options.deploymentId || '', logger);
|
|
212
|
+
const { routes, routeInfoList } = await discoverRoutes(srcDir, projectId, options.deploymentId || '', logger);
|
|
213
|
+
// Generate agent and route registries for type augmentation BEFORE builds
|
|
214
|
+
// (TypeScript needs these files to exist during type checking)
|
|
215
|
+
generateAgentRegistry(srcDir, agentMetadata);
|
|
216
|
+
generateRouteRegistry(srcDir, routeInfoList);
|
|
217
|
+
logger.debug('Agent and route registries generated');
|
|
168
218
|
// Check if web frontend exists
|
|
169
219
|
const hasWebFrontend = await Bun.file(join(rootDir, 'src', 'web', 'index.html')).exists();
|
|
170
|
-
//
|
|
220
|
+
// 2. Build client (only if web frontend exists)
|
|
171
221
|
if (hasWebFrontend) {
|
|
172
222
|
logger.debug('Building client assets...');
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
result.client.duration = Date.now() - started;
|
|
183
|
-
}
|
|
184
|
-
catch (error) {
|
|
185
|
-
logger.error('Client build failed:', error);
|
|
186
|
-
throw error;
|
|
187
|
-
}
|
|
223
|
+
const started = Date.now();
|
|
224
|
+
await runViteBuild({
|
|
225
|
+
...options,
|
|
226
|
+
mode: 'client',
|
|
227
|
+
workbenchEnabled: workbenchConfig.enabled,
|
|
228
|
+
workbenchRoute: workbenchConfig.route,
|
|
229
|
+
});
|
|
230
|
+
result.client.included = true;
|
|
231
|
+
result.client.duration = Date.now() - started;
|
|
188
232
|
}
|
|
189
233
|
else {
|
|
190
234
|
logger.debug('Skipping client build - no src/web/index.html found');
|
|
191
235
|
}
|
|
192
|
-
//
|
|
236
|
+
// 3. Build workbench (if enabled in config)
|
|
193
237
|
if (workbenchConfig.enabled) {
|
|
194
238
|
logger.debug('Building workbench assets...');
|
|
195
|
-
try {
|
|
196
|
-
const started = Date.now();
|
|
197
|
-
await runViteBuild({
|
|
198
|
-
...options,
|
|
199
|
-
mode: 'workbench',
|
|
200
|
-
workbenchRoute: workbenchConfig.route,
|
|
201
|
-
workbenchEnabled: true,
|
|
202
|
-
});
|
|
203
|
-
result.workbench.included = true;
|
|
204
|
-
result.workbench.duration = Date.now() - started;
|
|
205
|
-
}
|
|
206
|
-
catch (error) {
|
|
207
|
-
logger.error('Workbench build failed:', error);
|
|
208
|
-
throw error;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
// 3. Build server
|
|
212
|
-
logger.debug('Building server...');
|
|
213
|
-
try {
|
|
214
239
|
const started = Date.now();
|
|
215
|
-
await runViteBuild({
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
240
|
+
await runViteBuild({
|
|
241
|
+
...options,
|
|
242
|
+
mode: 'workbench',
|
|
243
|
+
workbenchRoute: workbenchConfig.route,
|
|
244
|
+
workbenchEnabled: true,
|
|
245
|
+
});
|
|
246
|
+
result.workbench.included = true;
|
|
247
|
+
result.workbench.duration = Date.now() - started;
|
|
222
248
|
}
|
|
223
|
-
// 4.
|
|
224
|
-
logger.debug('
|
|
249
|
+
// 4. Build server
|
|
250
|
+
logger.debug('Building server...');
|
|
251
|
+
const serverStarted = Date.now();
|
|
252
|
+
await runViteBuild({ ...options, mode: 'server' });
|
|
253
|
+
result.server.included = true;
|
|
254
|
+
result.server.duration = Date.now() - serverStarted;
|
|
255
|
+
// 5. Generate metadata (after all builds complete)
|
|
256
|
+
logger.debug('Generating metadata...');
|
|
225
257
|
const { generateMetadata, writeMetadataFile } = await import('./metadata-generator');
|
|
226
|
-
const { generateAgentRegistry, generateRouteRegistry } = await import('./registry-generator');
|
|
227
|
-
const { discoverAgents } = await import('./agent-discovery');
|
|
228
|
-
const { discoverRoutes } = await import('./route-discovery');
|
|
229
|
-
const srcDir = join(rootDir, 'src');
|
|
230
|
-
const agentMetadata = await discoverAgents(srcDir, projectId, options.deploymentId || '', logger);
|
|
231
|
-
const { routes, routeInfoList } = await discoverRoutes(srcDir, projectId, options.deploymentId || '', logger);
|
|
232
|
-
// Generate agent and route registries for type augmentation
|
|
233
|
-
generateAgentRegistry(srcDir, agentMetadata);
|
|
234
|
-
generateRouteRegistry(srcDir, routeInfoList);
|
|
235
|
-
logger.debug('Agent and route registries generated');
|
|
236
258
|
// Generate metadata
|
|
237
259
|
const metadata = await generateMetadata({
|
|
238
260
|
rootDir,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite-builder.js","sourceRoot":"","sources":["../../../../src/cmd/build/vite/vite-builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"vite-builder.js","sourceRoot":"","sources":["../../../../src/cmd/build/vite/vite-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,8 +46,8 @@ export async function viteBundle(options) {
|
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
48
|
try {
|
|
49
|
-
// Run all
|
|
50
|
-
logger.debug('Starting
|
|
49
|
+
// Run all builds (client -> workbench -> server)
|
|
50
|
+
logger.debug('Starting builds...');
|
|
51
51
|
const result = await runAllBuilds({
|
|
52
52
|
rootDir,
|
|
53
53
|
dev: options.dev || false, // Pass through dev flag for development builds
|
|
@@ -59,15 +59,15 @@ export async function viteBundle(options) {
|
|
|
59
59
|
logger,
|
|
60
60
|
});
|
|
61
61
|
if (result.client.included) {
|
|
62
|
-
output.push(tui.muted(`✓ Client
|
|
62
|
+
output.push(tui.muted(`✓ Client built in ${result.client.duration}ms`));
|
|
63
63
|
}
|
|
64
64
|
if (result.workbench.included) {
|
|
65
|
-
output.push(tui.muted(`✓ Workbench
|
|
65
|
+
output.push(tui.muted(`✓ Workbench built in ${result.workbench.duration}ms`));
|
|
66
66
|
}
|
|
67
67
|
if (result.server.included) {
|
|
68
|
-
output.push(tui.muted(`✓ Server
|
|
68
|
+
output.push(tui.muted(`✓ Server built in ${result.server.duration}ms`));
|
|
69
69
|
}
|
|
70
|
-
logger.debug('
|
|
70
|
+
logger.debug('All builds complete');
|
|
71
71
|
return { output };
|
|
72
72
|
}
|
|
73
73
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite-bundler.js","sourceRoot":"","sources":["../../../src/cmd/build/vite-bundler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,GAAG,MAAM,WAAW,CAAC;AAEjC,MAAM,oBAAoB,GAAG,eAAe,CAAC,sBAAsB,CAAC,CAAC;AACrE,MAAM,gBAAgB,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC;AAa7D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAA0B;IAC1D,MAAM,EACL,OAAO,EACP,SAAS,GAAG,EAAE,EACd,KAAK,GAAG,EAAE,EACV,MAAM,GAAG,OAAO,EAChB,YAAY,GAAG,EAAE,EACjB,IAAI,GAAG,IAAI,EACX,MAAM,GACN,GAAG,OAAO,CAAC;IAEZ,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,+CAA+C;IAC/C,MAAM,aAAa,GAAG,MAAM,eAAe,EAAE,CAAC;IAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAE9B,uBAAuB;IACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,oBAAoB,CAAC;YAC9B,OAAO,EAAE,4CAA4C,OAAO,EAAE;SAC9D,CAAC,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;SACrC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SAC5B,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACrB,IAAI,CAAC,YAAY,EAAE,CAAC;QACnB,MAAM,IAAI,gBAAgB,CAAC;YAC1B,OAAO,EAAE,+BAA+B,MAAM,EAAE;SAChD,CAAC,CAAC;IACJ,CAAC;IAED,wDAAwD;IACxD,MAAM,aAAa,GAAG,MAAM,2BAA2B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzE,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5D,MAAM,IAAI,gBAAgB,CAAC;YAC1B,OAAO,EAAE,mCAAmC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC7E,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACJ,
|
|
1
|
+
{"version":3,"file":"vite-bundler.js","sourceRoot":"","sources":["../../../src/cmd/build/vite-bundler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cmd/cloud/deploy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cmd/cloud/deploy.ts"],"names":[],"mappings":"AAqEA,eAAO,MAAM,gBAAgB,sCA4oB3B,CAAC"}
|
package/dist/cmd/cloud/deploy.js
CHANGED
|
@@ -6,9 +6,10 @@ import { tmpdir } from 'node:os';
|
|
|
6
6
|
import { StructuredError } from '@agentuity/core';
|
|
7
7
|
import { isRunningFromExecutable } from '../upgrade';
|
|
8
8
|
import { createSubcommand } from '../../types';
|
|
9
|
+
import { getUserAgent } from '../../api';
|
|
9
10
|
import * as tui from '../../tui';
|
|
10
|
-
import { saveProjectDir, getDefaultConfigDir } from '../../config';
|
|
11
|
-
import { runSteps, stepSuccess, stepSkipped, stepError, } from '../../steps';
|
|
11
|
+
import { saveProjectDir, getDefaultConfigDir, loadProjectSDKKey } from '../../config';
|
|
12
|
+
import { runSteps, stepSuccess, stepSkipped, stepError, pauseStepUI, } from '../../steps';
|
|
12
13
|
import { viteBundle } from '../build/vite-bundler';
|
|
13
14
|
import { loadBuildMetadata, getStreamURL } from '../../config';
|
|
14
15
|
import { projectEnvUpdate, projectDeploymentCreate, projectDeploymentUpdate, projectDeploymentComplete, projectDeploymentStatus, getAppBaseURL, } from '@agentuity/server';
|
|
@@ -16,7 +17,7 @@ import { findEnvFile, readEnvFile, filterAgentuitySdkKeys, splitEnvAndSecrets, }
|
|
|
16
17
|
import { zipDir } from '../../utils/zip';
|
|
17
18
|
import { encryptFIPSKEMDEMStream } from '../../crypto/box';
|
|
18
19
|
import { getCommand } from '../../command-prefix';
|
|
19
|
-
import
|
|
20
|
+
import * as domain from '../../domain';
|
|
20
21
|
import { DeployOptionsSchema } from '../../schemas/deploy';
|
|
21
22
|
import { ErrorCode } from '../../errors';
|
|
22
23
|
const DeploymentCancelledError = StructuredError('DeploymentCancelled', 'Deployment cancelled by user');
|
|
@@ -73,26 +74,53 @@ export const deploySubcommand = createSubcommand({
|
|
|
73
74
|
let complete;
|
|
74
75
|
let statusResult;
|
|
75
76
|
const logs = [];
|
|
77
|
+
// Check for pre-created deployment from CI/Nova
|
|
78
|
+
const deploymentEnv = process.env.AGENTUITY_DEPLOYMENT;
|
|
79
|
+
let useExistingDeployment = false;
|
|
80
|
+
if (deploymentEnv) {
|
|
81
|
+
const ExistingDeploymentSchema = z.object({
|
|
82
|
+
id: z.string(),
|
|
83
|
+
orgId: z.string(),
|
|
84
|
+
publicKey: z.string(),
|
|
85
|
+
});
|
|
86
|
+
try {
|
|
87
|
+
const parsed = JSON.parse(deploymentEnv);
|
|
88
|
+
const result = ExistingDeploymentSchema.safeParse(parsed);
|
|
89
|
+
if (result.success) {
|
|
90
|
+
deployment = result.data;
|
|
91
|
+
useExistingDeployment = true;
|
|
92
|
+
logger.info(`Using existing deployment: ${result.data.id}`);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
const errors = result.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`).join(', ');
|
|
96
|
+
logger.warn(`Invalid AGENTUITY_DEPLOYMENT schema: ${errors}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
logger.warn(`Failed to parse AGENTUITY_DEPLOYMENT: ${err instanceof Error ? err.message : String(err)}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const sdkKey = await loadProjectSDKKey(ctx.logger, ctx.projectDir);
|
|
104
|
+
// Ensure SDK key is present before proceeding
|
|
105
|
+
if (!sdkKey) {
|
|
106
|
+
ctx.logger.fatal('SDK key not found. Run "agentuity auth login" to authenticate or set AGENTUITY_SDK_KEY environment variable.');
|
|
107
|
+
}
|
|
76
108
|
try {
|
|
77
109
|
await saveProjectDir(projectDir);
|
|
78
110
|
await runSteps([
|
|
79
111
|
!project.deployment?.domains?.length
|
|
80
112
|
? null
|
|
81
113
|
: {
|
|
82
|
-
label: `Validate Custom
|
|
114
|
+
label: `Validate Custom ${tui.plural(project.deployment.domains.length, 'Domain', 'Domains')}`,
|
|
83
115
|
run: async () => {
|
|
84
116
|
if (project.deployment?.domains?.length) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
return stepError(r.message);
|
|
92
|
-
}
|
|
93
|
-
return stepError('unknown dns error'); // shouldn't get here
|
|
117
|
+
try {
|
|
118
|
+
await domain.promptForDNS(project.projectId, project.deployment.domains, config, () => pauseStepUI(true));
|
|
119
|
+
return stepSuccess();
|
|
120
|
+
}
|
|
121
|
+
catch (ex) {
|
|
122
|
+
return stepError(String(ex), ex);
|
|
94
123
|
}
|
|
95
|
-
return stepSuccess();
|
|
96
124
|
}
|
|
97
125
|
return stepSkipped();
|
|
98
126
|
},
|
|
@@ -132,6 +160,9 @@ export const deploySubcommand = createSubcommand({
|
|
|
132
160
|
{
|
|
133
161
|
label: 'Create Deployment',
|
|
134
162
|
run: async () => {
|
|
163
|
+
if (useExistingDeployment && deployment) {
|
|
164
|
+
return stepSkipped('using existing deployment');
|
|
165
|
+
}
|
|
135
166
|
try {
|
|
136
167
|
deployment = await projectDeploymentCreate(apiClient, project.projectId, project.deployment);
|
|
137
168
|
return stepSuccess();
|
|
@@ -186,10 +217,6 @@ export const deploySubcommand = createSubcommand({
|
|
|
186
217
|
const deploymentZip = join(tmpdir(), `${deployment.id}.zip`);
|
|
187
218
|
await zipDir(join(projectDir, '.agentuity'), deploymentZip, {
|
|
188
219
|
filter: (_filename, relative) => {
|
|
189
|
-
// Exclude Vite-specific build artifacts
|
|
190
|
-
if (relative.endsWith('.generated.ts')) {
|
|
191
|
-
return false;
|
|
192
|
-
}
|
|
193
220
|
if (relative.startsWith('.vite/')) {
|
|
194
221
|
return false;
|
|
195
222
|
}
|
|
@@ -271,15 +298,16 @@ export const deploySubcommand = createSubcommand({
|
|
|
271
298
|
await Bun.file(deploymentZip).delete();
|
|
272
299
|
}
|
|
273
300
|
progress(80);
|
|
301
|
+
let bytes = 0;
|
|
274
302
|
if (build?.assets) {
|
|
275
303
|
ctx.logger.trace(`Uploading ${build.assets.length} assets`);
|
|
276
304
|
if (!instructions.assets) {
|
|
277
305
|
return stepError('server did not provide asset upload URLs; upload aborted');
|
|
278
306
|
}
|
|
279
307
|
// Workaround for Bun crash in compiled executables (https://github.com/agentuity/sdk/issues/191)
|
|
280
|
-
// Use limited concurrency (
|
|
308
|
+
// Use limited concurrency (1 at a time) for executables to avoid parallel fetch crash
|
|
281
309
|
const isExecutable = isRunningFromExecutable();
|
|
282
|
-
const concurrency = isExecutable ?
|
|
310
|
+
const concurrency = isExecutable ? 1 : Math.min(4, build.assets.length);
|
|
283
311
|
if (isExecutable) {
|
|
284
312
|
ctx.logger.trace(`Running from executable - using limited concurrency (${concurrency} uploads at a time)`);
|
|
285
313
|
}
|
|
@@ -293,14 +321,28 @@ export const deploySubcommand = createSubcommand({
|
|
|
293
321
|
return stepError(`server did not provide upload URL for asset "${asset.filename}"; upload aborted`);
|
|
294
322
|
}
|
|
295
323
|
// Asset filename already includes the subdirectory (e.g., "client/assets/main-abc123.js")
|
|
296
|
-
const
|
|
324
|
+
const filePath = join(projectDir, '.agentuity', asset.filename);
|
|
325
|
+
const headers = {
|
|
326
|
+
'Content-Type': asset.contentType,
|
|
327
|
+
};
|
|
328
|
+
bytes += asset.size;
|
|
329
|
+
let body;
|
|
330
|
+
if (asset.contentEncoding === 'gzip') {
|
|
331
|
+
const file = Bun.file(filePath);
|
|
332
|
+
const ab = await file.arrayBuffer();
|
|
333
|
+
const gzipped = Bun.gzipSync(new Uint8Array(ab));
|
|
334
|
+
headers['Content-Encoding'] = 'gzip';
|
|
335
|
+
body = gzipped;
|
|
336
|
+
ctx.logger.trace(`Compressing ${asset.filename} (${asset.size} -> ${gzipped.byteLength} bytes)`);
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
body = Bun.file(filePath);
|
|
340
|
+
}
|
|
297
341
|
promises.push(fetch(assetUrl, {
|
|
298
342
|
method: 'PUT',
|
|
299
343
|
duplex: 'half',
|
|
300
|
-
headers
|
|
301
|
-
|
|
302
|
-
},
|
|
303
|
-
body: file,
|
|
344
|
+
headers,
|
|
345
|
+
body,
|
|
304
346
|
}));
|
|
305
347
|
}
|
|
306
348
|
const resps = await Promise.all(promises);
|
|
@@ -314,7 +356,12 @@ export const deploySubcommand = createSubcommand({
|
|
|
314
356
|
progress(95);
|
|
315
357
|
}
|
|
316
358
|
progress(100);
|
|
317
|
-
|
|
359
|
+
const output = build?.assets.length
|
|
360
|
+
? [
|
|
361
|
+
tui.muted(`✓ Uploaded ${build.assets.length} ${tui.plural(build.assets.length, 'asset', 'assets')} (${tui.formatBytes(bytes)}) to CDN`),
|
|
362
|
+
]
|
|
363
|
+
: undefined;
|
|
364
|
+
return stepSuccess(output);
|
|
318
365
|
},
|
|
319
366
|
},
|
|
320
367
|
{
|
|
@@ -327,7 +374,7 @@ export const deploySubcommand = createSubcommand({
|
|
|
327
374
|
return stepSuccess();
|
|
328
375
|
},
|
|
329
376
|
},
|
|
330
|
-
].filter(Boolean), options.logLevel);
|
|
377
|
+
].filter(Boolean), useExistingDeployment ? 'debug' : options.logLevel);
|
|
331
378
|
if (!deployment) {
|
|
332
379
|
return {
|
|
333
380
|
success: false,
|
|
@@ -364,6 +411,10 @@ export const deploySubcommand = createSubcommand({
|
|
|
364
411
|
logger.debug('fetching stream: %s/%s', streamsUrl, streamId);
|
|
365
412
|
const resp = await fetch(`${streamsUrl}/${streamId}`, {
|
|
366
413
|
signal: logStreamController.signal,
|
|
414
|
+
headers: {
|
|
415
|
+
Authorization: `Bearer ${sdkKey}`,
|
|
416
|
+
'User-Agent': getUserAgent(),
|
|
417
|
+
},
|
|
367
418
|
});
|
|
368
419
|
if (!resp.ok || !resp.body) {
|
|
369
420
|
ctx.logger.trace(`Failed to connect to warmup log stream: ${resp.status}`);
|
|
@@ -503,17 +554,23 @@ export const deploySubcommand = createSubcommand({
|
|
|
503
554
|
const dashboard = `${appUrl}/r/${deployment.id}`;
|
|
504
555
|
// Show deployment URLs
|
|
505
556
|
if (complete?.publicUrls) {
|
|
557
|
+
const lines = [];
|
|
506
558
|
if (complete.publicUrls.custom?.length) {
|
|
507
559
|
for (const url of complete.publicUrls.custom) {
|
|
508
|
-
tui.arrow
|
|
560
|
+
lines.push(`${tui.ICONS.arrow} ${tui.bold(tui.padRight('Deployment:', 12)) + tui.link(url)}`);
|
|
509
561
|
}
|
|
510
562
|
}
|
|
511
563
|
else {
|
|
512
|
-
tui.arrow
|
|
513
|
-
tui.link(complete.publicUrls.deployment));
|
|
514
|
-
tui.arrow
|
|
515
|
-
tui.arrow(tui.bold(tui.padRight('Dashboard URL:', 17)) + tui.link(dashboard));
|
|
564
|
+
lines.push(`${tui.ICONS.arrow} ${tui.bold(tui.padRight('Deployment:', 12)) +
|
|
565
|
+
tui.link(complete.publicUrls.deployment)}`);
|
|
566
|
+
lines.push(`${tui.ICONS.arrow} ${tui.bold(tui.padRight('Project:', 12)) + tui.link(complete.publicUrls.latest)}`);
|
|
516
567
|
}
|
|
568
|
+
lines.push(`${tui.ICONS.arrow} ${tui.bold(tui.padRight('Dashboard:', 12)) + tui.link(dashboard)}`);
|
|
569
|
+
tui.banner(`Deployment: ${tui.colorPrimary(deployment.id)}`, lines.join('\n'), {
|
|
570
|
+
centerTitle: false,
|
|
571
|
+
topSpacer: false,
|
|
572
|
+
bottomSpacer: false,
|
|
573
|
+
});
|
|
517
574
|
}
|
|
518
575
|
return {
|
|
519
576
|
success: true,
|