@wrongstack/tools 0.313.0 → 0.316.1

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.
Files changed (182) hide show
  1. package/dist/_edit-match.d.ts +3 -2
  2. package/dist/_output-spool.d.ts +4 -3
  3. package/dist/_shell-pick.d.ts +2 -1
  4. package/dist/_spawn-stream.d.ts +2 -1
  5. package/dist/_syntax-check.d.ts +2 -1
  6. package/dist/audit.js +10 -4055
  7. package/dist/bash-kill-guard.d.ts +3 -6
  8. package/dist/bash.js +9 -2308
  9. package/dist/batch-tool-use.js +2 -187
  10. package/dist/browser/index.js +25 -1339
  11. package/dist/browser/network-guard-proxy.d.ts +2 -1
  12. package/dist/builtin.js +69 -33949
  13. package/dist/chunk-22B7GE5T.js +260 -0
  14. package/dist/chunk-2VSZC6QM.js +113 -0
  15. package/dist/chunk-3PVYQFRQ.js +472 -0
  16. package/dist/chunk-42BHI7TN.js +337 -0
  17. package/dist/chunk-4BHUSMNL.js +104 -0
  18. package/dist/chunk-4I4LWFOO.js +431 -0
  19. package/dist/chunk-4UESMQDP.js +122 -0
  20. package/dist/chunk-553IQUMO.js +478 -0
  21. package/dist/chunk-5H4GSJAI.js +223 -0
  22. package/dist/chunk-6RNIFLG4.js +305 -0
  23. package/dist/chunk-7EY5DCRO.js +434 -0
  24. package/dist/chunk-A6BRWIXN.js +317 -0
  25. package/dist/chunk-AHHDWNXC.js +200 -0
  26. package/dist/chunk-BSLVR56S.js +199 -0
  27. package/dist/chunk-BTSFTGIL.js +7 -0
  28. package/dist/chunk-D33S4RQG.js +222 -0
  29. package/dist/chunk-DA4KNE2H.js +4412 -0
  30. package/dist/chunk-DR7JOQTC.js +520 -0
  31. package/dist/chunk-EEOFQDT6.js +898 -0
  32. package/dist/chunk-EJWSCQ6D.js +137 -0
  33. package/dist/chunk-EMRGN4KM.js +170 -0
  34. package/dist/chunk-FQZOHLG3.js +89 -0
  35. package/dist/chunk-GOIZNNOA.js +221 -0
  36. package/dist/chunk-HFXSNKCV.js +196 -0
  37. package/dist/chunk-HYX2TZ7O.js +1272 -0
  38. package/dist/chunk-I64BS3VC.js +15 -0
  39. package/dist/chunk-IVWV2UM6.js +955 -0
  40. package/dist/chunk-IXMNTNW5.js +238 -0
  41. package/dist/chunk-IYK7XGDZ.js +892 -0
  42. package/dist/chunk-J5SKD6LN.js +235 -0
  43. package/dist/chunk-JNNVRHMV.js +2111 -0
  44. package/dist/chunk-JOHXDF3D.js +295 -0
  45. package/dist/chunk-JRJJX3L5.js +424 -0
  46. package/dist/chunk-K3WNSHUF.js +1371 -0
  47. package/dist/chunk-L25CVUVR.js +2830 -0
  48. package/dist/chunk-LIJQMYYX.js +59 -0
  49. package/dist/chunk-LWKUTMD5.js +197 -0
  50. package/dist/chunk-MQX2KXVW.js +54 -0
  51. package/dist/chunk-MZZN7VCD.js +359 -0
  52. package/dist/chunk-NBDZMMG2.js +169 -0
  53. package/dist/chunk-NKJW5GFO.js +366 -0
  54. package/dist/chunk-NKNOBUBU.js +522 -0
  55. package/dist/chunk-O4MBV4AX.js +134 -0
  56. package/dist/chunk-OUBDL3WH.js +3515 -0
  57. package/dist/chunk-PQKK5JH7.js +101 -0
  58. package/dist/chunk-PY2IOS7C.js +1000 -0
  59. package/dist/chunk-Q5JPPCZC.js +12 -0
  60. package/dist/chunk-QBV725YG.js +128 -0
  61. package/dist/chunk-QZQSPUBF.js +315 -0
  62. package/dist/chunk-RGISBZBD.js +231 -0
  63. package/dist/chunk-RJZQWEMS.js +84 -0
  64. package/dist/chunk-RXISBFR5.js +315 -0
  65. package/dist/chunk-S5CCLZL3.js +99 -0
  66. package/dist/chunk-SDLVH5RZ.js +178 -0
  67. package/dist/chunk-T2F4S7U4.js +1723 -0
  68. package/dist/chunk-TEBQ4VPZ.js +163 -0
  69. package/dist/chunk-U4D5S3VQ.js +21 -0
  70. package/dist/chunk-U4VAATKP.js +193 -0
  71. package/dist/chunk-UCYQTZ7F.js +113 -0
  72. package/dist/chunk-UKU2ZX4C.js +203 -0
  73. package/dist/chunk-UNSKG6DC.js +159 -0
  74. package/dist/chunk-V43EQ6VR.js +68 -0
  75. package/dist/chunk-VB3MJGCV.js +610 -0
  76. package/dist/chunk-VFKPWSOX.js +154 -0
  77. package/dist/chunk-VJNHFZ7J.js +190 -0
  78. package/dist/chunk-VXECAJJ7.js +1091 -0
  79. package/dist/chunk-WHIIIREL.js +223 -0
  80. package/dist/chunk-Z6DAKQ3U.js +1 -0
  81. package/dist/chunk-ZJQ4IGXK.js +474 -0
  82. package/dist/chunk-ZLTFLC25.js +385 -0
  83. package/dist/circuit-breaker.js +3 -191
  84. package/dist/codebase-index/ast-invariant-engine.d.ts +5 -4
  85. package/dist/codebase-index/binary-frame.d.ts +0 -2
  86. package/dist/codebase-index/bm25.d.ts +1 -1
  87. package/dist/codebase-index/circuit-breaker.d.ts +2 -1
  88. package/dist/codebase-index/codebase-ast-replace-tool.d.ts +3 -2
  89. package/dist/codebase-index/codebase-impact-analysis-tool.d.ts +4 -3
  90. package/dist/codebase-index/codebase-invariant-check-tool.d.ts +3 -2
  91. package/dist/codebase-index/codebase-repo-map-tool.d.ts +3 -2
  92. package/dist/codebase-index/codebase-skeleton-tool.d.ts +3 -2
  93. package/dist/codebase-index/codebase-targeted-test-tool.d.ts +3 -2
  94. package/dist/codebase-index/content-hash.d.ts +0 -2
  95. package/dist/codebase-index/import-extractor.d.ts +0 -13
  96. package/dist/codebase-index/index-service.d.ts +1 -1
  97. package/dist/codebase-index/index.js +84 -13688
  98. package/dist/codebase-index/languages.d.ts +2 -1
  99. package/dist/codebase-index/module-roots.d.ts +3 -2
  100. package/dist/codebase-index/parser-batch.d.ts +0 -5
  101. package/dist/codebase-index/parser-dispatch.d.ts +2 -1
  102. package/dist/codebase-index/parser-output.d.ts +4 -3
  103. package/dist/codebase-index/parser-worker-pool.d.ts +0 -2
  104. package/dist/codebase-index/parser-worker-script.d.ts +1 -16
  105. package/dist/codebase-index/parser-worker-script.js +8 -3995
  106. package/dist/codebase-index/project-server-client-state.d.ts +2 -2
  107. package/dist/codebase-index/project-server-endpoint.d.ts +0 -15
  108. package/dist/codebase-index/project-server.js +60 -8548
  109. package/dist/codebase-index/tree-sitter/visitor.d.ts +2 -1
  110. package/dist/codebase-index/tree-sitter-parser.d.ts +0 -2
  111. package/dist/codebase-index/ts-parser.d.ts +1 -1
  112. package/dist/codebase-index/vector-search.d.ts +2 -1
  113. package/dist/codebase-index/wal-maintenance.d.ts +3 -2
  114. package/dist/codebase-index/worker.js +20 -8416
  115. package/dist/codebase-index/writer-admin.d.ts +0 -1
  116. package/dist/codebase-index/writer-search.d.ts +0 -9
  117. package/dist/design.js +2 -299
  118. package/dist/diff.js +4 -256
  119. package/dist/document.js +4 -222
  120. package/dist/e2e.js +5 -476
  121. package/dist/edit.js +14 -10200
  122. package/dist/exec.js +16 -3131
  123. package/dist/fetch.js +8 -398
  124. package/dist/format.js +10 -3750
  125. package/dist/generic-parser-VUXDIAOZ.js +13 -0
  126. package/dist/git.js +4 -380
  127. package/dist/glob.js +6 -280
  128. package/dist/go-parser-JXYKJHRC.js +469 -0
  129. package/dist/grep.js +7 -604
  130. package/dist/index.js +318 -35387
  131. package/dist/install.js +10 -4091
  132. package/dist/json-parser-IBHZ4BZC.js +213 -0
  133. package/dist/json.js +4 -665
  134. package/dist/kanban-contract-actions.d.ts +1 -1
  135. package/dist/kanban-detail-actions.d.ts +2 -1
  136. package/dist/kanban-presence.d.ts +2 -1
  137. package/dist/kanban-serializer.d.ts +0 -8
  138. package/dist/kanban-split-task-handler.d.ts +2 -2
  139. package/dist/kanban-tool-types.d.ts +2 -1
  140. package/dist/kanban.js +3 -2096
  141. package/dist/languages/diagnostics.d.ts +2 -1
  142. package/dist/languages/index.js +23 -4664
  143. package/dist/languages/legacy-bridge.d.ts +3 -2
  144. package/dist/languages/types.d.ts +2 -1
  145. package/dist/legacy-bridge-7M6QLUQN.js +18 -0
  146. package/dist/lint.js +10 -3706
  147. package/dist/logs.js +4 -287
  148. package/dist/memory.js +6 -215
  149. package/dist/mode.js +3 -99
  150. package/dist/outdated.js +4 -5170
  151. package/dist/pack.js +65 -33897
  152. package/dist/parser-dispatch-QH4XPGG6.js +14 -0
  153. package/dist/patch.js +13 -9935
  154. package/dist/plan.js +5 -3286
  155. package/dist/process-registry.js +8 -651
  156. package/dist/ps-slash.js +12 -1439
  157. package/dist/pwsh.d.ts +0 -1
  158. package/dist/py-parser-IS4HKYMF.js +16 -0
  159. package/dist/read.js +13 -9816
  160. package/dist/replace.js +15 -10014
  161. package/dist/rs-parser-XHUUO2KZ.js +81 -0
  162. package/dist/scaffold.js +4 -253
  163. package/dist/search.js +5 -585
  164. package/dist/session-kanban-sync.d.ts +0 -6
  165. package/dist/session-kanban.js +30 -972
  166. package/dist/skill.js +2 -215
  167. package/dist/spawn-background.d.ts +1 -1
  168. package/dist/task.js +5 -3410
  169. package/dist/test.js +10 -3773
  170. package/dist/todo.js +4 -2891
  171. package/dist/tool-help.js +3 -123
  172. package/dist/tool-search.js +3 -79
  173. package/dist/tool-tier.js +68 -33984
  174. package/dist/tool-use.js +2 -93
  175. package/dist/tree-sitter-parser-AIERW3YI.js +15 -0
  176. package/dist/tree.js +4 -288
  177. package/dist/ts-parser-RCTYKSVI.js +232 -0
  178. package/dist/typecheck.js +10 -3753
  179. package/dist/win32.js +6 -60
  180. package/dist/write.js +14 -9882
  181. package/dist/yaml-parser-4SAXV3PL.js +157 -0
  182. package/package.json +5 -5
