adhdev 0.6.51 → 0.6.52
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 +110 -65
- package/dist/cli/index.js.map +1 -1
- package/dist/index.js +80 -41
- 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,16 +5998,16 @@ var init_provider_loader = __esm({
|
|
|
5928
5998
|
// ─── Private ───────────────────────────────────
|
|
5929
5999
|
/**
|
|
5930
6000
|
* Find the on-disk directory for a provider by type.
|
|
5931
|
-
*
|
|
6001
|
+
* Preferred shape: root/category/type. Legacy flat root/type is kept temporarily for compatibility.
|
|
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
|
-
for (const candidate of [
|
|
6010
|
+
for (const candidate of [this.getProviderDir(root, cat, type), path6.join(root, type)]) {
|
|
5941
6011
|
if (fs5.existsSync(path6.join(candidate, "provider.json"))) return candidate;
|
|
5942
6012
|
}
|
|
5943
6013
|
const catDir = path6.join(root, cat);
|
|
@@ -27497,37 +27567,7 @@ var init_dev_server = __esm({
|
|
|
27497
27567
|
// ─── Provider File Explorer ───
|
|
27498
27568
|
/** Find the provider directory on disk */
|
|
27499
27569
|
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;
|
|
27570
|
+
return this.providerLoader.findProviderDir(type);
|
|
27531
27571
|
}
|
|
27532
27572
|
/** GET /api/providers/:type/files — list all files in provider directory */
|
|
27533
27573
|
async handleListFiles(type, _req, res) {
|
|
@@ -27922,10 +27962,9 @@ var init_dev_server = __esm({
|
|
|
27922
27962
|
}
|
|
27923
27963
|
let targetDir;
|
|
27924
27964
|
if (location === "user") {
|
|
27925
|
-
targetDir =
|
|
27965
|
+
targetDir = this.providerLoader.getUserProviderDir(category, type);
|
|
27926
27966
|
} else {
|
|
27927
|
-
|
|
27928
|
-
targetDir = path12.join(builtinDir, category, type);
|
|
27967
|
+
targetDir = this.providerLoader.getBuiltinProviderDir(category, type);
|
|
27929
27968
|
}
|
|
27930
27969
|
const jsonPath = path12.join(targetDir, "provider.json");
|
|
27931
27970
|
if (fs9.existsSync(jsonPath)) {
|
|
@@ -28734,7 +28773,7 @@ var init_dev_server = __esm({
|
|
|
28734
28773
|
const domContext = null;
|
|
28735
28774
|
this.sendAutoImplSSE({ event: "progress", data: { function: "_init", status: "loading_reference", message: `\uB808\uD37C\uB7F0\uC2A4 \uC2A4\uD06C\uB9BD\uD2B8 \uB85C\uB4DC \uC911 (${reference})...` } });
|
|
28736
28775
|
let referenceScripts = {};
|
|
28737
|
-
const builtinDir = this.providerLoader.
|
|
28776
|
+
const builtinDir = this.providerLoader.getPrimaryBuiltinDir();
|
|
28738
28777
|
const refDir = path12.join(builtinDir, "ide", reference);
|
|
28739
28778
|
if (fs9.existsSync(refDir)) {
|
|
28740
28779
|
const scriptsDir = path12.join(refDir, "scripts");
|
|
@@ -31384,7 +31423,7 @@ var init_adhdev_daemon = __esm({
|
|
|
31384
31423
|
fs11 = __toESM(require("fs"));
|
|
31385
31424
|
path14 = __toESM(require("path"));
|
|
31386
31425
|
import_chalk2 = __toESM(require("chalk"));
|
|
31387
|
-
pkgVersion = "0.6.
|
|
31426
|
+
pkgVersion = "0.6.52";
|
|
31388
31427
|
if (pkgVersion === "unknown") {
|
|
31389
31428
|
try {
|
|
31390
31429
|
const possiblePaths = [
|
|
@@ -33009,11 +33048,9 @@ function registerProviderCommands(program2) {
|
|
|
33009
33048
|
}).catch(async () => {
|
|
33010
33049
|
const pathMod = await import("path");
|
|
33011
33050
|
const fsMod = await import("fs");
|
|
33012
|
-
const osMod = await import("os");
|
|
33013
33051
|
const { ProviderLoader: ProviderLoader2 } = await Promise.resolve().then(() => (init_src(), src_exports));
|
|
33014
33052
|
const loader = new ProviderLoader2();
|
|
33015
|
-
|
|
33016
|
-
let targetDir = location === "builtin" ? pathMod.join(bDir, category, type) : pathMod.join(osMod.homedir(), ".adhdev", "providers", type);
|
|
33053
|
+
let targetDir = location === "builtin" ? loader.getBuiltinProviderDir(category, type) : loader.getUserProviderDir(category, type);
|
|
33017
33054
|
if (fsMod.existsSync(targetDir)) return { error: `Provider already exists at ${targetDir}` };
|
|
33018
33055
|
const isExt = category === "extension";
|
|
33019
33056
|
const isIde = category === "ide";
|
|
@@ -33069,12 +33106,9 @@ function registerProviderCommands(program2) {
|
|
|
33069
33106
|
const loader = new ProviderLoader2();
|
|
33070
33107
|
loader.loadAll();
|
|
33071
33108
|
const allProviders = loader.getAll();
|
|
33072
|
-
const osMod = await import("os");
|
|
33073
|
-
const pathMod = await import("path");
|
|
33074
33109
|
const fsMod = await import("fs");
|
|
33075
|
-
const userProviderDir = pathMod.join(osMod.homedir(), ".adhdev", "providers");
|
|
33076
33110
|
const isUserProvider = (p) => {
|
|
33077
|
-
const dir =
|
|
33111
|
+
const dir = loader.getUserProviderDir(p.category, p.type);
|
|
33078
33112
|
return fsMod.existsSync(dir) && !dir.includes(".upstream");
|
|
33079
33113
|
};
|
|
33080
33114
|
let type = typeArg;
|
|
@@ -33119,23 +33153,21 @@ function registerProviderCommands(program2) {
|
|
|
33119
33153
|
console.log(import_chalk6.default.red("\n\u2717 Fix aborted.\n"));
|
|
33120
33154
|
process.exit(1);
|
|
33121
33155
|
}
|
|
33122
|
-
const
|
|
33156
|
+
const pathMod = await import("path");
|
|
33123
33157
|
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);
|
|
33158
|
+
const builtinSrc = loader.getBuiltinProviderDir(providerToFix.category, type);
|
|
33159
|
+
const downloadedSrc = loader.getUpstreamProviderDir(providerToFix.category, type);
|
|
33128
33160
|
const sourceDir = fsMod2.existsSync(builtinSrc) ? builtinSrc : downloadedSrc;
|
|
33129
33161
|
if (actionAnswer.action === "clone") {
|
|
33130
33162
|
const newType = `my-${type}`;
|
|
33131
|
-
const targetDir =
|
|
33163
|
+
const targetDir = loader.getUserProviderDir(providerToFix.category, newType);
|
|
33132
33164
|
if (fsMod2.existsSync(targetDir)) {
|
|
33133
33165
|
console.log(import_chalk6.default.red(`
|
|
33134
33166
|
\u2717 Target directory already exists: ${targetDir}. Please delete it or fix it directly.`));
|
|
33135
33167
|
process.exit(1);
|
|
33136
33168
|
}
|
|
33137
33169
|
fsMod2.cpSync(sourceDir, targetDir, { recursive: true });
|
|
33138
|
-
const pJsonPath =
|
|
33170
|
+
const pJsonPath = pathMod.join(targetDir, "provider.json");
|
|
33139
33171
|
if (fsMod2.existsSync(pJsonPath)) {
|
|
33140
33172
|
const pJson = JSON.parse(fsMod2.readFileSync(pJsonPath, "utf8"));
|
|
33141
33173
|
pJson.type = newType;
|
|
@@ -33146,11 +33178,11 @@ function registerProviderCommands(program2) {
|
|
|
33146
33178
|
\u2713 Successfully cloned to [${newType}]`));
|
|
33147
33179
|
type = newType;
|
|
33148
33180
|
} else if (actionAnswer.action === "inplace") {
|
|
33149
|
-
const targetDir =
|
|
33181
|
+
const targetDir = loader.getUserProviderDir(providerToFix.category, type);
|
|
33150
33182
|
if (!fsMod2.existsSync(targetDir)) {
|
|
33151
33183
|
fsMod2.cpSync(sourceDir, targetDir, { recursive: true });
|
|
33152
33184
|
}
|
|
33153
|
-
const pJsonPath =
|
|
33185
|
+
const pJsonPath = pathMod.join(targetDir, "provider.json");
|
|
33154
33186
|
if (fsMod2.existsSync(pJsonPath)) {
|
|
33155
33187
|
const pJson = JSON.parse(fsMod2.readFileSync(pJsonPath, "utf8"));
|
|
33156
33188
|
pJson.disableUpstream = true;
|
|
@@ -33265,11 +33297,14 @@ function registerProviderCommands(program2) {
|
|
|
33265
33297
|
if (!startResult.started || !startResult.sseUrl) {
|
|
33266
33298
|
throw new Error(`Unexpected response: ${JSON.stringify(startResult)}`);
|
|
33267
33299
|
}
|
|
33268
|
-
const
|
|
33269
|
-
const
|
|
33270
|
-
const
|
|
33300
|
+
const pathMod = await import("path");
|
|
33301
|
+
const { ProviderLoader: ProviderLoader3 } = await Promise.resolve().then(() => (init_src(), src_exports));
|
|
33302
|
+
const loader2 = new ProviderLoader3();
|
|
33303
|
+
loader2.loadAll();
|
|
33304
|
+
const providerMeta = loader2.getMeta(type);
|
|
33305
|
+
const targetDir = providerMeta ? loader2.getUserProviderDir(providerMeta.category, type) : pathMod.join(loader2.getUserDir(), 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,21 @@ 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);
|
|
33451
33489
|
const possiblePaths = [
|
|
33452
|
-
|
|
33453
|
-
|
|
33454
|
-
|
|
33490
|
+
...providerMeta ? [
|
|
33491
|
+
pathMod.join(loader.getUserProviderDir(providerMeta.category, type), "provider.js"),
|
|
33492
|
+
pathMod.join(loader.getUpstreamProviderDir(providerMeta.category, type), "provider.js"),
|
|
33493
|
+
pathMod.join(loader.getBuiltinProviderDir(providerMeta.category, type), "provider.js")
|
|
33494
|
+
] : [],
|
|
33495
|
+
pathMod.join(loader.getUserDir(), type, "provider.js"),
|
|
33496
|
+
pathMod.join(loader.getUpstreamDir(), "ide", type, "provider.js"),
|
|
33497
|
+
pathMod.join(loader.getUpstreamDir(), "extension", type, "provider.js"),
|
|
33498
|
+
pathMod.join(loader.getPrimaryBuiltinDir(), "ide", type, "provider.js"),
|
|
33499
|
+
pathMod.join(loader.getPrimaryBuiltinDir(), "extension", type, "provider.js")
|
|
33455
33500
|
];
|
|
33456
33501
|
for (const p of possiblePaths) {
|
|
33457
33502
|
if (fsMod.existsSync(p)) {
|