@agentuity/migrate 3.0.0-alpha.0 → 3.0.0-alpha.1

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.
Files changed (52) hide show
  1. package/bin/migrate.ts +93 -10
  2. package/dist/detect-v3.d.ts +92 -0
  3. package/dist/detect-v3.d.ts.map +1 -0
  4. package/dist/detect-v3.js +675 -0
  5. package/dist/detect-v3.js.map +1 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +4 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/migrate-v3.d.ts +38 -0
  11. package/dist/migrate-v3.d.ts.map +1 -0
  12. package/dist/migrate-v3.js +448 -0
  13. package/dist/migrate-v3.js.map +1 -0
  14. package/dist/report.d.ts +3 -0
  15. package/dist/report.d.ts.map +1 -1
  16. package/dist/report.js +64 -0
  17. package/dist/report.js.map +1 -1
  18. package/dist/transforms/v3/agents.d.ts +33 -0
  19. package/dist/transforms/v3/agents.d.ts.map +1 -0
  20. package/dist/transforms/v3/agents.js +335 -0
  21. package/dist/transforms/v3/agents.js.map +1 -0
  22. package/dist/transforms/v3/dev-setup.d.ts +27 -0
  23. package/dist/transforms/v3/dev-setup.d.ts.map +1 -0
  24. package/dist/transforms/v3/dev-setup.js +103 -0
  25. package/dist/transforms/v3/dev-setup.js.map +1 -0
  26. package/dist/transforms/v3/entry-point.d.ts +23 -0
  27. package/dist/transforms/v3/entry-point.d.ts.map +1 -0
  28. package/dist/transforms/v3/entry-point.js +67 -0
  29. package/dist/transforms/v3/entry-point.js.map +1 -0
  30. package/dist/transforms/v3/package-json.d.ts +28 -0
  31. package/dist/transforms/v3/package-json.d.ts.map +1 -0
  32. package/dist/transforms/v3/package-json.js +151 -0
  33. package/dist/transforms/v3/package-json.js.map +1 -0
  34. package/dist/transforms/v3/routes.d.ts +37 -0
  35. package/dist/transforms/v3/routes.d.ts.map +1 -0
  36. package/dist/transforms/v3/routes.js +146 -0
  37. package/dist/transforms/v3/routes.js.map +1 -0
  38. package/dist/transforms/v3/services.d.ts +19 -0
  39. package/dist/transforms/v3/services.d.ts.map +1 -0
  40. package/dist/transforms/v3/services.js +61 -0
  41. package/dist/transforms/v3/services.js.map +1 -0
  42. package/package.json +4 -4
  43. package/src/detect-v3.ts +867 -0
  44. package/src/index.ts +13 -0
  45. package/src/migrate-v3.ts +539 -0
  46. package/src/report.ts +86 -0
  47. package/src/transforms/v3/agents.ts +434 -0
  48. package/src/transforms/v3/dev-setup.ts +137 -0
  49. package/src/transforms/v3/entry-point.ts +90 -0
  50. package/src/transforms/v3/package-json.ts +183 -0
  51. package/src/transforms/v3/routes.ts +185 -0
  52. package/src/transforms/v3/services.ts +76 -0
package/dist/report.js CHANGED
@@ -156,4 +156,68 @@ export function printChangeSummary(allChanges) {
156
156
  }
157
157
  console.log();
158
158
  }
