@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/bash.d.ts
CHANGED
package/dist/bash.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../src/bash.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../src/bash.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,IAAI,EAEV,MAAM,kBAAkB,CAAC;AAS1B,UAAU,SAAS;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAClC;AAED,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AA4BD,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAoqBhD,CAAC;AAGF,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/bash.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
// src/bash.ts
|
|
2
2
|
import { spawn as spawn2 } from "node:child_process";
|
|
3
3
|
import * as os4 from "node:os";
|
|
4
|
+
import {
|
|
5
|
+
emitProcessCompleted,
|
|
6
|
+
emitProcessOutput,
|
|
7
|
+
emitProcessStarted
|
|
8
|
+
} from "@wrongstack/core";
|
|
4
9
|
|
|
5
10
|
// src/_env.ts
|
|
6
11
|
import { buildChildEnv } from "@wrongstack/core";
|
|
@@ -386,9 +391,14 @@ import { expectDefined } from "@wrongstack/core";
|
|
|
386
391
|
var SENSITIVE_FLAG_PATTERNS = [
|
|
387
392
|
// --flag=value or --flag "value" (value captured up to next space or comma)
|
|
388
393
|
/--(?: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,
|
|
389
|
-
// -
|
|
390
|
-
|
|
391
|
-
/
|
|
394
|
+
// -t short flag (token): attached (-tVALUE), separated (-t VALUE), or -t=VALUE.
|
|
395
|
+
// (?<![-\w]) anchors to a token start so we don't match the `-t` inside `--token`.
|
|
396
|
+
// NOTE: synced with @wrongstack/core observability/redact-command.ts.
|
|
397
|
+
/(?<![-\w])-t(?:[=\s]+)?[^\s,-]+/,
|
|
398
|
+
// -p|-password|-a (redis auth) short flags: attached + separated + =value.
|
|
399
|
+
// Same token-start anchor; over-redaction is an accepted tradeoff for a
|
|
400
|
+
// redaction function. Synced with core copy.
|
|
401
|
+
/(?<![-\w])-(?:password|p|a)(?:[=\s]+)?[^\s,-]+/gi,
|
|
392
402
|
// env var–style secrets: TOKEN=x, API_KEY=y, etc.
|
|
393
403
|
/(?:TOKEN|API_KEY|API_SECRET|AUTH_TOKEN|GITHUB_TOKEN|GH_TOKEN|BEARER|JWT|OAUTH|CREDENTIAL|SECRET|PRIVATE_KEY|PASSWORD|PASSWD)\s*[=:]\s*[^\s,]+/gi,
|
|
394
404
|
// Generic high-entropy look: base64 strings >32 chars or hex strings >32 digits — but only
|
|
@@ -406,8 +416,10 @@ function redactCommand(cmd) {
|
|
|
406
416
|
const flag = match.slice(0, match.indexOf(expectDefined(delim)) + 1);
|
|
407
417
|
return `${flag}[REDACTED]`;
|
|
408
418
|
}
|
|
409
|
-
|
|
410
|
-
|
|
419
|
+
if (match.startsWith("--")) {
|
|
420
|
+
return match;
|
|
421
|
+
}
|
|
422
|
+
return `${match.slice(0, 2)}[REDACTED]`;
|
|
411
423
|
});
|
|
412
424
|
}
|
|
413
425
|
return result;
|
|
@@ -1669,6 +1681,32 @@ var bashTool = {
|
|
|
1669
1681
|
}
|
|
1670
1682
|
}
|
|
1671
1683
|
const pid2 = child2.pid;
|
|
1684
|
+
let stdoutBytes2 = 0;
|
|
1685
|
+
let stderrBytes2 = 0;
|
|
1686
|
+
let telemetryCompleted2 = false;
|
|
1687
|
+
emitProcessStarted({
|
|
1688
|
+
...pid2 !== void 0 ? { pid: pid2 } : {},
|
|
1689
|
+
parentPid: process.pid,
|
|
1690
|
+
command: redactCommand(`${shell} ${args.join(" ")}`),
|
|
1691
|
+
args: redactCommand(args.join(" ")).split(" ").filter(Boolean),
|
|
1692
|
+
cwd: ctx.projectRoot,
|
|
1693
|
+
background: true,
|
|
1694
|
+
startedAt: new Date(startedAt).toISOString()
|
|
1695
|
+
});
|
|
1696
|
+
const completeBackground = (exitCode, signal) => {
|
|
1697
|
+
if (telemetryCompleted2) return;
|
|
1698
|
+
telemetryCompleted2 = true;
|
|
1699
|
+
emitProcessCompleted({
|
|
1700
|
+
...pid2 !== void 0 ? { pid: pid2 } : {},
|
|
1701
|
+
exitCode,
|
|
1702
|
+
...signal ? { signal } : {},
|
|
1703
|
+
durationMs: Date.now() - startedAt,
|
|
1704
|
+
stdoutBytes: stdoutBytes2,
|
|
1705
|
+
stderrBytes: stderrBytes2,
|
|
1706
|
+
timedOut: false,
|
|
1707
|
+
endedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
1708
|
+
});
|
|
1709
|
+
};
|
|
1672
1710
|
if (typeof pid2 === "number") {
|
|
1673
1711
|
registry.register({
|
|
1674
1712
|
pid: pid2,
|
|
@@ -1681,7 +1719,10 @@ var bashTool = {
|
|
|
1681
1719
|
});
|
|
1682
1720
|
child2.on("close", () => registry.unregister(pid2));
|
|
1683
1721
|
}
|
|
1684
|
-
const onBgData = (chunk) => {
|
|
1722
|
+
const onBgData = (chunk, stream) => {
|
|
1723
|
+
if (stream === "stdout") stdoutBytes2 += chunk.byteLength;
|
|
1724
|
+
else stderrBytes2 += chunk.byteLength;
|
|
1725
|
+
emitProcessOutput({ pid: pid2, stream, chunk });
|
|
1685
1726
|
if (truncated) return;
|
|
1686
1727
|
const remain = MAX_OUTPUT - buf2.length;
|
|
1687
1728
|
if (remain > 0) {
|
|
@@ -1689,24 +1730,28 @@ var bashTool = {
|
|
|
1689
1730
|
}
|
|
1690
1731
|
if (buf2.length >= MAX_OUTPUT) {
|
|
1691
1732
|
truncated = true;
|
|
1692
|
-
child2.stdout?.off("data",
|
|
1693
|
-
child2.stderr?.off("data",
|
|
1733
|
+
child2.stdout?.off("data", onBgStdout);
|
|
1734
|
+
child2.stderr?.off("data", onBgStderr);
|
|
1694
1735
|
}
|
|
1695
1736
|
};
|
|
1696
|
-
|
|
1697
|
-
|
|
1737
|
+
const onBgStdout = (chunk) => onBgData(chunk, "stdout");
|
|
1738
|
+
const onBgStderr = (chunk) => onBgData(chunk, "stderr");
|
|
1739
|
+
child2.stdout?.on("data", onBgStdout);
|
|
1740
|
+
child2.stderr?.on("data", onBgStderr);
|
|
1698
1741
|
const cleanupBackground = () => {
|
|
1699
|
-
child2.stdout?.off("data",
|
|
1700
|
-
child2.stderr?.off("data",
|
|
1742
|
+
child2.stdout?.off("data", onBgStdout);
|
|
1743
|
+
child2.stderr?.off("data", onBgStderr);
|
|
1701
1744
|
};
|
|
1702
1745
|
child2.on("error", () => {
|
|
1703
1746
|
cleanupBackground();
|
|
1704
1747
|
if (typeof pid2 === "number") registry.unregister(pid2);
|
|
1705
1748
|
registry.afterCall(Date.now() - startedAt, true, bypassBreaker);
|
|
1749
|
+
completeBackground(1);
|
|
1706
1750
|
});
|
|
1707
|
-
child2.on("close", () => {
|
|
1751
|
+
child2.on("close", (code, signal) => {
|
|
1708
1752
|
cleanupBackground();
|
|
1709
1753
|
registry.afterCall(Date.now() - startedAt, false, bypassBreaker);
|
|
1754
|
+
completeBackground(code ?? (signal ? 1 : 0), signal ?? void 0);
|
|
1710
1755
|
});
|
|
1711
1756
|
if (typeof pid2 === "number") child2.unref();
|
|
1712
1757
|
yield {
|
|
@@ -1746,6 +1791,32 @@ var bashTool = {
|
|
|
1746
1791
|
}
|
|
1747
1792
|
}
|
|
1748
1793
|
const pid = child.pid;
|
|
1794
|
+
let stdoutBytes = 0;
|
|
1795
|
+
let stderrBytes = 0;
|
|
1796
|
+
let telemetryCompleted = false;
|
|
1797
|
+
emitProcessStarted({
|
|
1798
|
+
...pid !== void 0 ? { pid } : {},
|
|
1799
|
+
parentPid: process.pid,
|
|
1800
|
+
command: redactCommand(`${shell} ${args.join(" ")}`),
|
|
1801
|
+
args: redactCommand(args.join(" ")).split(" ").filter(Boolean),
|
|
1802
|
+
cwd: ctx.projectRoot,
|
|
1803
|
+
background: false,
|
|
1804
|
+
startedAt: new Date(startedAt).toISOString()
|
|
1805
|
+
});
|
|
1806
|
+
const completeForeground = (exitCode, signal) => {
|
|
1807
|
+
if (telemetryCompleted) return;
|
|
1808
|
+
telemetryCompleted = true;
|
|
1809
|
+
emitProcessCompleted({
|
|
1810
|
+
...pid !== void 0 ? { pid } : {},
|
|
1811
|
+
exitCode,
|
|
1812
|
+
...signal ? { signal } : {},
|
|
1813
|
+
durationMs: Date.now() - startedAt,
|
|
1814
|
+
stdoutBytes,
|
|
1815
|
+
stderrBytes,
|
|
1816
|
+
timedOut,
|
|
1817
|
+
endedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
1818
|
+
});
|
|
1819
|
+
};
|
|
1749
1820
|
if (typeof pid === "number") {
|
|
1750
1821
|
registry.register({
|
|
1751
1822
|
pid,
|
|
@@ -1847,8 +1918,11 @@ var bashTool = {
|
|
|
1847
1918
|
child.stderr?.resume();
|
|
1848
1919
|
}
|
|
1849
1920
|
};
|
|
1850
|
-
const onData = (chunk) => {
|
|
1921
|
+
const onData = (chunk, stream) => {
|
|
1851
1922
|
const text = chunk.toString();
|
|
1923
|
+
if (stream === "stdout") stdoutBytes += chunk.byteLength;
|
|
1924
|
+
else stderrBytes += chunk.byteLength;
|
|
1925
|
+
emitProcessOutput({ pid, stream, chunk });
|
|
1852
1926
|
if (buf.length < MAX_OUTPUT) {
|
|
1853
1927
|
buf += text.slice(0, MAX_OUTPUT - buf.length);
|
|
1854
1928
|
}
|
|
@@ -1857,17 +1931,21 @@ var bashTool = {
|
|
|
1857
1931
|
push({ kind: "data", text });
|
|
1858
1932
|
pauseIfFlooded();
|
|
1859
1933
|
};
|
|
1860
|
-
|
|
1861
|
-
|
|
1934
|
+
const onStdoutData = (chunk) => onData(chunk, "stdout");
|
|
1935
|
+
const onStderrData = (chunk) => onData(chunk, "stderr");
|
|
1936
|
+
child.stdout?.on("data", onStdoutData);
|
|
1937
|
+
child.stderr?.on("data", onStderrData);
|
|
1862
1938
|
child.on("error", (err) => {
|
|
1863
1939
|
for (const t of timers) clearTimeout(t);
|
|
1864
1940
|
registry.afterCall(Date.now() - startedAt, true);
|
|
1941
|
+
completeForeground(1);
|
|
1865
1942
|
push({ kind: "error", err });
|
|
1866
1943
|
});
|
|
1867
|
-
child.on("close", (code) => {
|
|
1944
|
+
child.on("close", (code, signal) => {
|
|
1868
1945
|
for (const t of timers) clearTimeout(t);
|
|
1869
1946
|
if (typeof pid === "number") registry.unregister(pid);
|
|
1870
1947
|
registry.afterCall(Date.now() - startedAt, code !== 0 && code !== null);
|
|
1948
|
+
completeForeground(timedOut ? 124 : code ?? (signal ? 1 : 0), signal ?? void 0);
|
|
1871
1949
|
push({ kind: "end", code });
|
|
1872
1950
|
});
|
|
1873
1951
|
try {
|
|
@@ -1912,8 +1990,8 @@ ${hint}` : ""),
|
|
|
1912
1990
|
for (const t of timers) clearTimeout(t);
|
|
1913
1991
|
spool.finalize();
|
|
1914
1992
|
if (isWin2) opts.signal.removeEventListener("abort", onAbort);
|
|
1915
|
-
child.stdout?.off("data",
|
|
1916
|
-
child.stderr?.off("data",
|
|
1993
|
+
child.stdout?.off("data", onStdoutData);
|
|
1994
|
+
child.stderr?.off("data", onStderrData);
|
|
1917
1995
|
child.stdout?.destroy();
|
|
1918
1996
|
child.stderr?.destroy();
|
|
1919
1997
|
if (child.exitCode === null && !child.killed) {
|