@wrongstack/tools 0.297.0 → 0.298.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 (254) hide show
  1. package/dist/_spawn-stream.d.ts +2 -0
  2. package/dist/_util.d.ts +29 -1
  3. package/dist/audit.js +113 -65
  4. package/dist/bash.js +5 -4
  5. package/dist/batch-tool-use.js +70 -7
  6. package/dist/browser/index.js +31 -1
  7. package/dist/builtin.js +908 -390
  8. package/dist/codebase-index/index.js +68 -16
  9. package/dist/codebase-index/project-server-protocol.d.ts +26 -0
  10. package/dist/codebase-index/project-server.js +60 -16
  11. package/dist/codebase-index/worker.js +36 -13
  12. package/dist/codebase-index/writer-search-helpers.d.ts +16 -0
  13. package/dist/codebase-index/writer.d.ts +13 -1
  14. package/dist/design.d.ts +1 -1
  15. package/dist/design.js +4 -3
  16. package/dist/diff.js +11 -1
  17. package/dist/e2e.js +9 -6
  18. package/dist/edit.js +9 -6
  19. package/dist/exec-allowlist.d.ts +15 -0
  20. package/dist/exec.js +627 -568
  21. package/dist/format.js +116 -65
  22. package/dist/git.js +22 -2
  23. package/dist/glob.js +11 -5
  24. package/dist/grep.js +160 -104
  25. package/dist/index.js +859 -329
  26. package/dist/install.js +120 -68
  27. package/dist/json.js +64 -18
  28. package/dist/kanban-board-inputs.d.ts +21 -4
  29. package/dist/kanban.js +20 -5
  30. package/dist/languages/index.js +128 -71
  31. package/dist/lint.js +113 -65
  32. package/dist/outdated.js +86 -26
  33. package/dist/pack.js +908 -390
  34. package/dist/patch.js +11 -1
  35. package/dist/plan.js +32 -10
  36. package/dist/read.js +77 -23
  37. package/dist/replace.js +11 -3
  38. package/dist/scaffold.js +9 -6
  39. package/dist/session-kanban.js +21 -5
  40. package/dist/task.js +3 -1
  41. package/dist/test.js +113 -65
  42. package/dist/todo.js +3 -1
  43. package/dist/tool-tier.js +908 -390
  44. package/dist/tool-use.d.ts +1 -1
  45. package/dist/tool-use.js +28 -4
  46. package/dist/tree.d.ts +1 -0
  47. package/dist/tree.js +44 -8
  48. package/dist/typecheck.js +113 -65
  49. package/dist/write.js +9 -6
  50. package/package.json +7 -6
  51. package/dist/_concurrency.d.ts.map +0 -1
  52. package/dist/_danger-detect.d.ts.map +0 -1
  53. package/dist/_edit-match.d.ts.map +0 -1
  54. package/dist/_env.d.ts.map +0 -1
  55. package/dist/_fetch-guard.d.ts.map +0 -1
  56. package/dist/_output-spool.d.ts.map +0 -1
  57. package/dist/_redact-command.d.ts.map +0 -1
  58. package/dist/_regex.d.ts.map +0 -1
  59. package/dist/_session-shell.d.ts.map +0 -1
  60. package/dist/_shell-pick.d.ts.map +0 -1
  61. package/dist/_spawn-stream.d.ts.map +0 -1
  62. package/dist/_syntax-check.d.ts.map +0 -1
  63. package/dist/_util.d.ts.map +0 -1
  64. package/dist/_win32-resolve.d.ts.map +0 -1
  65. package/dist/audit.d.ts.map +0 -1
  66. package/dist/audit.js.map +0 -7
  67. package/dist/auto-proceed-loop-guard.d.ts.map +0 -1
  68. package/dist/auto-proceed-loop-guard.js.map +0 -7
  69. package/dist/bash-kill-guard.d.ts.map +0 -1
  70. package/dist/bash.d.ts.map +0 -1
  71. package/dist/bash.js.map +0 -7
  72. package/dist/batch-tool-use.d.ts.map +0 -1
  73. package/dist/batch-tool-use.js.map +0 -7
  74. package/dist/browser/artifacts.d.ts.map +0 -1
  75. package/dist/browser/index.d.ts.map +0 -1
  76. package/dist/browser/index.js.map +0 -7
  77. package/dist/browser/manager.d.ts.map +0 -1
  78. package/dist/browser/network-guard-proxy.d.ts.map +0 -1
  79. package/dist/browser/security.d.ts.map +0 -1
  80. package/dist/browser/tools.d.ts.map +0 -1
  81. package/dist/browser/types.d.ts.map +0 -1
  82. package/dist/builtin.d.ts.map +0 -1
  83. package/dist/builtin.js.map +0 -7
  84. package/dist/circuit-breaker.d.ts.map +0 -1
  85. package/dist/circuit-breaker.js.map +0 -7
  86. package/dist/codebase-index/background-indexer.d.ts.map +0 -1
  87. package/dist/codebase-index/bm25.d.ts.map +0 -1
  88. package/dist/codebase-index/circuit-breaker.d.ts.map +0 -1
  89. package/dist/codebase-index/codebase-index-tool.d.ts.map +0 -1
  90. package/dist/codebase-index/codebase-search-tool.d.ts.map +0 -1
  91. package/dist/codebase-index/codebase-stats-tool.d.ts.map +0 -1
  92. package/dist/codebase-index/dead-code-scan.d.ts.map +0 -1
  93. package/dist/codebase-index/generic-parser.d.ts.map +0 -1
  94. package/dist/codebase-index/gitignore.d.ts.map +0 -1
  95. package/dist/codebase-index/go-parser.d.ts.map +0 -1
  96. package/dist/codebase-index/index-service.d.ts.map +0 -1
  97. package/dist/codebase-index/index.d.ts.map +0 -1
  98. package/dist/codebase-index/index.js.map +0 -7
  99. package/dist/codebase-index/indexer.d.ts.map +0 -1
  100. package/dist/codebase-index/json-parser.d.ts.map +0 -1
  101. package/dist/codebase-index/languages.d.ts.map +0 -1
  102. package/dist/codebase-index/lsp-kind.d.ts.map +0 -1
  103. package/dist/codebase-index/parser-dispatch.d.ts.map +0 -1
  104. package/dist/codebase-index/project-server-cache.d.ts.map +0 -1
  105. package/dist/codebase-index/project-server-client.d.ts.map +0 -1
  106. package/dist/codebase-index/project-server-endpoint.d.ts.map +0 -1
  107. package/dist/codebase-index/project-server-protocol.d.ts.map +0 -1
  108. package/dist/codebase-index/project-server.d.ts.map +0 -1
  109. package/dist/codebase-index/project-server.js.map +0 -7
  110. package/dist/codebase-index/py-parser.d.ts.map +0 -1
  111. package/dist/codebase-index/refs-extractor.d.ts.map +0 -1
  112. package/dist/codebase-index/rs-parser.d.ts.map +0 -1
  113. package/dist/codebase-index/schema.d.ts.map +0 -1
  114. package/dist/codebase-index/spawn-gate.d.ts.map +0 -1
  115. package/dist/codebase-index/sqlite-runtime.d.ts.map +0 -1
  116. package/dist/codebase-index/ts-parser.d.ts.map +0 -1
  117. package/dist/codebase-index/worker-protocol.d.ts.map +0 -1
  118. package/dist/codebase-index/worker.d.ts.map +0 -1
  119. package/dist/codebase-index/worker.js.map +0 -7
  120. package/dist/codebase-index/writer-admin.d.ts.map +0 -1
  121. package/dist/codebase-index/writer-bulk-insert.d.ts.map +0 -1
  122. package/dist/codebase-index/writer-graph-helpers.d.ts.map +0 -1
  123. package/dist/codebase-index/writer-graph-reader.d.ts.map +0 -1
  124. package/dist/codebase-index/writer-helpers.d.ts.map +0 -1
  125. package/dist/codebase-index/writer-pragmas.d.ts.map +0 -1
  126. package/dist/codebase-index/writer-ref-mapper.d.ts.map +0 -1
  127. package/dist/codebase-index/writer-schema.d.ts.map +0 -1
  128. package/dist/codebase-index/writer-search-helpers.d.ts.map +0 -1
  129. package/dist/codebase-index/writer-store-pool.d.ts.map +0 -1
  130. package/dist/codebase-index/writer.d.ts.map +0 -1
  131. package/dist/codebase-index/yaml-parser.d.ts.map +0 -1
  132. package/dist/design.d.ts.map +0 -1
  133. package/dist/design.js.map +0 -7
  134. package/dist/diff.d.ts.map +0 -1
  135. package/dist/diff.js.map +0 -7
  136. package/dist/document.d.ts.map +0 -1
  137. package/dist/document.js.map +0 -7
  138. package/dist/e2e.d.ts.map +0 -1
  139. package/dist/e2e.js.map +0 -7
  140. package/dist/edit.d.ts.map +0 -1
  141. package/dist/edit.js.map +0 -7
  142. package/dist/exec-kill-guard.d.ts.map +0 -1
  143. package/dist/exec.d.ts.map +0 -1
  144. package/dist/exec.js.map +0 -7
  145. package/dist/fetch.d.ts.map +0 -1
  146. package/dist/fetch.js.map +0 -7
  147. package/dist/format.d.ts.map +0 -1
  148. package/dist/format.js.map +0 -7
  149. package/dist/git.d.ts.map +0 -1
  150. package/dist/git.js.map +0 -7
  151. package/dist/glob.d.ts.map +0 -1
  152. package/dist/glob.js.map +0 -7
  153. package/dist/grep.d.ts.map +0 -1
  154. package/dist/grep.js.map +0 -7
  155. package/dist/index.d.ts.map +0 -1
  156. package/dist/index.js.map +0 -7
  157. package/dist/install.d.ts.map +0 -1
  158. package/dist/install.js.map +0 -7
  159. package/dist/json.d.ts.map +0 -1
  160. package/dist/json.js.map +0 -7
  161. package/dist/kanban-board-inputs.d.ts.map +0 -1
  162. package/dist/kanban-decomposition-actions.d.ts.map +0 -1
  163. package/dist/kanban-detail-actions.d.ts.map +0 -1
  164. package/dist/kanban-evidence-bridge.d.ts.map +0 -1
  165. package/dist/kanban-presence.d.ts.map +0 -1
  166. package/dist/kanban-split-task-handler.d.ts.map +0 -1
  167. package/dist/kanban-task-inputs.d.ts.map +0 -1
  168. package/dist/kanban-tool-results.d.ts.map +0 -1
  169. package/dist/kanban-tool-schema.d.ts.map +0 -1
  170. package/dist/kanban-tool-types.d.ts.map +0 -1
  171. package/dist/kanban.d.ts.map +0 -1
  172. package/dist/kanban.js.map +0 -7
  173. package/dist/languages/detect.d.ts.map +0 -1
  174. package/dist/languages/diagnostics.d.ts.map +0 -1
  175. package/dist/languages/execute-tool.d.ts.map +0 -1
  176. package/dist/languages/execute.d.ts.map +0 -1
  177. package/dist/languages/index.d.ts.map +0 -1
  178. package/dist/languages/index.js.map +0 -7
  179. package/dist/languages/legacy-bridge.d.ts.map +0 -1
  180. package/dist/languages/package-tool.d.ts.map +0 -1
  181. package/dist/languages/plan.d.ts.map +0 -1
  182. package/dist/languages/profile-helpers.d.ts.map +0 -1
  183. package/dist/languages/profiles/additional.d.ts.map +0 -1
  184. package/dist/languages/profiles/primary.d.ts.map +0 -1
  185. package/dist/languages/registry.d.ts.map +0 -1
  186. package/dist/languages/tool.d.ts.map +0 -1
  187. package/dist/languages/types.d.ts.map +0 -1
  188. package/dist/lint.d.ts.map +0 -1
  189. package/dist/lint.js.map +0 -7
  190. package/dist/logs.d.ts.map +0 -1
  191. package/dist/logs.js.map +0 -7
  192. package/dist/memory.d.ts.map +0 -1
  193. package/dist/memory.js.map +0 -7
  194. package/dist/mode.d.ts.map +0 -1
  195. package/dist/mode.js.map +0 -7
  196. package/dist/next-steps.d.ts.map +0 -1
  197. package/dist/next-steps.js.map +0 -7
  198. package/dist/outdated.d.ts.map +0 -1
  199. package/dist/outdated.js.map +0 -7
  200. package/dist/pack.d.ts.map +0 -1
  201. package/dist/pack.js.map +0 -7
  202. package/dist/patch.d.ts.map +0 -1
  203. package/dist/patch.js.map +0 -7
  204. package/dist/plan.d.ts.map +0 -1
  205. package/dist/plan.js.map +0 -7
  206. package/dist/process-guardian.d.ts.map +0 -1
  207. package/dist/process-registry-persistent.d.ts.map +0 -1
  208. package/dist/process-registry.d.ts.map +0 -1
  209. package/dist/process-registry.js.map +0 -7
  210. package/dist/ps-slash.d.ts.map +0 -1
  211. package/dist/ps-slash.js.map +0 -7
  212. package/dist/read.d.ts.map +0 -1
  213. package/dist/read.js.map +0 -7
  214. package/dist/replace.d.ts.map +0 -1
  215. package/dist/replace.js.map +0 -7
  216. package/dist/scaffold.d.ts.map +0 -1
  217. package/dist/scaffold.js.map +0 -7
  218. package/dist/search.d.ts.map +0 -1
  219. package/dist/search.js.map +0 -7
  220. package/dist/session-kanban.d.ts.map +0 -1
  221. package/dist/session-kanban.js.map +0 -7
  222. package/dist/set-working-dir.d.ts.map +0 -1
  223. package/dist/skill.d.ts.map +0 -1
  224. package/dist/skill.js.map +0 -7
  225. package/dist/spawn-background.d.ts.map +0 -1
  226. package/dist/task.d.ts.map +0 -1
  227. package/dist/task.js.map +0 -7
  228. package/dist/test.d.ts.map +0 -1
  229. package/dist/test.js.map +0 -7
  230. package/dist/todo.d.ts.map +0 -1
  231. package/dist/todo.js.map +0 -7
  232. package/dist/tool-diff.d.ts.map +0 -1
  233. package/dist/tool-diff.js.map +0 -7
  234. package/dist/tool-help.d.ts.map +0 -1
  235. package/dist/tool-help.js.map +0 -7
  236. package/dist/tool-icon-map.d.ts.map +0 -1
  237. package/dist/tool-icons.d.ts.map +0 -1
  238. package/dist/tool-icons.js.map +0 -7
  239. package/dist/tool-search.d.ts.map +0 -1
  240. package/dist/tool-search.js.map +0 -7
  241. package/dist/tool-summary.d.ts.map +0 -1
  242. package/dist/tool-summary.js.map +0 -7
  243. package/dist/tool-tier.d.ts.map +0 -1
  244. package/dist/tool-tier.js.map +0 -7
  245. package/dist/tool-use.d.ts.map +0 -1
  246. package/dist/tool-use.js.map +0 -7
  247. package/dist/tree.d.ts.map +0 -1
  248. package/dist/tree.js.map +0 -7
  249. package/dist/typecheck.d.ts.map +0 -1
  250. package/dist/typecheck.js.map +0 -7
  251. package/dist/win32.d.ts.map +0 -1
  252. package/dist/win32.js.map +0 -7
  253. package/dist/write.d.ts.map +0 -1
  254. package/dist/write.js.map +0 -7
