skyloom 1.14.5 → 1.14.8

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 (57) hide show
  1. package/.github/workflows/publish.yml +27 -0
  2. package/README.md +523 -220
  3. package/dist/cli/loom.d.ts +2 -0
  4. package/dist/cli/loom.d.ts.map +1 -1
  5. package/dist/cli/loom.js +76 -7
  6. package/dist/cli/loom.js.map +1 -1
  7. package/dist/cli/main.js +12 -3
  8. package/dist/cli/main.js.map +1 -1
  9. package/dist/core/agent/guard.js +4 -4
  10. package/dist/core/agent/guard.js.map +1 -1
  11. package/dist/core/agent.d.ts.map +1 -1
  12. package/dist/core/agent.js +12 -9
  13. package/dist/core/agent.js.map +1 -1
  14. package/dist/core/agent_helpers.d.ts +2 -2
  15. package/dist/core/agent_helpers.d.ts.map +1 -1
  16. package/dist/core/agent_helpers.js +7 -4
  17. package/dist/core/agent_helpers.js.map +1 -1
  18. package/dist/core/config.d.ts.map +1 -1
  19. package/dist/core/config.js +8 -2
  20. package/dist/core/config.js.map +1 -1
  21. package/dist/core/memory.d.ts.map +1 -1
  22. package/dist/core/memory.js +12 -2
  23. package/dist/core/memory.js.map +1 -1
  24. package/dist/core/model_config.d.ts.map +1 -1
  25. package/dist/core/model_config.js +7 -2
  26. package/dist/core/model_config.js.map +1 -1
  27. package/dist/plugins/loader.d.ts +7 -0
  28. package/dist/plugins/loader.d.ts.map +1 -1
  29. package/dist/plugins/loader.js +27 -0
  30. package/dist/plugins/loader.js.map +1 -1
  31. package/dist/tools/builtin.d.ts +6 -0
  32. package/dist/tools/builtin.d.ts.map +1 -1
  33. package/dist/tools/builtin.js +332 -41
  34. package/dist/tools/builtin.js.map +1 -1
  35. package/dist/tools/computer.d.ts.map +1 -1
  36. package/dist/tools/computer.js +18 -7
  37. package/dist/tools/computer.js.map +1 -1
  38. package/dist/web/server.d.ts.map +1 -1
  39. package/dist/web/server.js +35 -2
  40. package/dist/web/server.js.map +1 -1
  41. package/package.json +68 -68
  42. package/src/cli/loom.ts +66 -7
  43. package/src/cli/main.ts +6 -3
  44. package/src/core/agent/guard.ts +4 -4
  45. package/src/core/agent.ts +12 -8
  46. package/src/core/agent_helpers.ts +7 -4
  47. package/src/core/config.ts +5 -2
  48. package/src/core/memory.ts +9 -2
  49. package/src/core/model_config.ts +4 -2
  50. package/src/plugins/loader.ts +91 -66
  51. package/src/tools/builtin.ts +288 -36
  52. package/src/tools/computer.ts +279 -269
  53. package/src/web/server.ts +35 -2
  54. package/tests/fence_plugin.test.ts +52 -0
  55. package/tests/loom.test.ts +89 -0
  56. package/tests/ssrf.test.ts +38 -0
  57. package/tsconfig.json +1 -0
@@ -36,13 +36,253 @@ var __importStar = (this && this.__importStar) || (function () {
36
36
  };
37
37
  })();
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.isPrivateIp = isPrivateIp;
40
+ exports.assertFetchAllowed = assertFetchAllowed;
41
+ exports.fenceRoot = fenceRoot;
42
+ exports.fenceCheck = fenceCheck;
39
43
  exports.registerBuiltinTools = registerBuiltinTools;
40
44
  exports.closeHttpClient = closeHttpClient;
41
45
  const fs = __importStar(require("fs"));
46
+ const os = __importStar(require("os"));
42
47
  const path = __importStar(require("path"));
48
+ const promises_1 = require("dns/promises");
43
49
  const logger_1 = require("../core/logger");
44
50
  const computer_1 = require("./computer");
