mindweave 3.0.0 → 3.1.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.
Files changed (140) hide show
  1. package/README.md +36 -4
  2. package/dist/alternator/chassis/lsp.js +36 -4
  3. package/dist/alternator/chassis/lsp.js.map +1 -1
  4. package/dist/alternator/chassis/provision.js +54 -6
  5. package/dist/alternator/chassis/provision.js.map +1 -1
  6. package/dist/alternator/chassis/servers.js +34 -21
  7. package/dist/alternator/chassis/servers.js.map +1 -1
  8. package/dist/cli/App.js +6 -6
  9. package/dist/cli/App.js.map +1 -1
  10. package/dist/cli/attachments.js +37 -1
  11. package/dist/cli/attachments.js.map +1 -1
  12. package/dist/cli/bootstrap.js +25 -3
  13. package/dist/cli/bootstrap.js.map +1 -1
  14. package/dist/cli/components/FirstRunFrame.js +1 -1
  15. package/dist/cli/components/MarathonBox.js +2 -1
  16. package/dist/cli/components/MarathonBox.js.map +1 -1
  17. package/dist/cli/marathonUi.js +2 -0
  18. package/dist/cli/marathonUi.js.map +1 -1
  19. package/dist/cli/startupArgs.js +1 -1
  20. package/dist/core/permissions.js +26 -1
  21. package/dist/core/permissions.js.map +1 -1
  22. package/dist/core/spendView.js +8 -1
  23. package/dist/core/spendView.js.map +1 -1
  24. package/dist/core/turnRunner.js +28 -2
  25. package/dist/core/turnRunner.js.map +1 -1
  26. package/dist/drivers/deepseek/inlineTools.js +36 -2
  27. package/dist/drivers/deepseek/inlineTools.js.map +1 -1
  28. package/dist/drivers/ollama/endpoint.js +25 -0
  29. package/dist/drivers/ollama/endpoint.js.map +1 -1
  30. package/dist/dynamo/engine.js +408 -88
  31. package/dist/dynamo/engine.js.map +1 -1
  32. package/dist/dynamo/guard.js +11 -4
  33. package/dist/dynamo/guard.js.map +1 -1
  34. package/dist/dynamo/hooks.js +209 -0
  35. package/dist/dynamo/hooks.js.map +1 -0
  36. package/dist/dynamo/marathon.js +67 -10
  37. package/dist/dynamo/marathon.js.map +1 -1
  38. package/dist/dynamo/todoReminder.js +26 -0
  39. package/dist/dynamo/todoReminder.js.map +1 -0
  40. package/dist/governor/forbidden.js +19 -0
  41. package/dist/governor/forbidden.js.map +1 -1
  42. package/dist/governor/freshness.js +1 -1
  43. package/dist/governor/freshness.js.map +1 -1
  44. package/dist/governor/index.js +8 -1
  45. package/dist/governor/index.js.map +1 -1
  46. package/dist/governor/rules.js +1 -0
  47. package/dist/governor/rules.js.map +1 -1
  48. package/dist/governor/write.js +50 -2
  49. package/dist/governor/write.js.map +1 -1
  50. package/dist/mcp/config.js +0 -41
  51. package/dist/mcp/config.js.map +1 -1
  52. package/dist/mcp/projectApproval.js +117 -0
  53. package/dist/mcp/projectApproval.js.map +1 -0
  54. package/dist/mcp/resultStore.js +19 -5
  55. package/dist/mcp/resultStore.js.map +1 -1
  56. package/dist/mcp/transport/stdio.js +4 -1
  57. package/dist/mcp/transport/stdio.js.map +1 -1
  58. package/dist/memory/allMetas.js +1 -1
  59. package/dist/memory/allMetas.js.map +1 -1
  60. package/dist/memory/autoMemory.js +1 -0
  61. package/dist/memory/autoMemory.js.map +1 -1
  62. package/dist/memory/clearedArchive.js +120 -0
  63. package/dist/memory/clearedArchive.js.map +1 -0
  64. package/dist/memory/compaction.js +154 -14
  65. package/dist/memory/compaction.js.map +1 -1
  66. package/dist/memory/counters.js +64 -0
  67. package/dist/memory/counters.js.map +1 -0
  68. package/dist/memory/projectNotes.js +61 -13
  69. package/dist/memory/projectNotes.js.map +1 -1
  70. package/dist/memory/rewind.js +6 -2
  71. package/dist/memory/rewind.js.map +1 -1
  72. package/dist/memory/session.js +13 -5
  73. package/dist/memory/session.js.map +1 -1
  74. package/dist/memory/sessionMemory.js +6 -2
  75. package/dist/memory/sessionMemory.js.map +1 -1
  76. package/dist/memory/store.js +3 -0
  77. package/dist/memory/store.js.map +1 -1
  78. package/dist/memory/workingSet.js +0 -375
  79. package/dist/memory/workingSet.js.map +1 -1
  80. package/dist/project/context.js +54 -7
  81. package/dist/project/context.js.map +1 -1
  82. package/dist/tools/approval.js +19 -4
  83. package/dist/tools/approval.js.map +1 -1
  84. package/dist/tools/backgroundShells.js +8 -1
  85. package/dist/tools/backgroundShells.js.map +1 -1
  86. package/dist/tools/browser.js +2 -1
  87. package/dist/tools/browser.js.map +1 -1
  88. package/dist/tools/checkpoints.js +28 -4
  89. package/dist/tools/checkpoints.js.map +1 -1
  90. package/dist/tools/childEnv.js +50 -0
  91. package/dist/tools/childEnv.js.map +1 -0
  92. package/dist/tools/codeIntel.js +4 -1
  93. package/dist/tools/codeIntel.js.map +1 -1
  94. package/dist/tools/commandParse.js +238 -0
  95. package/dist/tools/commandParse.js.map +1 -0
  96. package/dist/tools/commandPolicy.js +283 -0
  97. package/dist/tools/commandPolicy.js.map +1 -0
  98. package/dist/tools/edit.js +2 -1
  99. package/dist/tools/edit.js.map +1 -1
  100. package/dist/tools/editRipple.js +18 -3
  101. package/dist/tools/editRipple.js.map +1 -1
  102. package/dist/tools/editTarget.js +11 -6
  103. package/dist/tools/editTarget.js.map +1 -1
  104. package/dist/tools/governorTools.js +61 -1
  105. package/dist/tools/governorTools.js.map +1 -1
  106. package/dist/tools/grep.js +13 -5
  107. package/dist/tools/grep.js.map +1 -1
  108. package/dist/tools/guard.js +249 -2
  109. package/dist/tools/guard.js.map +1 -1
  110. package/dist/tools/invisible.js +62 -0
  111. package/dist/tools/invisible.js.map +1 -0
  112. package/dist/tools/killTree.js +3 -0
  113. package/dist/tools/killTree.js.map +1 -1
  114. package/dist/tools/readFile.js +2 -2
  115. package/dist/tools/readFile.js.map +1 -1
  116. package/dist/tools/readSymbol.js +5 -24
  117. package/dist/tools/readSymbol.js.map +1 -1
  118. package/dist/tools/replaceSymbol.js +1 -1
  119. package/dist/tools/replaceSymbol.js.map +1 -1
  120. package/dist/tools/ripgrepShell.js +56 -0
  121. package/dist/tools/ripgrepShell.js.map +1 -0
  122. package/dist/tools/runCommand.js +74 -15
  123. package/dist/tools/runCommand.js.map +1 -1
  124. package/dist/tools/runsLater.js +50 -0
  125. package/dist/tools/runsLater.js.map +1 -0
  126. package/dist/tools/serverConsent.js +27 -0
  127. package/dist/tools/serverConsent.js.map +1 -0
  128. package/dist/tools/ui.js +27 -0
  129. package/dist/tools/ui.js.map +1 -1
  130. package/dist/tools/untrusted.js +22 -1
  131. package/dist/tools/untrusted.js.map +1 -1
  132. package/dist/tools/viewImage.js +2 -2
  133. package/dist/tools/viewImage.js.map +1 -1
  134. package/dist/tools/webFetch.js +76 -8
  135. package/dist/tools/webFetch.js.map +1 -1
  136. package/dist/tools/workspace.js +87 -24
  137. package/dist/tools/workspace.js.map +1 -1
  138. package/dist/tools/writeFile.js +9 -4
  139. package/dist/tools/writeFile.js.map +1 -1
  140. package/package.json +3 -3
