@wrongstack/tools 0.287.0 → 0.289.0
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/_fetch-guard.d.ts.map +1 -1
- package/dist/_redact-command.d.ts.map +1 -1
- package/dist/_spawn-stream.d.ts.map +1 -1
- package/dist/audit.js +61 -14
- package/dist/audit.js.map +3 -3
- package/dist/bash.d.ts +1 -1
- package/dist/bash.d.ts.map +1 -1
- package/dist/bash.js +97 -19
- package/dist/bash.js.map +3 -3
- package/dist/builtin.d.ts +12 -10
- package/dist/builtin.d.ts.map +1 -1
- package/dist/builtin.js +1620 -803
- package/dist/builtin.js.map +3 -3
- package/dist/codebase-index/background-indexer.d.ts.map +1 -1
- package/dist/codebase-index/bm25.d.ts +1 -2
- package/dist/codebase-index/bm25.d.ts.map +1 -1
- package/dist/codebase-index/codebase-index-tool.d.ts.map +1 -1
- package/dist/codebase-index/codebase-search-tool.d.ts.map +1 -1
- package/dist/codebase-index/codebase-stats-tool.d.ts +7 -0
- package/dist/codebase-index/codebase-stats-tool.d.ts.map +1 -1
- package/dist/codebase-index/index-service.d.ts +11 -1
- package/dist/codebase-index/index-service.d.ts.map +1 -1
- package/dist/codebase-index/index.d.ts +2 -1
- package/dist/codebase-index/index.d.ts.map +1 -1
- package/dist/codebase-index/index.js +749 -192
- package/dist/codebase-index/index.js.map +3 -3
- package/dist/codebase-index/indexer.d.ts.map +1 -1
- package/dist/codebase-index/schema.d.ts +43 -1
- package/dist/codebase-index/schema.d.ts.map +1 -1
- package/dist/codebase-index/ts-parser.d.ts.map +1 -1
- package/dist/codebase-index/worker-protocol.d.ts +1 -0
- package/dist/codebase-index/worker-protocol.d.ts.map +1 -1
- package/dist/codebase-index/worker.js +610 -152
- package/dist/codebase-index/worker.js.map +3 -3
- package/dist/codebase-index/writer.d.ts +27 -1
- package/dist/codebase-index/writer.d.ts.map +1 -1
- package/dist/e2e.js +477 -0
- package/dist/e2e.js.map +7 -0
- package/dist/exec.d.ts +1 -1
- package/dist/exec.d.ts.map +1 -1
- package/dist/exec.js +60 -5
- package/dist/exec.js.map +3 -3
- package/dist/fetch.js +2 -2
- package/dist/fetch.js.map +2 -2
- package/dist/format.js +61 -14
- package/dist/format.js.map +3 -3
- package/dist/glob.js +2 -2
- package/dist/glob.js.map +1 -1
- package/dist/grep.d.ts.map +1 -1
- package/dist/grep.js +2 -2
- package/dist/grep.js.map +2 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1786 -809
- package/dist/index.js.map +3 -3
- package/dist/install.js +61 -14
- package/dist/install.js.map +3 -3
- package/dist/kanban.d.ts +11 -2
- package/dist/kanban.d.ts.map +1 -1
- package/dist/kanban.js +695 -571
- package/dist/kanban.js.map +3 -3
- package/dist/languages/detect.d.ts.map +1 -1
- package/dist/languages/index.js +61 -14
- package/dist/languages/index.js.map +3 -3
- package/dist/languages/types.d.ts +7 -0
- package/dist/languages/types.d.ts.map +1 -1
- package/dist/lint.js +61 -14
- package/dist/lint.js.map +3 -3
- package/dist/outdated.js +61 -14
- package/dist/outdated.js.map +3 -3
- package/dist/pack.js +1617 -800
- package/dist/pack.js.map +3 -3
- package/dist/plan.js +4 -0
- package/dist/plan.js.map +2 -2
- package/dist/process-registry.js +12 -5
- package/dist/process-registry.js.map +2 -2
- package/dist/search.js +2 -2
- package/dist/search.js.map +2 -2
- package/dist/session-kanban.d.ts +9 -0
- package/dist/session-kanban.d.ts.map +1 -1
- package/dist/session-kanban.js +137 -0
- package/dist/session-kanban.js.map +2 -2
- package/dist/task.js +4 -0
- package/dist/task.js.map +2 -2
- package/dist/test.js +61 -14
- package/dist/test.js.map +3 -3
- package/dist/todo.js +4 -0
- package/dist/todo.js.map +2 -2
- package/dist/tree.js +2 -2
- package/dist/tree.js.map +1 -1
- package/dist/typecheck.js +61 -14
- package/dist/typecheck.js.map +3 -3
- package/package.json +7 -3
package/dist/exec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,IAAI,EACV,MAAM,kBAAkB,CAAC;AAU1B,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AA8J1E;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;CAAO,GAAG,IAAI,CAQpI;AAED,2EAA2E;AAC3E,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAkBD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;CAAO,GAAG,IAAI,CAOjG;AAED,8DAA8D;AAC9D,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,WAAW,CAAC,MAAM,CAAC,CAErD;AAED,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AA4GD,UAAU,SAAS;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,UAAU,UAAU;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;;;;OASG;IACH,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAID,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CA0IhD,CAAC"}
|
package/dist/exec.js
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
// src/exec.ts
|
|
2
2
|
import { spawn as spawn2 } from "node:child_process";
|
|
3
|
+
import {
|
|
4
|
+
emitProcessCompleted,
|
|
5
|
+
emitProcessOutput,
|
|
6
|
+
emitProcessStarted
|
|
7
|
+
} from "@wrongstack/core";
|
|
3
8
|
import { toErrorMessage } from "@wrongstack/core/utils/error";
|
|
4
9
|
|
|
5
10
|
// src/_env.ts
|
|
@@ -439,9 +444,14 @@ import { expectDefined } from "@wrongstack/core";
|
|
|
439
444
|
var SENSITIVE_FLAG_PATTERNS = [
|
|
440
445
|
// --flag=value or --flag "value" (value captured up to next space or comma)
|
|
441
446
|
/--(?:token|password|passwd|pwd|secret|api[-_]?key|api[-_]?secret|auth|credential|private[-_]?key|access[-_]?key|github[-_]?token|gh[-_]?token|bearer|jwt|oauth|pin|pincode|passphrase|access[-_]?token)(?:[=\s,][^\s]*)?/gi,
|
|
442
|
-
// -
|
|
443
|
-
|
|
444
|
-
/
|
|
447
|
+
// -t short flag (token): attached (-tVALUE), separated (-t VALUE), or -t=VALUE.
|
|
448
|
+
// (?<![-\w]) anchors to a token start so we don't match the `-t` inside `--token`.
|
|
449
|
+
// NOTE: synced with @wrongstack/core observability/redact-command.ts.
|
|
450
|
+
/(?<![-\w])-t(?:[=\s]+)?[^\s,-]+/,
|
|
451
|
+
// -p|-password|-a (redis auth) short flags: attached + separated + =value.
|
|
452
|
+
// Same token-start anchor; over-redaction is an accepted tradeoff for a
|
|
453
|
+
// redaction function. Synced with core copy.
|
|
454
|
+
/(?<![-\w])-(?:password|p|a)(?:[=\s]+)?[^\s,-]+/gi,
|
|
445
455
|
// env var–style secrets: TOKEN=x, API_KEY=y, etc.
|
|
446
456
|
/(?:TOKEN|API_KEY|API_SECRET|AUTH_TOKEN|GITHUB_TOKEN|GH_TOKEN|BEARER|JWT|OAUTH|CREDENTIAL|SECRET|PRIVATE_KEY|PASSWORD|PASSWD)\s*[=:]\s*[^\s,]+/gi,
|
|
447
457
|
// Generic high-entropy look: base64 strings >32 chars or hex strings >32 digits — but only
|
|
@@ -459,8 +469,10 @@ function redactCommand(cmd) {
|
|
|
459
469
|
const flag = match.slice(0, match.indexOf(expectDefined(delim)) + 1);
|
|
460
470
|
return `${flag}[REDACTED]`;
|
|
461
471
|
}
|
|
462
|
-
|
|
463
|
-
|
|
472
|
+
if (match.startsWith("--")) {
|
|
473
|
+
return match;
|
|
474
|
+
}
|
|
475
|
+
return `${match.slice(0, 2)}[REDACTED]`;
|
|
464
476
|
});
|
|
465
477
|
}
|
|
466
478
|
return result;
|
|
@@ -2002,12 +2014,30 @@ function runCommand(cmd, args, cwd, timeout, signal, sessionId, danger) {
|
|
|
2002
2014
|
resolve2(result);
|
|
2003
2015
|
};
|
|
2004
2016
|
const startedAt = Date.now();
|
|
2017
|
+
let stdoutBytes = 0;
|
|
2018
|
+
let stderrBytes = 0;
|
|
2019
|
+
let telemetryCompleted = false;
|
|
2020
|
+
let timedOut = false;
|
|
2005
2021
|
const spool = createOutputSpool({ tool: `exec-${cmd}`, thresholdBytes: MAX_OUTPUT });
|
|
2006
2022
|
const resolved = resolveWin32Command(cmd);
|
|
2007
2023
|
const needsShell = isWin && (resolved.endsWith(".cmd") || resolved.endsWith(".bat"));
|
|
2008
2024
|
const shim = needsShell ? buildWin32CmdShimInvocation(resolved, args) : null;
|
|
2009
2025
|
const spawnCmd = shim?.command ?? resolved;
|
|
2010
2026
|
const spawnArgs = shim?.args ?? args;
|
|
2027
|
+
const emitCompletedOnce = (exitCode, pid2, signal2) => {
|
|
2028
|
+
if (telemetryCompleted) return;
|
|
2029
|
+
telemetryCompleted = true;
|
|
2030
|
+
emitProcessCompleted({
|
|
2031
|
+
...pid2 !== void 0 ? { pid: pid2 } : {},
|
|
2032
|
+
exitCode,
|
|
2033
|
+
...signal2 ? { signal: signal2 } : {},
|
|
2034
|
+
durationMs: Date.now() - startedAt,
|
|
2035
|
+
stdoutBytes,
|
|
2036
|
+
stderrBytes,
|
|
2037
|
+
timedOut,
|
|
2038
|
+
endedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2039
|
+
});
|
|
2040
|
+
};
|
|
2011
2041
|
let child;
|
|
2012
2042
|
try {
|
|
2013
2043
|
child = spawn2(spawnCmd, spawnArgs, {
|
|
@@ -2020,6 +2050,15 @@ function runCommand(cmd, args, cwd, timeout, signal, sessionId, danger) {
|
|
|
2020
2050
|
});
|
|
2021
2051
|
} catch (err) {
|
|
2022
2052
|
spool.finalize();
|
|
2053
|
+
emitProcessStarted({
|
|
2054
|
+
parentPid: process.pid,
|
|
2055
|
+
command: redactCommand(`${cmd} ${args.join(" ")}`),
|
|
2056
|
+
args: redactCommand(args.join(" ")).split(" ").filter(Boolean),
|
|
2057
|
+
cwd,
|
|
2058
|
+
background: false,
|
|
2059
|
+
startedAt: new Date(startedAt).toISOString()
|
|
2060
|
+
});
|
|
2061
|
+
emitCompletedOnce(1, void 0);
|
|
2023
2062
|
finish({
|
|
2024
2063
|
command: cmd,
|
|
2025
2064
|
args,
|
|
@@ -2032,6 +2071,15 @@ function runCommand(cmd, args, cwd, timeout, signal, sessionId, danger) {
|
|
|
2032
2071
|
});
|
|
2033
2072
|
return;
|
|
2034
2073
|
}
|
|
2074
|
+
emitProcessStarted({
|
|
2075
|
+
...child.pid !== void 0 ? { pid: child.pid } : {},
|
|
2076
|
+
parentPid: process.pid,
|
|
2077
|
+
command: redactCommand(`${cmd} ${args.join(" ")}`),
|
|
2078
|
+
args: redactCommand(args.join(" ")).split(" ").filter(Boolean),
|
|
2079
|
+
cwd,
|
|
2080
|
+
background: false,
|
|
2081
|
+
startedAt: new Date(startedAt).toISOString()
|
|
2082
|
+
});
|
|
2035
2083
|
child.on("error", (err) => {
|
|
2036
2084
|
const isAbort = err && err.code === "ABORT_ERR";
|
|
2037
2085
|
const stderrText = isAbort ? `Aborted: ${err.message}` : err.message;
|
|
@@ -2040,6 +2088,7 @@ function runCommand(cmd, args, cwd, timeout, signal, sessionId, danger) {
|
|
|
2040
2088
|
if (typeof pid === "number") registry.unregister(pid);
|
|
2041
2089
|
registry.afterCall(Date.now() - startedAt, true);
|
|
2042
2090
|
spool.finalize();
|
|
2091
|
+
emitCompletedOnce(isAbort ? 124 : 1, child.pid, isAbort ? "ABORT" : void 0);
|
|
2043
2092
|
finish({
|
|
2044
2093
|
command: cmd,
|
|
2045
2094
|
args,
|
|
@@ -2059,6 +2108,7 @@ function runCommand(cmd, args, cwd, timeout, signal, sessionId, danger) {
|
|
|
2059
2108
|
}
|
|
2060
2109
|
const timer = setTimeout(() => {
|
|
2061
2110
|
killed = true;
|
|
2111
|
+
timedOut = true;
|
|
2062
2112
|
if (typeof pid === "number") registry.kill(pid);
|
|
2063
2113
|
else child.kill("SIGTERM");
|
|
2064
2114
|
}, timeout);
|
|
@@ -2073,11 +2123,15 @@ function runCommand(cmd, args, cwd, timeout, signal, sessionId, danger) {
|
|
|
2073
2123
|
}
|
|
2074
2124
|
child.stdout?.on("data", (chunk) => {
|
|
2075
2125
|
const text = chunk.toString();
|
|
2126
|
+
stdoutBytes += chunk.byteLength;
|
|
2127
|
+
emitProcessOutput({ pid, stream: "stdout", chunk });
|
|
2076
2128
|
if (stdout.length < MAX_OUTPUT) stdout += text;
|
|
2077
2129
|
spool.write(text);
|
|
2078
2130
|
});
|
|
2079
2131
|
child.stderr?.on("data", (chunk) => {
|
|
2080
2132
|
const text = chunk.toString();
|
|
2133
|
+
stderrBytes += chunk.byteLength;
|
|
2134
|
+
emitProcessOutput({ pid, stream: "stderr", chunk });
|
|
2081
2135
|
if (stderr.length < MAX_OUTPUT) stderr += text;
|
|
2082
2136
|
spool.write(text);
|
|
2083
2137
|
});
|
|
@@ -2087,6 +2141,7 @@ function runCommand(cmd, args, cwd, timeout, signal, sessionId, danger) {
|
|
|
2087
2141
|
if (typeof pid === "number") registry.unregister(pid);
|
|
2088
2142
|
const durationMs = Date.now() - startedAt;
|
|
2089
2143
|
const exitCode = killed ? 124 : code ?? 1;
|
|
2144
|
+
emitCompletedOnce(exitCode, pid);
|
|
2090
2145
|
registry.afterCall(durationMs, exitCode !== 0);
|
|
2091
2146
|
const spooled = spool.finalize();
|
|
2092
2147
|
finish({
|