@wrongstack/tools 0.296.4 → 0.298.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/_spawn-stream.d.ts +2 -0
- package/dist/_util.d.ts +29 -1
- package/dist/audit.js +128 -65
- package/dist/bash.js +20 -4
- package/dist/batch-tool-use.js +70 -7
- package/dist/browser/index.js +31 -1
- package/dist/builtin.js +883 -351
- package/dist/codebase-index/index.js +95 -16
- package/dist/codebase-index/project-server-protocol.d.ts +26 -0
- package/dist/codebase-index/project-server.js +76 -16
- package/dist/codebase-index/worker.js +36 -13
- package/dist/codebase-index/writer-search-helpers.d.ts +16 -0
- package/dist/codebase-index/writer.d.ts +13 -1
- package/dist/design.d.ts +1 -1
- package/dist/design.js +4 -3
- package/dist/diff.js +11 -1
- package/dist/e2e.js +9 -6
- package/dist/edit.js +9 -6
- package/dist/exec.js +562 -516
- package/dist/format.js +131 -65
- package/dist/git.js +22 -2
- package/dist/glob.js +11 -5
- package/dist/grep.js +160 -104
- package/dist/index.js +834 -290
- package/dist/install.js +135 -68
- package/dist/json.js +64 -18
- package/dist/kanban-board-inputs.d.ts +21 -4
- package/dist/kanban.js +20 -5
- package/dist/languages/index.js +143 -71
- package/dist/lint.js +128 -65
- package/dist/next-steps.d.ts +23 -0
- package/dist/next-steps.js +4 -0
- package/dist/outdated.js +101 -26
- package/dist/pack.js +883 -351
- package/dist/patch.js +11 -1
- package/dist/plan.js +32 -10
- package/dist/process-registry.d.ts +9 -0
- package/dist/process-registry.js +15 -0
- package/dist/ps-slash.js +15 -0
- package/dist/read.js +104 -23
- package/dist/replace.js +11 -3
- package/dist/scaffold.js +9 -6
- package/dist/session-kanban.js +21 -5
- package/dist/task.js +3 -1
- package/dist/test.js +128 -65
- package/dist/todo.js +3 -1
- package/dist/tool-tier.js +883 -351
- package/dist/tool-use.d.ts +1 -1
- package/dist/tool-use.js +28 -4
- package/dist/tree.d.ts +1 -0
- package/dist/tree.js +44 -8
- package/dist/typecheck.js +128 -65
- package/dist/write.js +9 -6
- package/package.json +5 -4
- package/dist/_concurrency.d.ts.map +0 -1
- package/dist/_danger-detect.d.ts.map +0 -1
- package/dist/_edit-match.d.ts.map +0 -1
- package/dist/_env.d.ts.map +0 -1
- package/dist/_fetch-guard.d.ts.map +0 -1
- package/dist/_output-spool.d.ts.map +0 -1
- package/dist/_redact-command.d.ts.map +0 -1
- package/dist/_regex.d.ts.map +0 -1
- package/dist/_session-shell.d.ts.map +0 -1
- package/dist/_shell-pick.d.ts.map +0 -1
- package/dist/_spawn-stream.d.ts.map +0 -1
- package/dist/_syntax-check.d.ts.map +0 -1
- package/dist/_util.d.ts.map +0 -1
- package/dist/_win32-resolve.d.ts.map +0 -1
- package/dist/audit.d.ts.map +0 -1
- package/dist/audit.js.map +0 -7
- package/dist/auto-proceed-loop-guard.d.ts.map +0 -1
- package/dist/auto-proceed-loop-guard.js.map +0 -7
- package/dist/bash-kill-guard.d.ts.map +0 -1
- package/dist/bash.d.ts.map +0 -1
- package/dist/bash.js.map +0 -7
- package/dist/batch-tool-use.d.ts.map +0 -1
- package/dist/batch-tool-use.js.map +0 -7
- package/dist/browser/artifacts.d.ts.map +0 -1
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.js.map +0 -7
- package/dist/browser/manager.d.ts.map +0 -1
- package/dist/browser/network-guard-proxy.d.ts.map +0 -1
- package/dist/browser/security.d.ts.map +0 -1
- package/dist/browser/tools.d.ts.map +0 -1
- package/dist/browser/types.d.ts.map +0 -1
- package/dist/builtin.d.ts.map +0 -1
- package/dist/builtin.js.map +0 -7
- package/dist/circuit-breaker.d.ts.map +0 -1
- package/dist/circuit-breaker.js.map +0 -7
- package/dist/codebase-index/background-indexer.d.ts.map +0 -1
- package/dist/codebase-index/bm25.d.ts.map +0 -1
- package/dist/codebase-index/circuit-breaker.d.ts.map +0 -1
- package/dist/codebase-index/codebase-index-tool.d.ts.map +0 -1
- package/dist/codebase-index/codebase-search-tool.d.ts.map +0 -1
- package/dist/codebase-index/codebase-stats-tool.d.ts.map +0 -1
- package/dist/codebase-index/dead-code-scan.d.ts.map +0 -1
- package/dist/codebase-index/generic-parser.d.ts.map +0 -1
- package/dist/codebase-index/gitignore.d.ts.map +0 -1
- package/dist/codebase-index/go-parser.d.ts.map +0 -1
- package/dist/codebase-index/index-service.d.ts.map +0 -1
- package/dist/codebase-index/index.d.ts.map +0 -1
- package/dist/codebase-index/index.js.map +0 -7
- package/dist/codebase-index/indexer.d.ts.map +0 -1
- package/dist/codebase-index/json-parser.d.ts.map +0 -1
- package/dist/codebase-index/languages.d.ts.map +0 -1
- package/dist/codebase-index/lsp-kind.d.ts.map +0 -1
- package/dist/codebase-index/parser-dispatch.d.ts.map +0 -1
- package/dist/codebase-index/project-server-cache.d.ts.map +0 -1
- package/dist/codebase-index/project-server-client.d.ts.map +0 -1
- package/dist/codebase-index/project-server-endpoint.d.ts.map +0 -1
- package/dist/codebase-index/project-server-protocol.d.ts.map +0 -1
- package/dist/codebase-index/project-server.d.ts.map +0 -1
- package/dist/codebase-index/project-server.js.map +0 -7
- package/dist/codebase-index/py-parser.d.ts.map +0 -1
- package/dist/codebase-index/refs-extractor.d.ts.map +0 -1
- package/dist/codebase-index/rs-parser.d.ts.map +0 -1
- package/dist/codebase-index/schema.d.ts.map +0 -1
- package/dist/codebase-index/spawn-gate.d.ts.map +0 -1
- package/dist/codebase-index/sqlite-runtime.d.ts.map +0 -1
- package/dist/codebase-index/ts-parser.d.ts.map +0 -1
- package/dist/codebase-index/worker-protocol.d.ts.map +0 -1
- package/dist/codebase-index/worker.d.ts.map +0 -1
- package/dist/codebase-index/worker.js.map +0 -7
- package/dist/codebase-index/writer-admin.d.ts.map +0 -1
- package/dist/codebase-index/writer-bulk-insert.d.ts.map +0 -1
- package/dist/codebase-index/writer-graph-helpers.d.ts.map +0 -1
- package/dist/codebase-index/writer-graph-reader.d.ts.map +0 -1
- package/dist/codebase-index/writer-helpers.d.ts.map +0 -1
- package/dist/codebase-index/writer-pragmas.d.ts.map +0 -1
- package/dist/codebase-index/writer-ref-mapper.d.ts.map +0 -1
- package/dist/codebase-index/writer-schema.d.ts.map +0 -1
- package/dist/codebase-index/writer-search-helpers.d.ts.map +0 -1
- package/dist/codebase-index/writer-store-pool.d.ts.map +0 -1
- package/dist/codebase-index/writer.d.ts.map +0 -1
- package/dist/codebase-index/yaml-parser.d.ts.map +0 -1
- package/dist/design.d.ts.map +0 -1
- package/dist/design.js.map +0 -7
- package/dist/diff.d.ts.map +0 -1
- package/dist/diff.js.map +0 -7
- package/dist/document.d.ts.map +0 -1
- package/dist/document.js.map +0 -7
- package/dist/e2e.d.ts.map +0 -1
- package/dist/e2e.js.map +0 -7
- package/dist/edit.d.ts.map +0 -1
- package/dist/edit.js.map +0 -7
- package/dist/exec-kill-guard.d.ts.map +0 -1
- package/dist/exec.d.ts.map +0 -1
- package/dist/exec.js.map +0 -7
- package/dist/fetch.d.ts.map +0 -1
- package/dist/fetch.js.map +0 -7
- package/dist/format.d.ts.map +0 -1
- package/dist/format.js.map +0 -7
- package/dist/git.d.ts.map +0 -1
- package/dist/git.js.map +0 -7
- package/dist/glob.d.ts.map +0 -1
- package/dist/glob.js.map +0 -7
- package/dist/grep.d.ts.map +0 -1
- package/dist/grep.js.map +0 -7
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -7
- package/dist/install.d.ts.map +0 -1
- package/dist/install.js.map +0 -7
- package/dist/json.d.ts.map +0 -1
- package/dist/json.js.map +0 -7
- package/dist/kanban-board-inputs.d.ts.map +0 -1
- package/dist/kanban-decomposition-actions.d.ts.map +0 -1
- package/dist/kanban-detail-actions.d.ts.map +0 -1
- package/dist/kanban-evidence-bridge.d.ts.map +0 -1
- package/dist/kanban-presence.d.ts.map +0 -1
- package/dist/kanban-split-task-handler.d.ts.map +0 -1
- package/dist/kanban-task-inputs.d.ts.map +0 -1
- package/dist/kanban-tool-results.d.ts.map +0 -1
- package/dist/kanban-tool-schema.d.ts.map +0 -1
- package/dist/kanban-tool-types.d.ts.map +0 -1
- package/dist/kanban.d.ts.map +0 -1
- package/dist/kanban.js.map +0 -7
- package/dist/languages/detect.d.ts.map +0 -1
- package/dist/languages/diagnostics.d.ts.map +0 -1
- package/dist/languages/execute-tool.d.ts.map +0 -1
- package/dist/languages/execute.d.ts.map +0 -1
- package/dist/languages/index.d.ts.map +0 -1
- package/dist/languages/index.js.map +0 -7
- package/dist/languages/legacy-bridge.d.ts.map +0 -1
- package/dist/languages/package-tool.d.ts.map +0 -1
- package/dist/languages/plan.d.ts.map +0 -1
- package/dist/languages/profile-helpers.d.ts.map +0 -1
- package/dist/languages/profiles/additional.d.ts.map +0 -1
- package/dist/languages/profiles/primary.d.ts.map +0 -1
- package/dist/languages/registry.d.ts.map +0 -1
- package/dist/languages/tool.d.ts.map +0 -1
- package/dist/languages/types.d.ts.map +0 -1
- package/dist/lint.d.ts.map +0 -1
- package/dist/lint.js.map +0 -7
- package/dist/logs.d.ts.map +0 -1
- package/dist/logs.js.map +0 -7
- package/dist/memory.d.ts.map +0 -1
- package/dist/memory.js.map +0 -7
- package/dist/mode.d.ts.map +0 -1
- package/dist/mode.js.map +0 -7
- package/dist/next-steps.d.ts.map +0 -1
- package/dist/next-steps.js.map +0 -7
- package/dist/outdated.d.ts.map +0 -1
- package/dist/outdated.js.map +0 -7
- package/dist/pack.d.ts.map +0 -1
- package/dist/pack.js.map +0 -7
- package/dist/patch.d.ts.map +0 -1
- package/dist/patch.js.map +0 -7
- package/dist/plan.d.ts.map +0 -1
- package/dist/plan.js.map +0 -7
- package/dist/process-guardian.d.ts.map +0 -1
- package/dist/process-registry-persistent.d.ts.map +0 -1
- package/dist/process-registry.d.ts.map +0 -1
- package/dist/process-registry.js.map +0 -7
- package/dist/ps-slash.d.ts.map +0 -1
- package/dist/ps-slash.js.map +0 -7
- package/dist/read.d.ts.map +0 -1
- package/dist/read.js.map +0 -7
- package/dist/replace.d.ts.map +0 -1
- package/dist/replace.js.map +0 -7
- package/dist/scaffold.d.ts.map +0 -1
- package/dist/scaffold.js.map +0 -7
- package/dist/search.d.ts.map +0 -1
- package/dist/search.js.map +0 -7
- package/dist/session-kanban.d.ts.map +0 -1
- package/dist/session-kanban.js.map +0 -7
- package/dist/set-working-dir.d.ts.map +0 -1
- package/dist/skill.d.ts.map +0 -1
- package/dist/skill.js.map +0 -7
- package/dist/spawn-background.d.ts.map +0 -1
- package/dist/task.d.ts.map +0 -1
- package/dist/task.js.map +0 -7
- package/dist/test.d.ts.map +0 -1
- package/dist/test.js.map +0 -7
- package/dist/todo.d.ts.map +0 -1
- package/dist/todo.js.map +0 -7
- package/dist/tool-diff.d.ts.map +0 -1
- package/dist/tool-diff.js.map +0 -7
- package/dist/tool-help.d.ts.map +0 -1
- package/dist/tool-help.js.map +0 -7
- package/dist/tool-icon-map.d.ts.map +0 -1
- package/dist/tool-icons.d.ts.map +0 -1
- package/dist/tool-icons.js.map +0 -7
- package/dist/tool-search.d.ts.map +0 -1
- package/dist/tool-search.js.map +0 -7
- package/dist/tool-summary.d.ts.map +0 -1
- package/dist/tool-summary.js.map +0 -7
- package/dist/tool-tier.d.ts.map +0 -1
- package/dist/tool-tier.js.map +0 -7
- package/dist/tool-use.d.ts.map +0 -1
- package/dist/tool-use.js.map +0 -7
- package/dist/tree.d.ts.map +0 -1
- package/dist/tree.js.map +0 -7
- package/dist/typecheck.d.ts.map +0 -1
- package/dist/typecheck.js.map +0 -7
- package/dist/win32.d.ts.map +0 -1
- package/dist/win32.js.map +0 -7
- package/dist/write.d.ts.map +0 -1
- package/dist/write.js.map +0 -7
package/dist/diff.js
CHANGED
|
@@ -31,6 +31,7 @@ function safeResolve(input, ctx) {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
// src/diff.ts
|
|
34
|
+
var MAX_FILE_DUMP_BYTES = 5 * 1024 * 1024;
|
|
34
35
|
var diffTool = {
|
|
35
36
|
name: "diff",
|
|
36
37
|
category: "Filesystem",
|
|
@@ -38,6 +39,7 @@ var diffTool = {
|
|
|
38
39
|
usageHint: 'USE FOR CODE REVIEW AND CHANGE INSPECTION:\n\n- `files` + no `a`/`b` \u2192 show file content with line numbers (NOT a unified diff; no +/- prefixes).\n- `a` and/or `b` \u2192 git-style commit/branch diff (unified format, real +/- prefixes).\n- `staged: true` \u2192 only show staged changes.\n- `mode` can be "unified", "stat", or "side-by-side" (only affects the git-diff path).\n\nNOTE: For a true file-vs-file unified diff, supply `a` and `b` so the tool delegates to `git diff`. The `files`-only path is a line-numbered dump, not a diff.\n\nThis tool has important safety guards against flag injection (see previous security findings).',
|
|
39
40
|
permission: "auto",
|
|
40
41
|
mutating: false,
|
|
42
|
+
maxOutputBytes: 262144,
|
|
41
43
|
capabilities: ["fs.read"],
|
|
42
44
|
icon: "diff",
|
|
43
45
|
timeoutMs: 1e4,
|
|
@@ -156,10 +158,18 @@ async function fileDiff(input, ctx, _signal) {
|
|
|
156
158
|
};
|
|
157
159
|
}
|
|
158
160
|
const results = [];
|
|
161
|
+
let truncated = false;
|
|
159
162
|
for (const file of files) {
|
|
160
163
|
const absPath = safeResolve(file, ctx);
|
|
161
164
|
const stat2 = await fs.stat(absPath).catch(() => null);
|
|
162
165
|
if (!stat2?.isFile()) continue;
|
|
166
|
+
if (stat2.size > MAX_FILE_DUMP_BYTES) {
|
|
167
|
+
truncated = true;
|
|
168
|
+
results.push(
|
|
169
|
+
`--- ${file} (skipped: ${stat2.size} bytes exceeds the ${MAX_FILE_DUMP_BYTES} limit; use the read tool with offset/limit) ---`
|
|
170
|
+
);
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
163
173
|
const content = await fs.readFile(absPath, "utf8");
|
|
164
174
|
const lines = content.split(/\r?\n/);
|
|
165
175
|
results.push(formatWithLineNumbers(file, lines));
|
|
@@ -167,7 +177,7 @@ async function fileDiff(input, ctx, _signal) {
|
|
|
167
177
|
return {
|
|
168
178
|
diff: results.join("\n\n"),
|
|
169
179
|
files,
|
|
170
|
-
truncated
|
|
180
|
+
truncated,
|
|
171
181
|
mode: input.mode ?? "unified"
|
|
172
182
|
};
|
|
173
183
|
}
|
package/dist/e2e.js
CHANGED
|
@@ -27,12 +27,13 @@ function ensureInsideRoot(absPath, ctx) {
|
|
|
27
27
|
function safeResolve(input, ctx) {
|
|
28
28
|
return ensureInsideRoot(resolvePath(input, ctx), ctx);
|
|
29
29
|
}
|
|
30
|
-
async function
|
|
31
|
-
if (ctx.allowOutsideProjectRoot) return;
|
|
30
|
+
async function resolveRealInsideRoot(absPath, ctx) {
|
|
31
|
+
if (ctx.allowOutsideProjectRoot) return absPath;
|
|
32
32
|
const realRoots = await Promise.all(
|
|
33
33
|
allowedRoots(ctx).map((r) => fsp.realpath(r).catch(() => path.resolve(r)))
|
|
34
34
|
);
|
|
35
35
|
let probe = absPath;
|
|
36
|
+
const pendingTail = [];
|
|
36
37
|
for (; ; ) {
|
|
37
38
|
let real;
|
|
38
39
|
try {
|
|
@@ -40,13 +41,16 @@ async function assertRealInsideRoot(absPath, ctx) {
|
|
|
40
41
|
} catch (err) {
|
|
41
42
|
if (err.code === "ENOENT") {
|
|
42
43
|
const parent = path.dirname(probe);
|
|
43
|
-
if (parent === probe) return;
|
|
44
|
+
if (parent === probe) return absPath;
|
|
45
|
+
pendingTail.unshift(path.basename(probe));
|
|
44
46
|
probe = parent;
|
|
45
47
|
continue;
|
|
46
48
|
}
|
|
47
49
|
throw err;
|
|
48
50
|
}
|
|
49
|
-
if (isInsideAny(real, realRoots))
|
|
51
|
+
if (isInsideAny(real, realRoots)) {
|
|
52
|
+
return pendingTail.length > 0 ? path.join(real, ...pendingTail) : real;
|
|
53
|
+
}
|
|
50
54
|
throw new Error(
|
|
51
55
|
`Path "${absPath}" resolves through a symlink outside project root "${realRoots[0]}"`
|
|
52
56
|
);
|
|
@@ -54,8 +58,7 @@ async function assertRealInsideRoot(absPath, ctx) {
|
|
|
54
58
|
}
|
|
55
59
|
async function safeResolveReal(input, ctx) {
|
|
56
60
|
const abs = safeResolve(input, ctx);
|
|
57
|
-
await
|
|
58
|
-
return abs;
|
|
61
|
+
return await resolveRealInsideRoot(abs, ctx);
|
|
59
62
|
}
|
|
60
63
|
|
|
61
64
|
// src/e2e.ts
|
package/dist/edit.js
CHANGED
|
@@ -348,12 +348,13 @@ function ensureInsideRoot(absPath, ctx) {
|
|
|
348
348
|
function safeResolve(input, ctx) {
|
|
349
349
|
return ensureInsideRoot(resolvePath(input, ctx), ctx);
|
|
350
350
|
}
|
|
351
|
-
async function
|
|
352
|
-
if (ctx.allowOutsideProjectRoot) return;
|
|
351
|
+
async function resolveRealInsideRoot(absPath, ctx) {
|
|
352
|
+
if (ctx.allowOutsideProjectRoot) return absPath;
|
|
353
353
|
const realRoots = await Promise.all(
|
|
354
354
|
allowedRoots(ctx).map((r) => fsp.realpath(r).catch(() => path2.resolve(r)))
|
|
355
355
|
);
|
|
356
356
|
let probe = absPath;
|
|
357
|
+
const pendingTail = [];
|
|
357
358
|
for (; ; ) {
|
|
358
359
|
let real;
|
|
359
360
|
try {
|
|
@@ -361,13 +362,16 @@ async function assertRealInsideRoot(absPath, ctx) {
|
|
|
361
362
|
} catch (err) {
|
|
362
363
|
if (err.code === "ENOENT") {
|
|
363
364
|
const parent = path2.dirname(probe);
|
|
364
|
-
if (parent === probe) return;
|
|
365
|
+
if (parent === probe) return absPath;
|
|
366
|
+
pendingTail.unshift(path2.basename(probe));
|
|
365
367
|
probe = parent;
|
|
366
368
|
continue;
|
|
367
369
|
}
|
|
368
370
|
throw err;
|
|
369
371
|
}
|
|
370
|
-
if (isInsideAny(real, realRoots))
|
|
372
|
+
if (isInsideAny(real, realRoots)) {
|
|
373
|
+
return pendingTail.length > 0 ? path2.join(real, ...pendingTail) : real;
|
|
374
|
+
}
|
|
371
375
|
throw new Error(
|
|
372
376
|
`Path "${absPath}" resolves through a symlink outside project root "${realRoots[0]}"`
|
|
373
377
|
);
|
|
@@ -375,8 +379,7 @@ async function assertRealInsideRoot(absPath, ctx) {
|
|
|
375
379
|
}
|
|
376
380
|
async function safeResolveReal(input, ctx) {
|
|
377
381
|
const abs = safeResolve(input, ctx);
|
|
378
|
-
await
|
|
379
|
-
return abs;
|
|
382
|
+
return await resolveRealInsideRoot(abs, ctx);
|
|
380
383
|
}
|
|
381
384
|
|
|
382
385
|
// src/edit.ts
|