@@ -0,0 +1,50 @@
1
+ /**
2
+ * childEnv.ts — the environment a program Mindweave starts should see.
3
+ *
4
+ * Mindweave loads its settings files (~/.mindweave/.env and a project's .env) into its
5
+ * own environment, because that is where every driver reads its API key. A child
6
+ * process inherits that environment, so every command the agent ran, every MCP server
7
+ * and every language server could read every provider key: `env` in a debugging step
8
+ * put them in the transcript, and any build script or injected instruction could send
9
+ * them anywhere. The user's own shell never exposed them; Mindweave did.
10
+ *
11
+ * So a child gets the environment the user's shell gave Mindweave, not the one
12
+ * Mindweave built on top of it:
13
+ *
14
+ * - a variable that was not there when Mindweave started is left out (everything
15
+ * loaded from the settings files, the stored-key slots, internal flags);
16
+ * - a provider key the user exported in their shell is passed with the value they
17
+ * exported, even when Mindweave is using a different key of theirs for itself;
18
+ * - anything else that was there passes through as it is now.
19
+ *
20
+ * The snapshot is taken when this module is first loaded, which is before the
21
+ * settings files are read (cli/bootstrap.ts imports it for that reason).
22
+ */
23
+ const IS_WINDOWS = process.platform === "win32";
24
+ /** Windows variable names are case-insensitive; compare them that way. */
25
+ const norm = (name) => (IS_WINDOWS ? name.toUpperCase() : name);
26
+ /** The environment Mindweave started with, by normalised name. */
27
+ const shell = new Map(Object.entries(process.env).flatMap(([k, v]) => (v === undefined ? [] : [[norm(k), v]])));
28
+ /** A provider key variable, or one of the numbered slots keys are stored in. */
29
+ const PROVIDER_KEY = /_API_KEY(_\d+)?$/i;
30
+ /**
31
+ * The environment for a child process: the user's shell environment as it is now,
32
+ * without anything Mindweave added, plus `extra` (which the caller decides and wins).
33
+ */
34
+ export function childEnv(extra = {}) {
35
+ const out = {};
36
+ for (const [name, value] of Object.entries(process.env)) {
37
+ if (value === undefined)
38
+ continue;
39
+ const original = shell.get(norm(name));
40
+ if (original === undefined)
41
+ continue;
42
+ out[name] = PROVIDER_KEY.test(name) ? original : value;
43
+ }
44
+ return { ...out, ...extra };
45
+ }
46
+ /** True when `name` was set by Mindweave rather than inherited from the shell (for tests and diagnostics). */
47
+ export function addedByMindweave(name) {
48
+ return process.env[name] !== undefined && !shell.has(norm(name));
49
+ }
50
+ //# sourceMappingURL=childEnv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"childEnv.js","sourceRoot":"","sources":["../../src/tools/childEnv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AAEhD,0EAA0E;AAC1E,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAExE,kEAAkE;AAClE,MAAM,KAAK,GAAG,IAAI,GAAG,CACnB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAqB,CAAC,CAAC,CAAC,CAC7G,CAAC;AAEF,gFAAgF;AAChF,MAAM,YAAY,GAAG,mBAAmB,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,QAAgC,EAAE;IACzD,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,IAAI,QAAQ,KAAK,SAAS;YAAE,SAAS;QACrC,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IACzD,CAAC;IACD,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;AAC9B,CAAC;AAED,8GAA8G;AAC9G,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,CAAC"}
@@ -12,7 +12,7 @@ import { promises as fs } from "node:fs";
12
12
  import { relativize, resolvePath } from "./paths.js";