159
+ // ---------------------------------------------------------------------------
160
+ // V3 report functions
161
+ // ---------------------------------------------------------------------------
162
+ function renderV3Finding(f, index) {
163
+ const label = SEVERITY_LABEL[f.severity];
164
+ const icon = SEVERITY_ICON[f.severity];
165
+ const num = dim(`${String(index + 1).padStart(2, ' ')}.`);
166
+ const file = f.file ? dim(` [${f.file}]`) : '';
167
+ const hint = f.hint ? `\n ${dim('↳ ' + f.hint.replace(/\n/g, '\n '))}` : '';
168
+ return ` ${num} [${label}] ${icon} ${f.message}${file}${hint}`;
169
+ }
170
+ export function printV3Report(detection) {
171
+ const { findings } = detection;
172
+ const autoFindings = findings.filter((f) => f.severity === 'auto');
173
+ const guidedFindings = findings.filter((f) => f.severity === 'guided');
174
+ const manualFindings = findings.filter((f) => f.severity === 'manual');
175
+ console.log(`\n${bold('━━━ Agentuity v2 → v3 Migration Report ━━━')}`);
176
+ console.log(dim(`Project: ${detection.projectDir}`));
177
+ if (findings.length === 0) {
178
+ console.log(`\n${green('✓')} ${bold('No v2 patterns detected!')} ` +
179
+ `This project may already be on v3.\n`);
180
+ return;
181
+ }
182
+ // Summary counts
183
+ console.log(`\n${bold('Summary:')} ` +
184
+ `${green(String(autoFindings.length))} auto-fixable, ` +
185
+ `${yellow(String(guidedFindings.length))} guided, ` +
186
+ `${red(String(manualFindings.length))} manual`);
187
+ // Info about v3
188
+ console.log(`\n${dim('v3 is framework-agnostic: bring your own framework, use @agentuity/hono')}\n` +
189
+ `${dim('middleware for services, and dedicated packages for each service.')}`);
190
+ if (autoFindings.length > 0) {
191
+ console.log(heading('Auto-fixable (will be applied automatically)'));
192
+ autoFindings.forEach((f, i) => console.log(renderV3Finding(f, i)));
193
+ }
194
+ if (guidedFindings.length > 0) {
195
+ console.log(heading('Guided (applied with your review)'));
196
+ guidedFindings.forEach((f, i) => console.log(renderV3Finding(f, i)));
197
+ }
198
+ if (manualFindings.length > 0) {
199
+ console.log(heading('Manual (requires human action — tool will not touch these)'));
200
+ manualFindings.forEach((f, i) => console.log(renderV3Finding(f, i)));
201
+ }
202
+ console.log(`\n${hr()}`);
203
+ console.log(`${dim('Legend:')} ` +
204
+ `[${green(' auto ')}] fully automated ` +
205
+ `[${yellow(' guided ')}] applied + verify ` +
206
+ `[${red(' manual ')}] instructions only`);
207
+ console.log();
208
+ }
209
+ export function printManualSummaryV3(detection) {
210
+ const manualFindings = detection.findings.filter((f) => f.severity === 'manual');
211
+ if (manualFindings.length === 0)
212
+ return;
213
+ console.log(`\n${bold('━━━ Remaining Manual Steps ━━━')}\n`);
214
+ manualFindings.forEach((f, i) => {
215
+ console.log(` ${dim(`${i + 1}.`)} ${red('✗')} ${f.message}`);
216
+ if (f.file)
217
+ console.log(` ${dim(`File: ${f.file}`)}`);
218
+ if (f.hint) {
219
+ console.log(`\n ${f.hint.split('\n').join('\n ')}\n`);
220
+ }
221
+ });
222
+ }
159
223
  //# sourceMappingURL=report.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Transform: createAgent() → plain exported functions
