@agentuity/cli 1.0.47 → 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 -18
- 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 -34
- 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/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 -20
- package/src/cmd/build/vite/vite-asset-server.ts +25 -15
- package/src/cmd/build/vite/vite-builder.ts +6 -51
- package/src/cmd/build/vite/ws-proxy.ts +126 -0
- package/src/cmd/build/vite-bundler.ts +0 -4
- 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/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/webanalytics-generator.ts +0 -197
- package/src/cmd/build/workbench.ts +0 -58
- package/src/utils/route-migration.ts +0 -757
|
@@ -1,49 +1,328 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Lifecycle Types Generator
|
|
3
3
|
*
|
|
4
|
-
* Generates src/generated/
|
|
4
|
+
* Generates src/generated/state.ts and src/generated/router.ts by analyzing
|
|
5
|
+
* app.ts for a setup() function.
|
|
6
|
+
*
|
|
7
|
+
* Uses TypeScript's type checker to extract the real return type of setup —
|
|
8
|
+
* no AST literal guessing needed.
|
|
9
|
+
*/
|
|
10
|
+
import ts from 'typescript';
|
|
11
|
+
import { join, relative, dirname } from 'node:path';
|
|
12
|
+
import { mkdirSync } from 'node:fs';
|
|
13
|
+
import { StructuredError } from '@agentuity/core';
|
|
14
|
+
import { toForwardSlash } from '../../../utils/normalize-path';
|
|
15
|
+
const RuntimePackageNotFound = StructuredError('RuntimePackageNotFound');
|
|
16
|
+
/**
|
|
17
|
+
* Use the TypeScript type checker to extract the return type of the setup
|
|
18
|
+
* function passed to createApp(). Works with inline setup, exported setup,
|
|
19
|
+
* variable references, async functions — anything TS can resolve.
|
|
20
|
+
*/
|
|
21
|
+
function extractSetupReturnType(appFilePath, logger) {
|
|
22
|
+
const compilerOptions = {
|
|
23
|
+
target: ts.ScriptTarget.ESNext,
|
|
24
|
+
module: ts.ModuleKind.ESNext,
|
|
25
|
+
moduleResolution: ts.ModuleResolutionKind.Bundler,
|
|
26
|
+
strict: true,
|
|
27
|
+
skipLibCheck: true,
|
|
28
|
+
noEmit: true,
|
|
29
|
+
allowJs: true,
|
|
30
|
+
esModuleInterop: true,
|
|
31
|
+
};
|
|
32
|
+
const program = ts.createProgram([appFilePath], compilerOptions);
|
|
33
|
+
const checker = program.getTypeChecker();
|
|
34
|
+
const sourceFile = program.getSourceFile(appFilePath);
|
|
35
|
+
if (!sourceFile) {
|
|
36
|
+
logger.debug('[lifecycle] Could not load source file');
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
let setupType = null;
|
|
40
|
+
function unwrapPromise(type) {
|
|
41
|
+
// Check for Promise by looking at typeArguments on TypeReference
|
|
42
|
+
const typeRef = type;
|
|
43
|
+
if (typeRef.typeArguments && typeRef.typeArguments.length > 0) {
|
|
44
|
+
const symbol = type.getSymbol() ?? type.aliasSymbol;
|
|
45
|
+
if (symbol?.name === 'Promise') {
|
|
46
|
+
return typeRef.typeArguments[0];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return type;
|
|
50
|
+
}
|
|
51
|
+
function extractFromProperty(prop) {
|
|
52
|
+
if (setupType)
|
|
53
|
+
return;
|
|
54
|
+
// Handle: setup: () => { ... } or setup: myFunc
|
|
55
|
+
if (ts.isPropertyAssignment(prop) &&
|
|
56
|
+
ts.isIdentifier(prop.name) &&
|
|
57
|
+
prop.name.text === 'setup') {
|
|
58
|
+
const type = checker.getTypeAtLocation(prop.initializer);
|
|
59
|
+
const callSigs = type.getCallSignatures();
|
|
60
|
+
if (callSigs.length > 0) {
|
|
61
|
+
setupType = unwrapPromise(checker.getReturnTypeOfSignature(callSigs[0]));
|
|
62
|
+
}
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
// Handle shorthand: createApp({ setup })
|
|
66
|
+
if (ts.isShorthandPropertyAssignment(prop) && prop.name.text === 'setup') {
|
|
67
|
+
const type = checker.getTypeAtLocation(prop.name);
|
|
68
|
+
const callSigs = type.getCallSignatures();
|
|
69
|
+
if (callSigs.length > 0) {
|
|
70
|
+
setupType = unwrapPromise(checker.getReturnTypeOfSignature(callSigs[0]));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function visit(node) {
|
|
75
|
+
if (setupType)
|
|
76
|
+
return;
|
|
77
|
+
// Find createApp(...) call — with or without await
|
|
78
|
+
let callExpr;
|
|
79
|
+
if (ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {
|
|
80
|
+
if (node.expression.text === 'createApp')
|
|
81
|
+
callExpr = node;
|
|
82
|
+
}
|
|
83
|
+
else if (ts.isAwaitExpression(node) && ts.isCallExpression(node.expression)) {
|
|
84
|
+
const call = node.expression;
|
|
85
|
+
if (ts.isIdentifier(call.expression) && call.expression.text === 'createApp') {
|
|
86
|
+
callExpr = call;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (callExpr && callExpr.arguments.length > 0) {
|
|
90
|
+
const configArg = callExpr.arguments[0];
|
|
91
|
+
if (configArg && ts.isObjectLiteralExpression(configArg)) {
|
|
92
|
+
for (const prop of configArg.properties) {
|
|
93
|
+
extractFromProperty(prop);
|
|
94
|
+
if (setupType)
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
ts.forEachChild(node, visit);
|
|
100
|
+
}
|
|
101
|
+
visit(sourceFile);
|
|
102
|
+
// Fallback: look for an exported function named `setup` in the file
|
|
103
|
+
// (user may define `export function setup()` without passing it to createApp)
|
|
104
|
+
if (!setupType) {
|
|
105
|
+
for (const stmt of sourceFile.statements) {
|
|
106
|
+
if (ts.isFunctionDeclaration(stmt) &&
|
|
107
|
+
stmt.name?.text === 'setup' &&
|
|
108
|
+
stmt.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword)) {
|
|
109
|
+
const type = checker.getTypeAtLocation(stmt);
|
|
110
|
+
const callSigs = type.getCallSignatures();
|
|
111
|
+
if (callSigs.length > 0) {
|
|
112
|
+
setupType = unwrapPromise(checker.getReturnTypeOfSignature(callSigs[0]));
|
|
113
|
+
}
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
// Handle: export const setup = () => { ... }
|
|
117
|
+
if (ts.isVariableStatement(stmt) &&
|
|
118
|
+
stmt.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword)) {
|
|
119
|
+
for (const decl of stmt.declarationList.declarations) {
|
|
120
|
+
if (ts.isIdentifier(decl.name) && decl.name.text === 'setup' && decl.initializer) {
|
|
121
|
+
const type = checker.getTypeAtLocation(decl.initializer);
|
|
122
|
+
const callSigs = type.getCallSignatures();
|
|
123
|
+
if (callSigs.length > 0) {
|
|
124
|
+
setupType = unwrapPromise(checker.getReturnTypeOfSignature(callSigs[0]));
|
|
125
|
+
}
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (setupType)
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (!setupType) {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
// Print the type as a string — TS gives us the real resolved type
|
|
138
|
+
const typeString = checker.typeToString(setupType, undefined, ts.TypeFormatFlags.NoTruncation | ts.TypeFormatFlags.MultilineObjectLiterals);
|
|
139
|
+
return typeString;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Find the @agentuity/runtime package by walking up the directory tree.
|
|
143
|
+
*/
|
|
144
|
+
async function findRuntimePackage(rootDir, logger) {
|
|
145
|
+
let currentDir = rootDir;
|
|
146
|
+
const searchedPaths = [];
|
|
147
|
+
while (currentDir && currentDir !== '/' && currentDir !== '.') {
|
|
148
|
+
const candidatePath = join(currentDir, 'node_modules', '@agentuity', 'runtime');
|
|
149
|
+
searchedPaths.push(candidatePath);
|
|
150
|
+
if (await Bun.file(join(candidatePath, 'package.json')).exists()) {
|
|
151
|
+
logger.debug(`Found runtime package at: ${candidatePath}`);
|
|
152
|
+
return candidatePath;
|
|
153
|
+
}
|
|
154
|
+
const packagesPath = join(currentDir, 'packages', 'runtime');
|
|
155
|
+
searchedPaths.push(packagesPath);
|
|
156
|
+
if (await Bun.file(join(packagesPath, 'package.json')).exists()) {
|
|
157
|
+
logger.debug(`Found runtime package (source) at: ${packagesPath}`);
|
|
158
|
+
return packagesPath;
|
|
159
|
+
}
|
|
160
|
+
const parent = dirname(currentDir);
|
|
161
|
+
if (parent === currentDir)
|
|
162
|
+
break;
|
|
163
|
+
currentDir = parent;
|
|
164
|
+
}
|
|
165
|
+
throw new RuntimePackageNotFound({
|
|
166
|
+
message: `@agentuity/runtime package not found.\n` +
|
|
167
|
+
`Searched paths:\n${searchedPaths.map((p) => ` - ${p}`).join('\n')}\n` +
|
|
168
|
+
`Make sure dependencies are installed by running 'bun install' or 'npm install'`,
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
function generateStateContent(appStateType) {
|
|
172
|
+
return `// @generated
|
|
173
|
+
// AUTO-GENERATED from app.ts setup() return type
|
|
174
|
+
// This file is auto-generated by the build tool - do not edit manually
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Application state type inferred from your createApp setup function.
|
|
178
|
+
* This type is automatically generated and available throughout your app via ctx.app.
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* \`\`\`typescript
|
|
182
|
+
* // In your agents:
|
|
183
|
+
* const agent = createAgent({
|
|
184
|
+
* handler: async (ctx, input) => {
|
|
185
|
+
* // ctx.app is strongly typed as GeneratedAppState
|
|
186
|
+
* const value = ctx.app; // All properties from your setup return value
|
|
187
|
+
* return 'result';
|
|
188
|
+
* }
|
|
189
|
+
* });
|
|
190
|
+
* \`\`\`
|
|
5
191
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
192
|
+
export type GeneratedAppState = ${appStateType};
|
|
193
|
+
|
|
194
|
+
// Augment the @agentuity/runtime module with AppState
|
|
195
|
+
declare module '@agentuity/runtime' {
|
|
196
|
+
interface AppState extends GeneratedAppState {}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// FOUND AN ERROR IN THIS FILE?
|
|
200
|
+
// Please file an issue at https://github.com/agentuity/sdk/issues
|
|
201
|
+
// or if you know the fix please submit a PR!
|
|
202
|
+
`;
|
|
203
|
+
}
|
|
204
|
+
function generateRouterWrapper(runtimeImportPath) {
|
|
205
|
+
return `// @generated
|
|
206
|
+
// AUTO-GENERATED runtime wrapper
|
|
207
|
+
// This file is auto-generated by the build tool - do not edit manually
|
|
208
|
+
|
|
209
|
+
// Import augmentations file (NOT type-only) to trigger module augmentation
|
|
210
|
+
import type { GeneratedAppState } from './state';
|
|
211
|
+
import './state';
|
|
212
|
+
|
|
213
|
+
// Import from actual package location
|
|
214
|
+
import { createRouter as baseCreateRouter, type Env } from '${runtimeImportPath}/src/index';
|
|
215
|
+
import type { Hono } from 'hono';
|
|
216
|
+
|
|
217
|
+
// Type aliases to avoid repeating the generic parameter
|
|
218
|
+
type AppEnv = Env<GeneratedAppState>;
|
|
219
|
+
type AppRouter = Hono<AppEnv>;
|
|
220
|
+
|
|
8
221
|
/**
|
|
9
|
-
*
|
|
222
|
+
* Creates a Hono router with extended methods for Agentuity-specific routing patterns.
|
|
223
|
+
*
|
|
224
|
+
* @returns Extended Hono router with custom methods and app state typing
|
|
225
|
+
*
|
|
226
|
+
* @example
|
|
227
|
+
* \`\`\`typescript
|
|
228
|
+
* const router = createRouter();
|
|
229
|
+
* router.get('/hello', (c) => c.text('Hello!'));
|
|
230
|
+
* router.get('/db', (c) => {
|
|
231
|
+
* const db = c.var.app; // Your app state from createApp setup
|
|
232
|
+
* return c.json({ connected: true });
|
|
233
|
+
* });
|
|
234
|
+
* \`\`\`
|
|
235
|
+
*/
|
|
236
|
+
export function createRouter(): AppRouter {
|
|
237
|
+
return baseCreateRouter() as unknown as AppRouter;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
// Re-export everything else
|
|
241
|
+
export * from '${runtimeImportPath}/src/index';
|
|
242
|
+
|
|
243
|
+
// FOUND AN ERROR IN THIS FILE?
|
|
244
|
+
// Please file an issue at https://github.com/agentuity/sdk/issues
|
|
245
|
+
// or if you know the fix please submit a PR!
|
|
246
|
+
`;
|
|
247
|
+
}
|
|
248
|
+
async function updateTsconfigPathMapping(rootDir, shouldAdd, logger) {
|
|
249
|
+
const tsconfigPath = join(rootDir, 'tsconfig.json');
|
|
250
|
+
if (!(await Bun.file(tsconfigPath).exists())) {
|
|
251
|
+
logger.debug('No tsconfig.json found, skipping path mapping update');
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
try {
|
|
255
|
+
const tsconfigContent = await Bun.file(tsconfigPath).text();
|
|
256
|
+
const { parseJSONC } = await import('../../../utils/jsonc');
|
|
257
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
258
|
+
const tsconfig = parseJSONC(tsconfigContent);
|
|
259
|
+
const before = JSON.stringify(tsconfig);
|
|
260
|
+
if (!tsconfig.compilerOptions)
|
|
261
|
+
tsconfig.compilerOptions = {};
|
|
262
|
+
if (!tsconfig.compilerOptions.paths)
|
|
263
|
+
tsconfig.compilerOptions.paths = {};
|
|
264
|
+
if (shouldAdd) {
|
|
265
|
+
tsconfig.compilerOptions.paths['@agentuity/runtime'] = ['./src/generated/router.ts'];
|
|
266
|
+
logger.debug('Added @agentuity/runtime path mapping to tsconfig.json');
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
if (tsconfig.compilerOptions.paths['@agentuity/runtime']) {
|
|
270
|
+
delete tsconfig.compilerOptions.paths['@agentuity/runtime'];
|
|
271
|
+
logger.debug('Removed @agentuity/runtime path mapping from tsconfig.json');
|
|
272
|
+
}
|
|
273
|
+
if (Object.keys(tsconfig.compilerOptions.paths).length === 0) {
|
|
274
|
+
delete tsconfig.compilerOptions.paths;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
if (JSON.stringify(tsconfig) === before)
|
|
278
|
+
return;
|
|
279
|
+
await Bun.write(tsconfigPath, JSON.stringify(tsconfig, null, '\t') + '\n');
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
logger.warn('Failed to update tsconfig.json:', error);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Setup lifecycle types by analyzing app.ts for setup() function.
|
|
287
|
+
*
|
|
288
|
+
* Uses TypeScript's type checker to extract the real return type — handles
|
|
289
|
+
* inline setup, exported setup, variable references, async functions, and
|
|
290
|
+
* any other pattern TS can resolve.
|
|
10
291
|
*/
|
|
11
292
|
export async function generateLifecycleTypes(rootDir, srcDir, logger) {
|
|
12
293
|
logger.debug('[lifecycle] Starting lifecycle type generation...');
|
|
13
|
-
logger.debug(`[lifecycle] rootDir: ${rootDir}`);
|
|
14
|
-
logger.debug(`[lifecycle] srcDir: ${srcDir}`);
|
|
15
294
|
const outDir = join(srcDir, 'generated');
|
|
16
|
-
logger.debug(`[lifecycle] outDir: ${outDir}`);
|
|
17
295
|
// Look for app.ts in both root and src directories
|
|
18
296
|
const rootAppFile = join(rootDir, 'app.ts');
|
|
19
297
|
const srcAppFile = join(srcDir, 'app.ts');
|
|
20
298
|
let appFile = '';
|
|
21
299
|
if (await Bun.file(rootAppFile).exists()) {
|
|
22
300
|
appFile = rootAppFile;
|
|
23
|
-
logger.debug(`[lifecycle] Found app.ts at root: ${rootAppFile}`);
|
|
24
301
|
}
|
|
25
302
|
else if (await Bun.file(srcAppFile).exists()) {
|
|
26
303
|
appFile = srcAppFile;
|
|
27
|
-
logger.debug(`[lifecycle] Found app.ts in src: ${srcAppFile}`);
|
|
28
304
|
}
|
|
29
305
|
if (!appFile || !(await Bun.file(appFile).exists())) {
|
|
30
|
-
logger.debug('[lifecycle] No app.ts found
|
|
306
|
+
logger.debug('[lifecycle] No app.ts found');
|
|
31
307
|
return false;
|
|
32
308
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
logger.debug('[lifecycle] generateLifecycleTypesFromAST returned false (no setup found)');
|
|
41
|
-
}
|
|
42
|
-
return result;
|
|
43
|
-
}
|
|
44
|
-
catch (error) {
|
|
45
|
-
logger.error('[lifecycle] Failed to generate lifecycle types:', error);
|
|
309
|
+
// Use TypeScript type checker to extract the setup return type
|
|
310
|
+
const appStateType = extractSetupReturnType(appFile, logger);
|
|
311
|
+
if (!appStateType) {
|
|
312
|
+
logger.debug('[lifecycle] No setup() function found in createApp');
|
|
313
|
+
await updateTsconfigPathMapping(rootDir, false, logger);
|
|
46
314
|
return false;
|
|
47
315
|
}
|
|
316
|
+
logger.debug(`[lifecycle] Extracted setup return type: ${appStateType}`);
|
|
317
|
+
// Generate files
|
|
318
|
+
mkdirSync(outDir, { recursive: true });
|
|
319
|
+
const runtimePkgPath = await findRuntimePackage(rootDir, logger);
|
|
320
|
+
const runtimeImportPath = toForwardSlash(relative(outDir, runtimePkgPath));
|
|
321
|
+
await Bun.write(join(outDir, 'state.ts'), generateStateContent(appStateType));
|
|
322
|
+
logger.debug(`Generated lifecycle types: ${join(outDir, 'state.ts')}`);
|
|
323
|
+
await Bun.write(join(outDir, 'router.ts'), generateRouterWrapper(runtimeImportPath));
|
|
324
|
+
logger.debug(`Generated lifecycle wrapper: ${join(outDir, 'router.ts')}`);
|
|
325
|
+
await updateTsconfigPathMapping(rootDir, true, logger);
|
|
326
|
+
return true;
|
|
48
327
|
}
|
|
49
328
|
//# sourceMappingURL=lifecycle-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-generator.js","sourceRoot":"","sources":["../../../../src/cmd/build/vite/lifecycle-generator.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"lifecycle-generator.js","sourceRoot":"","sources":["../../../../src/cmd/build/vite/lifecycle-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Route Discovery
|
|
2
|
+
* Route Discovery — Explicit Routing Only
|
|
3
3
|
*
|
|
4
|
-
* Discovers routes
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Discovers routes from `createApp({ router })` by importing the router
|
|
5
|
+
* module at build time and reading `router.routes` from the Hono instance.
|
|
6
|
+
*
|
|
7
|
+
* File-based routing (scanning src/api/**) is no longer supported.
|
|
7
8
|
*/
|
|
8
9
|
import type { Logger } from '../../../types';
|
|
9
10
|
import { type AppRouterDetection } from '../app-router-detector';
|
|
@@ -21,49 +22,21 @@ export interface RouteMetadata {
|
|
|
21
22
|
output?: string;
|
|
22
23
|
};
|
|
23
24
|
}
|
|
24
|
-
export interface RouteInfo {
|
|
25
|
-
method: string;
|
|
26
|
-
path: string;
|
|
27
|
-
filename: string;
|
|
28
|
-
hasValidator: boolean;
|
|
29
|
-
routeType: 'api' | 'sms' | 'email' | 'cron' | 'websocket' | 'sse' | 'stream';
|
|
30
|
-
agentVariable?: string;
|
|
31
|
-
agentImportPath?: string;
|
|
32
|
-
agentName?: string;
|
|
33
|
-
agentDescription?: string;
|
|
34
|
-
inputSchemaVariable?: string;
|
|
35
|
-
outputSchemaVariable?: string;
|
|
36
|
-
inputSchemaImportPath?: string;
|
|
37
|
-
inputSchemaImportedName?: string;
|
|
38
|
-
outputSchemaImportPath?: string;
|
|
39
|
-
outputSchemaImportedName?: string;
|
|
40
|
-
inputSchemaCode?: string;
|
|
41
|
-
outputSchemaCode?: string;
|
|
42
|
-
stream?: boolean;
|
|
43
|
-
pathParams?: string[];
|
|
44
|
-
/**
|
|
45
|
-
* When a route is mounted via .route(), its filename is set to the parent file
|
|
46
|
-
* (for dedup filtering). schemaSourceFile preserves the actual file where the
|
|
47
|
-
* route's schema variables are defined/exported, so registry imports resolve correctly.
|
|
48
|
-
*/
|
|
49
|
-
schemaSourceFile?: string;
|
|
50
|
-
}
|
|
51
25
|
/**
|
|
52
26
|
* Extract path parameters from a route path.
|
|
53
27
|
* Matches patterns like :id, :userId, :id?, *path, etc.
|
|
54
28
|
*/
|
|
55
29
|
export declare function extractPathParams(path: string): string[];
|
|
56
30
|
/**
|
|
57
|
-
* Discover all routes
|
|
31
|
+
* Discover all routes from explicit router mounts in createApp({ router }).
|
|
32
|
+
*
|
|
33
|
+
* Imports each router module at build time and reads `router.routes` from
|
|
34
|
+
* the Hono instance to extract method, path, and route type.
|
|
58
35
|
*
|
|
59
|
-
*
|
|
60
|
-
* following the router imports with code-derived mount paths. Otherwise, falls back
|
|
61
|
-
* to scanning src/api/**\/*.ts with filesystem-derived paths.
|
|
36
|
+
* @throws If no explicit router is detected in app.ts
|
|
62
37
|
*/
|
|
63
38
|
export declare function discoverRoutes(srcDir: string, projectId: string, deploymentId: string, logger: Logger): Promise<{
|
|
64
39
|
routes: RouteMetadata[];
|
|
65
|
-
routeInfoList: RouteInfo[];
|
|
66
|
-
/** Whether explicit router was detected (vs file-based fallback) */
|
|
67
40
|
explicitRouter?: AppRouterDetection;
|
|
68
41
|
}>;
|
|
69
42
|
export interface RouteConflict {
|
|
@@ -76,7 +49,7 @@ export interface RouteConflict {
|
|
|
76
49
|
message: string;
|
|
77
50
|
}
|
|
78
51
|
/**
|
|
79
|
-
* Detect conflicts between routes
|
|
52
|
+
* Detect conflicts between routes.
|
|
80
53
|
*/
|
|
81
54
|
export declare function detectRouteConflicts(routes: Array<{
|
|
82
55
|
method: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-discovery.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/route-discovery.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"route-discovery.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/route-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEvF,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;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAWxD;AAmDD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CACnC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC;IACV,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACpC,CAAC,CAmGD;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,CAyBjB"}
|