@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.
- package/bin/migrate.ts +93 -10
- package/dist/detect-v3.d.ts +92 -0
- package/dist/detect-v3.d.ts.map +1 -0
- package/dist/detect-v3.js +675 -0
- package/dist/detect-v3.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/migrate-v3.d.ts +38 -0
- package/dist/migrate-v3.d.ts.map +1 -0
- package/dist/migrate-v3.js +448 -0
- package/dist/migrate-v3.js.map +1 -0
- package/dist/report.d.ts +3 -0
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +64 -0
- package/dist/report.js.map +1 -1
- package/dist/transforms/v3/agents.d.ts +33 -0
- package/dist/transforms/v3/agents.d.ts.map +1 -0
- package/dist/transforms/v3/agents.js +335 -0
- package/dist/transforms/v3/agents.js.map +1 -0
- package/dist/transforms/v3/dev-setup.d.ts +27 -0
- package/dist/transforms/v3/dev-setup.d.ts.map +1 -0
- package/dist/transforms/v3/dev-setup.js +103 -0
- package/dist/transforms/v3/dev-setup.js.map +1 -0
- package/dist/transforms/v3/entry-point.d.ts +23 -0
- package/dist/transforms/v3/entry-point.d.ts.map +1 -0
- package/dist/transforms/v3/entry-point.js +67 -0
- package/dist/transforms/v3/entry-point.js.map +1 -0
- package/dist/transforms/v3/package-json.d.ts +28 -0
- package/dist/transforms/v3/package-json.d.ts.map +1 -0
- package/dist/transforms/v3/package-json.js +151 -0
- package/dist/transforms/v3/package-json.js.map +1 -0
- package/dist/transforms/v3/routes.d.ts +37 -0
- package/dist/transforms/v3/routes.d.ts.map +1 -0
- package/dist/transforms/v3/routes.js +146 -0
- package/dist/transforms/v3/routes.js.map +1 -0
- package/dist/transforms/v3/services.d.ts +19 -0
- package/dist/transforms/v3/services.d.ts.map +1 -0
- package/dist/transforms/v3/services.js +61 -0
- package/dist/transforms/v3/services.js.map +1 -0
- package/package.json +4 -4
- package/src/detect-v3.ts +867 -0
- package/src/index.ts +13 -0
- package/src/migrate-v3.ts +539 -0
- package/src/report.ts +86 -0
- package/src/transforms/v3/agents.ts +434 -0
- package/src/transforms/v3/dev-setup.ts +137 -0
- package/src/transforms/v3/entry-point.ts +90 -0
- package/src/transforms/v3/package-json.ts +183 -0
- package/src/transforms/v3/routes.ts +185 -0
- package/src/transforms/v3/services.ts +76 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transform: app.ts → src/index.ts
|
|
3
|
+
*
|
|
4
|
+
* Converts a v2 createApp()-based entry point into a plain Hono application
|
|
5
|
+
* with agentuity() middleware.
|
|
6
|
+
*
|
|
7
|
+
* Strategy: rather than doing complex AST surgery on the user's file, we
|
|
8
|
+
* generate a clean src/index.ts from the detection data and leave the old
|
|
9
|
+
* app.ts intact (caller deletes it after confirming). This avoids edge cases
|
|
10
|
+
* with custom formatting and gives users a clean starting point.
|
|
11
|
+
*/
|
|
12
|
+
import type { V3DetectionResult } from '../../detect-v3';
|
|
13
|
+
export interface EntryPointTransformResult {
|
|
14
|
+
/** Generated source for src/index.ts, or null if skipped */
|
|
15
|
+
source: string | null;
|
|
16
|
+
/** What was changed */
|
|
17
|
+
changes: string[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Generate a new src/index.ts from the detection result.
|
|
21
|
+
*/
|
|
22
|
+
export declare function generateEntryPoint(detection: V3DetectionResult): EntryPointTransformResult;
|
|
23
|
+
//# sourceMappingURL=entry-point.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry-point.d.ts","sourceRoot":"","sources":["../../../src/transforms/v3/entry-point.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,WAAW,yBAAyB;IACzC,4DAA4D;IAC5D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,uBAAuB;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,yBAAyB,CAiE1F"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transform: app.ts → src/index.ts
|
|
3
|
+
*
|
|
4
|
+
* Converts a v2 createApp()-based entry point into a plain Hono application
|
|
5
|
+
* with agentuity() middleware.
|
|
6
|
+
*
|
|
7
|
+
* Strategy: rather than doing complex AST surgery on the user's file, we
|
|
8
|
+
* generate a clean src/index.ts from the detection data and leave the old
|
|
9
|
+
* app.ts intact (caller deletes it after confirming). This avoids edge cases
|
|
10
|
+
* with custom formatting and gives users a clean starting point.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Generate a new src/index.ts from the detection result.
|
|
14
|
+
*/
|
|
15
|
+
export function generateEntryPoint(detection) {
|
|
16
|
+
if (!detection.hasCreateApp) {
|
|
17
|
+
return { source: null, changes: [] };
|
|
18
|
+
}
|
|
19
|
+
const changes = [];
|
|
20
|
+
const imports = [];
|
|
21
|
+
const middlewares = [];
|
|
22
|
+
const routes = [];
|
|
23
|
+
// Core imports
|
|
24
|
+
imports.push("import { Hono } from 'hono';");
|
|
25
|
+
imports.push("import { agentuity } from '@agentuity/hono';");
|
|
26
|
+
// Always add agentuity middleware
|
|
27
|
+
middlewares.push("app.use('*', agentuity());");
|
|
28
|
+
changes.push('Added agentuity() middleware (telemetry + services)');
|
|
29
|
+
// CORS — if the user had cors config in createApp()
|
|
30
|
+
if (detection.createAppProps.includes('cors')) {
|
|
31
|
+
imports.push("import { cors } from 'hono/cors';");
|
|
32
|
+
middlewares.push('// TODO: Configure CORS options — the v2 sameOrigin option is not available in hono/cors.\n' +
|
|
33
|
+
'// See: https://hono.dev/docs/middleware/builtin/cors\n' +
|
|
34
|
+
"app.use('*', cors());");
|
|
35
|
+
changes.push('Added cors() middleware (review config — v2 sameOrigin not available)');
|
|
36
|
+
}
|
|
37
|
+
// Router mount — check if there was a router in createApp
|
|
38
|
+
if (detection.createAppProps.includes('router')) {
|
|
39
|
+
// Try to figure out the router path from the original app.ts
|
|
40
|
+
// Default to /api which is the v2 convention
|
|
41
|
+
imports.push("import router from './api';");
|
|
42
|
+
routes.push("app.route('/api', router);");
|
|
43
|
+
changes.push('Mounted API router at /api');
|
|
44
|
+
}
|
|
45
|
+
// Build the file
|
|
46
|
+
const lines = [];
|
|
47
|
+
lines.push(...imports);
|
|
48
|
+
lines.push('');
|
|
49
|
+
lines.push('const app = new Hono();');
|
|
50
|
+
lines.push('');
|
|
51
|
+
if (middlewares.length > 0) {
|
|
52
|
+
lines.push(...middlewares);
|
|
53
|
+
lines.push('');
|
|
54
|
+
}
|
|
55
|
+
if (routes.length > 0) {
|
|
56
|
+
lines.push(...routes);
|
|
57
|
+
lines.push('');
|
|
58
|
+
}
|
|
59
|
+
lines.push('export default app;');
|
|
60
|
+
lines.push('');
|
|
61
|
+
changes.push('Generated src/index.ts with Hono app (replaces app.ts + createApp)');
|
|
62
|
+
return {
|
|
63
|
+
source: lines.join('\n'),
|
|
64
|
+
changes,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=entry-point.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry-point.js","sourceRoot":"","sources":["../../../src/transforms/v3/entry-point.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAA4B;IAC9D,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,eAAe;IACf,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAE7D,kCAAkC;IAClC,WAAW,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IAEpE,oDAAoD;IACpD,IAAI,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAClD,WAAW,CAAC,IAAI,CACf,6FAA6F;YAC5F,yDAAyD;YACzD,uBAAuB,CACxB,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;IACvF,CAAC;IAED,0DAA0D;IAC1D,IAAI,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjD,6DAA6D;QAC7D,6CAA6C;QAC7C,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;IAED,iBAAiB;IACjB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IAEnF,OAAO;QACN,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACxB,OAAO;KACP,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transform: package.json for v2 → v3 migration.
|
|
3
|
+
*
|
|
4
|
+
* - Removes @agentuity/runtime
|
|
5
|
+
* - Adds hono and @agentuity/hono
|
|
6
|
+
* - Adds individual service packages based on detected usage
|
|
7
|
+
* - Bumps all @agentuity/* packages to ^3.0.0
|
|
8
|
+
* - Updates start script if it references old entry point
|
|
9
|
+
*/
|
|
10
|
+
import { type V3OutdatedPackage } from '../../detect-v3';
|
|
11
|
+
export interface V3PackageJsonResult {
|
|
12
|
+
/** Transformed package.json content, or null if no changes */
|
|
13
|
+
content: string | null;
|
|
14
|
+
/** Description of each change */
|
|
15
|
+
changes: string[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Transform package.json for v3 migration.
|
|
19
|
+
*/
|
|
20
|
+
export declare function transformPackageJsonV3(source: string, outdatedPackages: V3OutdatedPackage[], servicesUsed: string[], options?: {
|
|
21
|
+
/** Whether the project had @agentuity/runtime */
|
|
22
|
+
removeRuntime?: boolean;
|
|
23
|
+
/** Whether to remove @agentuity/react */
|
|
24
|
+
removeReact?: boolean;
|
|
25
|
+
/** Dev scripts to add (from dev-setup transform) */
|
|
26
|
+
devScripts?: Record<string, string>;
|
|
27
|
+
}): V3PackageJsonResult;
|
|
28
|
+
//# sourceMappingURL=package-json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../../src/transforms/v3/package-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAE9E,MAAM,WAAW,mBAAmB;IACnC,8DAA8D;IAC9D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iCAAiC;IACjC,OAAO,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,iBAAiB,EAAE,EACrC,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,CAAC,EAAE;IACT,iDAAiD;IACjD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yCAAyC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC,GACC,mBAAmB,CAuIrB"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transform: package.json for v2 → v3 migration.
|
|
3
|
+
*
|
|
4
|
+
* - Removes @agentuity/runtime
|
|
5
|
+
* - Adds hono and @agentuity/hono
|
|
6
|
+
* - Adds individual service packages based on detected usage
|
|
7
|
+
* - Bumps all @agentuity/* packages to ^3.0.0
|
|
8
|
+
* - Updates start script if it references old entry point
|
|
9
|
+
*/
|
|
10
|
+
import { SERVICE_PACKAGE_MAP } from '../../detect-v3';
|
|
11
|
+
/**
|
|
12
|
+
* Transform package.json for v3 migration.
|
|
13
|
+
*/
|
|
14
|
+
export function transformPackageJsonV3(source, outdatedPackages, servicesUsed, options) {
|
|
15
|
+
const changes = [];
|
|
16
|
+
let pkg;
|
|
17
|
+
try {
|
|
18
|
+
pkg = JSON.parse(source);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return { content: null, changes: ['Failed to parse package.json'] };
|
|
22
|
+
}
|
|
23
|
+
const deps = (pkg.dependencies ?? {});
|
|
24
|
+
const devDeps = (pkg.devDependencies ?? {});
|
|
25
|
+
// ── 1. Remove @agentuity/runtime ──────────────────────────────────────
|
|
26
|
+
if (options?.removeRuntime && deps['@agentuity/runtime']) {
|
|
27
|
+
delete deps['@agentuity/runtime'];
|
|
28
|
+
changes.push('Removed @agentuity/runtime from dependencies');
|
|
29
|
+
}
|
|
30
|
+
if (options?.removeRuntime && devDeps['@agentuity/runtime']) {
|
|
31
|
+
delete devDeps['@agentuity/runtime'];
|
|
32
|
+
changes.push('Removed @agentuity/runtime from devDependencies');
|
|
33
|
+
}
|
|
34
|
+
// ── 2. Add hono ───────────────────────────────────────────────────────
|
|
35
|
+
if (!deps['hono']) {
|
|
36
|
+
deps['hono'] = '^4.0.0';
|
|
37
|
+
changes.push('Added hono@^4.0.0 to dependencies');
|
|
38
|
+
}
|
|
39
|
+
// ── 3. Add @agentuity/hono ────────────────────────────────────────────
|
|
40
|
+
if (!deps['@agentuity/hono']) {
|
|
41
|
+
deps['@agentuity/hono'] = '^3.0.0';
|
|
42
|
+
changes.push('Added @agentuity/hono@^3.0.0 to dependencies');
|
|
43
|
+
}
|
|
44
|
+
// ── 4. Add individual service packages based on usage ─────────────────
|
|
45
|
+
for (const service of servicesUsed) {
|
|
46
|
+
if (service === 'logger') {
|
|
47
|
+
// Logger comes from telemetry
|
|
48
|
+
if (!deps['@agentuity/telemetry']) {
|
|
49
|
+
deps['@agentuity/telemetry'] = '^3.0.0';
|
|
50
|
+
changes.push('Added @agentuity/telemetry@^3.0.0 (for logger)');
|
|
51
|
+
}
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const mapping = SERVICE_PACKAGE_MAP[service];
|
|
55
|
+
if (!mapping)
|
|
56
|
+
continue;
|
|
57
|
+
if (!deps[mapping.pkg]) {
|
|
58
|
+
deps[mapping.pkg] = '^3.0.0';
|
|
59
|
+
changes.push(`Added ${mapping.pkg}@^3.0.0 (${service} service detected in use)`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// ── 5. Bump existing @agentuity/* packages to ^3.0.0 ──────────────────
|
|
63
|
+
for (const outdated of outdatedPackages) {
|
|
64
|
+
const section = outdated.section === 'dependencies' ? deps : devDeps;
|
|
65
|
+
if (section[outdated.name]) {
|
|
66
|
+
section[outdated.name] = '^3.0.0';
|
|
67
|
+
changes.push(`Updated ${outdated.name} ${outdated.currentVersion} → ^3.0.0`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// ── 6. Remove @agentuity/react if requested ───────────────────────────
|
|
71
|
+
if (options?.removeReact) {
|
|
72
|
+
if (deps['@agentuity/react']) {
|
|
73
|
+
delete deps['@agentuity/react'];
|
|
74
|
+
changes.push('Removed @agentuity/react from dependencies (deprecated in v3)');
|
|
75
|
+
}
|
|
76
|
+
if (devDeps['@agentuity/react']) {
|
|
77
|
+
delete devDeps['@agentuity/react'];
|
|
78
|
+
changes.push('Removed @agentuity/react from devDependencies (deprecated in v3)');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// ── 7. Update scripts for new entry point ─────────────────────────
|
|
82
|
+
const scripts = (pkg.scripts ?? {});
|
|
83
|
+
// Replace app.ts references in existing scripts
|
|
84
|
+
if (scripts.start && scripts.start.includes('app.ts')) {
|
|
85
|
+
const oldStart = scripts.start;
|
|
86
|
+
scripts.start = scripts.start.replace('app.ts', 'src/index.ts');
|
|
87
|
+
changes.push(`Updated start script: "${oldStart}" → "${scripts.start}"`);
|
|
88
|
+
}
|
|
89
|
+
if (scripts.dev && scripts.dev.includes('app.ts')) {
|
|
90
|
+
const oldDev = scripts.dev;
|
|
91
|
+
scripts.dev = scripts.dev.replace('app.ts', 'src/index.ts');
|
|
92
|
+
changes.push(`Updated dev script: "${oldDev}" → "${scripts.dev}"`);
|
|
93
|
+
}
|
|
94
|
+
// Ensure a start script exists that points to the new entry point.
|
|
95
|
+
// The buildpack's generic detector uses this to determine how to run the app.
|
|
96
|
+
if (!scripts.start ||
|
|
97
|
+
scripts.start.includes('.agentuity') ||
|
|
98
|
+
scripts.start.includes('agentuity')) {
|
|
99
|
+
const oldStart = scripts.start;
|
|
100
|
+
scripts.start = 'bun src/index.ts';
|
|
101
|
+
if (oldStart) {
|
|
102
|
+
changes.push(`Replaced start script: "${oldStart}" → "${scripts.start}"`);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
changes.push(`Added start script: "${scripts.start}"`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Apply dev scripts from dev-setup transform
|
|
109
|
+
if (options?.devScripts) {
|
|
110
|
+
for (const [name, value] of Object.entries(options.devScripts)) {
|
|
111
|
+
const old = scripts[name];
|
|
112
|
+
scripts[name] = value;
|
|
113
|
+
if (old) {
|
|
114
|
+
changes.push(`Updated ${name} script: "${old}" → "${value}"`);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
changes.push(`Added ${name} script: "${value}"`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Write back
|
|
122
|
+
if (Object.keys(deps).length > 0)
|
|
123
|
+
pkg.dependencies = deps;
|
|
124
|
+
if (Object.keys(devDeps).length > 0)
|
|
125
|
+
pkg.devDependencies = devDeps;
|
|
126
|
+
if (Object.keys(scripts).length > 0)
|
|
127
|
+
pkg.scripts = scripts;
|
|
128
|
+
if (changes.length === 0) {
|
|
129
|
+
return { content: null, changes: [] };
|
|
130
|
+
}
|
|
131
|
+
// Preserve the original indentation style
|
|
132
|
+
const indent = detectIndent(source);
|
|
133
|
+
return {
|
|
134
|
+
content: JSON.stringify(pkg, null, indent) + '\n',
|
|
135
|
+
changes,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Detect indentation (tab vs spaces) from package.json source.
|
|
140
|
+
*/
|
|
141
|
+
function detectIndent(source) {
|
|
142
|
+
const match = source.match(/^(\s+)"/m);
|
|
143
|
+
if (match) {
|
|
144
|
+
const whitespace = match[1] ?? '\t';
|
|
145
|
+
if (whitespace.includes('\t'))
|
|
146
|
+
return '\t';
|
|
147
|
+
return whitespace.length;
|
|
148
|
+
}
|
|
149
|
+
return '\t'; // default to tabs (project convention)
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=package-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../../src/transforms/v3/package-json.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transform: rewrite service access in route files.
|
|
3
|
+
*
|
|
4
|
+
* Replaces c.var.kv, c.var.vector, etc. with direct imports from the
|
|
5
|
+
* shared services module.
|
|
6
|
+
*
|
|
7
|
+
* Uses string-level surgery rather than AST round-trip to preserve
|
|
8
|
+
* formatting and comments.
|
|
9
|
+
*/
|
|
10
|
+
import type { ServiceUsage } from '../../detect-v3';
|
|
11
|
+
export interface RouteServiceTransformResult {
|
|
12
|
+
/** The transformed source, or null if no changes */
|
|
13
|
+
source: string | null;
|
|
14
|
+
/** What was changed */
|
|
15
|
+
changes: string[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Rewrite c.var.* service access patterns to direct imports.
|
|
19
|
+
*
|
|
20
|
+
* @param source - File source text
|
|
21
|
+
* @param usage - Detected service usage info
|
|
22
|
+
* @param servicesRelativePath - Relative import path to services module (e.g., '../services')
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Remove all imports from @agentuity/runtime.
|
|
26
|
+
* In v3, this package is a deprecation stub — nothing should be imported from it.
|
|
27
|
+
*/
|
|
28
|
+
export declare function removeRuntimeImports(source: string): {
|
|
29
|
+
source: string;
|
|
30
|
+
removed: boolean;
|
|
31
|
+
};
|
|
32
|
+
export declare function transformRouteServices(source: string, usage: ServiceUsage, servicesRelativePath: string): RouteServiceTransformResult;
|
|
33
|
+
/**
|
|
34
|
+
* Compute the relative import path from a source file to src/services.ts.
|
|
35
|
+
*/
|
|
36
|
+
export declare function computeServicesRelativePath(projectDir: string, sourceFilePath: string): string;
|
|
37
|
+
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/transforms/v3/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD,MAAM,WAAW,2BAA2B;IAC3C,oDAAoD;IACpD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,uBAAuB;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;;GAMG;AACH;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAKzF;AAED,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,EACnB,oBAAoB,EAAE,MAAM,GAC1B,2BAA2B,CAgG7B;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAa9F"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transform: rewrite service access in route files.
|
|
3
|
+
*
|
|
4
|
+
* Replaces c.var.kv, c.var.vector, etc. with direct imports from the
|
|
5
|
+
* shared services module.
|
|
6
|
+
*
|
|
7
|
+
* Uses string-level surgery rather than AST round-trip to preserve
|
|
8
|
+
* formatting and comments.
|
|
9
|
+
*/
|
|
10
|
+
import ts from 'typescript';
|
|
11
|
+
import { relative, dirname } from 'node:path';
|
|
12
|
+
/**
|
|
13
|
+
* Rewrite c.var.* service access patterns to direct imports.
|
|
14
|
+
*
|
|
15
|
+
* @param source - File source text
|
|
16
|
+
* @param usage - Detected service usage info
|
|
17
|
+
* @param servicesRelativePath - Relative import path to services module (e.g., '../services')
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Remove all imports from @agentuity/runtime.
|
|
21
|
+
* In v3, this package is a deprecation stub — nothing should be imported from it.
|
|
22
|
+
*/
|
|
23
|
+
export function removeRuntimeImports(source) {
|
|
24
|
+
const pattern = /import\s+(?:type\s+)?\{[^}]*\}\s*from\s*['"]@agentuity\/runtime['"]\s*;?\s*\n?/g;
|
|
25
|
+
const replaced = source.replace(pattern, '');
|
|
26
|
+
return { source: replaced, removed: replaced !== source };
|
|
27
|
+
}
|
|
28
|
+
export function transformRouteServices(source, usage, servicesRelativePath) {
|
|
29
|
+
let output = source;
|
|
30
|
+
const changes = [];
|
|
31
|
+
const servicesAdded = new Set();
|
|
32
|
+
// Remove @agentuity/runtime imports (Env type, sse, stream, websocket, etc.)
|
|
33
|
+
const runtimeCleanup = removeRuntimeImports(output);
|
|
34
|
+
if (runtimeCleanup.removed) {
|
|
35
|
+
output = runtimeCleanup.source;
|
|
36
|
+
changes.push('Removed @agentuity/runtime imports');
|
|
37
|
+
}
|
|
38
|
+
if (usage.accessPattern === 'c.var') {
|
|
39
|
+
// Replace c.var.serviceName patterns
|
|
40
|
+
// We need to handle various Hono context variable names: c, ctx, context
|
|
41
|
+
const contextNames = ['c', 'ctx', 'context'];
|
|
42
|
+
for (const service of usage.services) {
|
|
43
|
+
for (const ctxName of contextNames) {
|
|
44
|
+
// Match: c.var.kv c.var.vector etc.
|
|
45
|
+
const pattern = new RegExp(`\\b${ctxName}\\.var\\.${service}\\b`, 'g');
|
|
46
|
+
if (pattern.test(output)) {
|
|
47
|
+
output = output.replace(pattern, service);
|
|
48
|
+
servicesAdded.add(service);
|
|
49
|
+
changes.push(`Replaced ${ctxName}.var.${service} → ${service}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else if (usage.accessPattern === 'ctx') {
|
|
55
|
+
// Replace ctx.serviceName patterns (agent context)
|
|
56
|
+
const contextNames = ['ctx', 'context', 'c'];
|
|
57
|
+
for (const service of usage.services) {
|
|
58
|
+
for (const ctxName of contextNames) {
|
|
59
|
+
const pattern = new RegExp(`\\b${ctxName}\\.${service}\\b`, 'g');
|
|
60
|
+
if (pattern.test(output)) {
|
|
61
|
+
output = output.replace(pattern, service);
|
|
62
|
+
servicesAdded.add(service);
|
|
63
|
+
changes.push(`Replaced ${ctxName}.${service} → ${service}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Clean up self-referencing declarations: `const kv = kv;` or `const stream = await stream.create(...)`
|
|
69
|
+
// These happen when the original code had `const kv = c.var.kv;`
|
|
70
|
+
if (servicesAdded.size > 0) {
|
|
71
|
+
for (const service of servicesAdded) {
|
|
72
|
+
// Pattern: const/let/var service = service; (entire line)
|
|
73
|
+
const selfRefPattern = new RegExp(`^\\s*(?:const|let|var)\\s+${service}\\s*=\\s*${service}\\s*;?\\s*$`, 'gm');
|
|
74
|
+
if (selfRefPattern.test(output)) {
|
|
75
|
+
output = output.replace(selfRefPattern, '');
|
|
76
|
+
changes.push(`Removed self-referencing declaration: const ${service} = ${service}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Add import for services if any were rewritten
|
|
81
|
+
if (servicesAdded.size > 0) {
|
|
82
|
+
const importList = [...servicesAdded].sort().join(', ');
|
|
83
|
+
const importLine = `import { ${importList} } from '${servicesRelativePath}';`;
|
|
84
|
+
// Check if there's already an import from the services module
|
|
85
|
+
const existingServicesImport = new RegExp(`import\\s*\\{[^}]*\\}\\s*from\\s*['"]${escapeRegex(servicesRelativePath)}['"]`);
|
|
86
|
+
if (existingServicesImport.test(output)) {
|
|
87
|
+
// Merge with existing import
|
|
88
|
+
output = output.replace(existingServicesImport, (match) => {
|
|
89
|
+
// Extract existing imports
|
|
90
|
+
const existingMatch = match.match(/\{([^}]*)\}/);
|
|
91
|
+
if (!existingMatch)
|
|
92
|
+
return match;
|
|
93
|
+
const existing = existingMatch[1]
|
|
94
|
+
.split(',')
|
|
95
|
+
.map((s) => s.trim())
|
|
96
|
+
.filter(Boolean);
|
|
97
|
+
const merged = [...new Set([...existing, ...servicesAdded])].sort();
|
|
98
|
+
return `import { ${merged.join(', ')} } from '${servicesRelativePath}'`;
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
// Insert new import after existing imports
|
|
103
|
+
output = insertAfterImports(output, importLine);
|
|
104
|
+
}
|
|
105
|
+
changes.push(`Added import for: ${importList}`);
|
|
106
|
+
}
|
|
107
|
+
if (changes.length === 0) {
|
|
108
|
+
return { source: null, changes: [] };
|
|
109
|
+
}
|
|
110
|
+
return { source: output, changes };
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Compute the relative import path from a source file to src/services.ts.
|
|
114
|
+
*/
|
|
115
|
+
export function computeServicesRelativePath(projectDir, sourceFilePath) {
|
|
116
|
+
const servicesPath = 'src/services';
|
|
117
|
+
const sourceDir = dirname(relative(projectDir, sourceFilePath));
|
|
118
|
+
let rel = relative(sourceDir, servicesPath);
|
|
119
|
+
// Ensure it starts with ./ or ../
|
|
120
|
+
if (!rel.startsWith('.')) {
|
|
121
|
+
rel = './' + rel;
|
|
122
|
+
}
|
|
123
|
+
// Remove .ts extension if present
|
|
124
|
+
rel = rel.replace(/\.ts$/, '');
|
|
125
|
+
return rel;
|
|
126
|
+
}
|
|
127
|
+
// ---------------------------------------------------------------------------
|
|
128
|
+
// Helpers
|
|
129
|
+
// ---------------------------------------------------------------------------
|
|
130
|
+
function insertAfterImports(source, importLine) {
|
|
131
|
+
const sf = ts.createSourceFile('temp.ts', source, ts.ScriptTarget.ESNext, true);
|
|
132
|
+
let lastImportEnd = -1;
|
|
133
|
+
for (const stmt of sf.statements) {
|
|
134
|
+
if (ts.isImportDeclaration(stmt)) {
|
|
135
|
+
lastImportEnd = stmt.getEnd();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (lastImportEnd >= 0) {
|
|
139
|
+
return (source.substring(0, lastImportEnd) + '\n' + importLine + source.substring(lastImportEnd));
|
|
140
|
+
}
|
|
141
|
+
return importLine + '\n' + source;
|
|
142
|
+
}
|
|
143
|
+
function escapeRegex(str) {
|
|
144
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/transforms/v3/routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transform: generate src/services.ts
|
|
3
|
+
*
|
|
4
|
+
* Creates a shared services module that exports singleton client instances
|
|
5
|
+
* for all Agentuity services detected in use across the project.
|
|
6
|
+
*
|
|
7
|
+
* Only includes services that are actually used — no unnecessary dependencies.
|
|
8
|
+
*/
|
|
9
|
+
export interface ServicesFileResult {
|
|
10
|
+
/** Generated source for src/services.ts, or null if no services used */
|
|
11
|
+
source: string | null;
|
|
12
|
+
/** What was included */
|
|
13
|
+
changes: string[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Generate src/services.ts based on detected service usage.
|
|
17
|
+
*/
|
|
18
|
+
export declare function generateServicesFile(servicesUsed: string[]): ServicesFileResult;
|
|
19
|
+
//# sourceMappingURL=services.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../../src/transforms/v3/services.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,WAAW,kBAAkB;IAClC,wEAAwE;IACxE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,wBAAwB;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAsD/E"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transform: generate src/services.ts
|
|
3
|
+
*
|
|
4
|
+
* Creates a shared services module that exports singleton client instances
|
|
5
|
+
* for all Agentuity services detected in use across the project.
|
|
6
|
+
*
|
|
7
|
+
* Only includes services that are actually used — no unnecessary dependencies.
|
|
8
|
+
*/
|
|
9
|
+
import { SERVICE_PACKAGE_MAP } from '../../detect-v3';
|
|
10
|
+
/**
|
|
11
|
+
* Generate src/services.ts based on detected service usage.
|
|
12
|
+
*/
|
|
13
|
+
export function generateServicesFile(servicesUsed) {
|
|
14
|
+
if (servicesUsed.length === 0) {
|
|
15
|
+
return { source: null, changes: [] };
|
|
16
|
+
}
|
|
17
|
+
const changes = [];
|
|
18
|
+
const imports = [];
|
|
19
|
+
const exports = [];
|
|
20
|
+
// Header comment
|
|
21
|
+
const header = [
|
|
22
|
+
'/**',
|
|
23
|
+
' * Shared Agentuity service clients.',
|
|
24
|
+
' *',
|
|
25
|
+
' * Auto-generated by @agentuity/migrate (v2 → v3 migration).',
|
|
26
|
+
' * Each client auto-configures from AGENTUITY_* environment variables.',
|
|
27
|
+
' *',
|
|
28
|
+
' * Usage:',
|
|
29
|
+
" * import { kv, vector } from './services';",
|
|
30
|
+
" * const data = await kv.get('namespace', 'key');",
|
|
31
|
+
' */',
|
|
32
|
+
'',
|
|
33
|
+
];
|
|
34
|
+
// Logger is special — comes from @agentuity/telemetry
|
|
35
|
+
const hasLogger = servicesUsed.includes('logger');
|
|
36
|
+
const serviceClients = servicesUsed.filter((s) => s !== 'logger');
|
|
37
|
+
// Generate import + export for each service client
|
|
38
|
+
for (const service of serviceClients.sort()) {
|
|
39
|
+
const mapping = SERVICE_PACKAGE_MAP[service];
|
|
40
|
+
if (!mapping)
|
|
41
|
+
continue;
|
|
42
|
+
imports.push(`import { ${mapping.client} } from '${mapping.pkg}';`);
|
|
43
|
+
exports.push(`export const ${service} = new ${mapping.client}();`);
|
|
44
|
+
changes.push(`Added ${service} client from ${mapping.pkg}`);
|
|
45
|
+
}
|
|
46
|
+
// Logger from telemetry
|
|
47
|
+
if (hasLogger) {
|
|
48
|
+
imports.push("import { register } from '@agentuity/telemetry';");
|
|
49
|
+
exports.push('');
|
|
50
|
+
exports.push('/** Shared logger instance from telemetry */');
|
|
51
|
+
exports.push('const telemetry = register();');
|
|
52
|
+
exports.push('export const logger = telemetry.logger;');
|
|
53
|
+
changes.push('Added logger from @agentuity/telemetry');
|
|
54
|
+
}
|
|
55
|
+
const lines = [...header, ...imports, '', ...exports, ''];
|
|
56
|
+
return {
|
|
57
|
+
source: lines.join('\n'),
|
|
58
|
+
changes,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=services.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.js","sourceRoot":"","sources":["../../../src/transforms/v3/services.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAStD;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,YAAsB;IAC1D,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,iBAAiB;IACjB,MAAM,MAAM,GAAG;QACd,KAAK;QACL,sCAAsC;QACtC,IAAI;QACJ,8DAA8D;QAC9D,wEAAwE;QACxE,IAAI;QACJ,WAAW;QACX,+CAA+C;QAC/C,qDAAqD;QACrD,KAAK;QACL,EAAE;KACF,CAAC;IAEF,sDAAsD;IACtD,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;IAElE,mDAAmD;IACnD,KAAK,MAAM,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,OAAO,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,MAAM,YAAY,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,gBAAgB,OAAO,UAAU,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,SAAS,OAAO,gBAAgB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,wBAAwB;IACxB,IAAI,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC;IAE1D,OAAO;QACN,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACxB,OAAO;KACP,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentuity/migrate",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
4
|
-
"description": "Migration tool
|
|
3
|
+
"version": "3.0.0-alpha.1",
|
|
4
|
+
"description": "Migration tool for Agentuity SDK (v1→v2 and v2→v3)",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Agentuity employees and contributors",
|
|
7
7
|
"type": "module",
|
|
@@ -30,11 +30,11 @@
|
|
|
30
30
|
"prepublishOnly": "bun run clean && bun run build"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@agentuity/core": "3.0.0-alpha.
|
|
33
|
+
"@agentuity/core": "3.0.0-alpha.1",
|
|
34
34
|
"typescript": "^5.9.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@agentuity/test-utils": "3.0.0-alpha.
|
|
37
|
+
"@agentuity/test-utils": "3.0.0-alpha.1",
|
|
38
38
|
"@types/bun": "latest",
|
|
39
39
|
"bun-types": "latest"
|
|
40
40
|
},
|