3
+ *
4
+ * For "simple" agents (handler + optional schema only), we:
5
+ * 1. Remove the createAgent() wrapper
6
+ * 2. Extract the handler as a named exported async function
7
+ * 3. Preserve schema validation if present
8
+ * 4. Replace ctx.* service access with imports from services module
9
+ *
10
+ * For "complex" agents, we add a prominent migration comment and leave
11
+ * the code untouched for manual review.
12
+ *
13
+ * We use a combination of regex and AST analysis — regex for the mechanical
14
+ * transforms (preserving formatting), AST for detection (already done in detect-v3).
15
+ */
16
+ import type { AgentFile } from '../../detect-v3';
17
+ export interface AgentTransformResult {
18
+ /** The transformed source, or null if skipped */
19
+ source: string | null;
20
+ /** What was changed */
21
+ changes: string[];
22
+ /** If the agent is too complex for auto-migration */
23
+ manualRequired?: boolean;
24
+ }
25
+ /**
26
+ * Service access patterns to rewrite.
27
+ * Maps ctx.serviceName → serviceName (import from services module).
28
+ */
29
+ /**
30
+ * Transform a simple agent file into a plain exported function.
31
+ */
32
+ export declare function transformAgentFile(source: string, agentInfo: AgentFile, servicesRelativePath: string): AgentTransformResult;
33
+ //# sourceMappingURL=agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../src/transforms/v3/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,WAAW,oBAAoB;IACpC,iDAAiD;IACjD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,uBAAuB;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qDAAqD;IACrD,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAOD;;;GAGG;AAEH;;GAEG;AACH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,MAAM,GAC1B,oBAAoB,CAuEtB"}
@@ -0,0 +1,335 @@
1
+ /**
2
+ * Transform: createAgent() → plain exported functions
3
+ *
4
+ * For "simple" agents (handler + optional schema only), we:
5
+ * 1. Remove the createAgent() wrapper
6
+ * 2. Extract the handler as a named exported async function
7
+ * 3. Preserve schema validation if present
8
+ * 4. Replace ctx.* service access with imports from services module
9
+ *
10
+ * For "complex" agents, we add a prominent migration comment and leave
11
+ * the code untouched for manual review.
12
+ *
13
+ * We use a combination of regex and AST analysis — regex for the mechanical
14
+ * transforms (preserving formatting), AST for detection (already done in detect-v3).
15
+ */
16
+ import ts from 'typescript';
17
+ /**
18
+ * Names we use for the context parameter that should be removed.
19
+ */
20
+ const CTX_PARAM_NAMES = ['ctx', 'context', 'c', '_ctx', '_context', '_c'];
21
+ /**
22
+ * Service access patterns to rewrite.
23
+ * Maps ctx.serviceName → serviceName (import from services module).
24
+ */
25
+ /**
26
+ * Transform a simple agent file into a plain exported function.
27
+ */
28
+ export function transformAgentFile(source, agentInfo, servicesRelativePath) {
29
+ if (agentInfo.complexity === 'complex') {
30
+ return addManualMigrationComment(source, agentInfo);
31
+ }
32
+ const changes = [];
33
+ const sourceFile = ts.createSourceFile(agentInfo.path, source, ts.ScriptTarget.ESNext, true);
34
+ // Find the createAgent() call and extract the handler
35
+ const extracted = extractHandlerFromCreateAgent(sourceFile, source);
36
+ if (!extracted) {
37
+ return {
38
+ source: null,
39
+ changes: ['Could not extract handler from createAgent() — manual review needed'],
40
+ manualRequired: true,
41
+ };
42
+ }
43
+ let output = source;
44
+ // Step 1: Remove the createAgent import
45
+ output = removeCreateAgentImport(output);
46
+ changes.push('Removed createAgent import from @agentuity/runtime');
47
+ // Step 2: Add services import if needed
48
+ if (agentInfo.ctxServices.length > 0) {
49
+ const serviceImports = agentInfo.ctxServices.filter((s) => s !== 'logger');
50
+ const needsLogger = agentInfo.ctxServices.includes('logger');
51
+ const importLines = [];
52
+ if (serviceImports.length > 0) {
53
+ importLines.push(`import { ${serviceImports.join(', ')} } from '${servicesRelativePath}';`);
54
+ }
55
+ if (needsLogger) {
56
+ importLines.push(`import { ${serviceImports.length > 0 ? '' : ''}logger } from '${servicesRelativePath}';`);
57
+ }
58
+ // Consolidate into one import if both
59
+ if (serviceImports.length > 0 || needsLogger) {
60
+ const allImports = [...agentInfo.ctxServices];
61
+ const importLine = `import { ${allImports.join(', ')} } from '${servicesRelativePath}';`;
62
+ // Insert after last import line
63
+ output = insertAfterImports(output, importLine);
64
+ changes.push(`Added services import: ${allImports.join(', ')}`);
65
+ }
66
+ }
67
+ // Step 3: Replace the entire createAgent() export with a plain function
68
+ output = replaceCreateAgentWithFunction(output, agentInfo, extracted);
69
+ changes.push(`Converted agent "${agentInfo.name}" to plain exported async function`);
70
+ // Step 4: Replace ctx.service with direct service references
71
+ for (const service of agentInfo.ctxServices) {
72
+ for (const ctxName of CTX_PARAM_NAMES) {
73
+ const pattern = new RegExp(`${ctxName}\\.${service}\\b`, 'g');
74
+ if (pattern.test(output)) {
75
+ output = output.replace(pattern, service);
76
+ changes.push(`Replaced ${ctxName}.${service} → ${service}`);
77
+ }
78
+ }
79
+ }
80
+ // Step 5: Clean up — remove ctx/context parameter references that are now unused
81
+ // (Don't do this automatically — leave for the user to clean up)
82
+ return { source: output, changes };
83
+ }
84
+ /**
85
+ * For complex agents, add a migration comment block.
86
+ */
87
+ function addManualMigrationComment(source, agentInfo) {
88
+ const comment = `// ⚠️ MIGRATION REQUIRED — createAgent() removed in v3\n` +
89
+ `//\n` +
90
+ `// This agent ("${agentInfo.name}") requires manual migration because:\n` +
91
+ `// ${agentInfo.complexityReason}\n` +
92
+ `//\n` +
93
+ `// To migrate:\n` +
94
+ `// 1. Extract the handler into a plain exported async function\n` +
95
+ `// 2. Move setup() logic to module-level initialization\n` +
96
+ `// 3. Replace ctx.kv/ctx.vector/etc. with imports from '../services'\n` +
97
+ `// 4. Replace ctx.config with direct configuration\n` +
98
+ `// 5. Remove event listeners (use your own event patterns)\n` +
99
+ `// 6. Remove the createAgent() import and wrapper\n` +
100
+ `//\n` +
101
+ `// Example after migration:\n` +
102
+ `// import { kv } from '../services';\n` +
103
+ `//\n` +
104
+ `// export async function ${toFunctionName(agentInfo.name)}(input: YourInputType) {\n` +
105
+ `// const data = await kv.get('namespace', 'key');\n` +
106
+ `// return { result: data };\n` +
107
+ `// }\n`;
108
+ return {
109
+ source: comment + '\n' + source,
110
+ changes: [`Added migration comment for complex agent "${agentInfo.name}"`],
111
+ manualRequired: true,
112
+ };
113
+ }
114
+ /**
115
+ * Extract the handler function body and parameters from createAgent().
116
+ */
117
+ function extractHandlerFromCreateAgent(sourceFile, _source) {
118
+ let result = null;
119
+ function visit(node) {
120
+ if (result)
121
+ return;
122
+ if (ts.isCallExpression(node) &&
123
+ ts.isIdentifier(node.expression) &&
124
+ node.expression.text === 'createAgent') {
125
+ const configArg = node.arguments[1];
126
+ if (!configArg || !ts.isObjectLiteralExpression(configArg))
127
+ return;
128
+ let handlerNode;
129
+ let schemaNode;
130
+ for (const prop of configArg.properties) {
131
+ if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) {
132
+ if (prop.name.text === 'handler') {
133
+ handlerNode = prop.initializer;
134
+ }
135
+ if (prop.name.text === 'schema') {
136
+ schemaNode = prop.initializer;
137
+ }
138
+ }
139
+ if (ts.isMethodDeclaration(prop) && ts.isIdentifier(prop.name)) {
140
+ if (prop.name.text === 'handler') {
141
+ handlerNode = prop;
142
+ }
143
+ }
144
+ }
145
+ if (!handlerNode)
146
+ return;
147
+ // Extract handler params and body
148
+ let params;
149
+ let body;
150
+ if (ts.isArrowFunction(handlerNode) || ts.isFunctionExpression(handlerNode)) {
151
+ params = handlerNode.parameters;
152
+ body = handlerNode.body;
153
+ }
154
+ else if (ts.isMethodDeclaration(handlerNode)) {
155
+ params = handlerNode.parameters;
156
+ body = handlerNode.body;
157
+ }
158
+ if (!body)
159
+ return;
160
+ // Get parameter text (skip ctx/context parameter, keep input)
161
+ const paramTexts = [];
162
+ if (params) {
163
+ for (let i = 0; i < params.length; i++) {
164
+ const param = params[i];
165
+ if (!param)
166
+ continue;
167
+ const paramName = param.name.getText(sourceFile);
168
+ // Skip the first param if it's ctx/context (agent context)
169
+ if (i === 0 && CTX_PARAM_NAMES.includes(paramName))
170
+ continue;
171
+ paramTexts.push(param.getText(sourceFile));
172
+ }
173
+ }
174
+ // Get body text
175
+ const bodyText = body.getText(sourceFile);
176
+ // Get schema text if present
177
+ const schemaText = schemaNode?.getText(sourceFile);
178
+ result = {
179
+ handlerParams: paramTexts.join(', '),
180
+ handlerBody: bodyText,
181
+ hasSchema: !!schemaNode,
182
+ schemaText,
183
+ };
184
+ }
185
+ ts.forEachChild(node, visit);
186
+ }
187
+ visit(sourceFile);
188
+ return result;
189
+ }
190
+ /**
191
+ * Remove `import { createAgent } from '@agentuity/runtime'` (and any other
192
+ * named imports from that module).
193
+ */
194
+ function removeCreateAgentImport(source) {
195
+ // Remove the entire @agentuity/runtime import line
196
+ // (there shouldn't be other useful imports from runtime in v3)
197
+ return source.replace(/import\s*\{[^}]*\}\s*from\s*['"]@agentuity\/runtime['"]\s*;?\s*\n?/g, '');
198
+ }
199
+ /**
200
+ * Insert an import line after the last existing import declaration.
201
+ * Uses AST to correctly handle multi-line imports.
202
+ */
203
+ function insertAfterImports(source, importLine) {
204
+ const sf = ts.createSourceFile('temp.ts', source, ts.ScriptTarget.ESNext, true);
205
+ let lastImportEnd = -1;
206
+ for (const stmt of sf.statements) {
207
+ if (ts.isImportDeclaration(stmt)) {
208
+ lastImportEnd = stmt.getEnd();
209
+ }
210
+ }
211
+ if (lastImportEnd >= 0) {
212
+ return (source.substring(0, lastImportEnd) + '\n' + importLine + source.substring(lastImportEnd));
213
+ }
214
+ // No imports — add at the top
215
+ return importLine + '\n' + source;
216
+ }
217
+ /**
218
+ * Replace the createAgent() call with a plain exported async function.
219
+ *
220
+ * Uses AST node positions for precise replacement instead of regex
221
+ * (which can't handle nested braces in the config object).
222
+ */
223
+ function replaceCreateAgentWithFunction(source, agentInfo, extracted) {
224
+ const funcName = toFunctionName(agentInfo.name);
225
+ // Build the function signature
226
+ const funcSignature = `export async function ${funcName}(${extracted.handlerParams})`;
227
+ // Build the body
228
+ let bodyText = extracted.handlerBody;
229
+ // If the body is already a block { ... }, use it directly
230
+ // If it's a single expression (arrow function body), wrap it
231
+ if (!bodyText.trimStart().startsWith('{')) {
232
+ bodyText = `{\n\treturn ${bodyText};\n}`;
233
+ }
234
+ // Add schema validation at the top of the function body if schema was present
235
+ let schemaComment = '';
236
+ if (extracted.hasSchema && extracted.schemaText) {
237
+ schemaComment =
238
+ '\n// TODO: Schema validation was previously handled by createAgent().\n' +
239
+ '// The original schema definition was:\n' +
240
+ `// schema: ${extracted.schemaText.split('\n').join('\n// ')}\n` +
241
+ '// Consider using zod or @agentuity/schema for input validation.\n';
242
+ }
243
+ const replacement = schemaComment + funcSignature + ' ' + bodyText;
244
+ // Use AST to find the exact range of the createAgent() statement
245
+ const sourceFile = ts.createSourceFile(agentInfo.path, source, ts.ScriptTarget.ESNext, true);
246
+ let createAgentStart = -1;
247
+ let createAgentEnd = -1;
248
+ let exportDefaultVarName = null;
249
+ let isDirectExportDefault = false;
250
+ for (const stmt of sourceFile.statements) {
251
+ // Pattern 1: export default createAgent('name', { ... })
252
+ if (ts.isExportAssignment(stmt) && !stmt.isExportEquals) {
253
+ const expr = stmt.expression;
254
+ if (ts.isCallExpression(expr) &&
255
+ ts.isIdentifier(expr.expression) &&
256
+ expr.expression.text === 'createAgent') {
257
+ createAgentStart = stmt.getStart(sourceFile);
258
+ createAgentEnd = stmt.getEnd();
259
+ isDirectExportDefault = true;
260
+ break;
261
+ }
262
+ }
263
+ // Pattern 2: const agent = createAgent('name', { ... })
264
+ if (ts.isVariableStatement(stmt)) {
265
+ const declarations = stmt.declarationList.declarations;
266
+ if (declarations.length === 1) {
267
+ const decl = declarations[0];
268
+ if (decl?.initializer) {
269
+ let callExpr;
270
+ if (ts.isCallExpression(decl.initializer) &&
271
+ ts.isIdentifier(decl.initializer.expression) &&
272
+ decl.initializer.expression.text === 'createAgent') {
273
+ callExpr = decl.initializer;
274
+ }
275
+ else if (ts.isAwaitExpression(decl.initializer) &&
276
+ ts.isCallExpression(decl.initializer.expression) &&
277
+ ts.isIdentifier(decl.initializer.expression.expression) &&
278
+ decl.initializer.expression.expression.text === 'createAgent') {
279
+ callExpr = decl.initializer.expression;
280
+ }
281
+ if (callExpr && ts.isIdentifier(decl.name)) {
282
+ exportDefaultVarName = decl.name.text;
283
+ createAgentStart = stmt.getStart(sourceFile);
284
+ createAgentEnd = stmt.getEnd();
285
+ break;
286
+ }
287
+ }
288
+ }
289
+ }
290
+ }
291
+ if (createAgentStart === -1) {
292
+ // Couldn't find the createAgent statement — return source unchanged
293
+ return source;
294
+ }
295
+ // Replace the createAgent statement with the function
296
+ let result = source.substring(0, createAgentStart) + replacement + source.substring(createAgentEnd);
297
+ // Handle the export default
298
+ if (isDirectExportDefault) {
299
+ // The export default was part of the statement we replaced,
300
+ // so add a separate export default
301
+ result += `\n\nexport default ${funcName};\n`;
302
+ }
303
+ else if (exportDefaultVarName) {
304
+ // Replace `export default varName` with `export default funcName`
305
+ result = result.replace(new RegExp(`export\\s+default\\s+${exportDefaultVarName}\\s*;?`), `export default ${funcName};`);
306
+ }
307
+ return result;
308
+ }
309
+ /**
310
+ * Convert kebab-case or snake_case agent name to camelCase function name.
311
+ */
312
+ /** Service names that could clash with function names */
313
+ const RESERVED_SERVICE_NAMES = new Set([
314
+ 'kv',
315
+ 'vector',
316
+ 'stream',
317
+ 'queue',
318
+ 'email',
319
+ 'task',
320
+ 'schedule',
321
+ 'sandbox',
322
+ 'logger',
323
+ ]);
324
+ /**
325
+ * Convert agent name to a valid, non-clashing function name.
326
+ * Appends 'Handler' suffix if the name would clash with a service import.
327
+ */
328
+ function toFunctionName(name) {
329
+ const camel = name.replace(/[-_]([a-z])/g, (_, c) => c.toUpperCase());
330
+ if (RESERVED_SERVICE_NAMES.has(camel)) {
331
+ return camel + 'Handler';
332
+ }
333
+ return camel;
334
+ }
335
+ //# sourceMappingURL=agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../../src/transforms/v3/agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Transform: dev setup for Hono + SPA projects.
3
+ *
4
+ * When a project has both a Hono backend (src/index.ts) and a Vite SPA
5
+ * (src/web/), we need to set up a dev workflow that runs both:
6
+ *
7
+ * 1. Add a Vite proxy config so /api requests go to the Hono backend
8
+ * 2. Set up dev scripts to run both servers concurrently
9
+ *
10
+ * In production, the buildpack handles this (static server + Hono backend).
11
+ * In dev, we use Vite's built-in proxy to keep it a single-port experience.
12
+ */
13
+ export interface DevSetupResult {
14
+ /** Patched vite.config.ts content, or null if no changes */
15
+ viteConfig: string | null;
16
+ /** Changes made to vite.config.ts */
17
+ viteChanges: string[];
18
+ /** dev script value for package.json */
19
+ devScript: string;
20
+ /** server:api script value for package.json */
21
+ serverScript: string;
22
+ }
23
+ /**
24
+ * Generate dev setup for a Hono + Vite SPA project.
25
+ */
26
+ export declare function generateDevSetup(viteConfigSource: string | null): DevSetupResult;
27
+ //# sourceMappingURL=dev-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-setup.d.ts","sourceRoot":"","sources":["../../../src/transforms/v3/dev-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,MAAM,WAAW,cAAc;IAC9B,4DAA4D;IAC5D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,qCAAqC;IACrC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,CAiChF"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Transform: dev setup for Hono + SPA projects.
3
+ *
4
+ * When a project has both a Hono backend (src/index.ts) and a Vite SPA
5
+ * (src/web/), we need to set up a dev workflow that runs both:
6
+ *
7
+ * 1. Add a Vite proxy config so /api requests go to the Hono backend
8
+ * 2. Set up dev scripts to run both servers concurrently
9
+ *
10
+ * In production, the buildpack handles this (static server + Hono backend).
11
+ * In dev, we use Vite's built-in proxy to keep it a single-port experience.
12
+ */
13
+ import ts from 'typescript';
14
+ const API_PORT = 3001;
15
+ /**
16
+ * Generate dev setup for a Hono + Vite SPA project.
17
+ */
18
+ export function generateDevSetup(viteConfigSource) {
19
+ const serverScript = `PORT=${API_PORT} bun --hot src/index.ts`;
20
+ const devScript = `bun run server:api & vite dev`;
21
+ if (!viteConfigSource) {
22
+ // No vite.config.ts — just return scripts, no vite changes
23
+ return {
24
+ viteConfig: null,
25
+ viteChanges: [],
26
+ devScript: serverScript, // No SPA, just run the server
27
+ serverScript,
28
+ };
29
+ }
30
+ // Check if proxy is already configured
31
+ if (viteConfigSource.includes('proxy')) {
32
+ return {
33
+ viteConfig: null,
34
+ viteChanges: ['Vite proxy already configured — skipped'],
35
+ devScript,
36
+ serverScript,
37
+ };
38
+ }
39
+ // Add server.proxy to vite.config.ts using AST to find the right insertion point
40
+ const patched = addViteProxy(viteConfigSource);
41
+ return {
42
+ viteConfig: patched.source,
43
+ viteChanges: patched.changes,
44
+ devScript,
45
+ serverScript,
46
+ };
47
+ }
48
+ /**
49
+ * Add server.proxy configuration to vite.config.ts.
50
+ *
51
+ * Finds the defineConfig() call and injects a `server` property with proxy config.
52
+ */
53
+ function addViteProxy(source) {
54
+ const changes = [];
55
+ const proxyConfig = `\tserver: {\n` +
56
+ `\t\tproxy: {\n` +
57
+ `\t\t\t'/api': {\n` +
58
+ `\t\t\t\ttarget: 'http://localhost:${API_PORT}',\n` +
59
+ `\t\t\t\tchangeOrigin: true,\n` +
60
+ `\t\t\t},\n` +
61
+ `\t\t},\n` +
62
+ `\t},`;
63
+ const sf = ts.createSourceFile('vite.config.ts', source, ts.ScriptTarget.ESNext, true);
64
+ // Find the defineConfig() call's object literal argument
65
+ let configObjectEnd = -1;
66
+ function visit(node) {
67
+ if (configObjectEnd >= 0)
68
+ return;
69
+ if (ts.isCallExpression(node) &&
70
+ ts.isIdentifier(node.expression) &&
71
+ node.expression.text === 'defineConfig') {
72
+ const arg = node.arguments[0];
73
+ if (arg && ts.isObjectLiteralExpression(arg)) {
74
+ // Insert before the closing brace of the config object
75
+ configObjectEnd = arg.getEnd() - 1; // Position of `}`
76
+ }
77
+ }
78
+ ts.forEachChild(node, visit);
79
+ }
80
+ visit(sf);
81
+ if (configObjectEnd >= 0) {
82
+ // Insert the proxy config before the closing `}` of defineConfig({...})
83
+ const before = source.substring(0, configObjectEnd);
84
+ const after = source.substring(configObjectEnd);
85
+ // Check if there's already content (need a comma)
86
+ const trimmedBefore = before.trimEnd();
87
+ const needsComma = trimmedBefore.endsWith(',') || trimmedBefore.endsWith('{') ? '' : ',';
88
+ const result = `${before}${needsComma}\n${proxyConfig}\n${after}`;
89
+ changes.push(`Added server.proxy config: /api → http://localhost:${API_PORT}`);
90
+ return { source: result, changes };
91
+ }
92
+ // Fallback: couldn't find defineConfig — append a comment
93
+ const fallback = source +
94
+ '\n\n// TODO: Add Vite proxy for dev mode:\n' +
95
+ '// server: {\n' +
96
+ '// proxy: {\n' +
97
+ `// '/api': { target: 'http://localhost:${API_PORT}', changeOrigin: true },\n` +
98
+ '// },\n' +
99
+ '// },\n';
100
+ changes.push('Could not auto-patch vite.config.ts — added proxy config as comment');
101
+ return { source: fallback, changes };
102
+ }
103
+ //# sourceMappingURL=dev-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-setup.js","sourceRoot":"","sources":["../../../src/transforms/v3/dev-setup.ts"],"names":[],"mappings":"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"}