@agent-native/core 0.111.3 → 0.111.4

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.
@@ -1,5 +1,11 @@
1
1
  # @agent-native/core
2
2
 
3
+ ## 0.111.4
4
+
5
+ ### Patch Changes
6
+
7
+ - 2f61097: Re-scan installed package exports after dependency installation before applying manifest import migrations.
8
+
3
9
  ## 0.111.3
4
10
 
5
11
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.111.3",
3
+ "version": "0.111.4",
4
4
  "description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
5
5
  "homepage": "https://github.com/BuilderIO/agent-native#readme",
6
6
  "bugs": {
@@ -1,3 +1,4 @@
1
+ import { spawnSync } from "node:child_process";
1
2
  import fs from "node:fs";
2
3
  import { createRequire } from "node:module";
3
4
  import path from "node:path";
@@ -132,6 +133,63 @@ export function createMigrationPlanningTargetResolver(
132
133
  };
133
134
  }
134
135
 
136
+ const FRESH_RESOLVE_SCRIPT = [
137
+ 'const { createRequire } = require("node:module");',
138
+ "try {",
139
+ " createRequire(process.argv[1]).resolve(process.argv[2]);",
140
+ "} catch {",
141
+ " process.exitCode = 1;",
142
+ "}",
143
+ ].join("\n");
144
+
145
+ function nodeConditionArgs(): string[] {
146
+ const conditions: string[] = [];
147
+ for (let index = 0; index < process.execArgv.length; index += 1) {
148
+ const argument = process.execArgv[index];
149
+ if (argument === "--conditions" || argument === "-C") {
150
+ const value = process.execArgv[index + 1];
151
+ if (value) {
152
+ conditions.push(argument, value);
153
+ index += 1;
154
+ }
155
+ } else if (
156
+ argument.startsWith("--conditions=") ||
157
+ argument.startsWith("-C=")
158
+ ) {
159
+ conditions.push(argument);
160
+ }
161
+ }
162
+ return conditions;
163
+ }
164
+
165
+ function createFreshMigrationTargetResolver(
166
+ projectRoot: string,
167
+ ): (specifier: string, sourceFile?: string) => boolean {
168
+ const fallbackPath = path.join(path.resolve(projectRoot), "package.json");
169
+ const cache = new Map<string, boolean>();
170
+ return (specifier: string, sourceFile = fallbackPath): boolean => {
171
+ const resolutionBase =
172
+ nearestPackageFile(sourceFile, projectRoot) ?? sourceFile;
173
+ const key = `${resolutionBase}\0${specifier}`;
174
+ const cached = cache.get(key);
175
+ if (cached !== undefined) return cached;
176
+ const resolved =
177
+ spawnSync(
178
+ process.execPath,
179
+ [
180
+ ...nodeConditionArgs(),
181
+ "-e",
182
+ FRESH_RESOLVE_SCRIPT,
183
+ resolutionBase,
184
+ specifier,
185
+ ],
186
+ { stdio: "ignore" },
187
+ ).status === 0;
188
+ cache.set(key, resolved);
189
+ return resolved;
190
+ };
191
+ }
192
+
135
193
  function nearestPackageFile(file: string, root: string): string | null {
136
194
  let directory = path.dirname(file);
137
195
  const boundary = path.resolve(root);
@@ -498,15 +556,7 @@ export function runMigrationCodemods(
498
556
  const manifests = options.manifests ?? loadMigrationManifests(root);
499
557
  const moves = mergeManifestMoves(manifests);
500
558
  const targetExists =
501
- options.targetExists ??
502
- ((specifier: string, sourceFile = path.join(root, "package.json")) => {
503
- try {
504
- createRequire(sourceFile).resolve(specifier);
505
- return true;
506
- } catch {
507
- return false;
508
- }
509
- });
559
+ options.targetExists ?? createFreshMigrationTargetResolver(root);
510
560
  const project = new Project({
511
561
  skipAddingFilesFromTsConfig: true,
512
562
  manipulationSettings: { quoteKind: QuoteKind.Double },
@@ -1 +1 @@
1
- {"version":3,"file":"migration-codemod.d.ts","sourceRoot":"","sources":["../../src/cli/migration-codemod.ts"],"names":[],"mappings":"AAYA,OAAO,EAML,KAAK,iBAAiB,EAEvB,MAAM,4CAA4C,CAAC;AAcpD,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,0BAA0B,EAAE,CAAC;IACtC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;CACpE;AAqCD,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,GAClB,iBAAiB,EAAE,CAKrB;AAqBD,wBAAgB,qCAAqC,CACnD,WAAW,EAAE,MAAM,GAClB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAcrD;AAyWD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,2BAA2B,GACnC,sBAAsB,CA4DxB;AAiCD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,sBAAsB,EAC9B,IAAI,EAAE,MAAM,GACX,MAAM,CAIR"}
1
+ {"version":3,"file":"migration-codemod.d.ts","sourceRoot":"","sources":["../../src/cli/migration-codemod.ts"],"names":[],"mappings":"AAaA,OAAO,EAML,KAAK,iBAAiB,EAEvB,MAAM,4CAA4C,CAAC;AAcpD,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,0BAA0B,EAAE,CAAC;IACtC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;CACpE;AAqCD,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,GAClB,iBAAiB,EAAE,CAKrB;AAqBD,wBAAgB,qCAAqC,CACnD,WAAW,EAAE,MAAM,GAClB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAcrD;AAkaD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,2BAA2B,GACnC,sBAAsB,CAoDxB;AAiCD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,sBAAsB,EAC9B,IAAI,EAAE,MAAM,GACX,MAAM,CAIR"}
@@ -1,3 +1,4 @@
1
+ import { spawnSync } from "node:child_process";
1
2
  import fs from "node:fs";
2
3
  import { createRequire } from "node:module";
3
4
  import path from "node:path";
@@ -70,6 +71,52 @@ export function createMigrationPlanningTargetResolver(projectRoot) {
70
71
  }
71
72
  };
72
73
  }
74
+ const FRESH_RESOLVE_SCRIPT = [
75
+ 'const { createRequire } = require("node:module");',
76
+ "try {",
77
+ " createRequire(process.argv[1]).resolve(process.argv[2]);",
78
+ "} catch {",
79
+ " process.exitCode = 1;",
80
+ "}",
81
+ ].join("\n");
82
+ function nodeConditionArgs() {
83
+ const conditions = [];
84
+ for (let index = 0; index < process.execArgv.length; index += 1) {
85
+ const argument = process.execArgv[index];
86
+ if (argument === "--conditions" || argument === "-C") {
87
+ const value = process.execArgv[index + 1];
88
+ if (value) {
89
+ conditions.push(argument, value);
90
+ index += 1;
91
+ }
92
+ }
93
+ else if (argument.startsWith("--conditions=") ||
94
+ argument.startsWith("-C=")) {
95
+ conditions.push(argument);
96
+ }
97
+ }
98
+ return conditions;
99
+ }
100
+ function createFreshMigrationTargetResolver(projectRoot) {
101
+ const fallbackPath = path.join(path.resolve(projectRoot), "package.json");
102
+ const cache = new Map();
103
+ return (specifier, sourceFile = fallbackPath) => {
104
+ const resolutionBase = nearestPackageFile(sourceFile, projectRoot) ?? sourceFile;
105
+ const key = `${resolutionBase}\0${specifier}`;
106
+ const cached = cache.get(key);
107
+ if (cached !== undefined)
108
+ return cached;
109
+ const resolved = spawnSync(process.execPath, [
110
+ ...nodeConditionArgs(),
111
+ "-e",
112
+ FRESH_RESOLVE_SCRIPT,
113
+ resolutionBase,
114
+ specifier,
115
+ ], { stdio: "ignore" }).status === 0;
116
+ cache.set(key, resolved);
117
+ return resolved;
118
+ };
119
+ }
73
120
  function nearestPackageFile(file, root) {
74
121
  let directory = path.dirname(file);
75
122
  const boundary = path.resolve(root);
@@ -305,16 +352,7 @@ export function runMigrationCodemods(options) {
305
352
  const root = path.resolve(options.root);
306
353
  const manifests = options.manifests ?? loadMigrationManifests(root);
307
354
  const moves = mergeManifestMoves(manifests);
308
- const targetExists = options.targetExists ??
309
- ((specifier, sourceFile = path.join(root, "package.json")) => {
310
- try {
311
- createRequire(sourceFile).resolve(specifier);
312
- return true;
313
- }
314
- catch {
315
- return false;
316
- }
317
- });
355
+ const targetExists = options.targetExists ?? createFreshMigrationTargetResolver(root);
318
356
  const project = new Project({
319
357
  skipAddingFilesFromTsConfig: true,
320
358
  manipulationSettings: { quoteKind: QuoteKind.Double },
@@ -1 +1 @@
1
- {"version":3,"file":"migration-codemod.js","sourceRoot":"","sources":["../../src/cli/migration-codemod.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\n\nimport {\n Project,\n QuoteKind,\n type ImportDeclaration,\n type ImportSpecifierStructure,\n type SourceFile,\n} from \"ts-morph\";\n\nimport {\n bundledCorePackageVersion,\n isMigrationManifestActive,\n loadMigrationManifestsForProject,\n migrationMoveStatus,\n resolveMigrationSymbolMove,\n type MigrationManifest,\n type MigrationMove,\n} from \"../package-lifecycle/migration-manifest.js\";\n\nconst SOURCE_EXTENSIONS = new Set([\".ts\", \".tsx\"]);\nconst SKIP_DIRECTORIES = new Set([\n \".git\",\n \".next\",\n \".output\",\n \".turbo\",\n \"build\",\n \"coverage\",\n \"dist\",\n \"node_modules\",\n]);\n\nexport interface MigrationCodemodFileChange {\n file: string;\n before: string;\n after: string;\n}\n\nexport interface MigrationCodemodResult {\n changes: MigrationCodemodFileChange[];\n dependencyFiles: string[];\n warnings: string[];\n}\n\nexport interface RunMigrationCodemodsOptions {\n root: string;\n manifests?: MigrationManifest[];\n apply?: boolean;\n targetExists?: (specifier: string, sourceFile?: string) => boolean;\n}\n\ninterface PendingDependency {\n packageFile: string;\n packageName: string;\n}\n\nfunction collectSourceFiles(root: string): string[] {\n const files: string[] = [];\n const visit = (directory: string): void => {\n for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {\n if (entry.isDirectory() && SKIP_DIRECTORIES.has(entry.name)) continue;\n const entryPath = path.join(directory, entry.name);\n if (entry.isDirectory()) {\n visit(entryPath);\n } else if (\n SOURCE_EXTENSIONS.has(path.extname(entry.name)) &&\n !entry.name.endsWith(\".d.ts\")\n ) {\n files.push(entryPath);\n }\n }\n };\n visit(root);\n return files.sort();\n}\n\nfunction mergeManifestMoves(\n manifests: MigrationManifest[],\n): Record<string, MigrationMove> {\n const moves: Record<string, MigrationMove> = {};\n for (const manifest of manifests) {\n Object.assign(moves, manifest.moves);\n }\n return moves;\n}\n\nexport function loadMigrationManifests(\n projectRoot: string,\n): MigrationManifest[] {\n const packageVersion = bundledCorePackageVersion();\n return loadMigrationManifestsForProject(projectRoot).filter((manifest) =>\n isMigrationManifestActive(manifest, packageVersion),\n );\n}\n\nfunction packageNameFromSpecifier(specifier: string): string | null {\n if (specifier.startsWith(\"@\")) {\n const [scope, name] = specifier.split(\"/\");\n return scope && name ? `${scope}/${name}` : null;\n }\n const [name] = specifier.split(\"/\");\n return name && !name.startsWith(\".\") ? name : null;\n}\n\nfunction isPackageInstalled(\n requireFromProject: ReturnType<typeof createRequire>,\n packageName: string,\n): boolean {\n const searchPaths = requireFromProject.resolve.paths(packageName) ?? [];\n return searchPaths.some((searchPath) =>\n fs.existsSync(path.join(searchPath, packageName, \"package.json\")),\n );\n}\n\nexport function createMigrationPlanningTargetResolver(\n projectRoot: string,\n): (specifier: string, sourceFile?: string) => boolean {\n const fallbackPath = path.join(path.resolve(projectRoot), \"package.json\");\n return (specifier: string, sourceFile = fallbackPath): boolean => {\n const requireFromSource = createRequire(sourceFile);\n try {\n requireFromSource.resolve(specifier);\n return true;\n } catch {\n const packageName = packageNameFromSpecifier(specifier);\n return Boolean(\n packageName && !isPackageInstalled(requireFromSource, packageName),\n );\n }\n };\n}\n\nfunction nearestPackageFile(file: string, root: string): string | null {\n let directory = path.dirname(file);\n const boundary = path.resolve(root);\n while (directory.startsWith(boundary)) {\n const packageFile = path.join(directory, \"package.json\");\n if (fs.existsSync(packageFile)) return packageFile;\n if (directory === boundary) break;\n directory = path.dirname(directory);\n }\n return null;\n}\n\nfunction recordIntroducedDependency(\n pending: PendingDependency[],\n sourceFile: string,\n root: string,\n from: string,\n to: string,\n): void {\n const fromPackage = packageNameFromSpecifier(from);\n const toPackage = packageNameFromSpecifier(to);\n if (!toPackage || toPackage === fromPackage) return;\n const packageFile = nearestPackageFile(sourceFile, root);\n if (!packageFile) return;\n if (\n !pending.some(\n (entry) =>\n entry.packageFile === packageFile && entry.packageName === toPackage,\n )\n ) {\n pending.push({ packageFile, packageName: toPackage });\n }\n}\n\nfunction importedNameStructure(\n importedName: string,\n localName: string,\n nextName: string,\n typeOnly: boolean,\n): ImportSpecifierStructure {\n return {\n name: nextName,\n alias:\n localName !== nextName\n ? localName\n : importedName !== nextName\n ? importedName\n : undefined,\n isTypeOnly: typeOnly,\n };\n}\n\nfunction warnSkippedTarget(\n warnings: string[],\n sourceFile: string,\n target: string,\n reason: \"planned\" | \"unresolved\",\n): void {\n const message =\n reason === \"planned\"\n ? `${sourceFile}: migration to ${target} is planned but not active; no rewrite was applied`\n : `${sourceFile}: migration target ${target} is not exported by an installed package; no rewrite was applied`;\n if (!warnings.includes(message)) warnings.push(message);\n}\n\nfunction rewriteImportDeclaration(\n declaration: ImportDeclaration,\n move: MigrationMove,\n root: string,\n pendingDependencies: PendingDependency[],\n warnings: string[],\n targetExists: (specifier: string, sourceFile?: string) => boolean,\n): boolean {\n const originalSpecifier = declaration.getModuleSpecifierValue();\n const sourceFile = declaration.getSourceFile();\n const namedImports = declaration.getNamedImports();\n\n if (!move.symbols) {\n if (migrationMoveStatus(move) === \"planned\") {\n warnSkippedTarget(warnings, sourceFile.getFilePath(), move.to, \"planned\");\n return false;\n }\n if (!targetExists(move.to, sourceFile.getFilePath())) {\n warnSkippedTarget(\n warnings,\n sourceFile.getFilePath(),\n move.to,\n \"unresolved\",\n );\n return false;\n }\n declaration.setModuleSpecifier(move.to);\n recordIntroducedDependency(\n pendingDependencies,\n sourceFile.getFilePath(),\n root,\n originalSpecifier,\n move.to,\n );\n return originalSpecifier !== move.to;\n }\n\n if (namedImports.length === 0) {\n warnings.push(\n `${sourceFile.getFilePath()}: cannot split default, namespace, or side-effect import from ${originalSpecifier}`,\n );\n return false;\n }\n\n const groups = new Map<string, ImportSpecifierStructure[]>();\n const movedImports = new Set<(typeof namedImports)[number]>();\n for (const namedImport of namedImports) {\n const importedName = namedImport.getName();\n const resolved = resolveMigrationSymbolMove(move, importedName);\n if (!resolved || resolved.to === originalSpecifier) continue;\n if (resolved.status === \"planned\") {\n warnSkippedTarget(\n warnings,\n sourceFile.getFilePath(),\n resolved.to,\n \"planned\",\n );\n continue;\n }\n if (!targetExists(resolved.to, sourceFile.getFilePath())) {\n warnSkippedTarget(\n warnings,\n sourceFile.getFilePath(),\n resolved.to,\n \"unresolved\",\n );\n continue;\n }\n const localName = namedImport.getAliasNode()?.getText() ?? importedName;\n const group = groups.get(resolved.to) ?? [];\n group.push(\n importedNameStructure(\n importedName,\n localName,\n resolved.name,\n !declaration.isTypeOnly() && namedImport.isTypeOnly(),\n ),\n );\n groups.set(resolved.to, group);\n movedImports.add(namedImport);\n recordIntroducedDependency(\n pendingDependencies,\n sourceFile.getFilePath(),\n root,\n originalSpecifier,\n resolved.to,\n );\n }\n if (groups.size === 0) return false;\n\n const declarationIndex = declaration.getChildIndex();\n for (const namedImport of movedImports) namedImport.remove();\n let offset = 1;\n for (const [target, imports] of groups) {\n sourceFile.insertImportDeclaration(declarationIndex + offset, {\n moduleSpecifier: target,\n isTypeOnly: declaration.isTypeOnly(),\n namedImports: imports,\n });\n offset += 1;\n }\n if (\n declaration.getNamedImports().length === 0 &&\n !declaration.getDefaultImport() &&\n !declaration.getNamespaceImport()\n ) {\n declaration.remove();\n }\n return true;\n}\n\nfunction rewriteExportDeclarations(\n sourceFile: SourceFile,\n moves: Record<string, MigrationMove>,\n root: string,\n pendingDependencies: PendingDependency[],\n warnings: string[],\n targetExists: (specifier: string, sourceFile?: string) => boolean,\n): void {\n for (const declaration of [...sourceFile.getExportDeclarations()]) {\n const originalSpecifier = declaration.getModuleSpecifierValue();\n if (!originalSpecifier) continue;\n const move = moves[originalSpecifier];\n if (!move) continue;\n const namedExports = declaration.getNamedExports();\n\n if (!move.symbols) {\n if (migrationMoveStatus(move) === \"planned\") {\n warnSkippedTarget(\n warnings,\n sourceFile.getFilePath(),\n move.to,\n \"planned\",\n );\n continue;\n }\n if (!targetExists(move.to, sourceFile.getFilePath())) {\n warnSkippedTarget(\n warnings,\n sourceFile.getFilePath(),\n move.to,\n \"unresolved\",\n );\n continue;\n }\n declaration.setModuleSpecifier(move.to);\n recordIntroducedDependency(\n pendingDependencies,\n sourceFile.getFilePath(),\n root,\n originalSpecifier,\n move.to,\n );\n continue;\n }\n if (namedExports.length === 0) {\n warnings.push(\n `${sourceFile.getFilePath()}: cannot split export star from ${originalSpecifier}`,\n );\n continue;\n }\n\n const groups = new Map<\n string,\n Array<{ name: string; alias?: string; isTypeOnly?: boolean }>\n >();\n const movedExports = new Set<(typeof namedExports)[number]>();\n for (const namedExport of namedExports) {\n const exportedFromName = namedExport.getName();\n const resolved = resolveMigrationSymbolMove(move, exportedFromName);\n if (!resolved || resolved.to === originalSpecifier) continue;\n if (resolved.status === \"planned\") {\n warnSkippedTarget(\n warnings,\n sourceFile.getFilePath(),\n resolved.to,\n \"planned\",\n );\n continue;\n }\n if (!targetExists(resolved.to, sourceFile.getFilePath())) {\n warnSkippedTarget(\n warnings,\n sourceFile.getFilePath(),\n resolved.to,\n \"unresolved\",\n );\n continue;\n }\n const publicName =\n namedExport.getAliasNode()?.getText() ?? exportedFromName;\n const group = groups.get(resolved.to) ?? [];\n group.push({\n name: resolved.name,\n alias:\n publicName !== resolved.name\n ? publicName\n : exportedFromName !== resolved.name\n ? exportedFromName\n : undefined,\n isTypeOnly:\n !declaration.isTypeOnly() && namedExport.isTypeOnly()\n ? true\n : undefined,\n });\n groups.set(resolved.to, group);\n movedExports.add(namedExport);\n recordIntroducedDependency(\n pendingDependencies,\n sourceFile.getFilePath(),\n root,\n originalSpecifier,\n resolved.to,\n );\n }\n if (groups.size === 0) continue;\n\n const declarationIndex = declaration.getChildIndex();\n for (const namedExport of movedExports) namedExport.remove();\n let offset = 1;\n for (const [target, exports] of groups) {\n sourceFile.insertExportDeclaration(declarationIndex + offset, {\n moduleSpecifier: target,\n isTypeOnly: declaration.isTypeOnly(),\n namedExports: exports,\n });\n offset += 1;\n }\n if (declaration.getNamedExports().length === 0) declaration.remove();\n }\n}\n\nfunction readPackageJson(packageFile: string): Record<string, unknown> | null {\n try {\n return JSON.parse(fs.readFileSync(packageFile, \"utf-8\")) as Record<\n string,\n unknown\n >;\n } catch {\n return null;\n }\n}\n\nfunction addDependencies(\n pending: PendingDependency[],\n apply: boolean,\n): MigrationCodemodFileChange[] {\n const changes: MigrationCodemodFileChange[] = [];\n const byFile = new Map<string, Set<string>>();\n for (const entry of pending) {\n const packages = byFile.get(entry.packageFile) ?? new Set<string>();\n packages.add(entry.packageName);\n byFile.set(entry.packageFile, packages);\n }\n for (const [packageFile, packageNames] of byFile) {\n const packageJson = readPackageJson(packageFile);\n if (!packageJson) continue;\n const allDependencySections = [\n \"dependencies\",\n \"devDependencies\",\n \"optionalDependencies\",\n \"peerDependencies\",\n ];\n const missing = [...packageNames].filter(\n (packageName) =>\n !allDependencySections.some((section) => {\n const dependencies = packageJson[section];\n return (\n dependencies &&\n typeof dependencies === \"object\" &&\n packageName in dependencies\n );\n }),\n );\n if (missing.length === 0) continue;\n const before = `${JSON.stringify(packageJson, null, 2)}\\n`;\n const dependencies =\n packageJson.dependencies && typeof packageJson.dependencies === \"object\"\n ? (packageJson.dependencies as Record<string, string>)\n : {};\n for (const packageName of missing.sort())\n dependencies[packageName] = \"latest\";\n packageJson.dependencies = Object.fromEntries(\n Object.entries(dependencies).sort(([left], [right]) =>\n left.localeCompare(right),\n ),\n );\n const after = `${JSON.stringify(packageJson, null, 2)}\\n`;\n changes.push({ file: packageFile, before, after });\n if (apply) fs.writeFileSync(packageFile, after);\n }\n return changes;\n}\n\nexport function runMigrationCodemods(\n options: RunMigrationCodemodsOptions,\n): MigrationCodemodResult {\n const root = path.resolve(options.root);\n const manifests = options.manifests ?? loadMigrationManifests(root);\n const moves = mergeManifestMoves(manifests);\n const targetExists =\n options.targetExists ??\n ((specifier: string, sourceFile = path.join(root, \"package.json\")) => {\n try {\n createRequire(sourceFile).resolve(specifier);\n return true;\n } catch {\n return false;\n }\n });\n const project = new Project({\n skipAddingFilesFromTsConfig: true,\n manipulationSettings: { quoteKind: QuoteKind.Double },\n });\n const sourceFiles = project.addSourceFilesAtPaths(collectSourceFiles(root));\n const pendingDependencies: PendingDependency[] = [];\n const warnings: string[] = [];\n const changes: MigrationCodemodFileChange[] = [];\n\n for (const sourceFile of sourceFiles) {\n const before = sourceFile.getFullText();\n for (const declaration of [...sourceFile.getImportDeclarations()]) {\n const move = moves[declaration.getModuleSpecifierValue()];\n if (!move) continue;\n rewriteImportDeclaration(\n declaration,\n move,\n root,\n pendingDependencies,\n warnings,\n targetExists,\n );\n }\n rewriteExportDeclarations(\n sourceFile,\n moves,\n root,\n pendingDependencies,\n warnings,\n targetExists,\n );\n const after = sourceFile.getFullText();\n if (before === after) continue;\n changes.push({ file: sourceFile.getFilePath(), before, after });\n if (options.apply) sourceFile.saveSync();\n }\n\n const dependencyChanges = addDependencies(\n pendingDependencies,\n Boolean(options.apply),\n );\n return {\n changes: [...changes, ...dependencyChanges],\n dependencyFiles: dependencyChanges.map((change) => change.file),\n warnings,\n };\n}\n\nfunction focusedDiff(change: MigrationCodemodFileChange, root: string): string {\n const beforeLines = change.before.split(\"\\n\");\n const afterLines = change.after.split(\"\\n\");\n let prefix = 0;\n while (\n prefix < beforeLines.length &&\n prefix < afterLines.length &&\n beforeLines[prefix] === afterLines[prefix]\n ) {\n prefix += 1;\n }\n let suffix = 0;\n while (\n suffix < beforeLines.length - prefix &&\n suffix < afterLines.length - prefix &&\n beforeLines[beforeLines.length - 1 - suffix] ===\n afterLines[afterLines.length - 1 - suffix]\n ) {\n suffix += 1;\n }\n const beforeChanged = beforeLines.slice(prefix, beforeLines.length - suffix);\n const afterChanged = afterLines.slice(prefix, afterLines.length - suffix);\n return [\n `--- ${path.relative(root, change.file)}`,\n `+++ ${path.relative(root, change.file)}`,\n `@@ -${prefix + 1} +${prefix + 1} @@`,\n ...beforeChanged.map((line) => `-${line}`),\n ...afterChanged.map((line) => `+${line}`),\n ].join(\"\\n\");\n}\n\nexport function formatMigrationCodemodDiff(\n result: MigrationCodemodResult,\n root: string,\n): string {\n return result.changes\n .map((change) => focusedDiff(change, path.resolve(root)))\n .join(\"\\n\");\n}\n"]}
1
+ {"version":3,"file":"migration-codemod.js","sourceRoot":"","sources":["../../src/cli/migration-codemod.ts"],"names":[],"mappings":"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","sourcesContent":["import { spawnSync } from \"node:child_process\";\nimport fs from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\n\nimport {\n Project,\n QuoteKind,\n type ImportDeclaration,\n type ImportSpecifierStructure,\n type SourceFile,\n} from \"ts-morph\";\n\nimport {\n bundledCorePackageVersion,\n isMigrationManifestActive,\n loadMigrationManifestsForProject,\n migrationMoveStatus,\n resolveMigrationSymbolMove,\n type MigrationManifest,\n type MigrationMove,\n} from \"../package-lifecycle/migration-manifest.js\";\n\nconst SOURCE_EXTENSIONS = new Set([\".ts\", \".tsx\"]);\nconst SKIP_DIRECTORIES = new Set([\n \".git\",\n \".next\",\n \".output\",\n \".turbo\",\n \"build\",\n \"coverage\",\n \"dist\",\n \"node_modules\",\n]);\n\nexport interface MigrationCodemodFileChange {\n file: string;\n before: string;\n after: string;\n}\n\nexport interface MigrationCodemodResult {\n changes: MigrationCodemodFileChange[];\n dependencyFiles: string[];\n warnings: string[];\n}\n\nexport interface RunMigrationCodemodsOptions {\n root: string;\n manifests?: MigrationManifest[];\n apply?: boolean;\n targetExists?: (specifier: string, sourceFile?: string) => boolean;\n}\n\ninterface PendingDependency {\n packageFile: string;\n packageName: string;\n}\n\nfunction collectSourceFiles(root: string): string[] {\n const files: string[] = [];\n const visit = (directory: string): void => {\n for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {\n if (entry.isDirectory() && SKIP_DIRECTORIES.has(entry.name)) continue;\n const entryPath = path.join(directory, entry.name);\n if (entry.isDirectory()) {\n visit(entryPath);\n } else if (\n SOURCE_EXTENSIONS.has(path.extname(entry.name)) &&\n !entry.name.endsWith(\".d.ts\")\n ) {\n files.push(entryPath);\n }\n }\n };\n visit(root);\n return files.sort();\n}\n\nfunction mergeManifestMoves(\n manifests: MigrationManifest[],\n): Record<string, MigrationMove> {\n const moves: Record<string, MigrationMove> = {};\n for (const manifest of manifests) {\n Object.assign(moves, manifest.moves);\n }\n return moves;\n}\n\nexport function loadMigrationManifests(\n projectRoot: string,\n): MigrationManifest[] {\n const packageVersion = bundledCorePackageVersion();\n return loadMigrationManifestsForProject(projectRoot).filter((manifest) =>\n isMigrationManifestActive(manifest, packageVersion),\n );\n}\n\nfunction packageNameFromSpecifier(specifier: string): string | null {\n if (specifier.startsWith(\"@\")) {\n const [scope, name] = specifier.split(\"/\");\n return scope && name ? `${scope}/${name}` : null;\n }\n const [name] = specifier.split(\"/\");\n return name && !name.startsWith(\".\") ? name : null;\n}\n\nfunction isPackageInstalled(\n requireFromProject: ReturnType<typeof createRequire>,\n packageName: string,\n): boolean {\n const searchPaths = requireFromProject.resolve.paths(packageName) ?? [];\n return searchPaths.some((searchPath) =>\n fs.existsSync(path.join(searchPath, packageName, \"package.json\")),\n );\n}\n\nexport function createMigrationPlanningTargetResolver(\n projectRoot: string,\n): (specifier: string, sourceFile?: string) => boolean {\n const fallbackPath = path.join(path.resolve(projectRoot), \"package.json\");\n return (specifier: string, sourceFile = fallbackPath): boolean => {\n const requireFromSource = createRequire(sourceFile);\n try {\n requireFromSource.resolve(specifier);\n return true;\n } catch {\n const packageName = packageNameFromSpecifier(specifier);\n return Boolean(\n packageName && !isPackageInstalled(requireFromSource, packageName),\n );\n }\n };\n}\n\nconst FRESH_RESOLVE_SCRIPT = [\n 'const { createRequire } = require(\"node:module\");',\n \"try {\",\n \" createRequire(process.argv[1]).resolve(process.argv[2]);\",\n \"} catch {\",\n \" process.exitCode = 1;\",\n \"}\",\n].join(\"\\n\");\n\nfunction nodeConditionArgs(): string[] {\n const conditions: string[] = [];\n for (let index = 0; index < process.execArgv.length; index += 1) {\n const argument = process.execArgv[index];\n if (argument === \"--conditions\" || argument === \"-C\") {\n const value = process.execArgv[index + 1];\n if (value) {\n conditions.push(argument, value);\n index += 1;\n }\n } else if (\n argument.startsWith(\"--conditions=\") ||\n argument.startsWith(\"-C=\")\n ) {\n conditions.push(argument);\n }\n }\n return conditions;\n}\n\nfunction createFreshMigrationTargetResolver(\n projectRoot: string,\n): (specifier: string, sourceFile?: string) => boolean {\n const fallbackPath = path.join(path.resolve(projectRoot), \"package.json\");\n const cache = new Map<string, boolean>();\n return (specifier: string, sourceFile = fallbackPath): boolean => {\n const resolutionBase =\n nearestPackageFile(sourceFile, projectRoot) ?? sourceFile;\n const key = `${resolutionBase}\\0${specifier}`;\n const cached = cache.get(key);\n if (cached !== undefined) return cached;\n const resolved =\n spawnSync(\n process.execPath,\n [\n ...nodeConditionArgs(),\n \"-e\",\n FRESH_RESOLVE_SCRIPT,\n resolutionBase,\n specifier,\n ],\n { stdio: \"ignore\" },\n ).status === 0;\n cache.set(key, resolved);\n return resolved;\n };\n}\n\nfunction nearestPackageFile(file: string, root: string): string | null {\n let directory = path.dirname(file);\n const boundary = path.resolve(root);\n while (directory.startsWith(boundary)) {\n const packageFile = path.join(directory, \"package.json\");\n if (fs.existsSync(packageFile)) return packageFile;\n if (directory === boundary) break;\n directory = path.dirname(directory);\n }\n return null;\n}\n\nfunction recordIntroducedDependency(\n pending: PendingDependency[],\n sourceFile: string,\n root: string,\n from: string,\n to: string,\n): void {\n const fromPackage = packageNameFromSpecifier(from);\n const toPackage = packageNameFromSpecifier(to);\n if (!toPackage || toPackage === fromPackage) return;\n const packageFile = nearestPackageFile(sourceFile, root);\n if (!packageFile) return;\n if (\n !pending.some(\n (entry) =>\n entry.packageFile === packageFile && entry.packageName === toPackage,\n )\n ) {\n pending.push({ packageFile, packageName: toPackage });\n }\n}\n\nfunction importedNameStructure(\n importedName: string,\n localName: string,\n nextName: string,\n typeOnly: boolean,\n): ImportSpecifierStructure {\n return {\n name: nextName,\n alias:\n localName !== nextName\n ? localName\n : importedName !== nextName\n ? importedName\n : undefined,\n isTypeOnly: typeOnly,\n };\n}\n\nfunction warnSkippedTarget(\n warnings: string[],\n sourceFile: string,\n target: string,\n reason: \"planned\" | \"unresolved\",\n): void {\n const message =\n reason === \"planned\"\n ? `${sourceFile}: migration to ${target} is planned but not active; no rewrite was applied`\n : `${sourceFile}: migration target ${target} is not exported by an installed package; no rewrite was applied`;\n if (!warnings.includes(message)) warnings.push(message);\n}\n\nfunction rewriteImportDeclaration(\n declaration: ImportDeclaration,\n move: MigrationMove,\n root: string,\n pendingDependencies: PendingDependency[],\n warnings: string[],\n targetExists: (specifier: string, sourceFile?: string) => boolean,\n): boolean {\n const originalSpecifier = declaration.getModuleSpecifierValue();\n const sourceFile = declaration.getSourceFile();\n const namedImports = declaration.getNamedImports();\n\n if (!move.symbols) {\n if (migrationMoveStatus(move) === \"planned\") {\n warnSkippedTarget(warnings, sourceFile.getFilePath(), move.to, \"planned\");\n return false;\n }\n if (!targetExists(move.to, sourceFile.getFilePath())) {\n warnSkippedTarget(\n warnings,\n sourceFile.getFilePath(),\n move.to,\n \"unresolved\",\n );\n return false;\n }\n declaration.setModuleSpecifier(move.to);\n recordIntroducedDependency(\n pendingDependencies,\n sourceFile.getFilePath(),\n root,\n originalSpecifier,\n move.to,\n );\n return originalSpecifier !== move.to;\n }\n\n if (namedImports.length === 0) {\n warnings.push(\n `${sourceFile.getFilePath()}: cannot split default, namespace, or side-effect import from ${originalSpecifier}`,\n );\n return false;\n }\n\n const groups = new Map<string, ImportSpecifierStructure[]>();\n const movedImports = new Set<(typeof namedImports)[number]>();\n for (const namedImport of namedImports) {\n const importedName = namedImport.getName();\n const resolved = resolveMigrationSymbolMove(move, importedName);\n if (!resolved || resolved.to === originalSpecifier) continue;\n if (resolved.status === \"planned\") {\n warnSkippedTarget(\n warnings,\n sourceFile.getFilePath(),\n resolved.to,\n \"planned\",\n );\n continue;\n }\n if (!targetExists(resolved.to, sourceFile.getFilePath())) {\n warnSkippedTarget(\n warnings,\n sourceFile.getFilePath(),\n resolved.to,\n \"unresolved\",\n );\n continue;\n }\n const localName = namedImport.getAliasNode()?.getText() ?? importedName;\n const group = groups.get(resolved.to) ?? [];\n group.push(\n importedNameStructure(\n importedName,\n localName,\n resolved.name,\n !declaration.isTypeOnly() && namedImport.isTypeOnly(),\n ),\n );\n groups.set(resolved.to, group);\n movedImports.add(namedImport);\n recordIntroducedDependency(\n pendingDependencies,\n sourceFile.getFilePath(),\n root,\n originalSpecifier,\n resolved.to,\n );\n }\n if (groups.size === 0) return false;\n\n const declarationIndex = declaration.getChildIndex();\n for (const namedImport of movedImports) namedImport.remove();\n let offset = 1;\n for (const [target, imports] of groups) {\n sourceFile.insertImportDeclaration(declarationIndex + offset, {\n moduleSpecifier: target,\n isTypeOnly: declaration.isTypeOnly(),\n namedImports: imports,\n });\n offset += 1;\n }\n if (\n declaration.getNamedImports().length === 0 &&\n !declaration.getDefaultImport() &&\n !declaration.getNamespaceImport()\n ) {\n declaration.remove();\n }\n return true;\n}\n\nfunction rewriteExportDeclarations(\n sourceFile: SourceFile,\n moves: Record<string, MigrationMove>,\n root: string,\n pendingDependencies: PendingDependency[],\n warnings: string[],\n targetExists: (specifier: string, sourceFile?: string) => boolean,\n): void {\n for (const declaration of [...sourceFile.getExportDeclarations()]) {\n const originalSpecifier = declaration.getModuleSpecifierValue();\n if (!originalSpecifier) continue;\n const move = moves[originalSpecifier];\n if (!move) continue;\n const namedExports = declaration.getNamedExports();\n\n if (!move.symbols) {\n if (migrationMoveStatus(move) === \"planned\") {\n warnSkippedTarget(\n warnings,\n sourceFile.getFilePath(),\n move.to,\n \"planned\",\n );\n continue;\n }\n if (!targetExists(move.to, sourceFile.getFilePath())) {\n warnSkippedTarget(\n warnings,\n sourceFile.getFilePath(),\n move.to,\n \"unresolved\",\n );\n continue;\n }\n declaration.setModuleSpecifier(move.to);\n recordIntroducedDependency(\n pendingDependencies,\n sourceFile.getFilePath(),\n root,\n originalSpecifier,\n move.to,\n );\n continue;\n }\n if (namedExports.length === 0) {\n warnings.push(\n `${sourceFile.getFilePath()}: cannot split export star from ${originalSpecifier}`,\n );\n continue;\n }\n\n const groups = new Map<\n string,\n Array<{ name: string; alias?: string; isTypeOnly?: boolean }>\n >();\n const movedExports = new Set<(typeof namedExports)[number]>();\n for (const namedExport of namedExports) {\n const exportedFromName = namedExport.getName();\n const resolved = resolveMigrationSymbolMove(move, exportedFromName);\n if (!resolved || resolved.to === originalSpecifier) continue;\n if (resolved.status === \"planned\") {\n warnSkippedTarget(\n warnings,\n sourceFile.getFilePath(),\n resolved.to,\n \"planned\",\n );\n continue;\n }\n if (!targetExists(resolved.to, sourceFile.getFilePath())) {\n warnSkippedTarget(\n warnings,\n sourceFile.getFilePath(),\n resolved.to,\n \"unresolved\",\n );\n continue;\n }\n const publicName =\n namedExport.getAliasNode()?.getText() ?? exportedFromName;\n const group = groups.get(resolved.to) ?? [];\n group.push({\n name: resolved.name,\n alias:\n publicName !== resolved.name\n ? publicName\n : exportedFromName !== resolved.name\n ? exportedFromName\n : undefined,\n isTypeOnly:\n !declaration.isTypeOnly() && namedExport.isTypeOnly()\n ? true\n : undefined,\n });\n groups.set(resolved.to, group);\n movedExports.add(namedExport);\n recordIntroducedDependency(\n pendingDependencies,\n sourceFile.getFilePath(),\n root,\n originalSpecifier,\n resolved.to,\n );\n }\n if (groups.size === 0) continue;\n\n const declarationIndex = declaration.getChildIndex();\n for (const namedExport of movedExports) namedExport.remove();\n let offset = 1;\n for (const [target, exports] of groups) {\n sourceFile.insertExportDeclaration(declarationIndex + offset, {\n moduleSpecifier: target,\n isTypeOnly: declaration.isTypeOnly(),\n namedExports: exports,\n });\n offset += 1;\n }\n if (declaration.getNamedExports().length === 0) declaration.remove();\n }\n}\n\nfunction readPackageJson(packageFile: string): Record<string, unknown> | null {\n try {\n return JSON.parse(fs.readFileSync(packageFile, \"utf-8\")) as Record<\n string,\n unknown\n >;\n } catch {\n return null;\n }\n}\n\nfunction addDependencies(\n pending: PendingDependency[],\n apply: boolean,\n): MigrationCodemodFileChange[] {\n const changes: MigrationCodemodFileChange[] = [];\n const byFile = new Map<string, Set<string>>();\n for (const entry of pending) {\n const packages = byFile.get(entry.packageFile) ?? new Set<string>();\n packages.add(entry.packageName);\n byFile.set(entry.packageFile, packages);\n }\n for (const [packageFile, packageNames] of byFile) {\n const packageJson = readPackageJson(packageFile);\n if (!packageJson) continue;\n const allDependencySections = [\n \"dependencies\",\n \"devDependencies\",\n \"optionalDependencies\",\n \"peerDependencies\",\n ];\n const missing = [...packageNames].filter(\n (packageName) =>\n !allDependencySections.some((section) => {\n const dependencies = packageJson[section];\n return (\n dependencies &&\n typeof dependencies === \"object\" &&\n packageName in dependencies\n );\n }),\n );\n if (missing.length === 0) continue;\n const before = `${JSON.stringify(packageJson, null, 2)}\\n`;\n const dependencies =\n packageJson.dependencies && typeof packageJson.dependencies === \"object\"\n ? (packageJson.dependencies as Record<string, string>)\n : {};\n for (const packageName of missing.sort())\n dependencies[packageName] = \"latest\";\n packageJson.dependencies = Object.fromEntries(\n Object.entries(dependencies).sort(([left], [right]) =>\n left.localeCompare(right),\n ),\n );\n const after = `${JSON.stringify(packageJson, null, 2)}\\n`;\n changes.push({ file: packageFile, before, after });\n if (apply) fs.writeFileSync(packageFile, after);\n }\n return changes;\n}\n\nexport function runMigrationCodemods(\n options: RunMigrationCodemodsOptions,\n): MigrationCodemodResult {\n const root = path.resolve(options.root);\n const manifests = options.manifests ?? loadMigrationManifests(root);\n const moves = mergeManifestMoves(manifests);\n const targetExists =\n options.targetExists ?? createFreshMigrationTargetResolver(root);\n const project = new Project({\n skipAddingFilesFromTsConfig: true,\n manipulationSettings: { quoteKind: QuoteKind.Double },\n });\n const sourceFiles = project.addSourceFilesAtPaths(collectSourceFiles(root));\n const pendingDependencies: PendingDependency[] = [];\n const warnings: string[] = [];\n const changes: MigrationCodemodFileChange[] = [];\n\n for (const sourceFile of sourceFiles) {\n const before = sourceFile.getFullText();\n for (const declaration of [...sourceFile.getImportDeclarations()]) {\n const move = moves[declaration.getModuleSpecifierValue()];\n if (!move) continue;\n rewriteImportDeclaration(\n declaration,\n move,\n root,\n pendingDependencies,\n warnings,\n targetExists,\n );\n }\n rewriteExportDeclarations(\n sourceFile,\n moves,\n root,\n pendingDependencies,\n warnings,\n targetExists,\n );\n const after = sourceFile.getFullText();\n if (before === after) continue;\n changes.push({ file: sourceFile.getFilePath(), before, after });\n if (options.apply) sourceFile.saveSync();\n }\n\n const dependencyChanges = addDependencies(\n pendingDependencies,\n Boolean(options.apply),\n );\n return {\n changes: [...changes, ...dependencyChanges],\n dependencyFiles: dependencyChanges.map((change) => change.file),\n warnings,\n };\n}\n\nfunction focusedDiff(change: MigrationCodemodFileChange, root: string): string {\n const beforeLines = change.before.split(\"\\n\");\n const afterLines = change.after.split(\"\\n\");\n let prefix = 0;\n while (\n prefix < beforeLines.length &&\n prefix < afterLines.length &&\n beforeLines[prefix] === afterLines[prefix]\n ) {\n prefix += 1;\n }\n let suffix = 0;\n while (\n suffix < beforeLines.length - prefix &&\n suffix < afterLines.length - prefix &&\n beforeLines[beforeLines.length - 1 - suffix] ===\n afterLines[afterLines.length - 1 - suffix]\n ) {\n suffix += 1;\n }\n const beforeChanged = beforeLines.slice(prefix, beforeLines.length - suffix);\n const afterChanged = afterLines.slice(prefix, afterLines.length - suffix);\n return [\n `--- ${path.relative(root, change.file)}`,\n `+++ ${path.relative(root, change.file)}`,\n `@@ -${prefix + 1} +${prefix + 1} @@`,\n ...beforeChanged.map((line) => `-${line}`),\n ...afterChanged.map((line) => `+${line}`),\n ].join(\"\\n\");\n}\n\nexport function formatMigrationCodemodDiff(\n result: MigrationCodemodResult,\n root: string,\n): string {\n return result.changes\n .map((change) => focusedDiff(change, path.resolve(root)))\n .join(\"\\n\");\n}\n"]}
@@ -13,13 +13,13 @@
13
13
  export declare function createNotificationsHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<"" | import("./types.js").Notification[] | {
14
14
  count: number;
15
15
  updated?: undefined;
16
- ok?: undefined;
17
16
  error?: undefined;
17
+ ok?: undefined;
18
18
  } | {
19
19
  count?: undefined;
20
20
  updated: number;
21
- ok?: undefined;
22
21
  error?: undefined;
22
+ ok?: undefined;
23
23
  } | {
24
24
  count?: undefined;
25
25
  updated?: undefined;
@@ -28,7 +28,7 @@ export declare function createNotificationsHandler(): import("h3").EventHandlerW
28
28
  } | {
29
29
  count?: undefined;
30
30
  updated?: undefined;
31
- ok: boolean;
32
31
  error?: undefined;
32
+ ok: boolean;
33
33
  }>>;
34
34
  //# sourceMappingURL=routes.d.ts.map
@@ -27,11 +27,11 @@ export declare function resolveAgentEngineApiKeyWriteTarget(event: H3Event, scop
27
27
  export declare function createAgentEngineApiKeyHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
28
28
  error: any;
29
29
  } | {
30
+ error?: undefined;
30
31
  ok: boolean;
31
32
  key: string;
32
33
  baseUrlKey?: string;
33
34
  scope: AgentEngineApiKeyScope;
34
- error?: undefined;
35
35
  }>>;
36
36
  export {};
37
37
  //# sourceMappingURL=agent-engine-api-key-route.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.111.3",
3
+ "version": "0.111.4",
4
4
  "description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
5
5
  "homepage": "https://github.com/BuilderIO/agent-native#readme",
6
6
  "bugs": {