45
51
  const log = (0, logger_1.getLogger)('builtin-tools');
52
+ /* ── SSRF guard for outbound fetches ──────────────────────────────────────
53
+ http_get is auto-approved (DangerLevel.LOW), so without this an agent or
54
+ prompt-injected content could pivot to internal services / cloud metadata
55
+ (169.254.169.254). We block private, loopback and link-local targets — both
56
+ when the URL is an IP literal and after DNS resolution. Operators who need to
57
+ reach internal hosts set SKYLOOM_ALLOW_PRIVATE_FETCH=1.
58
+ ────────────────────────────────────────────────────────────────────────── */
59
+ function isPrivateIPv4(ip) {
60
+ const p = ip.split('.').map(Number);
61
+ if (p.length !== 4 || p.some((n) => Number.isNaN(n) || n < 0 || n > 255))
62
+ return false;
63
+ const [a, b] = p;
64
+ if (a === 0 || a === 127)
65
+ return true; // this-host / loopback
66
+ if (a === 10)
67
+ return true; // private
68
+ if (a === 172 && b >= 16 && b <= 31)
69
+ return true; // private
70
+ if (a === 192 && b === 168)
71
+ return true; // private
72
+ if (a === 169 && b === 254)
73
+ return true; // link-local + cloud metadata
74
+ if (a === 100 && b >= 64 && b <= 127)
75
+ return true; // CGNAT
76
+ return false;
77
+ }
78
+ function isPrivateIp(ip) {
79
+ const v = ip.toLowerCase();
80
+ if (v === '::1' || v === '::')
81
+ return true;
82
+ if (v.startsWith('::ffff:')) { // IPv4-mapped IPv6
83
+ const mapped = v.slice(7);
84
+ if (mapped.includes('.'))
85
+ return isPrivateIPv4(mapped);
86
+ }
87
+ if (/^f[cd]/.test(v))
88
+ return true; // fc00::/7 unique-local
89
+ if (/^fe[89ab]/.test(v))
90
+ return true; // fe80::/10 link-local
91
+ if (v.includes('.') && !v.includes(':'))
92
+ return isPrivateIPv4(v);
93
+ return false;
94
+ }
95
+ async function assertFetchAllowed(rawUrl) {
96
+ let u;
97
+ try {
98
+ u = new URL(rawUrl);
99
+ }
100
+ catch {
101
+ throw new Error(`invalid URL: ${rawUrl}`);
102
+ }
103
+ if (u.protocol !== 'http:' && u.protocol !== 'https:') {
104
+ throw new Error(`blocked URL scheme '${u.protocol}' — only http/https are allowed`);
105
+ }
106
+ if (process.env.SKYLOOM_ALLOW_PRIVATE_FETCH === '1')
107
+ return;
108
+ const host = u.hostname.replace(/^\[|\]$/g, ''); // strip IPv6 brackets
109
+ if (isPrivateIp(host)) {
110
+ throw new Error(`blocked request to private/loopback address ${host} (set SKYLOOM_ALLOW_PRIVATE_FETCH=1 to allow)`);
111
+ }
112
+ let addrs = [];
113
+ try {
114
+ addrs = await (0, promises_1.lookup)(host, { all: true });
115
+ }
116
+ catch {
117
+ return; /* let fetch surface DNS errors */
118
+ }
119
+ for (const a of addrs) {
120
+ if (isPrivateIp(a.address)) {
121
+ throw new Error(`blocked request: ${host} resolves to private address ${a.address} (set SKYLOOM_ALLOW_PRIVATE_FETCH=1 to allow)`);
122
+ }
123
+ }
124
+ }
125
+ /* ── Optional workspace fence for file tools ──────────────────────────────
126
+ Off by default (the agent is a Claude-Code-style assistant that legitimately
127
+ works across a repo). Set SKYLOOM_WORKSPACE_FENCE=1 to confine read/write/
128
+ edit/delete/list/search to a root directory (SKYLOOM_WORKSPACE_ROOT, or the
129
+ process cwd), blocking traversal to ~/.ssh, /etc, etc.
130
+ ────────────────────────────────────────────────────────────────────────── */
131
+ function fenceRoot() {
132
+ if (process.env.SKYLOOM_WORKSPACE_FENCE !== '1')
133
+ return null;
134
+ const raw = process.env.SKYLOOM_WORKSPACE_ROOT;
135
+ return raw ? path.resolve(raw.replace(/^~(?=$|\/|\\)/, os.homedir())) : process.cwd();
136
+ }
137
+ /** Returns an error string if `resolvedPath` is outside the fence, else null. */
138
+ function fenceCheck(resolvedPath) {
139
+ const root = fenceRoot();
140
+ if (!root)
141
+ return null;
142
+ const rel = path.relative(root, resolvedPath);
143
+ if (rel === '' || (!rel.startsWith('..') && !path.isAbsolute(rel)))
144
+ return null;
145
+ return `Error: 路径越界 — 工作区围栏已启用 (SKYLOOM_WORKSPACE_FENCE=1),'${resolvedPath}' 在根目录 '${root}' 之外。`;
146
+ }
147
+ const SEARCH_UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36';
148
+ async function fetchHtml(url, timeoutMs = 12000) {
149
+ const controller = new AbortController();
150
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
151
+ try {
152
+ const res = await fetch(url, {
153
+ headers: {
154
+ 'User-Agent': SEARCH_UA,
155
+ 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
156
+ 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
157
+ },
158
+ signal: controller.signal,
159
+ });
160
+ if (!res.ok)
161
+ throw new Error(`HTTP ${res.status}`);
162
+ return await res.text();
163
+ }
164
+ finally {
165
+ clearTimeout(timer);
166
+ }
167
+ }
168
+ function decodeHtmlEntities(s) {
169
+ return s
170
+ .replace(/&amp;/g, '&').replace(/&lt;/g, '<').replace(/&gt;/g, '>')
171
+ .replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/&nbsp;/g, ' ')
172
+ .replace(/&#(\d+);/g, (_, n) => String.fromCharCode(parseInt(n, 10)))
173
+ .replace(/&#x([0-9a-f]+);/gi, (_, n) => String.fromCharCode(parseInt(n, 16)));
174
+ }
175
+ function stripTags(s) {
176
+ return decodeHtmlEntities(s.replace(/<[^>]+>/g, '')).replace(/\s+/g, ' ').trim();
177
+ }
178
+ function unwrapDdgRedirect(href) {
179
+ // DuckDuckGo HTML wraps results in /l/?uddg=<encoded-url>
180
+ const m = href.match(/[?&]uddg=([^&]+)/);
181
+ if (m) {
182
+ try {
183
+ return decodeURIComponent(m[1]);
184
+ }
185
+ catch { /* fall through */ }
186
+ }
187
+ if (href.startsWith('//'))
188
+ return 'https:' + href;
189
+ return href;
190
+ }
191
+ function unwrapBaiduRedirect(href) {
192
+ // Baidu uses opaque /link?url=... redirects; we can't resolve without another request.
193
+ // Return as-is; consumer can still click through.
194
+ return href;
195
+ }
196
+ async function searchDuckDuckGo(query, max) {
197
+ const html = await fetchHtml(`https://html.duckduckgo.com/html/?q=${encodeURIComponent(query)}`);
198
+ const results = [];
199
+ const re = /<a[^>]+class="[^"]*result__a[^"]*"[^>]+href="([^"]+)"[^>]*>([\s\S]*?)<\/a>[\s\S]*?<a[^>]+class="[^"]*result__snippet[^"]*"[^>]*>([\s\S]*?)<\/a>/gi;
200
+ let m;
201
+ while ((m = re.exec(html)) && results.length < max) {
202
+ results.push({ url: unwrapDdgRedirect(m[1]), title: stripTags(m[2]), snippet: stripTags(m[3]) });
203
+ }
204
+ return results;
205
+ }
206
+ async function searchBing(query, max) {
207
+ const html = await fetchHtml(`https://www.bing.com/search?q=${encodeURIComponent(query)}&setlang=zh-cn`);
208
+ const results = [];
209
+ const liRe = /<li class="b_algo"[\s\S]*?<\/li>/gi;
210
+ const items = html.match(liRe) || [];
211
+ for (const item of items) {
212
+ if (results.length >= max)
213
+ break;
214
+ const a = item.match(/<h2[^>]*>\s*<a[^>]+href="([^"]+)"[^>]*>([\s\S]*?)<\/a>/i);
215
+ if (!a)
216
+ continue;
217
+ const snipMatch = item.match(/<p class="b_lineclamp[^"]*"[^>]*>([\s\S]*?)<\/p>/i) ||
218
+ item.match(/<div class="b_caption"[\s\S]*?<p[^>]*>([\s\S]*?)<\/p>/i) ||
219
+ item.match(/<p[^>]*>([\s\S]*?)<\/p>/i);
220
+ results.push({ url: a[1], title: stripTags(a[2]), snippet: snipMatch ? stripTags(snipMatch[1]) : '' });
221
+ }
222
+ return results;
223
+ }
224
+ async function searchBaidu(query, max) {
225
+ const html = await fetchHtml(`https://www.baidu.com/s?wd=${encodeURIComponent(query)}`);
226
+ const results = [];
227
+ // Baidu nests divs aggressively; anchor on <h3> ... <a href>...</a> and look
228
+ // for the nearest abstract block following.
229
+ const re = /<h3[^>]*>[\s\S]{0,500}?<a[^>]+href="([^"]+)"[^>]*>([\s\S]*?)<\/a>/gi;
230
+ let m;
231
+ while ((m = re.exec(html)) && results.length < max) {
232
+ const url = unwrapBaiduRedirect(m[1]);
233
+ const title = stripTags(m[2]);
234
+ if (!title || !/^https?:\/\//.test(url))
235
+ continue;
236
+ const after = html.slice(re.lastIndex, re.lastIndex + 4000);
237
+ const snipMatch = after.match(/<span class="content-right[^"]*"[^>]*>([\s\S]*?)<\/span>/i) ||
238
+ after.match(/<div class="c-abstract[^"]*"[^>]*>([\s\S]*?)<\/div>/i) ||
239
+ after.match(/<span[^>]*content[^"]*"[^>]*>([\s\S]{20,400}?)<\/span>/i) ||
240
+ after.match(/<p[^>]*>([\s\S]{20,400}?)<\/p>/i);
241
+ results.push({ url, title, snippet: snipMatch ? stripTags(snipMatch[1]) : '' });
242
+ }
243
+ return results;
244
+ }
245
+ async function searchSogou(query, max) {
246
+ const html = await fetchHtml(`https://www.sogou.com/web?query=${encodeURIComponent(query)}`);
247
+ const results = [];
248
+ const divRe = /<div[^>]+class="vrwrap"[\s\S]*?(?=<div[^>]+class="vrwrap"|$)/gi;
249
+ const items = html.match(divRe) || [];
250
+ for (const item of items) {
251
+ if (results.length >= max)
252
+ break;
253
+ const a = item.match(/<h3[^>]*>[\s\S]*?<a[^>]+href="([^"]+)"[^>]*>([\s\S]*?)<\/a>/i);
254
+ if (!a)
255
+ continue;
256
+ let url = a[1];
257
+ if (url.startsWith('/link?'))
258
+ url = 'https://www.sogou.com' + url;
259
+ const snipMatch = item.match(/<div[^>]+class="(?:str_info|fz-mid|space-txt)[^"]*"[^>]*>([\s\S]*?)<\/div>/i) ||
260
+ item.match(/<p[^>]*>([\s\S]{20,400}?)<\/p>/i);
261
+ results.push({ url, title: stripTags(a[2]), snippet: snipMatch ? stripTags(snipMatch[1]) : '' });
262
+ }
263
+ return results;
264
+ }
265
+ async function runSearchEngine(engine, query, max) {
266
+ let results;
267
+ switch (engine) {
268
+ case 'duckduckgo':
269
+ case 'ddg':
270
+ results = await searchDuckDuckGo(query, max);
271
+ break;
272
+ case 'bing':
273
+ results = await searchBing(query, max);
274
+ break;
275
+ case 'baidu':
276
+ results = await searchBaidu(query, max);
277
+ break;
278
+ case 'sogou':
279
+ results = await searchSogou(query, max);
280
+ break;
281
+ default: throw new Error(`unknown search engine: ${engine}`);
282
+ }
283
+ // Drop placeholder/JS-anchor entries from inline answer cards.
284
+ return results.filter((r) => r.title && /^https?:\/\//i.test(r.url));
285
+ }
46
286
  /**
47
287
  * Register all built-in tools into the given registry.
48
288
  */
@@ -60,6 +300,9 @@ function registerBuiltinTools(registry) {
60
300
  ],
61
301
  handler: async (params) => {
62
302
  const filePath = path.resolve(params.path);
303
+ const fenced = fenceCheck(filePath);
304
+ if (fenced)
305
+ return fenced;
63
306
  if (!fs.existsSync(filePath))
64
307
  return `Error: File not found: ${filePath}`;
65
308
  try {
@@ -88,6 +331,9 @@ function registerBuiltinTools(registry) {
88
331
  ],
89
332
  handler: async (params) => {
90
333
  const filePath = path.resolve(params.path);
334
+ const fenced = fenceCheck(filePath);
335
+ if (fenced)
336
+ return fenced;
91
337
  try {
92
338
  fs.mkdirSync(path.dirname(filePath), { recursive: true });
93
339
  fs.writeFileSync(filePath, params.content, 'utf-8');
@@ -108,6 +354,9 @@ function registerBuiltinTools(registry) {
108
354
  ],
109
355
  handler: async (params) => {
110
356
  const filePath = path.resolve(params.path);
357
+ const fenced = fenceCheck(filePath);
358
+ if (fenced)
359
+ return fenced;
111
360
  if (!fs.existsSync(filePath))
112
361
  return `Error: File not found: ${filePath}`;
113
362
  try {
@@ -134,6 +383,9 @@ function registerBuiltinTools(registry) {
134
383
  ],
135
384
  handler: async (params) => {
136
385
  const filePath = path.resolve(params.path);
386
+ const fenced = fenceCheck(filePath);
387
+ if (fenced)
388
+ return fenced;
137
389
  if (!fs.existsSync(filePath))
138
390
  return `Error: File not found: ${filePath}`;
139
391
  try {
@@ -153,6 +405,9 @@ function registerBuiltinTools(registry) {
153
405
  ],
154
406
  handler: async (params) => {
155
407
  const dirPath = path.resolve(params.path);
408
+ const fenced = fenceCheck(dirPath);
409
+ if (fenced)
410
+ return fenced;
156
411
  if (!fs.existsSync(dirPath))
157
412
  return `Error: Directory not found: ${dirPath}`;
158
413
  try {
@@ -176,6 +431,9 @@ function registerBuiltinTools(registry) {
176
431
  ],
177
432
  handler: async (params) => {
178
433
  const dir = params.directory ? path.resolve(params.directory) : process.cwd();
434
+ const fenced = fenceCheck(dir);
435
+ if (fenced)
436
+ return fenced;
179
437
  const pattern = params.pattern;
180
438
  try {
181
439
  const { globSync } = require('glob');
@@ -220,12 +478,13 @@ function registerBuiltinTools(registry) {
220
478
  ],
221
479
  handler: async (params) => {
222
480
  try {
481
+ await assertFetchAllowed(params.url);
223
482
  const response = await fetch(params.url);
224
483
  const text = await response.text();
225
484
  return `Status: ${response.status}\n\n${text.slice(0, 10000)}${text.length > 10000 ? '\n...[truncated]' : ''}`;
226
485
  }
227
486
  catch (e) {
228
- return `Error fetching URL: ${e}`;
487
+ return `Error fetching URL: ${e instanceof Error ? e.message : e}`;
229
488
  }
230
489
  },
231
490
  });
@@ -244,37 +503,46 @@ function registerBuiltinTools(registry) {
244
503
  // ── Search Tool ──
245
504
  registry.register({
246
505
  name: 'web_search',
247
- description: 'Search the web for information. Returns search results with titles and snippets.',
506
+ description: 'Search the web for information. Returns search results with titles, URLs and snippets.',
248
507
  parameters: [
249
508
  { name: 'query', type: 'string', description: 'Search query', required: true },
509
+ { name: 'engine', type: 'string', description: 'Optional engine: duckduckgo|bing|baidu|sogou. Default: auto (tries each until one returns results)', required: false },
510
+ { name: 'max_results', type: 'number', description: 'Max results to return (default 8, capped at 20)', required: false },
250
511
  ],
251
512
  handler: async (params) => {
252
- // Simplified web search using a basic approach
253
- try {
254
- const query = encodeURIComponent(params.query);
255
- const url = `https://api.duckduckgo.com/?q=${query}&format=json`;
256
- const response = await fetch(url);
257
- const data = await response.json();
258
- const results = [];
259
- if (data.AbstractText)
260
- results.push(`Abstract: ${data.AbstractText}`);
261
- if (data.RelatedTopics) {
262
- for (const topic of data.RelatedTopics.slice(0, 10)) {
263
- if (topic.Text)
264
- results.push(`- ${topic.Text}`);
265
- else if (topic.Topics) {
266
- for (const sub of topic.Topics.slice(0, 5)) {
267
- if (sub.Text)
268
- results.push(`- ${sub.Text}`);
269
- }
270
- }
513
+ const query = String(params.query || '').trim();
514
+ if (!query)
515
+ return 'Error: query is required';
516
+ const max = Math.max(1, Math.min(20, Math.floor(Number(params.max_results) || 8)));
517
+ const explicit = String(params.engine || '').trim().toLowerCase();
518
+ const envEngine = String(process.env.SKYLOOM_SEARCH_ENGINE || '').trim().toLowerCase();
519
+ const order = explicit
520
+ ? [explicit]
521
+ : envEngine
522
+ ? [envEngine, 'duckduckgo', 'bing', 'baidu', 'sogou']
523
+ : ['duckduckgo', 'bing', 'baidu', 'sogou'];
524
+ const seen = new Set();
525
+ const tried = [];
526
+ for (const eng of order) {
527
+ if (seen.has(eng))
528
+ continue;
529
+ seen.add(eng);
530
+ tried.push(eng);
531
+ try {
532
+ const results = await runSearchEngine(eng, query, max);
533
+ if (results && results.length > 0) {
534
+ const head = `Search results (${eng}, ${results.length}):`;
535
+ const body = results
536
+ .map((r, i) => `${i + 1}. ${r.title}\n ${r.url}${r.snippet ? `\n ${r.snippet}` : ''}`)
537
+ .join('\n');
538
+ return `${head}\n${body}`;
271
539
  }
272
540
  }
273
- return results.length > 0 ? results.join('\n') : 'No search results found.';
274
- }
275
- catch (e) {
276
- return `Search error: ${e}`;
541
+ catch (e) {
542
+ log.warn('web_search_engine_failed', { engine: eng, error: String(e?.message || e) });
543
+ }
277
544
  }
545
+ return `No search results found (tried: ${tried.join(', ')}). Set SKYLOOM_SEARCH_ENGINE to pin an engine, or try a different query.`;
278
546
  },
279
547
  });
280
548
  // ── Memory Tools ──
@@ -339,10 +607,10 @@ function registerBuiltinTools(registry) {
339
607
  { name: 'max_count', type: 'number', description: 'Number of commits to show (default: 10)', required: false },
340
608
  ],
341
609
  handler: async (params) => {
342
- const { execSync } = require('child_process');
610
+ const { execFileSync } = require('child_process');
343
611
  try {
344
- const n = params.max_count || 10;
345
- return execSync(`git log --oneline -${n}`, { encoding: 'utf-8' });
612
+ const n = Math.max(1, Math.min(1000, Math.floor(Number(params.max_count) || 10)));
613
+ return execFileSync('git', ['log', '--oneline', `-${n}`], { encoding: 'utf-8' });
346
614
  }
347
615
  catch (e) {
348
616
  return `Error: ${e.message || e}`;
@@ -356,10 +624,12 @@ function registerBuiltinTools(registry) {
356
624
  { name: 'message', type: 'string', description: 'Commit message', required: true },
357
625
  ],
358
626
  handler: async (params) => {
359
- const { execSync } = require('child_process');
627
+ const { execFileSync } = require('child_process');
360
628
  try {
361
- const msg = params.message;
362
- execSync(`git commit -m "${msg.replace(/"/g, '\\"')}"`, { encoding: 'utf-8' });
629
+ const msg = String(params.message ?? '');
630
+ // execFileSync passes the message as a single argv entry — no shell, so
631
+ // backticks / $() / ; in the message cannot be interpreted.
632
+ execFileSync('git', ['commit', '-m', msg], { encoding: 'utf-8' });
363
633
  return 'Commit created successfully.';
364
634
  }
365
635
  catch (e) {
@@ -377,16 +647,33 @@ function registerBuiltinTools(registry) {
377
647
  { name: 'path', type: 'string', description: 'Directory to search in', required: false },
378
648
  ],
379
649
  handler: async (params) => {
380
- const { execSync } = require('child_process');
650
+ const { execFileSync } = require('child_process');
381
651
  const searchDir = params.path ? path.resolve(params.path) : process.cwd();
652
+ const fenced = fenceCheck(searchDir);
653
+ if (fenced)
654
+ return fenced;
382
655
  const pat = String(params.pattern || '');
383
- try {
384
- const out = execSync('rg -n ' + pat + ' ' + searchDir + ' 2>/dev/null || grep -rn ' + pat + ' ' + searchDir + ' 2>/dev/null || echo "No matches found"', { encoding: 'utf-8', maxBuffer: 1024 * 1024 });
385
- return out;
386
- }
387
- catch {
388
- return 'No matches found.';
656
+ // No shell: pattern and directory are passed as argv entries, and `--`
657
+ // stops a leading `-` in the pattern from being read as a flag. This is a
658
+ // non-dangerous (auto-approved) tool, so shell injection here would have
659
+ // bypassed the tool-approval gate entirely.
660
+ const variants = [
661
+ ['rg', ['-n', '--', pat, searchDir]],
662
+ ['grep', ['-rn', '--', pat, searchDir]],
663
+ ];
664
+ for (const [bin, args] of variants) {
665
+ try {
666
+ const out = execFileSync(bin, args, { encoding: 'utf-8', maxBuffer: 1024 * 1024 });
667
+ return out || 'No matches found.';
668
+ }
669
+ catch (e) {
670
+ // exit status 1 = ran successfully, zero matches; anything else
671
+ // (e.g. binary not installed) falls through to the next variant.
672
+ if (e?.status === 1)
673
+ return 'No matches found.';
674
+ }
389
675
  }
676
+ return 'No matches found.';
390
677
  },
391
678
  });
392
679
  registry.register({
@@ -397,11 +684,15 @@ function registerBuiltinTools(registry) {
397
684
  { name: 'depth', type: 'number', description: 'Maximum depth (default: 3)', required: false },
398
685
  ],
399
686
  handler: async (params) => {
400
- const { execSync } = require('child_process');
687
+ const { execFileSync } = require('child_process');
401
688
  const treeDir = params.directory ? path.resolve(params.directory) : process.cwd();
402
- const depth = params.depth || 3;
689
+ const fenced = fenceCheck(treeDir);
690
+ if (fenced)
691
+ return fenced;
692
+ const depth = Math.max(1, Math.min(20, Math.floor(Number(params.depth) || 3)));
403
693
  try {
404
- const out = execSync('tree "' + treeDir + '" -L ' + depth + ' --charset=utf-8 2>/dev/null || echo "tree unavailable"', { encoding: 'utf-8' });
694
+ // No shell: directory passed as an argv entry, depth clamped to an int.
695
+ const out = execFileSync('tree', [treeDir, '-L', String(depth), '--charset=utf-8'], { encoding: 'utf-8' });
405
696
  return out;
406
697
  }
407
698
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../src/tools/builtin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../src/tools/builtin.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"computer.d.ts","sourceRoot":"","sources":["../../src/tools/computer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,cAAc,CAAC;AASjE;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAqPlE"}
1
+ {"version":3,"file":"computer.d.ts","sourceRoot":"","sources":["../../src/tools/computer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,cAAc,CAAC;AASjE;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CA+PlE"}
@@ -210,10 +210,10 @@ function registerComputerTools(registry) {
210
210
  }
211
211
  else {
212
212
  if (platform === 'win32') {
213
- (0, child_process_1.execSync)(`taskkill /F /IM "${target}" /T`, { timeout: 10000 });
213
+ (0, child_process_1.execFileSync)('taskkill', ['/F', '/IM', target, '/T'], { timeout: 10000 });
214
214
  }
215
215
  else {
216
- (0, child_process_1.execSync)(`pkill -f "${target}"`, { timeout: 10000 });
216
+ (0, child_process_1.execFileSync)('pkill', ['-f', target], { timeout: 10000 });
217
217
  }
218
218
  return `Killed process ${target}`;
219
219
  }
@@ -241,7 +241,7 @@ function registerComputerTools(registry) {
241
241
  let pm;
242
242
  const has = (cmd) => {
243
243
  try {
244
- (0, child_process_1.execSync)(`${cmd} --version`, { stdio: 'ignore' });
244
+ (0, child_process_1.execFileSync)(cmd, ['--version'], { stdio: 'ignore' });
245
245
  return true;
246
246
  }
247
247
  catch {
@@ -284,7 +284,11 @@ function registerComputerTools(registry) {
284
284
  if (!cmdMap || !cmdMap[action])
285
285
  return `Unsupported action '${action}' for ${pm}`;
286
286
  try {
287
- const out = (0, child_process_1.execSync)(`${pm} ${cmdMap[action]} "${name}"`, { encoding: 'utf-8', timeout: 120000 });
287
+ // cmdMap entries may carry flags (e.g. 'install -y', '-S --noconfirm');
288
+ // split them into argv so the package name stays a single argument with
289
+ // no shell interpretation.
290
+ const pmArgs = cmdMap[action].split(/\s+/).filter(Boolean);
291
+ const out = (0, child_process_1.execFileSync)(pm, [...pmArgs, name], { encoding: 'utf-8', timeout: 120000 });
288
292
  return truncate(out, MAX_OUT);
289
293
  }
290
294
  catch (e) {
@@ -306,13 +310,20 @@ function registerComputerTools(registry) {
306
310
  const name = String(params.name || '').trim();
307
311
  if (!action || !name)
308
312
  return 'Error: action and name are required';
313
+ const allowed = ['start', 'stop', 'restart', 'status'];
314
+ if (!allowed.includes(action))
315
+ return `Unsupported action '${action}' (use: ${allowed.join('/')})`;
309
316
  try {
310
317
  if (platform === 'win32') {
311
- const out = (0, child_process_1.execSync)(`sc ${action} "${name}"`, { encoding: 'utf-8', timeout: 30000 });
318
+ const out = (0, child_process_1.execFileSync)('sc', [action, name], { encoding: 'utf-8', timeout: 30000 });
312
319
  return truncate(out, MAX_OUT);
313
320
  }
314
- else {
315
- const out = (0, child_process_1.execSync)(`systemctl ${action} "${name}" 2>/dev/null || service "${name}" ${action}`, { encoding: 'utf-8', timeout: 30000 });
321
+ try {
322
+ const out = (0, child_process_1.execFileSync)('systemctl', [action, name], { encoding: 'utf-8', timeout: 30000 });
323
+ return truncate(out, MAX_OUT);
324
+ }
325
+ catch {
326
+ const out = (0, child_process_1.execFileSync)('service', [name, action], { encoding: 'utf-8', timeout: 30000 });
316
327
  return truncate(out, MAX_OUT);
317
328
  }
318
329
  }