@agentuity/cli 1.0.48 → 2.0.0-beta.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/build/app-router-detector.d.ts +2 -5
- package/dist/cmd/build/app-router-detector.d.ts.map +1 -1
- package/dist/cmd/build/app-router-detector.js +130 -154
- package/dist/cmd/build/app-router-detector.js.map +1 -1
- package/dist/cmd/build/ids.d.ts +11 -0
- package/dist/cmd/build/ids.d.ts.map +1 -0
- package/dist/cmd/build/ids.js +18 -0
- package/dist/cmd/build/ids.js.map +1 -0
- package/dist/cmd/build/vite/agent-discovery.d.ts +8 -4
- package/dist/cmd/build/vite/agent-discovery.d.ts.map +1 -1
- package/dist/cmd/build/vite/agent-discovery.js +166 -487
- package/dist/cmd/build/vite/agent-discovery.js.map +1 -1
- package/dist/cmd/build/vite/bun-dev-server.d.ts +10 -16
- package/dist/cmd/build/vite/bun-dev-server.d.ts.map +1 -1
- package/dist/cmd/build/vite/bun-dev-server.js +67 -134
- package/dist/cmd/build/vite/bun-dev-server.js.map +1 -1
- package/dist/cmd/build/vite/docs-generator.d.ts.map +1 -1
- package/dist/cmd/build/vite/docs-generator.js +0 -2
- package/dist/cmd/build/vite/docs-generator.js.map +1 -1
- package/dist/cmd/build/vite/index.d.ts.map +1 -1
- package/dist/cmd/build/vite/index.js +0 -36
- package/dist/cmd/build/vite/index.js.map +1 -1
- package/dist/cmd/build/vite/lifecycle-generator.d.ts +10 -2
- package/dist/cmd/build/vite/lifecycle-generator.d.ts.map +1 -1
- package/dist/cmd/build/vite/lifecycle-generator.js +302 -23
- package/dist/cmd/build/vite/lifecycle-generator.js.map +1 -1
- package/dist/cmd/build/vite/route-discovery.d.ts +11 -38
- package/dist/cmd/build/vite/route-discovery.d.ts.map +1 -1
- package/dist/cmd/build/vite/route-discovery.js +97 -177
- package/dist/cmd/build/vite/route-discovery.js.map +1 -1
- package/dist/cmd/build/vite/server-bundler.js +1 -1
- package/dist/cmd/build/vite/server-bundler.js.map +1 -1
- package/dist/cmd/build/vite/static-renderer.d.ts.map +1 -1
- package/dist/cmd/build/vite/static-renderer.js +1 -9
- package/dist/cmd/build/vite/static-renderer.js.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server-config.d.ts +6 -3
- package/dist/cmd/build/vite/vite-asset-server-config.d.ts.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server-config.js +171 -21
- package/dist/cmd/build/vite/vite-asset-server-config.js.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server.d.ts +8 -3
- package/dist/cmd/build/vite/vite-asset-server.d.ts.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server.js +14 -13
- package/dist/cmd/build/vite/vite-asset-server.js.map +1 -1
- package/dist/cmd/build/vite/vite-builder.d.ts.map +1 -1
- package/dist/cmd/build/vite/vite-builder.js +6 -36
- package/dist/cmd/build/vite/vite-builder.js.map +1 -1
- package/dist/cmd/build/vite/ws-proxy.d.ts +53 -0
- package/dist/cmd/build/vite/ws-proxy.d.ts.map +1 -0
- package/dist/cmd/build/vite/ws-proxy.js +95 -0
- package/dist/cmd/build/vite/ws-proxy.js.map +1 -0
- package/dist/cmd/build/vite-bundler.d.ts.map +1 -1
- package/dist/cmd/build/vite-bundler.js +0 -3
- 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 +0 -1
- package/dist/cmd/cloud/deploy.js.map +1 -1
- package/dist/cmd/dev/file-watcher.d.ts.map +1 -1
- package/dist/cmd/dev/file-watcher.js +2 -8
- 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 +369 -720
- package/dist/cmd/dev/index.js.map +1 -1
- package/package.json +6 -8
- package/src/cmd/ai/prompt/agent.md +0 -1
- package/src/cmd/ai/prompt/api.md +0 -7
- package/src/cmd/ai/prompt/web.md +51 -213
- package/src/cmd/build/app-router-detector.ts +152 -182
- package/src/cmd/build/ids.ts +19 -0
- package/src/cmd/build/vite/agent-discovery.ts +208 -679
- package/src/cmd/build/vite/bun-dev-server.ts +78 -154
- package/src/cmd/build/vite/docs-generator.ts +0 -2
- package/src/cmd/build/vite/index.ts +1 -42
- package/src/cmd/build/vite/lifecycle-generator.ts +345 -21
- package/src/cmd/build/vite/route-discovery.ts +116 -274
- package/src/cmd/build/vite/server-bundler.ts +1 -1
- package/src/cmd/build/vite/static-renderer.ts +1 -11
- package/src/cmd/build/vite/vite-asset-server-config.ts +196 -23
- package/src/cmd/build/vite/vite-asset-server.ts +25 -15
- package/src/cmd/build/vite/vite-builder.ts +6 -53
- package/src/cmd/build/vite/ws-proxy.ts +126 -0
- package/src/cmd/build/vite-bundler.ts +0 -4
- package/src/cmd/cloud/deploy.ts +0 -1
- package/src/cmd/dev/file-watcher.ts +2 -9
- package/src/cmd/dev/index.ts +409 -832
- package/dist/cmd/build/ast.d.ts +0 -78
- package/dist/cmd/build/ast.d.ts.map +0 -1
- package/dist/cmd/build/ast.js +0 -2703
- package/dist/cmd/build/ast.js.map +0 -1
- package/dist/cmd/build/entry-generator.d.ts +0 -25
- package/dist/cmd/build/entry-generator.d.ts.map +0 -1
- package/dist/cmd/build/entry-generator.js +0 -695
- package/dist/cmd/build/entry-generator.js.map +0 -1
- package/dist/cmd/build/vite/api-mount-path.d.ts +0 -61
- package/dist/cmd/build/vite/api-mount-path.d.ts.map +0 -1
- package/dist/cmd/build/vite/api-mount-path.js +0 -83
- package/dist/cmd/build/vite/api-mount-path.js.map +0 -1
- package/dist/cmd/build/vite/registry-generator.d.ts +0 -19
- package/dist/cmd/build/vite/registry-generator.d.ts.map +0 -1
- package/dist/cmd/build/vite/registry-generator.js +0 -1108
- package/dist/cmd/build/vite/registry-generator.js.map +0 -1
- package/dist/cmd/build/vite/tailwind-source-plugin.d.ts +0 -13
- package/dist/cmd/build/vite/tailwind-source-plugin.d.ts.map +0 -1
- package/dist/cmd/build/vite/tailwind-source-plugin.js +0 -44
- package/dist/cmd/build/vite/tailwind-source-plugin.js.map +0 -1
- package/dist/cmd/build/webanalytics-generator.d.ts +0 -16
- package/dist/cmd/build/webanalytics-generator.d.ts.map +0 -1
- package/dist/cmd/build/webanalytics-generator.js +0 -178
- package/dist/cmd/build/webanalytics-generator.js.map +0 -1
- package/dist/cmd/build/workbench.d.ts +0 -7
- package/dist/cmd/build/workbench.d.ts.map +0 -1
- package/dist/cmd/build/workbench.js +0 -55
- package/dist/cmd/build/workbench.js.map +0 -1
- package/dist/utils/route-migration.d.ts +0 -62
- package/dist/utils/route-migration.d.ts.map +0 -1
- package/dist/utils/route-migration.js +0 -630
- package/dist/utils/route-migration.js.map +0 -1
- package/src/cmd/build/ast.ts +0 -3529
- package/src/cmd/build/entry-generator.ts +0 -760
- package/src/cmd/build/vite/api-mount-path.ts +0 -87
- package/src/cmd/build/vite/registry-generator.ts +0 -1267
- package/src/cmd/build/vite/tailwind-source-plugin.ts +0 -54
- package/src/cmd/build/webanalytics-generator.ts +0 -197
- package/src/cmd/build/workbench.ts +0 -58
- package/src/utils/route-migration.ts +0 -757
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* to `createApp()`. If detected, resolves the router variable(s) to their import
|
|
6
6
|
* sources and mount paths.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* Uses TypeScript's compiler API to reliably detect the pattern, consistent with
|
|
9
|
+
* the lifecycle generator approach.
|
|
10
10
|
*/
|
|
11
11
|
import type { Logger } from '../../types';
|
|
12
12
|
/**
|
|
@@ -30,9 +30,6 @@ export interface AppRouterDetection {
|
|
|
30
30
|
/**
|
|
31
31
|
* Detect whether `src/app.ts` uses `createApp({ router })`.
|
|
32
32
|
*
|
|
33
|
-
* Parses the file with acorn-loose, finds `createApp()` calls,
|
|
34
|
-
* and resolves router variables to their import source files.
|
|
35
|
-
*
|
|
36
33
|
* Returns `{ detected: false, mounts: [] }` when:
|
|
37
34
|
* - `src/app.ts` doesn't exist
|
|
38
35
|
* - `createApp()` is called without a `router` property
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-router-detector.d.ts","sourceRoot":"","sources":["../../../src/cmd/build/app-router-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"app-router-detector.d.ts","sourceRoot":"","sources":["../../../src/cmd/build/app-router-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,gDAAgD;IAChD,QAAQ,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,MAAM,EAAE,kBAAkB,EAAE,CAAC;CAC7B;AAuLD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACzC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,kBAAkB,CAAC,CA2F7B"}
|
|
@@ -5,23 +5,24 @@
|
|
|
5
5
|
* to `createApp()`. If detected, resolves the router variable(s) to their import
|
|
6
6
|
* sources and mount paths.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* Uses TypeScript's compiler API to reliably detect the pattern, consistent with
|
|
9
|
+
* the lifecycle generator approach.
|
|
10
10
|
*/
|
|
11
|
-
import
|
|
11
|
+
import ts from 'typescript';
|
|
12
12
|
import { join, dirname, resolve } from 'node:path';
|
|
13
|
-
import {
|
|
13
|
+
import { statSync } from 'node:fs';
|
|
14
14
|
/**
|
|
15
15
|
* Resolve an import path to an actual file on disk.
|
|
16
16
|
* Tries the path as-is, then with common extensions.
|
|
17
17
|
*/
|
|
18
|
-
function resolveImportFile(fromDir, importPath) {
|
|
18
|
+
async function resolveImportFile(fromDir, importPath) {
|
|
19
19
|
if (!importPath.startsWith('.') && !importPath.startsWith('/')) {
|
|
20
20
|
return null; // Package import — can't resolve
|
|
21
21
|
}
|
|
22
22
|
const basePath = resolve(fromDir, importPath);
|
|
23
23
|
const extensions = ['.ts', '.tsx', '/index.ts', '/index.tsx'];
|
|
24
|
-
|
|
24
|
+
const baseFile = Bun.file(basePath);
|
|
25
|
+
if (await baseFile.exists()) {
|
|
25
26
|
try {
|
|
26
27
|
if (statSync(basePath).isFile())
|
|
27
28
|
return basePath;
|
|
@@ -32,82 +33,138 @@ function resolveImportFile(fromDir, importPath) {
|
|
|
32
33
|
}
|
|
33
34
|
for (const ext of extensions) {
|
|
34
35
|
const candidate = basePath + ext;
|
|
35
|
-
if (
|
|
36
|
+
if (await Bun.file(candidate).exists()) {
|
|
36
37
|
return candidate;
|
|
37
38
|
}
|
|
38
39
|
}
|
|
39
40
|
return null;
|
|
40
41
|
}
|
|
41
42
|
/**
|
|
42
|
-
* Extract
|
|
43
|
-
*
|
|
44
|
-
* Handles three forms:
|
|
45
|
-
* - `createApp({ router: myVar })` → plain Hono, default /api mount
|
|
46
|
-
* - `createApp({ router: { path: '/v1', router: myVar } })` → single RouteMount
|
|
47
|
-
* - `createApp({ router: [{ path: '/v1', router: v1 }, ...] })` → array of RouteMounts
|
|
43
|
+
* Extract router mounts from a createApp() call using TypeScript's AST.
|
|
44
|
+
* Returns null if no router property found.
|
|
48
45
|
*/
|
|
49
|
-
function
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (configArg.type !== 'ObjectExpression') {
|
|
46
|
+
function extractRouterMounts(sourceFile) {
|
|
47
|
+
let result = null;
|
|
48
|
+
function getStringLiteral(node) {
|
|
49
|
+
if (ts.isStringLiteral(node) || ts.isNoSubstitutionTemplateLiteral(node)) {
|
|
50
|
+
return node.text;
|
|
51
|
+
}
|
|
56
52
|
return null;
|
|
57
53
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
54
|
+
function extractMountFromObject(obj) {
|
|
55
|
+
let path;
|
|
56
|
+
let varName;
|
|
57
|
+
for (const prop of obj.properties) {
|
|
58
|
+
if (!ts.isPropertyAssignment(prop) || !ts.isIdentifier(prop.name))
|
|
59
|
+
continue;
|
|
60
|
+
if (prop.name.text === 'path') {
|
|
61
|
+
path = getStringLiteral(prop.initializer) ?? undefined;
|
|
62
|
+
}
|
|
63
|
+
if (prop.name.text === 'router') {
|
|
64
|
+
if (ts.isIdentifier(prop.initializer)) {
|
|
65
|
+
varName = prop.initializer.text;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Also handle shorthand: { path: '/v1', router } where router is shorthand
|
|
70
|
+
for (const prop of obj.properties) {
|
|
71
|
+
if (ts.isShorthandPropertyAssignment(prop) && prop.name.text === 'router') {
|
|
72
|
+
varName = prop.name.text;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return path && varName ? { path, varName } : null;
|
|
67
76
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
77
|
+
function processRouterValue(value) {
|
|
78
|
+
// Form 1: Identifier → createApp({ router: myRouter })
|
|
79
|
+
if (ts.isIdentifier(value)) {
|
|
80
|
+
return [{ path: '/api', varName: value.text }];
|
|
81
|
+
}
|
|
82
|
+
// Form 2: Object → createApp({ router: { path: '/v1', router: myRouter } })
|
|
83
|
+
if (ts.isObjectLiteralExpression(value)) {
|
|
84
|
+
const mount = extractMountFromObject(value);
|
|
85
|
+
return mount ? [mount] : null;
|
|
86
|
+
}
|
|
87
|
+
// Form 3: Array → createApp({ router: [...] })
|
|
88
|
+
if (ts.isArrayLiteralExpression(value)) {
|
|
89
|
+
const mounts = [];
|
|
90
|
+
for (const element of value.elements) {
|
|
91
|
+
if (ts.isObjectLiteralExpression(element)) {
|
|
92
|
+
const mount = extractMountFromObject(element);
|
|
93
|
+
if (mount)
|
|
94
|
+
mounts.push(mount);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return mounts.length > 0 ? mounts : null;
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
72
100
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
101
|
+
function visit(node) {
|
|
102
|
+
if (result)
|
|
103
|
+
return;
|
|
104
|
+
// Find createApp(...) — with or without await
|
|
105
|
+
let callExpr;
|
|
106
|
+
if (ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {
|
|
107
|
+
if (node.expression.text === 'createApp')
|
|
108
|
+
callExpr = node;
|
|
109
|
+
}
|
|
110
|
+
else if (ts.isAwaitExpression(node) && ts.isCallExpression(node.expression)) {
|
|
111
|
+
const call = node.expression;
|
|
112
|
+
if (ts.isIdentifier(call.expression) && call.expression.text === 'createApp') {
|
|
113
|
+
callExpr = call;
|
|
81
114
|
}
|
|
82
115
|
}
|
|
83
|
-
|
|
116
|
+
if (callExpr && callExpr.arguments.length > 0) {
|
|
117
|
+
const configArg = callExpr.arguments[0];
|
|
118
|
+
if (configArg && ts.isObjectLiteralExpression(configArg)) {
|
|
119
|
+
for (const prop of configArg.properties) {
|
|
120
|
+
// Handle: router: value
|
|
121
|
+
if (ts.isPropertyAssignment(prop) &&
|
|
122
|
+
ts.isIdentifier(prop.name) &&
|
|
123
|
+
prop.name.text === 'router') {
|
|
124
|
+
result = processRouterValue(prop.initializer);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
// Handle shorthand: createApp({ router })
|
|
128
|
+
if (ts.isShorthandPropertyAssignment(prop) && prop.name.text === 'router') {
|
|
129
|
+
result = [{ path: '/api', varName: 'router' }];
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
ts.forEachChild(node, visit);
|
|
84
136
|
}
|
|
85
|
-
|
|
137
|
+
visit(sourceFile);
|
|
138
|
+
return result;
|
|
86
139
|
}
|
|
87
140
|
/**
|
|
88
|
-
*
|
|
141
|
+
* Build import map from the source file: variable name → import path
|
|
89
142
|
*/
|
|
90
|
-
function
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
143
|
+
function buildImportMap(sourceFile) {
|
|
144
|
+
const importMap = new Map();
|
|
145
|
+
for (const stmt of sourceFile.statements) {
|
|
146
|
+
if (!ts.isImportDeclaration(stmt) || !ts.isStringLiteral(stmt.moduleSpecifier))
|
|
147
|
+
continue;
|
|
148
|
+
const importPath = stmt.moduleSpecifier.text;
|
|
149
|
+
const clause = stmt.importClause;
|
|
150
|
+
if (!clause)
|
|
95
151
|
continue;
|
|
96
|
-
|
|
97
|
-
|
|
152
|
+
// Default import: import router from './api'
|
|
153
|
+
if (clause.name) {
|
|
154
|
+
importMap.set(clause.name.text, importPath);
|
|
98
155
|
}
|
|
99
|
-
|
|
100
|
-
|
|
156
|
+
// Named imports: import { v1, v2 } from './routers'
|
|
157
|
+
if (clause.namedBindings && ts.isNamedImports(clause.namedBindings)) {
|
|
158
|
+
for (const spec of clause.namedBindings.elements) {
|
|
159
|
+
importMap.set(spec.name.text, importPath);
|
|
160
|
+
}
|
|
101
161
|
}
|
|
102
162
|
}
|
|
103
|
-
return
|
|
163
|
+
return importMap;
|
|
104
164
|
}
|
|
105
165
|
/**
|
|
106
166
|
* Detect whether `src/app.ts` uses `createApp({ router })`.
|
|
107
167
|
*
|
|
108
|
-
* Parses the file with acorn-loose, finds `createApp()` calls,
|
|
109
|
-
* and resolves router variables to their import source files.
|
|
110
|
-
*
|
|
111
168
|
* Returns `{ detected: false, mounts: [] }` when:
|
|
112
169
|
* - `src/app.ts` doesn't exist
|
|
113
170
|
* - `createApp()` is called without a `router` property
|
|
@@ -115,63 +172,41 @@ function extractRouteMountFromObject(objNode) {
|
|
|
115
172
|
*/
|
|
116
173
|
export async function detectExplicitRouter(rootDir, logger) {
|
|
117
174
|
const noDetection = { detected: false, mounts: [] };
|
|
118
|
-
// Look for app.ts in src/ (standard location)
|
|
119
|
-
|
|
120
|
-
if (!
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
if (!existsSync(rootAppFile)) {
|
|
175
|
+
// Look for app.ts in src/ (standard location), then root
|
|
176
|
+
let appFile = join(rootDir, 'src', 'app.ts');
|
|
177
|
+
if (!(await Bun.file(appFile).exists())) {
|
|
178
|
+
appFile = join(rootDir, 'app.ts');
|
|
179
|
+
if (!(await Bun.file(appFile).exists())) {
|
|
124
180
|
logger.trace('[router-detect] No app.ts found');
|
|
125
181
|
return noDetection;
|
|
126
182
|
}
|
|
127
|
-
return detectInFile(rootAppFile, logger);
|
|
128
183
|
}
|
|
129
|
-
return detectInFile(appFile, logger);
|
|
130
|
-
}
|
|
131
|
-
async function detectInFile(appFile, logger) {
|
|
132
|
-
const noDetection = { detected: false, mounts: [] };
|
|
133
|
-
const appDir = dirname(appFile);
|
|
134
184
|
try {
|
|
135
185
|
const source = await Bun.file(appFile).text();
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
if (!contents.includes('createApp') || !contents.includes('router')) {
|
|
186
|
+
const appDir = dirname(appFile);
|
|
187
|
+
// Quick bail-out before parsing
|
|
188
|
+
if (!source.includes('createApp') || !source.includes('router')) {
|
|
140
189
|
logger.trace('[router-detect] No createApp + router pattern found in %s', appFile);
|
|
141
190
|
return noDetection;
|
|
142
191
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
});
|
|
148
|
-
// Build import map: variable name → import path
|
|
149
|
-
const importMap = new Map();
|
|
150
|
-
for (const node of ast.body || []) {
|
|
151
|
-
if (node.type === 'ImportDeclaration' && node.source?.value) {
|
|
152
|
-
for (const spec of node.specifiers || []) {
|
|
153
|
-
if (spec.local?.name) {
|
|
154
|
-
importMap.set(spec.local.name, String(node.source.value));
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
// Walk all statements looking for createApp() calls
|
|
160
|
-
const routerMounts = findCreateAppRouterCalls(ast, importMap);
|
|
161
|
-
if (!routerMounts || routerMounts.length === 0) {
|
|
192
|
+
// Parse with TypeScript
|
|
193
|
+
const sourceFile = ts.createSourceFile(appFile, source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
194
|
+
const rawMounts = extractRouterMounts(sourceFile);
|
|
195
|
+
if (!rawMounts || rawMounts.length === 0) {
|
|
162
196
|
logger.trace('[router-detect] createApp() found but no router property');
|
|
163
197
|
return noDetection;
|
|
164
198
|
}
|
|
199
|
+
// Build import map to resolve variable names to file paths
|
|
200
|
+
const importMap = buildImportMap(sourceFile);
|
|
165
201
|
// Resolve each router variable to its file
|
|
166
202
|
const mounts = [];
|
|
167
|
-
for (const { path, varName } of
|
|
203
|
+
for (const { path, varName } of rawMounts) {
|
|
168
204
|
const importPath = importMap.get(varName);
|
|
169
205
|
if (!importPath) {
|
|
170
206
|
logger.debug('[router-detect] Router variable %s is not imported — may be defined locally', varName);
|
|
171
|
-
// Could be defined in the same file — skip for now
|
|
172
207
|
continue;
|
|
173
208
|
}
|
|
174
|
-
const resolvedFile = resolveImportFile(appDir, importPath);
|
|
209
|
+
const resolvedFile = await resolveImportFile(appDir, importPath);
|
|
175
210
|
if (!resolvedFile) {
|
|
176
211
|
logger.warn('[router-detect] Could not resolve import %s for router variable %s', importPath, varName);
|
|
177
212
|
continue;
|
|
@@ -191,63 +226,4 @@ async function detectInFile(appFile, logger) {
|
|
|
191
226
|
return noDetection;
|
|
192
227
|
}
|
|
193
228
|
}
|
|
194
|
-
/**
|
|
195
|
-
* Walk the AST looking for `createApp({ router: ... })` calls.
|
|
196
|
-
* Handles:
|
|
197
|
-
* - `createApp({ router })` (top-level expression)
|
|
198
|
-
* - `const app = await createApp({ router })` (variable declaration)
|
|
199
|
-
* - `export const app = await createApp({ router })` (exported)
|
|
200
|
-
*/
|
|
201
|
-
function findCreateAppRouterCalls(ast, importMap) {
|
|
202
|
-
for (const node of ast.body || []) {
|
|
203
|
-
// Check expression statements: createApp({ router })
|
|
204
|
-
if (node.type === 'ExpressionStatement') {
|
|
205
|
-
const result = checkForCreateAppCall(node.expression, importMap);
|
|
206
|
-
if (result)
|
|
207
|
-
return result;
|
|
208
|
-
}
|
|
209
|
-
// Check variable declarations: const app = await createApp({ router })
|
|
210
|
-
if (node.type === 'VariableDeclaration') {
|
|
211
|
-
for (const decl of node.declarations || []) {
|
|
212
|
-
if (decl.init) {
|
|
213
|
-
const result = checkForCreateAppCall(decl.init, importMap);
|
|
214
|
-
if (result)
|
|
215
|
-
return result;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
// Check exports: export const app = await createApp({ router })
|
|
220
|
-
if (node.type === 'ExportNamedDeclaration' && node.declaration) {
|
|
221
|
-
if (node.declaration.type === 'VariableDeclaration') {
|
|
222
|
-
for (const decl of node.declaration.declarations || []) {
|
|
223
|
-
if (decl.init) {
|
|
224
|
-
const result = checkForCreateAppCall(decl.init, importMap);
|
|
225
|
-
if (result)
|
|
226
|
-
return result;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
return null;
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Check if an expression node is a `createApp({ router })` call.
|
|
236
|
-
* Unwraps `await` expressions.
|
|
237
|
-
*/
|
|
238
|
-
function checkForCreateAppCall(expr, importMap) {
|
|
239
|
-
if (!expr)
|
|
240
|
-
return null;
|
|
241
|
-
// Unwrap AwaitExpression: await createApp(...)
|
|
242
|
-
if (expr.type === 'AwaitExpression' && expr.argument) {
|
|
243
|
-
return checkForCreateAppCall(expr.argument, importMap);
|
|
244
|
-
}
|
|
245
|
-
// Check for createApp({ router })
|
|
246
|
-
if (expr.type === 'CallExpression' &&
|
|
247
|
-
expr.callee?.type === 'Identifier' &&
|
|
248
|
-
expr.callee?.name === 'createApp') {
|
|
249
|
-
return extractRouterFromCreateApp(expr);
|
|
250
|
-
}
|
|
251
|
-
return null;
|
|
252
|
-
}
|
|
253
229
|
//# sourceMappingURL=app-router-detector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-router-detector.js","sourceRoot":"","sources":["../../../src/cmd/build/app-router-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"app-router-detector.js","sourceRoot":"","sources":["../../../src/cmd/build/app-router-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build-time ID generation utilities.
|
|
3
|
+
*
|
|
4
|
+
* Pure hash functions for generating deterministic IDs.
|
|
5
|
+
* No AST parsing — just SHA1 hashing.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Generate a deterministic deployment ID for devmode.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getDevmodeDeploymentId(projectId: string, endpointId: string): string;
|
|
11
|
+
//# sourceMappingURL=ids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../../src/cmd/build/ids.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEpF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build-time ID generation utilities.
|
|
3
|
+
*
|
|
4
|
+
* Pure hash functions for generating deterministic IDs.
|
|
5
|
+
* No AST parsing — just SHA1 hashing.
|
|
6
|
+
*/
|
|
7
|
+
function hashSHA1(...val) {
|
|
8
|
+
const hasher = new Bun.CryptoHasher('sha1');
|
|
9
|
+
val.map((val) => hasher.update(val));
|
|
10
|
+
return hasher.digest().toHex();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Generate a deterministic deployment ID for devmode.
|
|
14
|
+
*/
|
|
15
|
+
export function getDevmodeDeploymentId(projectId, endpointId) {
|
|
16
|
+
return `devmode_${hashSHA1(projectId, endpointId)}`;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=ids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../../src/cmd/build/ids.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,SAAS,QAAQ,CAAC,GAAG,GAAa;IACjC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5C,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAiB,EAAE,UAAkB;IAC3E,OAAO,WAAW,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC;AACrD,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Agent Discovery
|
|
2
|
+
* Agent Discovery — import-based
|
|
3
3
|
*
|
|
4
|
-
* Discovers agents by scanning src/agent/**\/*.ts files
|
|
5
|
-
*
|
|
4
|
+
* Discovers agents by scanning src/agent/**\/*.ts files and importing them
|
|
5
|
+
* at build time. The agent instance already knows its own metadata, schemas,
|
|
6
|
+
* and evals — no AST parsing needed.
|
|
6
7
|
*/
|
|
7
8
|
import type { Logger } from '../../../types';
|
|
8
9
|
export interface AgentMetadata {
|
|
@@ -27,7 +28,10 @@ export interface EvalMetadata {
|
|
|
27
28
|
projectId: string;
|
|
28
29
|
}
|
|
29
30
|
/**
|
|
30
|
-
* Discover all agents in src/agent directory
|
|
31
|
+
* Discover all agents in src/agent directory.
|
|
32
|
+
*
|
|
33
|
+
* Imports each agent file at build time — the agent instance already knows
|
|
34
|
+
* its own metadata, schemas, and evals. No AST parsing needed.
|
|
31
35
|
*/
|
|
32
36
|
export declare function discoverAgents(srcDir: string, projectId: string, deploymentId: string, logger: Logger): Promise<AgentMetadata[]>;
|
|
33
37
|
//# sourceMappingURL=agent-discovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-discovery.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/agent-discovery.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agent-discovery.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/agent-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAS7C,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CAClB;AA2PD;;;;;GAKG;AACH,wBAAsB,cAAc,CACnC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,EAAE,CAAC,CAqD1B"}
|