@wrongstack/tools 0.276.2 → 0.276.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.
- package/dist/builtin.js +61 -54
- package/dist/builtin.js.map +1 -1
- package/dist/index.js +61 -54
- package/dist/index.js.map +1 -1
- package/dist/json.js +81 -26
- package/dist/json.js.map +1 -1
- package/dist/pack.js +61 -54
- package/dist/pack.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -807,13 +807,13 @@ async function globFiles(pattern, base, extraGlob) {
|
|
|
807
807
|
return await globNative(pattern, base, extraGlob);
|
|
808
808
|
}
|
|
809
809
|
function checkRg() {
|
|
810
|
-
return new Promise((
|
|
810
|
+
return new Promise((resolve7) => {
|
|
811
811
|
try {
|
|
812
812
|
const p = spawn("rg", ["--version"], { env: buildChildEnv(), stdio: "ignore", windowsHide: true });
|
|
813
|
-
p.on("error", () =>
|
|
814
|
-
p.on("close", (code) =>
|
|
813
|
+
p.on("error", () => resolve7(false));
|
|
814
|
+
p.on("close", (code) => resolve7(code === 0));
|
|
815
815
|
} catch {
|
|
816
|
-
|
|
816
|
+
resolve7(false);
|
|
817
817
|
}
|
|
818
818
|
});
|
|
819
819
|
}
|
|
@@ -830,10 +830,10 @@ function spawnRgFind(pattern, base) {
|
|
|
830
830
|
buf += chunk.toString();
|
|
831
831
|
});
|
|
832
832
|
return {
|
|
833
|
-
promise: new Promise((
|
|
833
|
+
promise: new Promise((resolve7, reject) => {
|
|
834
834
|
child.on("error", reject);
|
|
835
835
|
child.on("close", () => {
|
|
836
|
-
|
|
836
|
+
resolve7(buf.split("\n").filter(Boolean));
|
|
837
837
|
});
|
|
838
838
|
})
|
|
839
839
|
};
|
|
@@ -1106,13 +1106,13 @@ var grepTool = {
|
|
|
1106
1106
|
}
|
|
1107
1107
|
};
|
|
1108
1108
|
async function detectRg(signal) {
|
|
1109
|
-
return new Promise((
|
|
1109
|
+
return new Promise((resolve7) => {
|
|
1110
1110
|
try {
|
|
1111
1111
|
const p = spawn("rg", ["--version"], { env: buildChildEnv(), stdio: "ignore", signal, windowsHide: true });
|
|
1112
|
-
p.on("error", () =>
|
|
1113
|
-
p.on("close", (code) =>
|
|
1112
|
+
p.on("error", () => resolve7(false));
|
|
1113
|
+
p.on("close", (code) => resolve7(code === 0));
|
|
1114
1114
|
} catch {
|
|
1115
|
-
|
|
1115
|
+
resolve7(false);
|
|
1116
1116
|
}
|
|
1117
1117
|
});
|
|
1118
1118
|
}
|
|
@@ -3081,10 +3081,10 @@ var bashTool = {
|
|
|
3081
3081
|
queue.push(c);
|
|
3082
3082
|
}
|
|
3083
3083
|
};
|
|
3084
|
-
const next = () => new Promise((
|
|
3084
|
+
const next = () => new Promise((resolve7) => {
|
|
3085
3085
|
const c = queue.shift();
|
|
3086
|
-
if (c)
|
|
3087
|
-
else resolveNext =
|
|
3086
|
+
if (c) resolve7(c);
|
|
3087
|
+
else resolveNext = resolve7;
|
|
3088
3088
|
});
|
|
3089
3089
|
let lastFlush = Date.now();
|
|
3090
3090
|
const flush = () => {
|
|
@@ -3545,7 +3545,7 @@ var execTool = {
|
|
|
3545
3545
|
}
|
|
3546
3546
|
};
|
|
3547
3547
|
function runCommand(cmd, args, cwd, timeout, signal, sessionId) {
|
|
3548
|
-
return new Promise((
|
|
3548
|
+
return new Promise((resolve7) => {
|
|
3549
3549
|
let stdout = "";
|
|
3550
3550
|
let stderr = "";
|
|
3551
3551
|
let killed = false;
|
|
@@ -3553,7 +3553,7 @@ function runCommand(cmd, args, cwd, timeout, signal, sessionId) {
|
|
|
3553
3553
|
const finish = (result) => {
|
|
3554
3554
|
if (resolvedOnce.value) return;
|
|
3555
3555
|
resolvedOnce.value = true;
|
|
3556
|
-
|
|
3556
|
+
resolve7(result);
|
|
3557
3557
|
};
|
|
3558
3558
|
const startedAt = Date.now();
|
|
3559
3559
|
const spool = createOutputSpool({ tool: `exec-${cmd}`, thresholdBytes: MAX_OUTPUT2 });
|
|
@@ -4916,7 +4916,7 @@ function buildArgs(input) {
|
|
|
4916
4916
|
}
|
|
4917
4917
|
}
|
|
4918
4918
|
function runGit(args, cwd, signal) {
|
|
4919
|
-
return new Promise((
|
|
4919
|
+
return new Promise((resolve7) => {
|
|
4920
4920
|
let stdout = "";
|
|
4921
4921
|
let stderr = "";
|
|
4922
4922
|
const child = spawn("git", args, {
|
|
@@ -4937,7 +4937,7 @@ function runGit(args, cwd, signal) {
|
|
|
4937
4937
|
}
|
|
4938
4938
|
});
|
|
4939
4939
|
child.on("error", (err) => {
|
|
4940
|
-
|
|
4940
|
+
resolve7({
|
|
4941
4941
|
command: args[0],
|
|
4942
4942
|
stdout: normalizeCommandOutput(stdout),
|
|
4943
4943
|
stderr: err.message,
|
|
@@ -4946,7 +4946,7 @@ function runGit(args, cwd, signal) {
|
|
|
4946
4946
|
});
|
|
4947
4947
|
});
|
|
4948
4948
|
child.on("close", (code) => {
|
|
4949
|
-
|
|
4949
|
+
resolve7({
|
|
4950
4950
|
command: args[0],
|
|
4951
4951
|
stdout: normalizeCommandOutput(stdout),
|
|
4952
4952
|
stderr: normalizeCommandOutput(stderr),
|
|
@@ -5046,7 +5046,7 @@ function stripPathComponents(p, strip) {
|
|
|
5046
5046
|
return parts.slice(strip).join("/");
|
|
5047
5047
|
}
|
|
5048
5048
|
function runPatch(args, cwd, signal) {
|
|
5049
|
-
return new Promise((
|
|
5049
|
+
return new Promise((resolve7) => {
|
|
5050
5050
|
let stdout = "";
|
|
5051
5051
|
let stderr = "";
|
|
5052
5052
|
const env = { ...buildChildEnv(), LANG: "C", LC_ALL: "C" };
|
|
@@ -5057,8 +5057,8 @@ function runPatch(args, cwd, signal) {
|
|
|
5057
5057
|
child.stderr?.on("data", (c) => {
|
|
5058
5058
|
stderr += c.toString();
|
|
5059
5059
|
});
|
|
5060
|
-
child.on("close", (code) =>
|
|
5061
|
-
child.on("error", (e) =>
|
|
5060
|
+
child.on("close", (code) => resolve7({ exitCode: code ?? 1, stdout, stderr }));
|
|
5061
|
+
child.on("error", (e) => resolve7({ exitCode: 1, stdout: "", stderr: e.message }));
|
|
5062
5062
|
});
|
|
5063
5063
|
}
|
|
5064
5064
|
function extractPatchedFiles(output) {
|
|
@@ -5120,30 +5120,30 @@ var jsonTool = {
|
|
|
5120
5120
|
}
|
|
5121
5121
|
}
|
|
5122
5122
|
},
|
|
5123
|
-
async execute(input) {
|
|
5123
|
+
async execute(input, ctx) {
|
|
5124
5124
|
const action = input.action ?? "parse";
|
|
5125
5125
|
switch (action) {
|
|
5126
5126
|
case "query":
|
|
5127
|
-
return executeQuery(input);
|
|
5127
|
+
return executeQuery(input, ctx);
|
|
5128
5128
|
case "validate":
|
|
5129
|
-
return executeValidate(input);
|
|
5129
|
+
return executeValidate(input, ctx);
|
|
5130
5130
|
case "transform":
|
|
5131
|
-
return executeTransform(input);
|
|
5131
|
+
return executeTransform(input, ctx);
|
|
5132
5132
|
case "merge":
|
|
5133
5133
|
return executeMerge(input);
|
|
5134
5134
|
case "parse":
|
|
5135
5135
|
default:
|
|
5136
|
-
return executeParse(input);
|
|
5136
|
+
return executeParse(input, ctx);
|
|
5137
5137
|
}
|
|
5138
5138
|
}
|
|
5139
5139
|
};
|
|
5140
|
-
async function executeParse(input) {
|
|
5140
|
+
async function executeParse(input, ctx) {
|
|
5141
5141
|
const format = input.format ?? "json";
|
|
5142
5142
|
let parsed;
|
|
5143
5143
|
let raw;
|
|
5144
5144
|
if (input.file) {
|
|
5145
5145
|
try {
|
|
5146
|
-
raw = await fs7.readFile(input.file, "utf8");
|
|
5146
|
+
raw = await fs7.readFile(await safeResolveReal(input.file, ctx), "utf8");
|
|
5147
5147
|
} catch {
|
|
5148
5148
|
return { data: null, formatted: "", type: "unknown", action: "parse", error: "Could not read file" };
|
|
5149
5149
|
}
|
|
@@ -5194,14 +5194,14 @@ async function executeParse(input) {
|
|
|
5194
5194
|
keys: typeof parsed === "object" && parsed !== null ? Object.keys(parsed) : void 0
|
|
5195
5195
|
};
|
|
5196
5196
|
}
|
|
5197
|
-
async function executeQuery(input) {
|
|
5197
|
+
async function executeQuery(input, ctx) {
|
|
5198
5198
|
if (!input.query) {
|
|
5199
5199
|
return { data: null, formatted: "", type: "unknown", action: "query", error: "query is required for action: query" };
|
|
5200
5200
|
}
|
|
5201
5201
|
let parsed;
|
|
5202
5202
|
if (input.file) {
|
|
5203
5203
|
try {
|
|
5204
|
-
const raw = await fs7.readFile(input.file, "utf8");
|
|
5204
|
+
const raw = await fs7.readFile(await safeResolveReal(input.file, ctx), "utf8");
|
|
5205
5205
|
parsed = JSON.parse(raw);
|
|
5206
5206
|
} catch {
|
|
5207
5207
|
return { data: null, formatted: "", type: "unknown", action: "query", error: "Could not read/parse file" };
|
|
@@ -5236,14 +5236,14 @@ async function executeQuery(input) {
|
|
|
5236
5236
|
};
|
|
5237
5237
|
}
|
|
5238
5238
|
}
|
|
5239
|
-
async function executeValidate(input) {
|
|
5239
|
+
async function executeValidate(input, ctx) {
|
|
5240
5240
|
if (!input.schema) {
|
|
5241
5241
|
return { data: null, formatted: "", type: "unknown", action: "validate", error: "schema is required for action: validate" };
|
|
5242
5242
|
}
|
|
5243
5243
|
let parsed;
|
|
5244
5244
|
if (input.file) {
|
|
5245
5245
|
try {
|
|
5246
|
-
const raw = await fs7.readFile(input.file, "utf8");
|
|
5246
|
+
const raw = await fs7.readFile(await safeResolveReal(input.file, ctx), "utf8");
|
|
5247
5247
|
parsed = JSON.parse(raw);
|
|
5248
5248
|
} catch {
|
|
5249
5249
|
return { data: null, formatted: "", type: "unknown", action: "validate", error: "Could not read/parse file" };
|
|
@@ -5278,14 +5278,14 @@ async function executeValidate(input) {
|
|
|
5278
5278
|
};
|
|
5279
5279
|
}
|
|
5280
5280
|
}
|
|
5281
|
-
async function executeTransform(input) {
|
|
5281
|
+
async function executeTransform(input, ctx) {
|
|
5282
5282
|
if (!input.transforms || input.transforms.length === 0) {
|
|
5283
5283
|
return { data: null, formatted: "", type: "unknown", action: "transform", error: "transforms array is required for action: transform" };
|
|
5284
5284
|
}
|
|
5285
5285
|
let parsed;
|
|
5286
5286
|
if (input.file) {
|
|
5287
5287
|
try {
|
|
5288
|
-
const raw = await fs7.readFile(input.file, "utf8");
|
|
5288
|
+
const raw = await fs7.readFile(await safeResolveReal(input.file, ctx), "utf8");
|
|
5289
5289
|
parsed = JSON.parse(raw);
|
|
5290
5290
|
} catch {
|
|
5291
5291
|
return { data: null, formatted: "", type: "unknown", action: "transform", error: "Could not read/parse file" };
|
|
@@ -5637,7 +5637,7 @@ function findGitDir2(cwd) {
|
|
|
5637
5637
|
return null;
|
|
5638
5638
|
}
|
|
5639
5639
|
function runGit2(args, cwd, signal) {
|
|
5640
|
-
return new Promise((
|
|
5640
|
+
return new Promise((resolve7) => {
|
|
5641
5641
|
let stdout = "";
|
|
5642
5642
|
let stderr = "";
|
|
5643
5643
|
const child = spawn("git", args, {
|
|
@@ -5653,8 +5653,8 @@ function runGit2(args, cwd, signal) {
|
|
|
5653
5653
|
child.stderr?.on("data", (c) => {
|
|
5654
5654
|
stderr += c.toString();
|
|
5655
5655
|
});
|
|
5656
|
-
child.on("close", (code) =>
|
|
5657
|
-
child.on("error", (e) =>
|
|
5656
|
+
child.on("close", (code) => resolve7({ stdout, stderr, exitCode: code ?? 0 }));
|
|
5657
|
+
child.on("error", (e) => resolve7({ stdout: "", stderr: e.message, exitCode: 1 }));
|
|
5658
5658
|
});
|
|
5659
5659
|
}
|
|
5660
5660
|
async function fileDiff(input, ctx, _signal) {
|
|
@@ -5975,8 +5975,8 @@ async function* spawnStream(opts) {
|
|
|
5975
5975
|
try {
|
|
5976
5976
|
for (; ; ) {
|
|
5977
5977
|
while (queue.length === 0) {
|
|
5978
|
-
await new Promise((
|
|
5979
|
-
waiter =
|
|
5978
|
+
await new Promise((resolve7) => {
|
|
5979
|
+
waiter = resolve7;
|
|
5980
5980
|
});
|
|
5981
5981
|
}
|
|
5982
5982
|
const chunk = queue.shift();
|
|
@@ -6782,7 +6782,7 @@ var outdatedTool = {
|
|
|
6782
6782
|
}
|
|
6783
6783
|
};
|
|
6784
6784
|
function runOutdated(manager, args, cwd, signal) {
|
|
6785
|
-
return new Promise((
|
|
6785
|
+
return new Promise((resolve7) => {
|
|
6786
6786
|
let stdout = "";
|
|
6787
6787
|
let stderr = "";
|
|
6788
6788
|
const MAX = 1e5;
|
|
@@ -6799,10 +6799,10 @@ function runOutdated(manager, args, cwd, signal) {
|
|
|
6799
6799
|
});
|
|
6800
6800
|
child.on("close", (code) => {
|
|
6801
6801
|
const result = parseOutdatedOutput(stdout, code ?? 0);
|
|
6802
|
-
|
|
6802
|
+
resolve7(result);
|
|
6803
6803
|
});
|
|
6804
6804
|
child.on("error", (e) => {
|
|
6805
|
-
|
|
6805
|
+
resolve7({
|
|
6806
6806
|
exit_code: 1,
|
|
6807
6807
|
packages: [],
|
|
6808
6808
|
total: 0,
|
|
@@ -6928,7 +6928,7 @@ async function dockerLogs(service, lines, filterRe, cwd, signal, since) {
|
|
|
6928
6928
|
};
|
|
6929
6929
|
}
|
|
6930
6930
|
args.push("--timestamps", service);
|
|
6931
|
-
return new Promise((
|
|
6931
|
+
return new Promise((resolve7) => {
|
|
6932
6932
|
let stdout = "";
|
|
6933
6933
|
let stderr = "";
|
|
6934
6934
|
const MAX = 2e5;
|
|
@@ -6944,7 +6944,7 @@ async function dockerLogs(service, lines, filterRe, cwd, signal, since) {
|
|
|
6944
6944
|
if (settled) return;
|
|
6945
6945
|
settled = true;
|
|
6946
6946
|
clearTimeout(timer);
|
|
6947
|
-
|
|
6947
|
+
resolve7(result);
|
|
6948
6948
|
};
|
|
6949
6949
|
const child = spawn("docker", args, { cwd, signal, env: buildChildEnv(), stdio: ["ignore", "pipe", "pipe"], windowsHide: true });
|
|
6950
6950
|
const timer = setTimeout(() => {
|
|
@@ -7538,7 +7538,14 @@ These win over kit tokens. Run \`design {action:"materialize"}\` to write them t
|
|
|
7538
7538
|
kitId: active.kit,
|
|
7539
7539
|
outPath: input.out
|
|
7540
7540
|
});
|
|
7541
|
-
const
|
|
7541
|
+
const root = path.resolve(ctx.projectRoot);
|
|
7542
|
+
const abs = path.resolve(path.join(ctx.projectRoot, result.path));
|
|
7543
|
+
const rel = path.relative(root, abs);
|
|
7544
|
+
if (rel.startsWith("..") || path.isAbsolute(rel)) {
|
|
7545
|
+
throw new Error(
|
|
7546
|
+
`design: materialize path "${result.path}" would escape the project root`
|
|
7547
|
+
);
|
|
7548
|
+
}
|
|
7542
7549
|
let exists = false;
|
|
7543
7550
|
try {
|
|
7544
7551
|
await fs7.access(abs);
|
|
@@ -10139,8 +10146,8 @@ async function syncGoParse(filePath, content, lang) {
|
|
|
10139
10146
|
proc.stdin?.write(content);
|
|
10140
10147
|
proc.stdin?.end();
|
|
10141
10148
|
const { code } = await Promise.race([
|
|
10142
|
-
new Promise((
|
|
10143
|
-
proc.on("close", (c) =>
|
|
10149
|
+
new Promise((resolve7) => {
|
|
10150
|
+
proc.on("close", (c) => resolve7({ code: c }));
|
|
10144
10151
|
}),
|
|
10145
10152
|
new Promise(
|
|
10146
10153
|
(_, reject) => setTimeout(() => {
|
|
@@ -10402,8 +10409,8 @@ async function syncPyParse(filePath, content, lang) {
|
|
|
10402
10409
|
stdout += chunk.toString();
|
|
10403
10410
|
});
|
|
10404
10411
|
const { code } = await Promise.race([
|
|
10405
|
-
new Promise((
|
|
10406
|
-
proc.on("close", (c) =>
|
|
10412
|
+
new Promise((resolve7) => {
|
|
10413
|
+
proc.on("close", (c) => resolve7({ code: c }));
|
|
10407
10414
|
}),
|
|
10408
10415
|
new Promise(
|
|
10409
10416
|
(_, reject) => setTimeout(() => {
|
|
@@ -10488,8 +10495,8 @@ async function tryNativeParse(file, content) {
|
|
|
10488
10495
|
stdout += chunk.toString();
|
|
10489
10496
|
});
|
|
10490
10497
|
const { code } = await Promise.race([
|
|
10491
|
-
new Promise((
|
|
10492
|
-
proc.on("close", (c) =>
|
|
10498
|
+
new Promise((resolve7) => {
|
|
10499
|
+
proc.on("close", (c) => resolve7({ code: c }));
|
|
10493
10500
|
}),
|
|
10494
10501
|
new Promise(
|
|
10495
10502
|
(_, reject) => setTimeout(() => {
|
|
@@ -10979,7 +10986,7 @@ async function loadGitignoreMatcher(projectRoot) {
|
|
|
10979
10986
|
var YIELD_EVERY_N = 50;
|
|
10980
10987
|
var PARALLEL_BATCH = 20;
|
|
10981
10988
|
function yieldEventLoop() {
|
|
10982
|
-
return new Promise((
|
|
10989
|
+
return new Promise((resolve7) => setImmediate(resolve7));
|
|
10983
10990
|
}
|
|
10984
10991
|
function throwIfAborted(signal) {
|
|
10985
10992
|
if (!signal?.aborted) return;
|
|
@@ -11472,7 +11479,7 @@ function shutdownCodebaseIndexHost() {
|
|
|
11472
11479
|
function callIndexOp(op, args, opts) {
|
|
11473
11480
|
const w = ensureWorker();
|
|
11474
11481
|
if (!w) return callInline(op, args, opts);
|
|
11475
|
-
return new Promise((
|
|
11482
|
+
return new Promise((resolve7, reject) => {
|
|
11476
11483
|
const id = nextRpcId++;
|
|
11477
11484
|
const timer = setTimeout(() => {
|
|
11478
11485
|
pending.delete(id);
|
|
@@ -11495,7 +11502,7 @@ function callIndexOp(op, args, opts) {
|
|
|
11495
11502
|
pending.set(id, {
|
|
11496
11503
|
resolve: (v) => {
|
|
11497
11504
|
cleanup();
|
|
11498
|
-
|
|
11505
|
+
resolve7(v);
|
|
11499
11506
|
},
|
|
11500
11507
|
reject: (e) => {
|
|
11501
11508
|
cleanup();
|