@@ -1,4 +1,4 @@
1
- import type { Tool } from '@wrongstack/core/types';
1
+ import { type Tool } from '@wrongstack/core/types';
2
2
  interface ToolUseInput {
3
3
  tool: string;
4
4
  input: Record<string, unknown>;
package/dist/tool-use.js CHANGED
@@ -1,10 +1,17 @@
1
1
  // src/tool-use.ts
2
+ import {
3
+ GOVERNED_TOOL_EXECUTOR_META_KEY
4
+ } from "@wrongstack/core/types";
2
5
  var toolUseTool = {
3
6
  name: "tool_use",
4
7
  category: "Meta",
5
8
  description: "Directly execute any registered tool by its exact name, bypassing normal discovery. This is a powerful meta-tool intended for cases where the agent has a clear plan and knows precisely which tool to invoke.",
6
9
  usageHint: "ADVANCED META TOOL \u2014 USE WITH CARE:\n\n- Only use when you are certain of the exact tool name and its expected input shape.\n- Prefer using the normal tool calling mechanism when possible.\n- Very useful in batch-tool-use or when orchestrating complex workflows programmatically.\n- The call still goes through full permission checks and capability validation.",
7
10
  permission: "confirm",
11
+ // WS-046: gives permission decisions something to key on.
12
+ // The tool being invoked through this indirection — the whole point of a
13
+ // permission decision here is WHICH tool is being reached.
14
+ subjectKey: "tool",
8
15
  mutating: true,
9
16
  timeoutMs: 6e4,
10
17
  capabilities: ["tool.mutate.any"],
@@ -23,7 +30,7 @@ var toolUseTool = {
23
30
  },
24
31
  required: ["tool"]
25
32
  },
26
- async execute(input, ctx, opts) {
33
+ async execute(input, ctx) {
27
34
  const start = Date.now();
28
35
  if (!input?.tool) {
29
36
  return {
@@ -42,6 +49,14 @@ var toolUseTool = {
42
49
  executionMs: Date.now() - start
43
50
  };
44
51
  }
52
+ if (tool.name === toolUseTool.name) {
53
+ return {
54
+ tool: input.tool,
55
+ success: false,
56
+ error: "tool_use: recursive meta-tool execution is not allowed",
57
+ executionMs: Date.now() - start
58
+ };
59
+ }
45
60
  if (tool.permission === "deny") {
46
61
  return {
47
62
  tool: input.tool,
@@ -50,12 +65,21 @@ var toolUseTool = {
50
65
  executionMs: Date.now() - start
51
66
  };
52
67
  }
68
+ const governedExecute = ctx.meta[GOVERNED_TOOL_EXECUTOR_META_KEY];
69
+ if (typeof governedExecute !== "function") {
70
+ return {
71
+ tool: input.tool,
72
+ success: false,
73
+ error: "tool_use: governed nested execution is unavailable; call the tool directly",
74
+ executionMs: Date.now() - start
75
+ };
76
+ }
53
77
  try {
54
- const result = await tool.execute(input.input, ctx, opts);
78
+ const result = await governedExecute(input.tool, input.input ?? {});
55
79
  return {
56
80
  tool: input.tool,
57
- success: true,
58
- result,
81
+ success: result.success,
82
+ ...result.success ? { result: result.result } : { error: result.error ?? "nested tool failed" },
59
83
  executionMs: Date.now() - start
60
84
  };
61
85
  } catch (e) {
package/dist/tree.d.ts CHANGED
@@ -7,6 +7,7 @@ interface TreeInput {
7
7
  show_files?: boolean | undefined;
8
8
  show_dirs?: boolean | undefined;
9
9
  show_hidden?: boolean | undefined;
10
+ max_entries?: number | undefined;
10
11
  }
11
12
  interface TreeOutput {
12
13
  tree: string;
package/dist/tree.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // src/tree.ts
2
- import { DEFAULT_WALK_IGNORE_DIRS, expectDefined } from "@wrongstack/core/utils";
3
2
  import * as fs from "node:fs/promises";
4
3
  import * as path2 from "node:path";
4
+ import { DEFAULT_WALK_IGNORE_DIRS, expectDefined } from "@wrongstack/core/utils";
5
5
 
6
6
  // src/_util.ts
7
7
  import * as path from "node:path";
@@ -30,6 +30,8 @@ function safeResolve(input, ctx) {
30
30
 
31
31
  // src/tree.ts
32
32
  var DEFAULT_IGNORE = [...DEFAULT_WALK_IGNORE_DIRS, ".wrongstack", ".ssh", ".gnupg", ".aws"];
33
+ var DEFAULT_MAX_ENTRIES = 5e3;
34
+ var MAX_TREE_OUTPUT_BYTES = 256 * 1024;
33
35
  var treeTool = {
34
36
  name: "tree",
35
37
  category: "Filesystem",
@@ -73,6 +75,12 @@ var treeTool = {
73
75
  show_hidden: {
74
76
  type: "boolean",
75
77
  description: "Show hidden files starting with . (default: false)"
78
+ },
79
+ max_entries: {
80
+ type: "integer",
81
+ description: `Maximum entries retained in the rendered tree (default ${DEFAULT_MAX_ENTRIES}).`,
82
+ minimum: 1,
83
+ maximum: 5e4
76
84
  }
77
85
  }
78
86
  },
@@ -86,7 +94,7 @@ var treeTool = {
86
94
  if (!final) throw new Error("tree: stream ended without final event");
87
95
  return final;
88
96
  },
89
- async *executeStream(input, ctx) {
97
+ async *executeStream(input, ctx, opts) {
90
98
  const basePath = input.path ? safeResolve(input.path, ctx) : ctx.cwd;
91
99
  const maxDepth = input.depth ?? 3;
92
100
  const showFiles = input.show_files ?? true;
@@ -94,8 +102,17 @@ var treeTool = {
94
102
  const showHidden = input.show_hidden ?? false;
95
103
  const exclude = /* @__PURE__ */ new Set([...DEFAULT_IGNORE, ...input.exclude ?? []]);
96
104
  const filterGlob = input.glob;
105
+ const maxEntries = input.max_entries ?? DEFAULT_MAX_ENTRIES;
106
+ const signal = opts?.signal ?? ctx.signal ?? new AbortController().signal;
97
107
  const lines = [basePath];
98
108
  const totals = { totalFiles: { value: 0 }, totalDirs: { value: 0 } };
109
+ const retention = {
110
+ entries: 0,
111
+ outputBytes: Buffer.byteLength(basePath, "utf8"),
112
+ maxEntries,
113
+ maxOutputBytes: MAX_TREE_OUTPUT_BYTES,
114
+ truncated: false
115
+ };
99
116
  const queue = [];
100
117
  const FLUSH_EVERY = 200;
101
118
  let lastEmittedTotal = 0;
@@ -122,12 +139,19 @@ var treeTool = {
122
139
  isLast: true,
123
140
  totalFiles: totals.totalFiles,
124
141
  totalDirs: totals.totalDirs,
125
- onProgress: tickProgress
142
+ onProgress: tickProgress,
143
+ retention,
144
+ signal
126
145
  });
127
146
  let walkDone = false;
128
- walkPromise.finally(() => {
129
- walkDone = true;
130
- });
147
+ void walkPromise.then(
148
+ () => {
149
+ walkDone = true;
150
+ },
151
+ () => {
152
+ walkDone = true;
153
+ }
154
+ );
131
155
  while (!walkDone || queue.length > 0) {
132
156
  if (queue.length > 0) {
133
157
  yield expectDefined(queue.shift());
@@ -150,13 +174,15 @@ var treeTool = {
150
174
  tree: lines.join("\n"),
151
175
  total_files: totals.totalFiles.value,
152
176
  total_dirs: totals.totalDirs.value,
153
- truncated: false,
177
+ truncated: retention.truncated,
154
178
  path: basePath
155
179
  }
156
180
  };
157
181
  }
158
182
  };
159
183
  async function walkDir(dir, depth, opts) {
184
+ opts.signal.throwIfAborted();
185
+ if (opts.retention.truncated) return;
160
186
  const entries = await fs.readdir(dir, { withFileTypes: true }).catch(() => []);
161
187
  const filtered = entries.filter((e) => {
162
188
  if (!opts.showHidden && e.name.startsWith(".")) return false;
@@ -176,6 +202,8 @@ async function walkDir(dir, depth, opts) {
176
202
  return a.name.localeCompare(b.name);
177
203
  });
178
204
  for (let i = 0; i < items.length; i++) {
205
+ opts.signal.throwIfAborted();
206
+ if (opts.retention.truncated) return;
179
207
  const entry = items[i];
180
208
  if (!entry) continue;
181
209
  const isLast = i === items.length - 1;
@@ -184,7 +212,15 @@ async function walkDir(dir, depth, opts) {
184
212
  const displayName = entry.name + (entry.isDirectory() ? "/" : "");
185
213
  if (!opts.showDirs && entry.isDirectory()) continue;
186
214
  if (!opts.showFiles && entry.isFile()) continue;
187
- opts.lines.push(opts.prefix + branch + displayName);
215
+ const line = opts.prefix + branch + displayName;
216
+ const lineBytes = Buffer.byteLength(line, "utf8") + 1;
217
+ if (opts.retention.entries >= opts.retention.maxEntries || opts.retention.outputBytes + lineBytes > opts.retention.maxOutputBytes) {
218
+ opts.retention.truncated = true;
219
+ return;
220
+ }
221
+ opts.lines.push(line);
222
+ opts.retention.entries++;
223
+ opts.retention.outputBytes += lineBytes;
188
224
  if (entry.isDirectory() && (opts.maxDepth === 0 || depth < opts.maxDepth)) {
189
225
  const childPrefix = opts.prefix + connector;
190
226
  await walkDir(path2.join(dir, entry.name), depth + 1, {
package/dist/typecheck.js CHANGED
@@ -81,11 +81,12 @@ function createOutputSpool(opts) {
81
81
  return {
82
82
  write(text) {
83
83
  if (finalized || !text) return;
84
- totalBytes += Buffer.byteLength(text, "utf8");
84
+ const textBytes = Buffer.byteLength(text, "utf8");
85
+ totalBytes += textBytes;
85
86
  if (!stream && !failed) {
86
- if (headBytes + text.length <= threshold) {
87
+ if (headBytes + textBytes <= threshold) {
87
88
  head += text;
88
- headBytes += text.length;
89
+ headBytes += textBytes;
89
90
  return;
90
91
  }
91
92
  head += text;
@@ -95,7 +96,7 @@ function createOutputSpool(opts) {
95
96
  }
96
97
  if (stream) {
97
98
  if (stream.writableLength > SPOOL_WRITE_HWM_BYTES) {
98
- droppedBytes += Buffer.byteLength(text, "utf8");
99
+ droppedBytes += textBytes;
99
100
  return;
100
101
  }
101
102
  stream.write(text);
@@ -117,6 +118,52 @@ function createOutputSpool(opts) {
117
118
  };
118
119
  }
119
120
 
121
+ // src/_win32-resolve.ts
122
+ import * as fs from "node:fs";
123
+ import * as path2 from "node:path";
124
+ function resolveWin32Command(cmd) {
125
+ if (process.platform !== "win32") return cmd;
126
+ if (cmd.includes("/") || cmd.includes("\\") || path2.extname(cmd.replace(/\//g, "\\"))) {
127
+ return cmd;
128
+ }
129
+ const pathext = (process.env["PATHEXT"] ?? ".COM;.EXE;.BAT;.CMD;.VBS;.JS;.WS;.MSC").toLowerCase().split(";");
130
+ const pathDirs = (process.env["PATH"] ?? "").split(path2.delimiter);
131
+ for (const dir of pathDirs) {
132
+ const base = path2.join(dir, cmd);
133
+ for (const ext of pathext) {
134
+ const full = `${base}${ext}`;
135
+ try {
136
+ fs.accessSync(full, fs.constants.X_OK);
137
+ return full;
138
+ } catch {
139
+ }
140
+ }
141
+ }
142
+ return cmd;
143
+ }
144
+ var WIN32_SHELL_META = /[&|<>"\r\n\0]/;
145
+ function assertSafeWin32ShellArgs(args) {
146
+ for (const arg of args) {
147
+ if (typeof arg === "string" && WIN32_SHELL_META.test(arg)) {
148
+ throw new Error(
149
+ '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)
150
+ );
151
+ }
152
+ }
153
+ }
154
+ function buildWin32CmdShimInvocation(command, args = []) {
155
+ assertSafeWin32ShellArgs([command, ...args]);
156
+ const line = ["call", quoteWin32CmdArg(command), ...args.map(quoteWin32CmdArg)].join(" ");
157
+ return {
158
+ command: process.env["COMSPEC"] ?? "cmd.exe",
159
+ args: ["/d", "/c", line],
160
+ windowsVerbatimArguments: true
161
+ };
162
+ }
163
+ function quoteWin32CmdArg(arg) {
164
+ return `"${arg}"`;
165
+ }
166
+
120
167
  // src/process-registry.ts
121
168
  import { spawn } from "node:child_process";
122
169
  import * as os from "node:os";
@@ -741,60 +788,17 @@ function getProcessRegistry() {
741
788
  return _registry;
742
789
  }
743
790
 
744
- // src/_win32-resolve.ts
745
- import * as fs from "node:fs";
746
- import * as path2 from "node:path";
747
- function resolveWin32Command(cmd) {
748
- if (process.platform !== "win32") return cmd;
749
- if (cmd.includes("/") || cmd.includes("\\") || path2.extname(cmd.replace(/\//g, "\\"))) {
750
- return cmd;
751
- }
752
- const pathext = (process.env["PATHEXT"] ?? ".COM;.EXE;.BAT;.CMD;.VBS;.JS;.WS;.MSC").toLowerCase().split(";");
753
- const pathDirs = (process.env["PATH"] ?? "").split(path2.delimiter);
754
- for (const dir of pathDirs) {
755
- const base = path2.join(dir, cmd);
756
- for (const ext of pathext) {
757
- const full = `${base}${ext}`;
758
- try {
759
- fs.accessSync(full, fs.constants.X_OK);
760
- return full;
761
- } catch {
762
- }
763
- }
764
- }
765
- return cmd;
766
- }
767
- var WIN32_SHELL_META = /[&|<>"\r\n\0]/;
768
- function assertSafeWin32ShellArgs(args) {
769
- for (const arg of args) {
770
- if (typeof arg === "string" && WIN32_SHELL_META.test(arg)) {
771
- throw new Error(
772
- '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)
773
- );
774
- }
775
- }
776
- }
777
- function buildWin32CmdShimInvocation(command, args = []) {
778
- assertSafeWin32ShellArgs([command, ...args]);
779
- const line = ["call", quoteWin32CmdArg(command), ...args.map(quoteWin32CmdArg)].join(" ");
780
- return {
781
- command: process.env["COMSPEC"] ?? "cmd.exe",
782
- args: ["/d", "/c", line],
783
- windowsVerbatimArguments: true
784
- };
785
- }
786
- function quoteWin32CmdArg(arg) {
787
- return `"${arg}"`;
788
- }
789
-
790
791
  // src/_spawn-stream.ts
791
792
  var isWin = process.platform === "win32";
792
793
  async function* spawnStream(opts) {
793
794
  const max = opts.maxBytes ?? 2e5;
794
795
  const flushAt = opts.flushBytes ?? 4 * 1024;
795
796
  const maxQueue = opts.maxQueueSize ?? 500;
797
+ const maxQueueBytes = opts.maxQueueBytes ?? 1024 * 1024;
796
798
  let stdout = "";
797
799
  let stderr = "";
800
+ let stdoutRetainedBytes = 0;
801
+ let stderrRetainedBytes = 0;
798
802
  let pending = "";
799
803
  let error;
800
804
  const spool = createOutputSpool({ tool: opts.cmd, thresholdBytes: max });
@@ -836,6 +840,7 @@ async function* spawnStream(opts) {
836
840
  });
837
841
  }
838
842
  const queue = [];
843
+ let queuedBytes = 0;
839
844
  let waiter;
840
845
  let paused = false;
841
846
  const wake = () => {
@@ -846,7 +851,7 @@ async function* spawnStream(opts) {
846
851
  }
847
852
  };
848
853
  const resume = () => {
849
- if (paused && queue.length < maxQueue) {
854
+ if (paused && queue.length <= Math.floor(maxQueue / 2) && queuedBytes <= Math.floor(maxQueueBytes / 2)) {
850
855
  paused = false;
851
856
  child.stdout?.resume();
852
857
  child.stderr?.resume();
@@ -856,11 +861,16 @@ async function* spawnStream(opts) {
856
861
  const s = c.toString();
857
862
  stdoutBytes += c.byteLength;
858
863
  emitProcessOutput({ pid, stream: "stdout", chunk: c });
859
- if (stdout.length < max) stdout += s;
864
+ if (stdoutRetainedBytes < max) {
865
+ const retained = utf8Prefix(s, max - stdoutRetainedBytes);
866
+ stdout += retained;
867
+ stdoutRetainedBytes += Buffer.byteLength(retained, "utf8");
868
+ }
860
869
  spool.write(s);
861
- queue.push({ kind: "out", data: s });
870
+ queue.push({ kind: "out", data: s, bytes: c.byteLength });
871
+ queuedBytes += c.byteLength;
862
872
  wake();
863
- if (!paused && queue.length >= maxQueue) {
873
+ if (!paused && (queue.length >= maxQueue || queuedBytes >= maxQueueBytes)) {
864
874
  paused = true;
865
875
  child.stdout?.pause();
866
876
  child.stderr?.pause();
@@ -870,11 +880,16 @@ async function* spawnStream(opts) {
870
880
  const s = c.toString();
871
881
  stderrBytes += c.byteLength;
872
882
  emitProcessOutput({ pid, stream: "stderr", chunk: c });
873
- if (stderr.length < max) stderr += s;
883
+ if (stderrRetainedBytes < max) {
884
+ const retained = utf8Prefix(s, max - stderrRetainedBytes);
885
+ stderr += retained;
886
+ stderrRetainedBytes += Buffer.byteLength(retained, "utf8");
887
+ }
874
888
  spool.write(s);
875
- queue.push({ kind: "err", data: s });
889
+ queue.push({ kind: "err", data: s, bytes: c.byteLength });
890
+ queuedBytes += c.byteLength;
876
891
  wake();
877
- if (!paused && queue.length >= maxQueue) {
892
+ if (!paused && (queue.length >= maxQueue || queuedBytes >= maxQueueBytes)) {
878
893
  paused = true;
879
894
  child.stdout?.pause();
880
895
  child.stderr?.pause();
@@ -884,7 +899,9 @@ async function* spawnStream(opts) {
884
899
  child.stderr?.on("data", onErr);
885
900
  child.on("error", (e) => {
886
901
  error = e.message;
887
- queue.push({ kind: "error", data: e.message });
902
+ const bytes = Buffer.byteLength(e.message, "utf8");
903
+ queue.push({ kind: "error", data: e.message, bytes });
904
+ queuedBytes += bytes;
888
905
  wake();
889
906
  });
890
907
  const completeTelemetry = (code, signal, timedOut = false) => {
@@ -905,7 +922,13 @@ async function* spawnStream(opts) {
905
922
  if (typeof pid === "number") registry.unregister(pid);
906
923
  const exitCode2 = code ?? (signal ? 1 : 0);
907
924
  completeTelemetry(exitCode2, signal ?? void 0);
908
- queue.push({ kind: "close", data: "", code: exitCode2, ...signal ? { signal } : {} });
925
+ queue.push({
926
+ kind: "close",
927
+ data: "",
928
+ bytes: 0,
929
+ code: exitCode2,
930
+ ...signal ? { signal } : {}
931
+ });
909
932
  wake();
910
933
  });
911
934
  const onAbort = () => {
@@ -917,7 +940,7 @@ async function* spawnStream(opts) {
917
940
  } catch {
918
941
  }
919
942
  }
920
- queue.push({ kind: "close", data: "", code: 124 });
943
+ queue.push({ kind: "close", data: "", bytes: 0, code: 124 });
921
944
  completeTelemetry(124, "SIGKILL", true);
922
945
  wake();
923
946
  };
@@ -935,6 +958,7 @@ async function* spawnStream(opts) {
935
958
  });
936
959
  }
937
960
  const chunk = queue.shift();
961
+ queuedBytes -= chunk.bytes;
938
962
  resume();
939
963
  if (chunk.kind === "close") {
940
964
  if (!spawnFailed) exitCode = chunk.code ?? 0;
@@ -961,7 +985,7 @@ async function* spawnStream(opts) {
961
985
  stdout: spooled ? stdout + spoolNote(spooled) : stdout,
962
986
  stderr,
963
987
  exitCode,
964
- truncated: stdout.length >= max || stderr.length >= max,
988
+ truncated: stdoutBytes > stdoutRetainedBytes || stderrBytes > stderrRetainedBytes,
965
989
  error,
966
990
  spoolPath: spooled?.path,
967
991
  spoolBytes: spooled?.bytes
@@ -985,6 +1009,20 @@ async function* spawnStream(opts) {
985
1009
  }
986
1010
  }
987
1011
  }
1012
+ function utf8Prefix(text, maxBytes) {
1013
+ if (maxBytes <= 0) return "";
1014
+ if (Buffer.byteLength(text, "utf8") <= maxBytes) return text;
1015
+ let low = 0;
1016
+ let high = text.length;
1017
+ while (low < high) {
1018
+ const mid = Math.ceil((low + high) / 2);
1019
+ if (Buffer.byteLength(text.slice(0, mid), "utf8") <= maxBytes) low = mid;
1020
+ else high = mid - 1;
1021
+ }
1022
+ let end = low;
1023
+ if (end > 0 && /[\uD800-\uDBFF]/.test(text[end - 1])) end--;
1024
+ return text.slice(0, end);
1025
+ }
988
1026
 
989
1027
  // src/_util.ts
990
1028
  import * as path3 from "node:path";
@@ -2552,8 +2590,8 @@ async function scanDirectory(directory, depth, profiles, limits, state, extraIgn
2552
2590
  collectFileEvidence(directory, fullPath, entry.name, profiles, state);
2553
2591
  }
2554
2592
  }
2555
- function collectFileEvidence(directory, fullPath, basename4, profiles, state) {
2556
- const lower = basename4.toLowerCase();
2593
+ function collectFileEvidence(directory, fullPath, basename5, profiles, state) {
2594
+ const lower = basename5.toLowerCase();
2557
2595
  const extension = path4.extname(lower);
2558
2596
  for (const profile of profiles) {
2559
2597
  const detector = profile.detectors.find(
@@ -2564,7 +2602,7 @@ function collectFileEvidence(directory, fullPath, basename4, profiles, state) {
2564
2602
  candidate.evidence.push({
2565
2603
  kind: detector.kind,
2566
2604
  path: fullPath,
2567
- value: basename4,
2605
+ value: basename5,
2568
2606
  weight: detector.weight
2569
2607
  });
2570
2608
  if (detector.kind === "manifest" || detector.kind === "config") {
@@ -2984,10 +3022,11 @@ var MAX_ARGUMENTS = 128;
2984
3022
  var MAX_ARGUMENT_LENGTH = 4096;
2985
3023
  var PACKAGE_NAME_RE = /^(?:@[a-z0-9._-]+\/)?[a-z0-9._-]+(?:@[a-z0-9*+._~^<>=|-]+)?$/i;
2986
3024
  var COMPOSER_PACKAGE_RE = /^[a-z0-9_.-]+\/[a-z0-9_.-]+(?::[a-z0-9*+._~^<>=|-]+)?$/i;
2987
- var GO_MODULE_RE = /^(?:[a-z0-9.-]+\.)+[a-z0-9.-]+\/[a-z0-9._~+/@-]+$/i;
3025
+ var GO_MODULE_RE = /^(?:[a-z0-9-]+\.)+[a-z0-9-]+\/[a-z0-9._~+/@-]+$/i;
2988
3026
  var PYTHON_PACKAGE_RE = /^[a-z0-9._-]+(?:\[[a-z0-9._,-]+\])?==[a-z0-9*+._!~-]+$/i;
2989
3027
  async function planLanguageOperation(options) {
2990
3028
  validateOperationOptions(options.operation, options.operationOptions?.packages);
3029
+ validateFilterOption(options.operationOptions?.filter);
2991
3030
  const detection = await detectLanguageWorkspaces(options);
2992
3031
  const candidates = detection.workspaces.filter(
2993
3032
  (workspace) => workspace.capabilities.includes(options.operation)
@@ -3160,6 +3199,15 @@ function workspaceDepth(workspaceRoot, projectRoot) {
3160
3199
  const relative5 = path6.relative(path6.resolve(projectRoot), path6.resolve(workspaceRoot));
3161
3200
  return relative5 === "" ? 0 : relative5.split(path6.sep).length;
3162
3201
  }
3202
+ function validateFilterOption(filter) {
3203
+ if (filter === void 0) return;
3204
+ if (filter.startsWith("-") || filter.includes(" --")) {
3205
+ throw new Error(`Invalid test filter (parsed as a runner option): "${filter}"`);
3206
+ }
3207
+ if (filter.length > MAX_ARGUMENT_LENGTH || /[\r\n\0]/.test(filter)) {
3208
+ throw new Error("Invalid test filter (oversized or contains a control character)");
3209
+ }
3210
+ }
3163
3211
  function validateOperationOptions(operation, packages) {
3164
3212
  if (!operation.startsWith("package-") || !packages) return;
3165
3213
  for (const value of packages) {
package/dist/write.js CHANGED
@@ -117,12 +117,13 @@ function ensureInsideRoot(absPath, ctx) {
117
117
  function safeResolve(input, ctx) {
118
118
  return ensureInsideRoot(resolvePath(input, ctx), ctx);
119
119
  }
120
- async function assertRealInsideRoot(absPath, ctx) {
121
- if (ctx.allowOutsideProjectRoot) return;
120
+ async function resolveRealInsideRoot(absPath, ctx) {
121
+ if (ctx.allowOutsideProjectRoot) return absPath;
122
122
  const realRoots = await Promise.all(
123
123
  allowedRoots(ctx).map((r) => fsp.realpath(r).catch(() => path2.resolve(r)))
124
124
  );
125
125
  let probe = absPath;
126
+ const pendingTail = [];
126
127
  for (; ; ) {
127
128
  let real;
128
129
  try {
@@ -130,13 +131,16 @@ async function assertRealInsideRoot(absPath, ctx) {
130
131
  } catch (err) {
131
132
  if (err.code === "ENOENT") {
132
133
  const parent = path2.dirname(probe);
133
- if (parent === probe) return;
134
+ if (parent === probe) return absPath;
135
+ pendingTail.unshift(path2.basename(probe));
134
136
  probe = parent;
135
137
  continue;
136
138
  }
137
139
  throw err;
138
140
  }
139
- if (isInsideAny(real, realRoots)) return;
141
+ if (isInsideAny(real, realRoots)) {
142
+ return pendingTail.length > 0 ? path2.join(real, ...pendingTail) : real;
143
+ }
140
144
  throw new Error(
141
145
  `Path "${absPath}" resolves through a symlink outside project root "${realRoots[0]}"`
142
146
  );
@@ -144,8 +148,7 @@ async function assertRealInsideRoot(absPath, ctx) {
144
148
  }
145
149
  async function safeResolveReal(input, ctx) {
146
150
  const abs = safeResolve(input, ctx);
147
- await assertRealInsideRoot(abs, ctx);
148
- return abs;
151
+ return await resolveRealInsideRoot(abs, ctx);
149
152
  }
150
153
 
151
154
  // src/write.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrongstack/tools",
3
- "version": "0.297.0",
3
+ "version": "0.298.1",
4
4
  "license": "MIT",
5
5
  "description": "WrongStack built-in tools: read/write/edit, bash/exec, grep/glob, git, fetch, test, lint, and more.",
6
6
  "repository": {
@@ -242,18 +242,19 @@
242
242
  }
243
243
  },
244
244
  "files": [
245
- "dist"
245
+ "dist",
246
+ "!dist/**/*.map"
246
247
  ],
247
248
  "dependencies": {
248
- "@playwright/test": "^1.62.0",
249
+ "@playwright/test": "^1.62.1",
249
250
  "@typescript/typescript6": "^6.0.2",
250
251
  "turndown": "^7.2.4",
251
252
  "undici": "^8.9.0",
252
- "@wrongstack/kanban": "0.297.0",
253
- "@wrongstack/core": "0.297.0"
253
+ "@wrongstack/core": "0.298.1",
254
+ "@wrongstack/kanban": "0.298.1"
254
255
  },
255
256
  "devDependencies": {
256
- "@types/node": "^26.1.1",
257
+ "@types/node": "^26.1.2",
257
258
  "typescript": "^7.0.2"
258
259
  },
259
260
  "publishConfig": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"_concurrency.d.ts","sourceRoot":"","sources":["../src/_concurrency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAC3C,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC,CAAC,EAAE,CAAC,CAgBd"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_danger-detect.d.ts","sourceRoot":"","sources":["../src/_danger-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA2TD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3B,gBAAgB,CAqBlB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_edit-match.d.ts","sourceRoot":"","sources":["../src/_edit-match.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,qBAAqB,GAAG,uBAAuB,GAAG,OAAO,CAAC;AAE5F,MAAM,WAAW,WAAW;IAC1B,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC;AAED,uEAAuE;AACvE,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAMhD,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAKlF,CAAC;AAYF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CA+CzF;AA4HD,qEAAqE;AACrE,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAUvD;AAyBD,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAkBrC;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CA0B/C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_env.d.ts","sourceRoot":"","sources":["../src/_env.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_fetch-guard.d.ts","sourceRoot":"","sources":["../src/_fetch-guard.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,aAAa,SAAwD,CAAC;AAUnF,KAAK,cAAc,GAAG,CACpB,GAAG,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,EACjC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,EACzE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,KACxB,IAAI,CAAC;AAEV;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EACnE,QAAQ,EAAE,cAAc,GACvB,IAAI,CAsCN;AA6CD;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAG7B,GACA,OAAO,CAAC,QAAQ,CAAC,CAuDnB;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoDtE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_output-spool.d.ts","sourceRoot":"","sources":["../src/_output-spool.ts"],"names":[],"mappings":"AAmCA,2EAA2E;AAC3E,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,8EAA8E;AAC9E,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAwBD,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;OAGG;IACH,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAIjD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,wBAAwB,GAAG,WAAW,CA+E7E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_redact-command.d.ts","sourceRoot":"","sources":["../src/_redact-command.ts"],"names":[],"mappings":"AA4BA;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA6BjD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_regex.d.ts","sourceRoot":"","sources":["../src/_regex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAkBH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,WAAW,CA2B5F;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAAY,CAAC;AAEzC,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_session-shell.d.ts","sourceRoot":"","sources":["../src/_session-shell.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAM/E;AAED,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;CACpD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,GAAG,EAAE;IAAE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,EAC7C,IAAI,GAAE,uBAA4B,GACjC,SAAS,GAAG,SAAS,CAYvB;AAED,MAAM,WAAW,yBAAyB;IACxC,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IACpC,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC;IACvC,+EAA+E;IAC/E,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;CACpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,yBAA8B,GAAG,SAAS,GAAG,SAAS,CAa9F"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_shell-pick.d.ts","sourceRoot":"","sources":["../src/_shell-pick.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,YAAY,GAAG,MAAM,CAAC;AAEtD,wEAAwE;AACxE,eAAO,MAAM,aAAa,EAAE,SAAiB,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,uEAAuE;IACvE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,YAAY,GAChB,SAAS,CAgBX;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CA2D5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAuCpE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAU5D;AAyCD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,EAAE,CAKpD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAgDrF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_spawn-stream.d.ts","sourceRoot":"","sources":["../src/_spawn-stream.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAShE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,uFAAuF;IACvF,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED;;;;;;GAMG;AACH,wBAAuB,WAAW,CAChC,IAAI,EAAE,kBAAkB,GACvB,cAAc,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAyPtD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_syntax-check.d.ts","sourceRoot":"","sources":["../src/_syntax-check.ts"],"names":[],"mappings":"AAmCA,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;uEACmE;IACnE,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAUxC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_util.d.ts","sourceRoot":"","sources":["../src/_util.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjD;AACD,wDAAwD;AACxD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAErD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAe/E;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAE/D;AAmBD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAMtE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAE/D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BvF;AAED,iEAAiE;AACjE,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAIlF;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAQ7D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMnD;AAUD,qEAAqE;AACrE,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAK/C;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO5D;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAuB,GAAG,MAAM,CAgBjG;AAgCD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAYpE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAO,GAC3C,MAAM,CAQR"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_win32-resolve.d.ts","sourceRoot":"","sources":["../src/_win32-resolve.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAkCvD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgBrD;AAkBD,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,wBAAwB,EAAE,IAAI,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAWvE;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,SAAS,MAAM,EAAO,GAC3B,sBAAsB,CAQxB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAmB,MAAM,wBAAwB,CAAC;AAKpE,UAAU,UAAU;IAClB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7D,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;CAC1C;AAED,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,kBAAkB,EAAE,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CA+FnD,CAAC"}