13
13
  import { allChassis, chassisForPath, mergedDefinition, mergedReferences } from "./chassisMux.js";
14
14
  import { walkFiles } from "./walk.js";
15
- import { excludedFromSearch } from "./guard.js";
15
+ import { excludedFromSearch, guardedPathReason } from "./guard.js";
16
16
  import { isSupported } from "../alternator/chassis/treesitter.js";
17
17
  import { isMarkupSupported } from "../alternator/chassis/markup.js";
18
18
  import { fail, failQuietly } from "./results.js";
@@ -57,6 +57,9 @@ const outlineDef = {
57
57
  return degraded();
58
58
  const rawPath = typeof args.path === "string" && args.path.trim() ? args.path.trim() : ".";
59
59
  const abs = resolvePath(ctx, rawPath);
60
+ const blocked = await guardedPathReason(abs);
61
+ if (blocked)
62
+ return fail(`Refusing to outline ${rawPath}: it is ${blocked}.`);
60
63
  let stat;
61
64
  try {
62
65
  stat = await fs.stat(abs);
@@ -1 +1 @@
1
- {"version":3,"file":"codeIntel.js","sourceRoot":"","sources":["../../src/tools/codeIntel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codeIntel.js","sourceRoot":"","sources":["../../src/tools/codeIntel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,238 @@
1
+ /**
2
+ * commandParse.ts — read a shell command into the commands it contains (pure).
3
+ *
4
+ * The command guard used to be regular expressions over the raw text, which cannot tell
5
+ * `cat .env` from `echo ".env"`, misses the second command in `a; b`, and has no idea
6
+ * what a command names as its arguments. This reads the text the way a shell would, far
7
+ * enough to answer three questions: which commands run, what words each was given, and
8
+ * whether it writes a file.
9
+ *
10
+ * It is NOT a shell. It does not expand variables, run substitutions or follow
11
+ * redirections into anything clever; whatever it cannot read with certainty it says so
12
+ * (`unreadable`), and every caller treats that as "ask", never as "allow". That one rule
13
+ * is what lets this stay small: a construct it does not model is not a hole, it is a
14
+ * question for the person.
15
+ *
16
+ * Three dialects, because Windows runs PowerShell or cmd and everything else runs a
17
+ * POSIX shell: they differ in what is an escape (backslash in POSIX, backtick in
18
+ * PowerShell, a caret in cmd) and a backslash in a Windows path is not an escape at all.
19
+ */
20
+ const NULL_TARGETS = new Set(["/dev/null", "$null", "nul", "NUL", "Nul"]);
21
+ /** Split `command` into simple commands. Never throws. */
22
+ export function parseCommand(command, dialect = process.platform === "win32" ? "powershell" : "posix") {
23
+ const commands = [];
24
+ let unreadable = null;
25
+ const fail = (why) => {
26
+ unreadable ??= why;
27
+ };
28
+ let words = [];
29
+ let writes = [];
30
+ let reads = [];
31
+ let expands = false;
32
+ let cur = "";
33
+ let inWord = false;
34
+ /** A redirect operator waiting for its target word. */
35
+ let pending = null;
36
+ const endWord = () => {
37
+ if (!inWord)
38
+ return;
39
+ inWord = false;
40
+ const word = cur;
41
+ cur = "";
42
+ if (pending) {
43
+ if (pending === ">" && !NULL_TARGETS.has(word))
44
+ writes.push(word);
45
+ if (pending === "<")
46
+ reads.push(word);
47
+ pending = null;
48
+ }
49
+ else
50
+ words.push(word);
51
+ };
52
+ const endCommand = () => {
53
+ endWord();
54
+ pending = null;
55
+ if (words.length > 0 || writes.length > 0 || reads.length > 0)
56
+ commands.push({ words, writes, reads, expands });
57
+ words = [];
58
+ writes = [];
59
+ reads = [];
60
+ expands = false;
61
+ };
62
+ const n = command.length;
63
+ for (let i = 0; i < n; i++) {
64
+ const c = command[i];
65
+ const next = command[i + 1];
66
+ // ── quotes ──
67
+ if (c === "'") {
68
+ inWord = true;
69
+ let end = command.indexOf("'", i + 1);
70
+ // In PowerShell a doubled quote inside single quotes is one literal quote: 'it''s'.
71
+ while (dialect === "powershell" && end >= 0 && command[end + 1] === "'") {
72
+ cur += command.slice(i + 1, end) + "'";
73
+ i = end + 1;
74
+ end = command.indexOf("'", i + 1);
75
+ }
76
+ if (end < 0) {
77
+ fail("an unclosed quote");
78
+ cur += command.slice(i + 1);
79
+ break;
80
+ }
81
+ cur += command.slice(i + 1, end);
82
+ i = end;
83
+ continue;
84
+ }
85
+ if (c === '"') {
86
+ inWord = true;
87
+ let j = i + 1;
88
+ for (; j < n && command[j] !== '"'; j++) {
89
+ const d = command[j];
90
+ if (d === "$") {
91
+ expands = true;
92
+ if (command[j + 1] === "(")
93
+ fail("a command substitution inside quotes");
94
+ }
95
+ if (d === "`" && dialect !== "cmd")
96
+ fail("a backtick inside quotes");
97
+ // An escaped character inside double quotes.
98
+ if ((dialect === "posix" && d === "\\" && j + 1 < n) || (dialect === "powershell" && d === "`" && j + 1 < n)) {
99
+ cur += command[j + 1];
100
+ j++;
101
+ continue;
102
+ }
103
+ cur += d;
104
+ }
105
+ if (j >= n)
106
+ fail("an unclosed quote");
107
+ i = j;
108
+ continue;
109
+ }
110
+ // ── escapes ──
111
+ if (dialect === "posix" && c === "\\") {
112
+ if (next === "\n") {
113
+ i++;
114
+ continue; // a line continuation
115
+ }
116
+ inWord = true;
117
+ if (next !== undefined)
118
+ cur += next;
119
+ i++;
120
+ continue;
121
+ }
122
+ if (dialect === "powershell" && c === "`") {
123
+ fail("a backtick");
124
+ inWord = true;
125
+ continue;
126
+ }
127
+ if (dialect === "cmd" && c === "^") {
128
+ fail("a caret escape");
129
+ inWord = true;
130
+ continue;
131
+ }
132
+ // ── separators ──
133
+ if (c === "\n" || c === "\r" || c === ";") {
134
+ endCommand();
135
+ continue;
136
+ }
137
+ if (c === "&") {
138
+ if (next === "&")
139
+ i++;
140
+ else if (next === ">")
141
+ fail("a combined redirect");
142
+ else if (words.length === 0 && !inWord)
143
+ fail("the call operator");
144
+ endCommand();
145
+ continue;
146
+ }
147
+ if (c === "|") {
148
+ if (next === "|" || next === "&")
149
+ i++;
150
+ endCommand();
151
+ continue;
152
+ }
153
+ // ── redirects ──
154
+ if (c === ">" || c === "<") {
155
+ // A file-descriptor duplicate (2>&1, >&2) writes to no file.
156
+ if (c === ">" && next === "&") {
157
+ i++;
158
+ while (command[i + 1] !== undefined && /[0-9-]/.test(command[i + 1]))
159
+ i++;
160
+ // The number before it was read as a word; it is not an argument.
161
+ if (inWord && /^[0-9]$/.test(cur)) {
162
+ cur = "";
163
+ inWord = false;
164
+ }
165
+ continue;
166
+ }
167
+ if (c === "<" && (next === "<" || next === "(")) {
168
+ fail(next === "<" ? "a here-document" : "a process substitution");
169
+ endCommand();
170
+ continue;
171
+ }
172
+ // `2>` and `1>`: the digit is the stream, not a word.
173
+ if (inWord && /^[0-9]$/.test(cur)) {
174
+ cur = "";
175
+ inWord = false;
176
+ }
177
+ else
178
+ endWord();
179
+ if (c === ">" && next === ">")
180
+ i++;
181
+ if (c === ">" && next === "(")
182
+ fail("a process substitution");
183
+ pending = c;
184
+ continue;
185
+ }
186
+ // ── whitespace ──
187
+ if (c === " " || c === "\t") {
188
+ endWord();
189
+ continue;
190
+ }
191
+ // ── things this reader does not model ──
192
+ if (c === "$") {
193
+ if (next === "(")
194
+ fail("a command substitution");
195
+ expands = true;
196
+ }
197
+ if (c === "`" && dialect === "posix")
198
+ fail("a command substitution");
199
+ if (c === "{" || c === "}") {
200
+ // A script block, a brace expansion or a group. `{}` alone is find's placeholder.
201
+ if (!(c === "{" && next === "}") && !(c === "}" && command[i - 1] === "{"))
202
+ fail("a block or brace expansion");
203
+ }
204
+ if (c === "(" || c === ")")
205
+ fail("a group or expression");
206
+ if (c === "@" && (next === "'" || next === '"') && !inWord)
207
+ fail("a here-string");
208
+ if (c === "%" && dialect !== "cmd" && !inWord && next === "{")
209
+ fail("a script block");
210
+ inWord = true;
211
+ cur += c;
212
+ }
213
+ endCommand();
214
+ // What a command may start with that changes what runs.
215
+ for (const cmd of commands) {
216
+ const first = cmd.words[0];
217
+ if (first === undefined)
218
+ continue;
219
+ if (/^[A-Za-z_][A-Za-z0-9_]*=/.test(first))
220
+ fail("an environment variable set before the command");
221
+ if (first.startsWith("$"))
222
+ fail("a variable used as the command");
223
+ if (/^(eval|exec|source|\.|iex|invoke-expression|invoke-command|icm|start-process|saps|start|call)$/i.test(first)) {
224
+ fail(`${first}, which runs other text as code`);
225
+ }
226
+ if (cmd.words.some((w) => /^-e(nc(odedcommand)?)?$/i.test(w) || /^-command$/i.test(w) || /^-c$/.test(w) && /^(bash|sh|zsh|dash)$/.test(first))) {
227
+ fail("a program told to run a string as code");
228
+ }
229
+ }
230
+ return { commands, unreadable };
231
+ }
232
+ /** The program or cmdlet a command runs, lower-cased, without a directory or a .exe. */
233
+ export function verbOf(cmd) {
234
+ const first = cmd.words[0] ?? "";
235
+ const base = first.split(/[\\/]/).pop() ?? first;
236
+ return base.replace(/\.(exe|cmd|bat|com|ps1)$/i, "").toLowerCase();
237
+ }
238
+ //# sourceMappingURL=commandParse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandParse.js","sourceRoot":"","sources":["../../src/tools/commandParse.ts"],"names":[],"mappings":"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"}