@@ -0,0 +1,159 @@
1
+ import {
2
+ mapWithConcurrency
3
+ } from "./chunk-U4D5S3VQ.js";
4
+ import {
5
+ loadGitignoreMatcher
6
+ } from "./chunk-LIJQMYYX.js";
7
+ import {
8
+ assertRealInsideRoot,
9
+ safeResolveReal
10
+ } from "./chunk-D33S4RQG.js";
11
+
12
+ // src/glob.ts
13
+ import * as fs from "node:fs/promises";
14
+ import * as path from "node:path";
15
+ import { compileGlob, DEFAULT_WALK_IGNORE_DIRS } from "@wrongstack/core/utils";
16
+ import { ToolValidationError } from "@wrongstack/core/types";
17
+ var DEFAULT_IGNORE = new Set(DEFAULT_WALK_IGNORE_DIRS);
18
+ var WALK_CONCURRENCY = 16;
19
+ var globTool = {
20
+ name: "glob",
21
+ category: "Filesystem",
22
+ description: "Find files by path pattern. Results are sorted by modification time, newest first, so when the list is truncated at `limit` it is the oldest files that are dropped (recency-biased). Use index-backed `codebase-search` first for code symbols or concepts when it is live.",
23
+ usageHint: "PATH DISCOVERY AND SEARCH SCOPING:\n\n- When `codebase-search` is live, use it first for code concepts; use `glob` for filenames, path patterns, and non-indexed files.\n- Combine with `path` and `limit`.\n- Default ignores common build/dependency directories.\nMuch more efficient than shell `find` for most use cases inside the agent.",
24
+ selection: {
25
+ doNotUseWhen: "you need to search inside file contents.",
26
+ useInstead: ["grep"]
27
+ },
28
+ permission: "auto",
29
+ mutating: false,
30
+ capabilities: ["fs.read"],
31
+ icon: "folder",
32
+ maxOutputBytes: 65536,
33
+ timeoutMs: 15e3,
34
+ inputSchema: {
35
+ type: "object",
36
+ properties: {
37
+ pattern: {
38
+ type: "string",
39
+ description: 'Glob pattern to match (e.g. "**/*.ts", "src/**").'
40
+ },
41
+ path: {
42
+ type: "string",
43
+ description: "Base directory to search from (defaults to project root)."
44
+ },
45
+ limit: {
46
+ type: "integer",
47
+ minimum: 1,
48
+ maximum: 5e3,
49
+ description: "Maximum number of results to return (default 1000, max 5000). Results are sorted by mtime descending, so truncation keeps the most recently modified files."
50
+ }
51
+ },
52
+ required: ["pattern"]
53
+ },
54
+ async execute(input, ctx, opts) {
55
+ if (!input?.pattern) {
56
+ throw new ToolValidationError({
57
+ message: "glob: pattern is required",
58
+ field: "pattern"
59
+ });
60
+ }
61
+ const signal = opts?.signal;
62
+ const base = input.path ? await safeResolveReal(input.path, ctx) : ctx.cwd;
63
+ const limit = Math.max(1, Math.min(input.limit ?? 1e3, 5e3));
64
+ const isGitIgnored = await loadGitignoreMatcher(base);
65
+ const re = compileGlob(input.pattern);
66
+ const results = [];
67
+ let truncated = false;
68
+ const pushResult = async (full) => {
69
+ if (truncated || results.length >= limit) {
70
+ truncated = true;
71
+ return;
72
+ }
73
+ try {
74
+ const st = await fs.stat(full);
75
+ if (truncated || results.length >= limit) {
76
+ truncated = true;
77
+ return;
78
+ }
79
+ results.push({ rel: full, mtime: st.mtimeMs });
80
+ if (results.length >= limit) truncated = true;
81
+ } catch {
82
+ }
83
+ };
84
+ const walk = async (dir, relPrefix) => {
85
+ if (signal?.aborted) {
86
+ truncated = true;
87
+ return;
88
+ }
89
+ if (results.length >= limit) {
90
+ truncated = true;
91
+ return;
92
+ }
93
+ let entries;
94
+ try {
95
+ entries = await fs.readdir(dir, { withFileTypes: true });
96
+ } catch {
97
+ return;
98
+ }
99
+ const subdirs = [];
100
+ const matchedFiles = [];
101
+ for (const e of entries) {
102
+ const name = e.name;
103
+ if (DEFAULT_IGNORE.has(name)) continue;
104
+ const rel = relPrefix ? `${relPrefix}/${name}` : name;
105
+ const full = path.join(dir, name);
106
+ if (e.isDirectory()) {
107
+ if (isGitIgnored(rel, true)) continue;
108
+ subdirs.push({ full, rel });
109
+ } else if (e.isFile()) {
110
+ if (isGitIgnored(rel, false)) continue;
111
+ re.lastIndex = 0;
112
+ const relMatch = re.test(rel);
113
+ re.lastIndex = 0;
114
+ const nameMatch = re.test(name);
115
+ if (relMatch || nameMatch) {
116
+ matchedFiles.push(full);
117
+ }
118
+ } else if (e.isSymbolicLink()) {
119
+ try {
120
+ const st = await fs.stat(full);
121
+ if (st.isDirectory()) {
122
+ if (isGitIgnored(rel, true)) continue;
123
+ const real = await fs.realpath(full);
124
+ await assertRealInsideRoot(real, ctx);
125
+ subdirs.push({ full, rel });
126
+ } else if (st.isFile()) {
127
+ if (isGitIgnored(rel, false)) continue;
128
+ const real = await fs.realpath(full);
129
+ await assertRealInsideRoot(real, ctx);
130
+ re.lastIndex = 0;
131
+ const relMatch = re.test(rel);
132
+ re.lastIndex = 0;
133
+ const nameMatch = re.test(name);
134
+ if (relMatch || nameMatch) matchedFiles.push(full);
135
+ }
136
+ } catch {
137
+ }
138
+ }
139
+ if (truncated) return;
140
+ }
141
+ await mapWithConcurrency(matchedFiles, WALK_CONCURRENCY, pushResult);
142
+ if (truncated) return;
143
+ const remainingSubdirs = truncated ? [] : subdirs;
144
+ await mapWithConcurrency(
145
+ remainingSubdirs,
146
+ WALK_CONCURRENCY,
147
+ ({ full, rel }) => walk(full, rel)
148
+ );
149
+ };
150
+ await walk(base, "");
151
+ results.sort((a, b) => b.mtime - a.mtime);
152
+ return { files: results.map((r) => r.rel), truncated };
153
+ }
154
+ };
155
+
156
+ export {
157
+ globTool
158
+ };
159
+ //# sourceMappingURL=chunk-UNSKG6DC.js.map
@@ -0,0 +1,68 @@
1
+ // src/_win32-resolve.ts
2
+ import * as fs from "node:fs";
3
+ import * as path from "node:path";
4
+ function resolveWin32Command(cmd) {
5
+ if (process.platform !== "win32") return cmd;
6
+ if (cmd.includes("/") || cmd.includes("\\") || path.extname(cmd.replace(/\//g, "\\"))) {
7
+ return cmd;
8
+ }
9
+ const pathext = (process.env["PATHEXT"] ?? ".COM;.EXE;.BAT;.CMD;.VBS;.JS;.WS;.MSC").toLowerCase().split(";");
10
+ const pathDirs = (process.env["PATH"] ?? "").split(path.delimiter);
11
+ for (const dir of pathDirs) {
12
+ const base = path.join(dir, cmd);
13
+ for (const ext of pathext) {
14
+ const full = `${base}${ext}`;
15
+ try {
16
+ fs.accessSync(full, fs.constants.X_OK);
17
+ return full;
18
+ } catch {
19
+ }
20
+ }
21
+ }
22
+ return cmd;
23
+ }
24
+ function resolvePowerShell(cmd) {
25
+ if (process.platform !== "win32") return cmd;
26
+ const lower = cmd.toLowerCase();
27
+ if (lower !== "pwsh" && lower !== "powershell" && lower !== "pwsh.exe" && lower !== "powershell.exe") {
28
+ return resolveWin32Command(cmd);
29
+ }
30
+ const primary = lower.startsWith("pwsh") ? "pwsh" : "powershell";
31
+ const fallback = lower.startsWith("pwsh") ? "powershell" : "pwsh";
32
+ const resolved = resolveWin32Command(primary);
33
+ if (resolved === primary) {
34
+ const fb = resolveWin32Command(fallback);
35
+ return fb === fallback ? cmd : fb;
36
+ }
37
+ return resolved;
38
+ }
39
+ var WIN32_SHELL_META = /[&|<>"%\r\n\0]/;
40
+ function assertSafeWin32ShellArgs(args) {
41
+ for (const arg of args) {
42
+ if (typeof arg === "string" && WIN32_SHELL_META.test(arg)) {
43
+ throw new Error(
44
+ 'win32 cmd shim spawn: argument contains a shell metacharacter (one of & | < > " %, or a newline) that could enable command injection through the .cmd/.bat wrapper - refusing to run. Offending argument: ' + JSON.stringify(arg)
45
+ );
46
+ }
47
+ }
48
+ }
49
+ function buildWin32CmdShimInvocation(command, args = []) {
50
+ assertSafeWin32ShellArgs([command, ...args]);
51
+ const line = ["call", quoteWin32CmdArg(command), ...args.map(quoteWin32CmdArg)].join(" ");
52
+ return {
53
+ command: process.env["COMSPEC"] ?? "cmd.exe",
54
+ args: ["/d", "/c", line],
55
+ windowsVerbatimArguments: true
56
+ };
57
+ }
58
+ function quoteWin32CmdArg(arg) {
59
+ return `"${arg}"`;
60
+ }
61
+
62
+ export {
63
+ resolveWin32Command,
64
+ resolvePowerShell,
65
+ assertSafeWin32ShellArgs,
66
+ buildWin32CmdShimInvocation
67
+ };
68
+ //# sourceMappingURL=chunk-V43EQ6VR.js.map