@agentuity/cli 0.0.95 → 0.0.96
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 +54 -0
- package/dist/auth.d.ts +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +8 -5
- package/dist/auth.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +190 -27
- package/dist/cli.js.map +1 -1
- package/dist/cmd/build/entry-generator.d.ts +20 -0
- package/dist/cmd/build/entry-generator.d.ts.map +1 -0
- package/dist/cmd/build/entry-generator.js +366 -0
- package/dist/cmd/build/entry-generator.js.map +1 -0
- package/dist/cmd/build/index.d.ts.map +1 -1
- package/dist/cmd/build/index.js +5 -23
- package/dist/cmd/build/index.js.map +1 -1
- package/dist/cmd/build/vite/agent-discovery.d.ts +33 -0
- package/dist/cmd/build/vite/agent-discovery.d.ts.map +1 -0
- package/dist/cmd/build/vite/agent-discovery.js +297 -0
- package/dist/cmd/build/vite/agent-discovery.js.map +1 -0
- package/dist/cmd/build/vite/browser-env-plugin.d.ts +9 -0
- package/dist/cmd/build/vite/browser-env-plugin.d.ts.map +1 -0
- package/dist/cmd/build/vite/browser-env-plugin.js +28 -0
- package/dist/cmd/build/vite/browser-env-plugin.js.map +1 -0
- package/dist/cmd/build/vite/bun-dev-server.d.ts +29 -0
- package/dist/cmd/build/vite/bun-dev-server.d.ts.map +1 -0
- package/dist/cmd/build/vite/bun-dev-server.js +54 -0
- package/dist/cmd/build/vite/bun-dev-server.js.map +1 -0
- package/dist/cmd/build/vite/config-loader.d.ts +23 -0
- package/dist/cmd/build/vite/config-loader.d.ts.map +1 -0
- package/dist/cmd/build/vite/config-loader.js +50 -0
- package/dist/cmd/build/vite/config-loader.js.map +1 -0
- package/dist/cmd/build/vite/index.d.ts +26 -0
- package/dist/cmd/build/vite/index.d.ts.map +1 -0
- package/dist/cmd/build/vite/index.js +127 -0
- package/dist/cmd/build/vite/index.js.map +1 -0
- package/dist/cmd/build/vite/lifecycle-generator.d.ts +11 -0
- package/dist/cmd/build/vite/lifecycle-generator.d.ts.map +1 -0
- package/dist/cmd/build/vite/lifecycle-generator.js +35 -0
- package/dist/cmd/build/vite/lifecycle-generator.js.map +1 -0
- package/dist/cmd/build/vite/metadata-generator.d.ts +32 -0
- package/dist/cmd/build/vite/metadata-generator.d.ts.map +1 -0
- package/dist/cmd/build/vite/metadata-generator.js +489 -0
- package/dist/cmd/build/vite/metadata-generator.js.map +1 -0
- package/dist/cmd/build/vite/patch-plugin.d.ts +21 -0
- package/dist/cmd/build/vite/patch-plugin.d.ts.map +1 -0
- package/dist/cmd/build/vite/patch-plugin.js +70 -0
- package/dist/cmd/build/vite/patch-plugin.js.map +1 -0
- package/dist/cmd/build/vite/registry-generator.d.ts +19 -0
- package/dist/cmd/build/vite/registry-generator.d.ts.map +1 -0
- package/dist/cmd/build/{route-registry.js → vite/registry-generator.js} +126 -48
- package/dist/cmd/build/vite/registry-generator.js.map +1 -0
- package/dist/cmd/build/vite/route-discovery.d.ts +58 -0
- package/dist/cmd/build/vite/route-discovery.d.ts.map +1 -0
- package/dist/cmd/build/vite/route-discovery.js +125 -0
- package/dist/cmd/build/vite/route-discovery.js.map +1 -0
- package/dist/cmd/build/vite/server-bundler.d.ts +16 -0
- package/dist/cmd/build/vite/server-bundler.d.ts.map +1 -0
- package/dist/cmd/build/vite/server-bundler.js +194 -0
- package/dist/cmd/build/vite/server-bundler.js.map +1 -0
- package/dist/cmd/build/vite/vite-asset-server-config.d.ts +19 -0
- package/dist/cmd/build/vite/vite-asset-server-config.d.ts.map +1 -0
- package/dist/cmd/build/vite/vite-asset-server-config.js +105 -0
- package/dist/cmd/build/vite/vite-asset-server-config.js.map +1 -0
- package/dist/cmd/build/vite/vite-asset-server.d.ts +23 -0
- package/dist/cmd/build/vite/vite-asset-server.d.ts.map +1 -0
- package/dist/cmd/build/vite/vite-asset-server.js +40 -0
- package/dist/cmd/build/vite/vite-asset-server.js.map +1 -0
- package/dist/cmd/build/vite/vite-builder.d.ts +44 -0
- package/dist/cmd/build/vite/vite-builder.d.ts.map +1 -0
- package/dist/cmd/build/vite/vite-builder.js +232 -0
- package/dist/cmd/build/vite/vite-builder.js.map +1 -0
- package/dist/cmd/build/vite/workbench-generator.d.ts +10 -0
- package/dist/cmd/build/vite/workbench-generator.d.ts.map +1 -0
- package/dist/cmd/build/vite/workbench-generator.js +135 -0
- package/dist/cmd/build/vite/workbench-generator.js.map +1 -0
- package/dist/cmd/build/vite-bundler.d.ts +23 -0
- package/dist/cmd/build/vite-bundler.d.ts.map +1 -0
- package/dist/cmd/build/vite-bundler.js +79 -0
- package/dist/cmd/build/vite-bundler.js.map +1 -0
- package/dist/cmd/cloud/agent/get.d.ts.map +1 -1
- package/dist/cmd/cloud/agent/get.js +1 -0
- package/dist/cmd/cloud/agent/get.js.map +1 -1
- package/dist/cmd/cloud/agent/list.d.ts.map +1 -1
- package/dist/cmd/cloud/agent/list.js +1 -0
- package/dist/cmd/cloud/agent/list.js.map +1 -1
- package/dist/cmd/cloud/db/get.d.ts.map +1 -1
- package/dist/cmd/cloud/db/get.js +1 -0
- package/dist/cmd/cloud/db/get.js.map +1 -1
- package/dist/cmd/cloud/db/list.d.ts.map +1 -1
- package/dist/cmd/cloud/db/list.js +1 -0
- package/dist/cmd/cloud/db/list.js.map +1 -1
- package/dist/cmd/cloud/deploy.d.ts.map +1 -1
- package/dist/cmd/cloud/deploy.js +152 -128
- package/dist/cmd/cloud/deploy.js.map +1 -1
- package/dist/cmd/cloud/deployment/list.d.ts.map +1 -1
- package/dist/cmd/cloud/deployment/list.js +4 -0
- package/dist/cmd/cloud/deployment/list.js.map +1 -1
- package/dist/cmd/cloud/env/list.d.ts.map +1 -1
- package/dist/cmd/cloud/env/list.js +1 -0
- package/dist/cmd/cloud/env/list.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/get.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/get.js +1 -0
- package/dist/cmd/cloud/keyvalue/get.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/keys.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/keys.js +1 -0
- package/dist/cmd/cloud/keyvalue/keys.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/list-namespaces.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/list-namespaces.js +1 -0
- package/dist/cmd/cloud/keyvalue/list-namespaces.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/stats.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/stats.js +1 -0
- package/dist/cmd/cloud/keyvalue/stats.js.map +1 -1
- package/dist/cmd/cloud/secret/list.d.ts.map +1 -1
- package/dist/cmd/cloud/secret/list.js +1 -0
- package/dist/cmd/cloud/secret/list.js.map +1 -1
- package/dist/cmd/cloud/session/list.d.ts.map +1 -1
- package/dist/cmd/cloud/session/list.js +4 -0
- package/dist/cmd/cloud/session/list.js.map +1 -1
- package/dist/cmd/cloud/storage/get.d.ts.map +1 -1
- package/dist/cmd/cloud/storage/get.js +1 -0
- package/dist/cmd/cloud/storage/get.js.map +1 -1
- package/dist/cmd/cloud/storage/list.d.ts.map +1 -1
- package/dist/cmd/cloud/storage/list.js +3 -0
- package/dist/cmd/cloud/storage/list.js.map +1 -1
- package/dist/cmd/cloud/stream/get.d.ts.map +1 -1
- package/dist/cmd/cloud/stream/get.js +1 -0
- package/dist/cmd/cloud/stream/get.js.map +1 -1
- package/dist/cmd/cloud/stream/list.d.ts.map +1 -1
- package/dist/cmd/cloud/stream/list.js +1 -0
- package/dist/cmd/cloud/stream/list.js.map +1 -1
- package/dist/cmd/cloud/vector/get.d.ts.map +1 -1
- package/dist/cmd/cloud/vector/get.js +1 -0
- package/dist/cmd/cloud/vector/get.js.map +1 -1
- package/dist/cmd/cloud/vector/search.d.ts.map +1 -1
- package/dist/cmd/cloud/vector/search.js +1 -0
- package/dist/cmd/cloud/vector/search.js.map +1 -1
- package/dist/cmd/dev/index.d.ts.map +1 -1
- package/dist/cmd/dev/index.js +289 -758
- package/dist/cmd/dev/index.js.map +1 -1
- package/dist/cmd/dev/sync.d.ts +1 -1
- package/dist/cmd/dev/sync.d.ts.map +1 -1
- package/dist/cmd/dev/sync.js +3 -0
- package/dist/cmd/dev/sync.js.map +1 -1
- package/dist/cmd/profile/show.d.ts.map +1 -1
- package/dist/cmd/profile/show.js +3 -4
- package/dist/cmd/profile/show.js.map +1 -1
- package/dist/cmd/project/create.d.ts.map +1 -1
- package/dist/cmd/project/create.js +3 -4
- package/dist/cmd/project/create.js.map +1 -1
- package/dist/cmd/project/list.d.ts.map +1 -1
- package/dist/cmd/project/list.js +1 -0
- package/dist/cmd/project/list.js.map +1 -1
- package/dist/cmd/project/show.d.ts.map +1 -1
- package/dist/cmd/project/show.js +1 -0
- package/dist/cmd/project/show.js.map +1 -1
- package/dist/cmd/upgrade/index.d.ts.map +1 -1
- package/dist/cmd/upgrade/index.js +5 -3
- package/dist/cmd/upgrade/index.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +29 -11
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime-bootstrap.d.ts +3 -2
- package/dist/runtime-bootstrap.d.ts.map +1 -1
- package/dist/runtime-bootstrap.js +7 -2
- package/dist/runtime-bootstrap.js.map +1 -1
- package/dist/schemas/deploy.d.ts +1 -1
- package/dist/types.d.ts +40 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/bun-version-checker.d.ts +11 -0
- package/dist/utils/bun-version-checker.d.ts.map +1 -0
- package/dist/utils/bun-version-checker.js +56 -0
- package/dist/utils/bun-version-checker.js.map +1 -0
- package/dist/version-check.d.ts.map +1 -1
- package/dist/version-check.js +5 -2
- package/dist/version-check.js.map +1 -1
- package/package.json +10 -3
- package/src/auth.ts +9 -5
- package/src/cli.ts +228 -29
- package/src/cmd/build/entry-generator.ts +404 -0
- package/src/cmd/build/index.ts +7 -28
- package/src/cmd/build/vite/agent-discovery.ts +467 -0
- package/src/cmd/build/vite/browser-env-plugin.ts +34 -0
- package/src/cmd/build/vite/bun-dev-server.ts +78 -0
- package/src/cmd/build/vite/config-loader.ts +70 -0
- package/src/cmd/build/vite/index.ts +166 -0
- package/src/cmd/build/vite/lifecycle-generator.ts +43 -0
- package/src/cmd/build/vite/metadata-generator.ts +602 -0
- package/src/cmd/build/vite/patch-plugin.ts +88 -0
- package/src/cmd/build/vite/registry-generator.ts +288 -0
- package/src/cmd/build/vite/route-discovery.ts +186 -0
- package/src/cmd/build/vite/server-bundler.ts +258 -0
- package/src/cmd/build/vite/vite-asset-server-config.ts +134 -0
- package/src/cmd/build/vite/vite-asset-server.ts +63 -0
- package/src/cmd/build/vite/vite-builder.ts +284 -0
- package/src/cmd/build/vite/workbench-generator.ts +152 -0
- package/src/cmd/build/vite-bundler.ts +110 -0
- package/src/cmd/cloud/agent/get.ts +2 -0
- package/src/cmd/cloud/agent/list.ts +1 -0
- package/src/cmd/cloud/db/get.ts +1 -0
- package/src/cmd/cloud/db/list.ts +1 -0
- package/src/cmd/cloud/deploy.ts +175 -144
- package/src/cmd/cloud/deployment/list.ts +4 -0
- package/src/cmd/cloud/env/list.ts +1 -0
- package/src/cmd/cloud/keyvalue/get.ts +1 -0
- package/src/cmd/cloud/keyvalue/keys.ts +1 -0
- package/src/cmd/cloud/keyvalue/list-namespaces.ts +1 -0
- package/src/cmd/cloud/keyvalue/stats.ts +2 -0
- package/src/cmd/cloud/secret/list.ts +1 -0
- package/src/cmd/cloud/session/list.ts +4 -0
- package/src/cmd/cloud/storage/get.ts +1 -0
- package/src/cmd/cloud/storage/list.ts +4 -0
- package/src/cmd/cloud/stream/get.ts +1 -0
- package/src/cmd/cloud/stream/list.ts +1 -0
- package/src/cmd/cloud/vector/get.ts +1 -0
- package/src/cmd/cloud/vector/search.ts +1 -0
- package/src/cmd/dev/index.ts +319 -921
- package/src/cmd/dev/sync.ts +5 -1
- package/src/cmd/profile/show.ts +3 -4
- package/src/cmd/project/create.ts +3 -4
- package/src/cmd/project/list.ts +1 -0
- package/src/cmd/project/show.ts +1 -0
- package/src/cmd/upgrade/index.ts +6 -3
- package/src/config.ts +31 -11
- package/src/index.ts +2 -0
- package/src/runtime-bootstrap.ts +8 -2
- package/src/types.ts +48 -1
- package/src/utils/bun-version-checker.ts +70 -0
- package/src/version-check.ts +6 -2
- package/dist/cmd/build/bundler.d.ts +0 -28
- package/dist/cmd/build/bundler.d.ts.map +0 -1
- package/dist/cmd/build/bundler.js +0 -800
- package/dist/cmd/build/bundler.js.map +0 -1
- package/dist/cmd/build/config-loader.d.ts +0 -16
- package/dist/cmd/build/config-loader.d.ts.map +0 -1
- package/dist/cmd/build/config-loader.js +0 -227
- package/dist/cmd/build/config-loader.js.map +0 -1
- package/dist/cmd/build/file.d.ts +0 -2
- package/dist/cmd/build/file.d.ts.map +0 -1
- package/dist/cmd/build/file.js +0 -10
- package/dist/cmd/build/file.js.map +0 -1
- package/dist/cmd/build/fix-duplicate-exports.d.ts +0 -2
- package/dist/cmd/build/fix-duplicate-exports.d.ts.map +0 -1
- package/dist/cmd/build/fix-duplicate-exports.js +0 -170
- package/dist/cmd/build/fix-duplicate-exports.js.map +0 -1
- package/dist/cmd/build/plugin.d.ts +0 -6
- package/dist/cmd/build/plugin.d.ts.map +0 -1
- package/dist/cmd/build/plugin.js +0 -645
- package/dist/cmd/build/plugin.js.map +0 -1
- package/dist/cmd/build/route-discovery.d.ts +0 -54
- package/dist/cmd/build/route-discovery.d.ts.map +0 -1
- package/dist/cmd/build/route-discovery.js +0 -148
- package/dist/cmd/build/route-discovery.js.map +0 -1
- package/dist/cmd/build/route-registry.d.ts +0 -38
- package/dist/cmd/build/route-registry.d.ts.map +0 -1
- package/dist/cmd/build/route-registry.js.map +0 -1
- package/src/cmd/build/bundler.ts +0 -965
- package/src/cmd/build/config-loader.ts +0 -268
- package/src/cmd/build/file.ts +0 -10
- package/src/cmd/build/fix-duplicate-exports.ts +0 -207
- package/src/cmd/build/plugin.ts +0 -782
- package/src/cmd/build/route-discovery.ts +0 -202
- package/src/cmd/build/route-registry.ts +0 -222
|
@@ -1,41 +1,144 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Registry Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates .agentuity/registry.generated.ts from discovered agents
|
|
5
|
+
*/
|
|
2
6
|
import { join } from 'node:path';
|
|
7
|
+
import { writeFileSync, mkdirSync, existsSync, unlinkSync } from 'node:fs';
|
|
8
|
+
import { StructuredError } from '@agentuity/core';
|
|
9
|
+
import { toCamelCase, toPascalCase } from '../../../utils/string';
|
|
10
|
+
const AgentIdentifierCollisionError = StructuredError('AgentIdentifierCollisionError');
|
|
11
|
+
/**
|
|
12
|
+
* Generate .agentuity/registry.generated.ts with agent registry and types
|
|
13
|
+
*/
|
|
14
|
+
export function generateAgentRegistry(srcDir, agents) {
|
|
15
|
+
const projectRoot = join(srcDir, '..');
|
|
16
|
+
const agentuityDir = join(projectRoot, '.agentuity');
|
|
17
|
+
const registryPath = join(agentuityDir, 'registry.generated.ts');
|
|
18
|
+
// Detect naming collisions in generated identifiers
|
|
19
|
+
const generatedNames = new Set();
|
|
20
|
+
const collisions = [];
|
|
21
|
+
for (const agent of agents) {
|
|
22
|
+
const camelName = toCamelCase(agent.name);
|
|
23
|
+
if (generatedNames.has(camelName)) {
|
|
24
|
+
collisions.push(`Identifier collision detected: "${camelName}" (from "${agent.name}")`);
|
|
25
|
+
}
|
|
26
|
+
generatedNames.add(camelName);
|
|
27
|
+
}
|
|
28
|
+
if (collisions.length > 0) {
|
|
29
|
+
throw new AgentIdentifierCollisionError({
|
|
30
|
+
message: `Agent identifier naming collisions detected:\n${collisions.join('\n')}\n\n` +
|
|
31
|
+
`This occurs when different agent names produce the same camelCase identifier.\n` +
|
|
32
|
+
`Please rename your agents to avoid this collision.`,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
// Generate imports for all agents
|
|
36
|
+
const imports = agents
|
|
37
|
+
.map(({ name, filename }) => {
|
|
38
|
+
const camelName = toCamelCase(name);
|
|
39
|
+
// Handle both './agent/...' and 'src/agent/...' formats
|
|
40
|
+
let relativePath = filename;
|
|
41
|
+
if (relativePath.startsWith('./agent/')) {
|
|
42
|
+
relativePath = relativePath.replace(/^\.\/agent\//, '../src/agent/');
|
|
43
|
+
}
|
|
44
|
+
else if (relativePath.startsWith('src/agent/')) {
|
|
45
|
+
relativePath = '../' + relativePath;
|
|
46
|
+
}
|
|
47
|
+
return `import ${camelName} from '${relativePath}';`;
|
|
48
|
+
})
|
|
49
|
+
.join('\n');
|
|
50
|
+
// Generate flat registry structure
|
|
51
|
+
const registry = agents
|
|
52
|
+
.map(({ name }) => {
|
|
53
|
+
const camelName = toCamelCase(name);
|
|
54
|
+
return ` ${camelName}: ${camelName},`;
|
|
55
|
+
})
|
|
56
|
+
.join('\n');
|
|
57
|
+
// Generate type exports for all agents
|
|
58
|
+
const typeExports = agents
|
|
59
|
+
.map(({ name }) => {
|
|
60
|
+
const camelName = toCamelCase(name);
|
|
61
|
+
const pascalName = toPascalCase(name);
|
|
62
|
+
return `export type ${pascalName}Runner = AgentRunner<typeof ${camelName}['inputSchema'], typeof ${camelName}['outputSchema'], typeof ${camelName}['stream'] extends true ? true : false>;`;
|
|
63
|
+
})
|
|
64
|
+
.join('\n');
|
|
65
|
+
// Generate flat agent type definitions for AgentRegistry interface augmentation
|
|
66
|
+
const runtimeAgentTypes = agents
|
|
67
|
+
.map(({ name }) => {
|
|
68
|
+
const camelName = toCamelCase(name);
|
|
69
|
+
return ` ${camelName}: AgentRunner<typeof ${camelName}['inputSchema'], typeof ${camelName}['outputSchema'], typeof ${camelName}['stream'] extends true ? true : false>;`;
|
|
70
|
+
})
|
|
71
|
+
.join('\n');
|
|
72
|
+
const generatedContent = `/// <reference types="hono" />
|
|
73
|
+
// Auto-generated by Agentuity - do not edit manually
|
|
74
|
+
${imports}
|
|
75
|
+
import type { AgentRunner, Logger } from '@agentuity/runtime';
|
|
76
|
+
import type { KeyValueStorage, StreamStorage, VectorStorage } from '@agentuity/core';
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Registry of all agents in this application.
|
|
80
|
+
* Provides strongly-typed access to agent metadata and runner functions.
|
|
81
|
+
* Auto-generated from your agent files during build.
|
|
82
|
+
*/
|
|
83
|
+
export const agentRegistry = {
|
|
84
|
+
${registry}
|
|
85
|
+
} as const;
|
|
86
|
+
|
|
87
|
+
// Local type aliases for Hono augmentation
|
|
88
|
+
type LocalAgentName = keyof typeof agentRegistry;
|
|
89
|
+
type LocalAgentRegistry = typeof agentRegistry;
|
|
90
|
+
|
|
91
|
+
// Typed runners for each agent
|
|
92
|
+
${typeExports}
|
|
93
|
+
|
|
94
|
+
// Augment @agentuity/runtime types with strongly-typed agents from this project
|
|
95
|
+
declare module "@agentuity/runtime" {
|
|
96
|
+
// Augment the AgentRegistry interface with project-specific strongly-typed agents
|
|
97
|
+
export interface AgentRegistry {
|
|
98
|
+
${runtimeAgentTypes}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// NOTE: Hono Context properties are accessed via c.var (e.g., c.var.logger, c.var.kv)
|
|
103
|
+
// The Variables interface in @agentuity/runtime defines all available context properties
|
|
104
|
+
`;
|
|
105
|
+
const agentsDir = join(srcDir, 'agent');
|
|
106
|
+
const legacyTypesPath = join(agentsDir, 'types.generated.d.ts');
|
|
107
|
+
// Ensure .agentuity directory exists
|
|
108
|
+
if (!existsSync(agentuityDir)) {
|
|
109
|
+
mkdirSync(agentuityDir, { recursive: true });
|
|
110
|
+
}
|
|
111
|
+
writeFileSync(registryPath, generatedContent, 'utf-8');
|
|
112
|
+
// Remove legacy types.generated.d.ts if it exists (now consolidated into registry.generated.ts)
|
|
113
|
+
if (existsSync(legacyTypesPath)) {
|
|
114
|
+
unlinkSync(legacyTypesPath);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
3
117
|
/**
|
|
4
118
|
* Generate RouteRegistry type definitions from discovered routes.
|
|
5
119
|
*
|
|
6
120
|
* Creates a module augmentation for @agentuity/react that provides
|
|
7
121
|
* strongly-typed route keys with input/output schema information.
|
|
8
|
-
*
|
|
9
|
-
* @param srcDir - Source directory path
|
|
10
|
-
* @param routes - Array of route information
|
|
11
122
|
*/
|
|
12
123
|
export function generateRouteRegistry(srcDir, routes) {
|
|
13
|
-
// Filter routes by type
|
|
14
|
-
// Note: 'stream' routes are HTTP routes that return ReadableStream, so include them with API routes
|
|
124
|
+
// Filter routes by type
|
|
15
125
|
const apiRoutes = routes.filter((r) => r.routeType === 'api' || r.routeType === 'stream');
|
|
16
126
|
const websocketRoutes = routes.filter((r) => r.routeType === 'websocket');
|
|
17
127
|
const sseRoutes = routes.filter((r) => r.routeType === 'sse');
|
|
18
128
|
if (apiRoutes.length === 0 && websocketRoutes.length === 0 && sseRoutes.length === 0) {
|
|
19
|
-
// No routes, skip generation
|
|
20
129
|
return;
|
|
21
130
|
}
|
|
22
131
|
// Generate imports for agents and schemas
|
|
23
132
|
const imports = [];
|
|
24
|
-
const agentImports = new Map();
|
|
25
|
-
const
|
|
26
|
-
// Combine all routes for import collection
|
|
133
|
+
const agentImports = new Map();
|
|
134
|
+
const routeFileImports = new Map();
|
|
27
135
|
const allRoutes = [...apiRoutes, ...websocketRoutes, ...sseRoutes];
|
|
28
|
-
//
|
|
136
|
+
// Collect agent imports
|
|
29
137
|
allRoutes.forEach((route) => {
|
|
30
|
-
|
|
31
|
-
if (!route.hasValidator) {
|
|
138
|
+
if (!route.hasValidator)
|
|
32
139
|
return;
|
|
33
|
-
}
|
|
34
|
-
// If this route uses an agent, import it directly
|
|
35
140
|
if (route.agentVariable && route.agentImportPath && !agentImports.has(route.agentVariable)) {
|
|
36
|
-
// Resolve the import path (could be @agent/hello, ../shared, etc.)
|
|
37
141
|
let resolvedPath = route.agentImportPath;
|
|
38
|
-
// If it's a path alias like @agent/hello, convert to relative path
|
|
39
142
|
if (resolvedPath.startsWith('@agent/')) {
|
|
40
143
|
resolvedPath = `../src/agent/${resolvedPath.substring('@agent/'.length)}`;
|
|
41
144
|
}
|
|
@@ -43,30 +146,14 @@ export function generateRouteRegistry(srcDir, routes) {
|
|
|
43
146
|
resolvedPath = `../src/web/${resolvedPath.substring('@api/'.length)}`;
|
|
44
147
|
}
|
|
45
148
|
else if (resolvedPath.startsWith('./') || resolvedPath.startsWith('../')) {
|
|
46
|
-
// Relative path - need to resolve relative to route file location
|
|
47
149
|
const routeDir = route.filename.substring(0, route.filename.lastIndexOf('/'));
|
|
48
150
|
resolvedPath = `../${routeDir}/${resolvedPath}`;
|
|
49
151
|
}
|
|
50
|
-
// Generate unique import name: agent_hello, agent_user, etc.
|
|
51
152
|
const uniqueImportName = `agent_${route.agentVariable}`;
|
|
52
153
|
imports.push(`import type ${uniqueImportName} from '${resolvedPath}';`);
|
|
53
154
|
agentImports.set(route.agentVariable, uniqueImportName);
|
|
54
155
|
}
|
|
55
|
-
//
|
|
56
|
-
if (route.inputSchemaVariable) {
|
|
57
|
-
schemaImports.add(route.inputSchemaVariable);
|
|
58
|
-
}
|
|
59
|
-
if (route.outputSchemaVariable) {
|
|
60
|
-
schemaImports.add(route.outputSchemaVariable);
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
// Import schema variables from route files
|
|
64
|
-
const routeFileImports = new Map(); // Maps route file to schema variables
|
|
65
|
-
allRoutes.forEach((route) => {
|
|
66
|
-
// Only import schemas for routes with validators
|
|
67
|
-
if (!route.hasValidator) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
156
|
+
// Collect schema variable imports
|
|
70
157
|
if (route.inputSchemaVariable || route.outputSchemaVariable) {
|
|
71
158
|
const filename = route.filename.replace(/\\/g, '/');
|
|
72
159
|
const importPath = `../${filename.replace(/\.ts$/, '')}`;
|
|
@@ -81,16 +168,15 @@ export function generateRouteRegistry(srcDir, routes) {
|
|
|
81
168
|
}
|
|
82
169
|
}
|
|
83
170
|
});
|
|
84
|
-
// Generate
|
|
171
|
+
// Generate schema imports
|
|
85
172
|
routeFileImports.forEach((schemas, importPath) => {
|
|
86
173
|
const schemaList = Array.from(schemas).join(', ');
|
|
87
174
|
imports.push(`import type { ${schemaList} } from '${importPath}';`);
|
|
88
175
|
});
|
|
89
176
|
const importsStr = imports.join('\n');
|
|
90
|
-
// Helper
|
|
177
|
+
// Helper to generate route entry
|
|
91
178
|
const generateRouteEntry = (route) => {
|
|
92
|
-
const routeKey = route.path;
|
|
93
|
-
// If route doesn't have a validator, use never for schemas
|
|
179
|
+
const routeKey = route.path;
|
|
94
180
|
if (!route.hasValidator) {
|
|
95
181
|
const streamValue = route.stream === true ? 'true' : 'false';
|
|
96
182
|
return ` '${routeKey}': {
|
|
@@ -99,7 +185,6 @@ export function generateRouteRegistry(srcDir, routes) {
|
|
|
99
185
|
stream: ${streamValue};
|
|
100
186
|
};`;
|
|
101
187
|
}
|
|
102
|
-
// If we have an agent variable, we can infer types from it
|
|
103
188
|
if (route.agentVariable) {
|
|
104
189
|
const importName = agentImports.get(route.agentVariable);
|
|
105
190
|
return ` '${routeKey}': {
|
|
@@ -108,7 +193,6 @@ export function generateRouteRegistry(srcDir, routes) {
|
|
|
108
193
|
stream: typeof ${importName} extends { stream?: infer S } ? S : false;
|
|
109
194
|
};`;
|
|
110
195
|
}
|
|
111
|
-
// If we have standalone validator with schema variables
|
|
112
196
|
if (route.inputSchemaVariable || route.outputSchemaVariable) {
|
|
113
197
|
const inputType = route.inputSchemaVariable
|
|
114
198
|
? `typeof ${route.inputSchemaVariable}`
|
|
@@ -123,23 +207,19 @@ export function generateRouteRegistry(srcDir, routes) {
|
|
|
123
207
|
stream: ${streamValue};
|
|
124
208
|
};`;
|
|
125
209
|
}
|
|
126
|
-
// Fall back to any if we can't determine the schema source
|
|
127
210
|
return ` '${routeKey}': {
|
|
128
|
-
// Unable to extract schema types - validator might use inline schemas
|
|
129
211
|
inputSchema: any;
|
|
130
212
|
outputSchema: any;
|
|
131
213
|
};`;
|
|
132
214
|
};
|
|
133
|
-
// Generate
|
|
215
|
+
// Generate route entries with METHOD prefix for API routes
|
|
134
216
|
const apiRouteEntries = apiRoutes
|
|
135
217
|
.map((route) => {
|
|
136
218
|
const routeKey = `${route.method.toUpperCase()} ${route.path}`;
|
|
137
219
|
return generateRouteEntry({ ...route, path: routeKey });
|
|
138
220
|
})
|
|
139
221
|
.join('\n');
|
|
140
|
-
// Generate WebSocketRouteRegistry (path only, no method)
|
|
141
222
|
const websocketRouteEntries = websocketRoutes.map(generateRouteEntry).join('\n');
|
|
142
|
-
// Generate SSERouteRegistry (path only, no method)
|
|
143
223
|
const sseRouteEntries = sseRoutes.map(generateRouteEntry).join('\n');
|
|
144
224
|
const generatedContent = `// Auto-generated by Agentuity - do not edit manually
|
|
145
225
|
${importsStr}
|
|
@@ -159,14 +239,12 @@ ${sseRouteEntries}
|
|
|
159
239
|
}
|
|
160
240
|
}
|
|
161
241
|
`;
|
|
162
|
-
// Get the project root (parent of srcDir)
|
|
163
242
|
const projectRoot = join(srcDir, '..');
|
|
164
243
|
const agentuityDir = join(projectRoot, '.agentuity');
|
|
165
244
|
const registryPath = join(agentuityDir, 'routes.generated.ts');
|
|
166
|
-
// Ensure .agentuity directory exists
|
|
167
245
|
if (!existsSync(agentuityDir)) {
|
|
168
246
|
mkdirSync(agentuityDir, { recursive: true });
|
|
169
247
|
}
|
|
170
248
|
writeFileSync(registryPath, generatedContent, 'utf-8');
|
|
171
249
|
}
|
|
172
|
-
//# sourceMappingURL=
|
|
250
|
+
//# sourceMappingURL=registry-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-generator.js","sourceRoot":"","sources":["../../../../src/cmd/build/vite/registry-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Route Discovery - READ-ONLY AST analysis
|
|
3
|
+
*
|
|
4
|
+
* Discovers routes by scanning src/api/**\/*.ts files
|
|
5
|
+
* Extracts route definitions WITHOUT mutating source files
|
|
6
|
+
*/
|
|
7
|
+
import type { Logger } from '../../../types';
|
|
8
|
+
export interface RouteMetadata {
|
|
9
|
+
id: string;
|
|
10
|
+
filename: string;
|
|
11
|
+
path: string;
|
|
12
|
+
method: string;
|
|
13
|
+
version: string;
|
|
14
|
+
type: 'api' | 'sms' | 'email' | 'cron' | 'websocket' | 'sse' | 'stream';
|
|
15
|
+
agentIds?: string[];
|
|
16
|
+
config?: Record<string, unknown>;
|
|
17
|
+
schema?: {
|
|
18
|
+
input?: string;
|
|
19
|
+
output?: string;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export interface RouteInfo {
|
|
23
|
+
method: string;
|
|
24
|
+
path: string;
|
|
25
|
+
filename: string;
|
|
26
|
+
hasValidator: boolean;
|
|
27
|
+
routeType: 'api' | 'sms' | 'email' | 'cron' | 'websocket' | 'sse' | 'stream';
|
|
28
|
+
agentVariable?: string;
|
|
29
|
+
agentImportPath?: string;
|
|
30
|
+
inputSchemaVariable?: string;
|
|
31
|
+
outputSchemaVariable?: string;
|
|
32
|
+
stream?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Discover all routes in src/api directory (READ-ONLY)
|
|
36
|
+
*/
|
|
37
|
+
export declare function discoverRoutes(srcDir: string, projectId: string, deploymentId: string, logger: Logger): Promise<{
|
|
38
|
+
routes: RouteMetadata[];
|
|
39
|
+
routeInfoList: RouteInfo[];
|
|
40
|
+
}>;
|
|
41
|
+
export interface RouteConflict {
|
|
42
|
+
type: 'duplicate';
|
|
43
|
+
routes: Array<{
|
|
44
|
+
method: string;
|
|
45
|
+
path: string;
|
|
46
|
+
filename: string;
|
|
47
|
+
}>;
|
|
48
|
+
message: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Detect conflicts between routes
|
|
52
|
+
*/
|
|
53
|
+
export declare function detectRouteConflicts(routes: Array<{
|
|
54
|
+
method: string;
|
|
55
|
+
path: string;
|
|
56
|
+
filename: string;
|
|
57
|
+
}>): RouteConflict[];
|
|
58
|
+
//# sourceMappingURL=route-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-discovery.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/route-discovery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C,MAAM,WAAW,aAAa;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,KAAK,GAAG,QAAQ,CAAC;IACxE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACF;AAED,MAAM,WAAW,SAAS;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,cAAc,CACnC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAAC,aAAa,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC,CAiGlE;AAED,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/D,aAAa,EAAE,CA2BjB"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Route Discovery - READ-ONLY AST analysis
|
|
3
|
+
*
|
|
4
|
+
* Discovers routes by scanning src/api/**\/*.ts files
|
|
5
|
+
* Extracts route definitions WITHOUT mutating source files
|
|
6
|
+
*/
|
|
7
|
+
import { join, relative } from 'node:path';
|
|
8
|
+
import { existsSync } from 'node:fs';
|
|
9
|
+
import { parseRoute } from '../ast';
|
|
10
|
+
/**
|
|
11
|
+
* Discover all routes in src/api directory (READ-ONLY)
|
|
12
|
+
*/
|
|
13
|
+
export async function discoverRoutes(srcDir, projectId, deploymentId, logger) {
|
|
14
|
+
const apiDir = join(srcDir, 'api');
|
|
15
|
+
const routes = [];
|
|
16
|
+
const routeInfoList = [];
|
|
17
|
+
// Check if API directory exists
|
|
18
|
+
if (!existsSync(apiDir)) {
|
|
19
|
+
logger.trace('No api directory found at %s', apiDir);
|
|
20
|
+
return { routes, routeInfoList };
|
|
21
|
+
}
|
|
22
|
+
const transpiler = new Bun.Transpiler({ loader: 'ts', target: 'bun' });
|
|
23
|
+
// Scan all .ts files in api directory
|
|
24
|
+
const glob = new Bun.Glob('**/*.ts');
|
|
25
|
+
for await (const file of glob.scan(apiDir)) {
|
|
26
|
+
const filePath = join(apiDir, file);
|
|
27
|
+
try {
|
|
28
|
+
const source = await Bun.file(filePath).text();
|
|
29
|
+
const contents = transpiler.transformSync(source);
|
|
30
|
+
// Check if file has createRouter or Hono
|
|
31
|
+
if (!contents.includes('createRouter') && !contents.includes('new Hono')) {
|
|
32
|
+
logger.trace('Skipping %s (no router)', file);
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const rootDir = join(srcDir, '..');
|
|
36
|
+
const relativeFilename = './' + relative(srcDir, filePath);
|
|
37
|
+
try {
|
|
38
|
+
const parsedRoutes = await parseRoute(rootDir, filePath, projectId, deploymentId);
|
|
39
|
+
if (parsedRoutes.length > 0) {
|
|
40
|
+
logger.trace('Discovered %d route(s) in %s', parsedRoutes.length, relativeFilename);
|
|
41
|
+
routes.push(...parsedRoutes);
|
|
42
|
+
// Convert to RouteInfo for registry
|
|
43
|
+
for (const route of parsedRoutes) {
|
|
44
|
+
routeInfoList.push({
|
|
45
|
+
method: route.method.toUpperCase(),
|
|
46
|
+
path: route.path,
|
|
47
|
+
filename: route.filename,
|
|
48
|
+
hasValidator: route.config?.hasValidator === true,
|
|
49
|
+
routeType: route.type || 'api',
|
|
50
|
+
agentVariable: route.config?.agentVariable,
|
|
51
|
+
agentImportPath: route.config?.agentImportPath,
|
|
52
|
+
inputSchemaVariable: route.config?.inputSchemaVariable,
|
|
53
|
+
outputSchemaVariable: route.config?.outputSchemaVariable,
|
|
54
|
+
stream: route.config?.stream !== undefined && route.config.stream !== null
|
|
55
|
+
? Boolean(route.config.stream)
|
|
56
|
+
: route.type === 'stream'
|
|
57
|
+
? true
|
|
58
|
+
: undefined,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
// Skip files that don't have proper router setup
|
|
65
|
+
if (error instanceof Error) {
|
|
66
|
+
if (error.message.includes('could not find default export') ||
|
|
67
|
+
error.message.includes('could not find an proper createRouter')) {
|
|
68
|
+
logger.trace('Skipping %s: %s', file, error.message);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
logger.warn(`Failed to parse route file ${filePath}: ${error}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
logger.debug('Discovered %d route(s)', routes.length);
|
|
84
|
+
// Check for route conflicts
|
|
85
|
+
const conflicts = detectRouteConflicts(routeInfoList);
|
|
86
|
+
if (conflicts.length > 0) {
|
|
87
|
+
logger.error('Route conflicts detected:');
|
|
88
|
+
for (const conflict of conflicts) {
|
|
89
|
+
logger.error(' %s', conflict.message);
|
|
90
|
+
for (const route of conflict.routes) {
|
|
91
|
+
logger.error(' - %s %s in %s', route.method, route.path, route.filename);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
throw new Error(`Found ${conflicts.length} route conflict(s). Fix the conflicts and try again.`);
|
|
95
|
+
}
|
|
96
|
+
return { routes, routeInfoList };
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Detect conflicts between routes
|
|
100
|
+
*/
|
|
101
|
+
export function detectRouteConflicts(routes) {
|
|
102
|
+
const conflicts = [];
|
|
103
|
+
// Group routes by method+path
|
|
104
|
+
const methodPathMap = new Map();
|
|
105
|
+
for (const route of routes) {
|
|
106
|
+
const key = `${route.method.toUpperCase()} ${route.path}`;
|
|
107
|
+
if (!methodPathMap.has(key)) {
|
|
108
|
+
methodPathMap.set(key, []);
|
|
109
|
+
}
|
|
110
|
+
methodPathMap.get(key).push({ path: route.path, filename: route.filename });
|
|
111
|
+
}
|
|
112
|
+
// Check for exact duplicates
|
|
113
|
+
for (const [methodPath, routeList] of methodPathMap.entries()) {
|
|
114
|
+
if (routeList.length > 1) {
|
|
115
|
+
const [method] = methodPath.split(' ', 2);
|
|
116
|
+
conflicts.push({
|
|
117
|
+
type: 'duplicate',
|
|
118
|
+
routes: routeList.map((r) => ({ method, path: r.path, filename: r.filename })),
|
|
119
|
+
message: `Duplicate route: ${methodPath} defined in ${routeList.length} files`,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return conflicts;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=route-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-discovery.js","sourceRoot":"","sources":["../../../../src/cmd/build/vite/route-discovery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AA8BpC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CACnC,MAAc,EACd,SAAiB,EACjB,YAAoB,EACpB,MAAc;IAEd,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnC,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,aAAa,GAAgB,EAAE,CAAC;IAEtC,gCAAgC;IAChC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;QACrD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAEvE,sCAAsC;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAEpC,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAElD,yCAAyC;YACzC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1E,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;gBAC9C,SAAS;YACV,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACnC,MAAM,gBAAgB,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAE3D,IAAI,CAAC;gBACJ,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;gBAElF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,YAAY,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;oBACpF,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;oBAE7B,oCAAoC;oBACpC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;wBAClC,aAAa,CAAC,IAAI,CAAC;4BAClB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE;4BAClC,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;4BACxB,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI;4BACjD,SAAS,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK;4BAC9B,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE,aAAmC;4BAChE,eAAe,EAAE,KAAK,CAAC,MAAM,EAAE,eAAqC;4BACpE,mBAAmB,EAAE,KAAK,CAAC,MAAM,EAAE,mBAAyC;4BAC5E,oBAAoB,EAAE,KAAK,CAAC,MAAM,EAAE,oBAA0C;4BAC9E,MAAM,EACL,KAAK,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI;gCACjE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;gCAC9B,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;oCACxB,CAAC,CAAC,IAAI;oCACN,CAAC,CAAC,SAAS;yBACd,CAAC,CAAC;oBACJ,CAAC;gBACF,CAAC;YACF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,iDAAiD;gBACjD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;oBAC5B,IACC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAC;wBACvD,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,uCAAuC,CAAC,EAC9D,CAAC;wBACF,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;oBACtD,CAAC;yBAAM,CAAC;wBACP,MAAM,KAAK,CAAC;oBACb,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,MAAM,KAAK,CAAC;gBACb,CAAC;YACF,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,8BAA8B,QAAQ,KAAK,KAAK,EAAE,CAAC,CAAC;QACjE,CAAC;IACF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEtD,4BAA4B;IAC5B,MAAM,SAAS,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;IACtD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC1C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACrC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7E,CAAC;QACF,CAAC;QACD,MAAM,IAAI,KAAK,CACd,SAAS,SAAS,CAAC,MAAM,sDAAsD,CAC/E,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AAClC,CAAC;AAQD;;GAEG;AACH,MAAM,UAAU,oBAAoB,CACnC,MAAiE;IAEjE,MAAM,SAAS,GAAoB,EAAE,CAAC;IAEtC,8BAA8B;IAC9B,MAAM,aAAa,GAAG,IAAI,GAAG,EAAqD,CAAC;IAEnF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,aAAa,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,6BAA6B;IAC7B,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1C,SAAS,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC9E,OAAO,EAAE,oBAAoB,UAAU,eAAe,SAAS,CAAC,MAAM,QAAQ;aAC9E,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server bundler using Bun.build with external dependency management
|
|
3
|
+
* Handles installing externals into .agentuity/node_modules for production
|
|
4
|
+
*/
|
|
5
|
+
import type { Logger } from '../../../types';
|
|
6
|
+
export interface ServerBundleOptions {
|
|
7
|
+
rootDir: string;
|
|
8
|
+
dev: boolean;
|
|
9
|
+
logger: Logger;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Install external dependencies and build server bundle
|
|
13
|
+
* For production: installs externals into .agentuity/node_modules BEFORE bundling
|
|
14
|
+
*/
|
|
15
|
+
export declare function installExternalsAndBuild(options: ServerBundleOptions): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=server-bundler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-bundler.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/server-bundler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8O1F"}
|