adhdev 0.6.51 → 0.6.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +108 -67
- package/dist/cli/index.js.map +1 -1
- package/dist/index.js +81 -43
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -5242,6 +5242,76 @@ var init_provider_loader = __esm({
|
|
|
5242
5242
|
}
|
|
5243
5243
|
// ─── Public API ────────────────────────────────
|
|
5244
5244
|
/**
|
|
5245
|
+
* Ordered builtin roots used for local fallback/reference data.
|
|
5246
|
+
*/
|
|
5247
|
+
getBuiltinDirs() {
|
|
5248
|
+
return [...this.builtinDirs];
|
|
5249
|
+
}
|
|
5250
|
+
/**
|
|
5251
|
+
* Primary builtin root used for local scaffolding/reference flows.
|
|
5252
|
+
*/
|
|
5253
|
+
getPrimaryBuiltinDir() {
|
|
5254
|
+
return this.builtinDirs[0];
|
|
5255
|
+
}
|
|
5256
|
+
/**
|
|
5257
|
+
* User override root (~/.adhdev/providers by default).
|
|
5258
|
+
*/
|
|
5259
|
+
getUserDir() {
|
|
5260
|
+
return this.userDir;
|
|
5261
|
+
}
|
|
5262
|
+
/**
|
|
5263
|
+
* Auto-updated upstream root (~/.adhdev/providers/.upstream by default).
|
|
5264
|
+
*/
|
|
5265
|
+
getUpstreamDir() {
|
|
5266
|
+
return this.upstreamDir;
|
|
5267
|
+
}
|
|
5268
|
+
/**
|
|
5269
|
+
* Provider search order for on-disk lookups.
|
|
5270
|
+
* Highest-priority editable overrides come first.
|
|
5271
|
+
*/
|
|
5272
|
+
getProviderRoots() {
|
|
5273
|
+
return [this.userDir, this.upstreamDir, ...this.builtinDirs];
|
|
5274
|
+
}
|
|
5275
|
+
/**
|
|
5276
|
+
* Canonical provider directory shape for a given root.
|
|
5277
|
+
*/
|
|
5278
|
+
getProviderDir(root, category, type) {
|
|
5279
|
+
return path6.join(root, category, type);
|
|
5280
|
+
}
|
|
5281
|
+
/**
|
|
5282
|
+
* Canonical user override directory for a provider.
|
|
5283
|
+
*/
|
|
5284
|
+
getUserProviderDir(category, type) {
|
|
5285
|
+
return this.getProviderDir(this.userDir, category, type);
|
|
5286
|
+
}
|
|
5287
|
+
/**
|
|
5288
|
+
* Canonical upstream directory for a provider.
|
|
5289
|
+
*/
|
|
5290
|
+
getUpstreamProviderDir(category, type) {
|
|
5291
|
+
return this.getProviderDir(this.upstreamDir, category, type);
|
|
5292
|
+
}
|
|
5293
|
+
/**
|
|
5294
|
+
* Canonical builtin directory for a provider.
|
|
5295
|
+
*/
|
|
5296
|
+
getBuiltinProviderDir(category, type) {
|
|
5297
|
+
return this.getProviderDir(this.getPrimaryBuiltinDir(), category, type);
|
|
5298
|
+
}
|
|
5299
|
+
/**
|
|
5300
|
+
* Find the on-disk directory for a provider by type.
|
|
5301
|
+
* Search order: user override → upstream → builtin fallback.
|
|
5302
|
+
*/
|
|
5303
|
+
findProviderDir(type) {
|
|
5304
|
+
return this.findProviderDirInternal(type);
|
|
5305
|
+
}
|
|
5306
|
+
/**
|
|
5307
|
+
* Resolve a file within a provider directory.
|
|
5308
|
+
*/
|
|
5309
|
+
resolveProviderFile(type, ...segments) {
|
|
5310
|
+
const dir = this.findProviderDirInternal(type);
|
|
5311
|
+
if (!dir) return null;
|
|
5312
|
+
return path6.join(dir, ...segments);
|
|
5313
|
+
}
|
|
5314
|
+
/**
|
|
5245
5315
|
* Load all providers (3-tier priority)
|
|
5246
5316
|
* 1. .upstream/ (GitHub auto-download — primary source)
|
|
5247
5317
|
* 2. User custom (~/.adhdev/providers/ excluding .upstream)
|
|
@@ -5567,7 +5637,7 @@ var init_provider_loader = __esm({
|
|
|
5567
5637
|
* Tries scripts.js first, then individual .js files.
|
|
5568
5638
|
*/
|
|
5569
5639
|
loadScriptsFromDir(type, scriptDir) {
|
|
5570
|
-
const providerDir = this.
|
|
5640
|
+
const providerDir = this.findProviderDirInternal(type);
|
|
5571
5641
|
if (!providerDir) {
|
|
5572
5642
|
this.log(` [loadScriptsFromDir] ${type}: providerDir not found`);
|
|
5573
5643
|
return null;
|
|
@@ -5928,18 +5998,17 @@ var init_provider_loader = __esm({
|
|
|
5928
5998
|
// ─── Private ───────────────────────────────────
|
|
5929
5999
|
/**
|
|
5930
6000
|
* Find the on-disk directory for a provider by type.
|
|
5931
|
-
*
|
|
6001
|
+
* Canonical shape: root/category/type.
|
|
5932
6002
|
*/
|
|
5933
|
-
|
|
6003
|
+
findProviderDirInternal(type) {
|
|
5934
6004
|
const provider = this.providers.get(type);
|
|
5935
6005
|
if (!provider) return null;
|
|
5936
6006
|
const cat = provider.category;
|
|
5937
|
-
const searchRoots =
|
|
6007
|
+
const searchRoots = this.getProviderRoots();
|
|
5938
6008
|
for (const root of searchRoots) {
|
|
5939
6009
|
if (!fs5.existsSync(root)) continue;
|
|
5940
|
-
|
|
5941
|
-
|
|
5942
|
-
}
|
|
6010
|
+
const candidate = this.getProviderDir(root, cat, type);
|
|
6011
|
+
if (fs5.existsSync(path6.join(candidate, "provider.json"))) return candidate;
|
|
5943
6012
|
const catDir = path6.join(root, cat);
|
|
5944
6013
|
if (fs5.existsSync(catDir)) {
|
|
5945
6014
|
try {
|
|
@@ -27497,37 +27566,7 @@ var init_dev_server = __esm({
|
|
|
27497
27566
|
// ─── Provider File Explorer ───
|
|
27498
27567
|
/** Find the provider directory on disk */
|
|
27499
27568
|
findProviderDir(type) {
|
|
27500
|
-
|
|
27501
|
-
if (!provider) return null;
|
|
27502
|
-
const cat = provider.category;
|
|
27503
|
-
const builtinDir = this.providerLoader.builtinDirs?.[0] || path12.resolve(__dirname, "../providers/_builtin");
|
|
27504
|
-
const userDir = path12.join(os14.homedir(), ".adhdev", "providers");
|
|
27505
|
-
const directCandidates = [
|
|
27506
|
-
path12.join(userDir, type),
|
|
27507
|
-
path12.join(builtinDir, cat, type),
|
|
27508
|
-
path12.join(builtinDir, type)
|
|
27509
|
-
];
|
|
27510
|
-
for (const d of directCandidates) {
|
|
27511
|
-
if (fs9.existsSync(path12.join(d, "provider.json"))) return d;
|
|
27512
|
-
}
|
|
27513
|
-
const catDir = path12.join(builtinDir, cat);
|
|
27514
|
-
if (fs9.existsSync(catDir)) {
|
|
27515
|
-
try {
|
|
27516
|
-
for (const entry of fs9.readdirSync(catDir, { withFileTypes: true })) {
|
|
27517
|
-
if (!entry.isDirectory()) continue;
|
|
27518
|
-
const jsonPath = path12.join(catDir, entry.name, "provider.json");
|
|
27519
|
-
if (fs9.existsSync(jsonPath)) {
|
|
27520
|
-
try {
|
|
27521
|
-
const data = JSON.parse(fs9.readFileSync(jsonPath, "utf-8"));
|
|
27522
|
-
if (data.type === type) return path12.join(catDir, entry.name);
|
|
27523
|
-
} catch {
|
|
27524
|
-
}
|
|
27525
|
-
}
|
|
27526
|
-
}
|
|
27527
|
-
} catch {
|
|
27528
|
-
}
|
|
27529
|
-
}
|
|
27530
|
-
return null;
|
|
27569
|
+
return this.providerLoader.findProviderDir(type);
|
|
27531
27570
|
}
|
|
27532
27571
|
/** GET /api/providers/:type/files — list all files in provider directory */
|
|
27533
27572
|
async handleListFiles(type, _req, res) {
|
|
@@ -27922,10 +27961,9 @@ var init_dev_server = __esm({
|
|
|
27922
27961
|
}
|
|
27923
27962
|
let targetDir;
|
|
27924
27963
|
if (location === "user") {
|
|
27925
|
-
targetDir =
|
|
27964
|
+
targetDir = this.providerLoader.getUserProviderDir(category, type);
|
|
27926
27965
|
} else {
|
|
27927
|
-
|
|
27928
|
-
targetDir = path12.join(builtinDir, category, type);
|
|
27966
|
+
targetDir = this.providerLoader.getBuiltinProviderDir(category, type);
|
|
27929
27967
|
}
|
|
27930
27968
|
const jsonPath = path12.join(targetDir, "provider.json");
|
|
27931
27969
|
if (fs9.existsSync(jsonPath)) {
|
|
@@ -28734,7 +28772,7 @@ var init_dev_server = __esm({
|
|
|
28734
28772
|
const domContext = null;
|
|
28735
28773
|
this.sendAutoImplSSE({ event: "progress", data: { function: "_init", status: "loading_reference", message: `\uB808\uD37C\uB7F0\uC2A4 \uC2A4\uD06C\uB9BD\uD2B8 \uB85C\uB4DC \uC911 (${reference})...` } });
|
|
28736
28774
|
let referenceScripts = {};
|
|
28737
|
-
const builtinDir = this.providerLoader.
|
|
28775
|
+
const builtinDir = this.providerLoader.getPrimaryBuiltinDir();
|
|
28738
28776
|
const refDir = path12.join(builtinDir, "ide", reference);
|
|
28739
28777
|
if (fs9.existsSync(refDir)) {
|
|
28740
28778
|
const scriptsDir = path12.join(refDir, "scripts");
|
|
@@ -31384,7 +31422,7 @@ var init_adhdev_daemon = __esm({
|
|
|
31384
31422
|
fs11 = __toESM(require("fs"));
|
|
31385
31423
|
path14 = __toESM(require("path"));
|
|
31386
31424
|
import_chalk2 = __toESM(require("chalk"));
|
|
31387
|
-
pkgVersion = "0.6.
|
|
31425
|
+
pkgVersion = "0.6.53";
|
|
31388
31426
|
if (pkgVersion === "unknown") {
|
|
31389
31427
|
try {
|
|
31390
31428
|
const possiblePaths = [
|
|
@@ -33009,11 +33047,9 @@ function registerProviderCommands(program2) {
|
|
|
33009
33047
|
}).catch(async () => {
|
|
33010
33048
|
const pathMod = await import("path");
|
|
33011
33049
|
const fsMod = await import("fs");
|
|
33012
|
-
const osMod = await import("os");
|
|
33013
33050
|
const { ProviderLoader: ProviderLoader2 } = await Promise.resolve().then(() => (init_src(), src_exports));
|
|
33014
33051
|
const loader = new ProviderLoader2();
|
|
33015
|
-
|
|
33016
|
-
let targetDir = location === "builtin" ? pathMod.join(bDir, category, type) : pathMod.join(osMod.homedir(), ".adhdev", "providers", type);
|
|
33052
|
+
let targetDir = location === "builtin" ? loader.getBuiltinProviderDir(category, type) : loader.getUserProviderDir(category, type);
|
|
33017
33053
|
if (fsMod.existsSync(targetDir)) return { error: `Provider already exists at ${targetDir}` };
|
|
33018
33054
|
const isExt = category === "extension";
|
|
33019
33055
|
const isIde = category === "ide";
|
|
@@ -33069,12 +33105,9 @@ function registerProviderCommands(program2) {
|
|
|
33069
33105
|
const loader = new ProviderLoader2();
|
|
33070
33106
|
loader.loadAll();
|
|
33071
33107
|
const allProviders = loader.getAll();
|
|
33072
|
-
const osMod = await import("os");
|
|
33073
|
-
const pathMod = await import("path");
|
|
33074
33108
|
const fsMod = await import("fs");
|
|
33075
|
-
const userProviderDir = pathMod.join(osMod.homedir(), ".adhdev", "providers");
|
|
33076
33109
|
const isUserProvider = (p) => {
|
|
33077
|
-
const dir =
|
|
33110
|
+
const dir = loader.getUserProviderDir(p.category, p.type);
|
|
33078
33111
|
return fsMod.existsSync(dir) && !dir.includes(".upstream");
|
|
33079
33112
|
};
|
|
33080
33113
|
let type = typeArg;
|
|
@@ -33119,23 +33152,21 @@ function registerProviderCommands(program2) {
|
|
|
33119
33152
|
console.log(import_chalk6.default.red("\n\u2717 Fix aborted.\n"));
|
|
33120
33153
|
process.exit(1);
|
|
33121
33154
|
}
|
|
33122
|
-
const
|
|
33155
|
+
const pathMod = await import("path");
|
|
33123
33156
|
const fsMod2 = await import("fs");
|
|
33124
|
-
const
|
|
33125
|
-
const
|
|
33126
|
-
const builtinSrc = pathMod2.join(bDir, providerToFix.category, type);
|
|
33127
|
-
const downloadedSrc = pathMod2.join(osMod2.homedir(), ".adhdev", "providers", ".upstream", providerToFix.category, type);
|
|
33157
|
+
const builtinSrc = loader.getBuiltinProviderDir(providerToFix.category, type);
|
|
33158
|
+
const downloadedSrc = loader.getUpstreamProviderDir(providerToFix.category, type);
|
|
33128
33159
|
const sourceDir = fsMod2.existsSync(builtinSrc) ? builtinSrc : downloadedSrc;
|
|
33129
33160
|
if (actionAnswer.action === "clone") {
|
|
33130
33161
|
const newType = `my-${type}`;
|
|
33131
|
-
const targetDir =
|
|
33162
|
+
const targetDir = loader.getUserProviderDir(providerToFix.category, newType);
|
|
33132
33163
|
if (fsMod2.existsSync(targetDir)) {
|
|
33133
33164
|
console.log(import_chalk6.default.red(`
|
|
33134
33165
|
\u2717 Target directory already exists: ${targetDir}. Please delete it or fix it directly.`));
|
|
33135
33166
|
process.exit(1);
|
|
33136
33167
|
}
|
|
33137
33168
|
fsMod2.cpSync(sourceDir, targetDir, { recursive: true });
|
|
33138
|
-
const pJsonPath =
|
|
33169
|
+
const pJsonPath = pathMod.join(targetDir, "provider.json");
|
|
33139
33170
|
if (fsMod2.existsSync(pJsonPath)) {
|
|
33140
33171
|
const pJson = JSON.parse(fsMod2.readFileSync(pJsonPath, "utf8"));
|
|
33141
33172
|
pJson.type = newType;
|
|
@@ -33146,11 +33177,11 @@ function registerProviderCommands(program2) {
|
|
|
33146
33177
|
\u2713 Successfully cloned to [${newType}]`));
|
|
33147
33178
|
type = newType;
|
|
33148
33179
|
} else if (actionAnswer.action === "inplace") {
|
|
33149
|
-
const targetDir =
|
|
33180
|
+
const targetDir = loader.getUserProviderDir(providerToFix.category, type);
|
|
33150
33181
|
if (!fsMod2.existsSync(targetDir)) {
|
|
33151
33182
|
fsMod2.cpSync(sourceDir, targetDir, { recursive: true });
|
|
33152
33183
|
}
|
|
33153
|
-
const pJsonPath =
|
|
33184
|
+
const pJsonPath = pathMod.join(targetDir, "provider.json");
|
|
33154
33185
|
if (fsMod2.existsSync(pJsonPath)) {
|
|
33155
33186
|
const pJson = JSON.parse(fsMod2.readFileSync(pJsonPath, "utf8"));
|
|
33156
33187
|
pJson.disableUpstream = true;
|
|
@@ -33265,11 +33296,15 @@ function registerProviderCommands(program2) {
|
|
|
33265
33296
|
if (!startResult.started || !startResult.sseUrl) {
|
|
33266
33297
|
throw new Error(`Unexpected response: ${JSON.stringify(startResult)}`);
|
|
33267
33298
|
}
|
|
33268
|
-
const
|
|
33269
|
-
const
|
|
33270
|
-
const
|
|
33299
|
+
const pathMod = await import("path");
|
|
33300
|
+
const { ProviderLoader: ProviderLoader3 } = await Promise.resolve().then(() => (init_src(), src_exports));
|
|
33301
|
+
const loader2 = new ProviderLoader3();
|
|
33302
|
+
loader2.loadAll();
|
|
33303
|
+
const providerMeta = loader2.getMeta(type);
|
|
33304
|
+
if (!providerMeta) throw new Error(`Unknown provider: ${type}`);
|
|
33305
|
+
const targetDir = loader2.getUserProviderDir(providerMeta.category, type);
|
|
33271
33306
|
const fsMock = await import("fs");
|
|
33272
|
-
const logFile2 =
|
|
33307
|
+
const logFile2 = pathMod.join(targetDir, `auto-impl.log`);
|
|
33273
33308
|
fsMock.writeFileSync(logFile2, `=== Auto-Impl Started ===
|
|
33274
33309
|
`);
|
|
33275
33310
|
console.log(import_chalk6.default.gray(` Agent logs: ${logFile2}`));
|
|
@@ -33447,11 +33482,17 @@ function registerProviderCommands(program2) {
|
|
|
33447
33482
|
}).catch(async () => {
|
|
33448
33483
|
const pathMod = await import("path");
|
|
33449
33484
|
const fsMod = await import("fs");
|
|
33450
|
-
const
|
|
33485
|
+
const { ProviderLoader: ProviderLoader2 } = await Promise.resolve().then(() => (init_src(), src_exports));
|
|
33486
|
+
const loader = new ProviderLoader2();
|
|
33487
|
+
loader.loadAll();
|
|
33488
|
+
const providerMeta = loader.getMeta(type);
|
|
33489
|
+
if (!providerMeta) {
|
|
33490
|
+
return { error: `Provider '${type}' not found` };
|
|
33491
|
+
}
|
|
33451
33492
|
const possiblePaths = [
|
|
33452
|
-
pathMod.join(
|
|
33453
|
-
pathMod.join(
|
|
33454
|
-
pathMod.join(
|
|
33493
|
+
pathMod.join(loader.getUserProviderDir(providerMeta.category, type), "provider.js"),
|
|
33494
|
+
pathMod.join(loader.getUpstreamProviderDir(providerMeta.category, type), "provider.js"),
|
|
33495
|
+
pathMod.join(loader.getBuiltinProviderDir(providerMeta.category, type), "provider.js")
|
|
33455
33496
|
];
|
|
33456
33497
|
for (const p of possiblePaths) {
|
|
33457
33498
|
if (fsMod.existsSync(p)) {
|