@tachu/extensions 1.0.0-alpha.3 → 1.0.0-alpha.5

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 (79) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/README.md +30 -3
  3. package/README_ZH.md +29 -3
  4. package/dist/providers/anthropic.d.ts.map +1 -1
  5. package/dist/providers/anthropic.js +2 -1
  6. package/dist/providers/anthropic.js.map +1 -1
  7. package/dist/providers/openai.d.ts.map +1 -1
  8. package/dist/providers/openai.js +2 -1
  9. package/dist/providers/openai.js.map +1 -1
  10. package/dist/tools/apply-patch/executor.d.ts.map +1 -1
  11. package/dist/tools/apply-patch/executor.js +47 -0
  12. package/dist/tools/apply-patch/executor.js.map +1 -1
  13. package/dist/tools/edit-file/executor.d.ts +32 -0
  14. package/dist/tools/edit-file/executor.d.ts.map +1 -0
  15. package/dist/tools/edit-file/executor.js +84 -0
  16. package/dist/tools/edit-file/executor.js.map +1 -0
  17. package/dist/tools/git-blame/executor.d.ts +24 -0
  18. package/dist/tools/git-blame/executor.d.ts.map +1 -0
  19. package/dist/tools/git-blame/executor.js +76 -0
  20. package/dist/tools/git-blame/executor.js.map +1 -0
  21. package/dist/tools/git-branch/executor.d.ts +22 -0
  22. package/dist/tools/git-branch/executor.d.ts.map +1 -0
  23. package/dist/tools/git-branch/executor.js +81 -0
  24. package/dist/tools/git-branch/executor.js.map +1 -0
  25. package/dist/tools/git-diff/executor.d.ts +37 -0
  26. package/dist/tools/git-diff/executor.d.ts.map +1 -0
  27. package/dist/tools/git-diff/executor.js +156 -0
  28. package/dist/tools/git-diff/executor.js.map +1 -0
  29. package/dist/tools/git-log/executor.d.ts +31 -0
  30. package/dist/tools/git-log/executor.d.ts.map +1 -0
  31. package/dist/tools/git-log/executor.js +65 -0
  32. package/dist/tools/git-log/executor.js.map +1 -0
  33. package/dist/tools/git-show/executor.d.ts +22 -0
  34. package/dist/tools/git-show/executor.d.ts.map +1 -0
  35. package/dist/tools/git-show/executor.js +74 -0
  36. package/dist/tools/git-show/executor.js.map +1 -0
  37. package/dist/tools/git-status/executor.d.ts +25 -0
  38. package/dist/tools/git-status/executor.d.ts.map +1 -0
  39. package/dist/tools/git-status/executor.js +120 -0
  40. package/dist/tools/git-status/executor.js.map +1 -0
  41. package/dist/tools/glob/executor.d.ts +18 -0
  42. package/dist/tools/glob/executor.d.ts.map +1 -0
  43. package/dist/tools/glob/executor.js +47 -0
  44. package/dist/tools/glob/executor.js.map +1 -0
  45. package/dist/tools/index.d.ts.map +1 -1
  46. package/dist/tools/index.js +360 -3
  47. package/dist/tools/index.js.map +1 -1
  48. package/dist/tools/multi-edit/executor.d.ts +29 -0
  49. package/dist/tools/multi-edit/executor.d.ts.map +1 -0
  50. package/dist/tools/multi-edit/executor.js +37 -0
  51. package/dist/tools/multi-edit/executor.js.map +1 -0
  52. package/dist/tools/read-file/executor.d.ts +5 -0
  53. package/dist/tools/read-file/executor.d.ts.map +1 -1
  54. package/dist/tools/read-file/executor.js +46 -2
  55. package/dist/tools/read-file/executor.js.map +1 -1
  56. package/dist/tools/run-shell/executor.d.ts +12 -1
  57. package/dist/tools/run-shell/executor.d.ts.map +1 -1
  58. package/dist/tools/run-shell/executor.js +89 -6
  59. package/dist/tools/run-shell/executor.js.map +1 -1
  60. package/dist/tools/run-tests/executor.d.ts +28 -0
  61. package/dist/tools/run-tests/executor.d.ts.map +1 -0
  62. package/dist/tools/run-tests/executor.js +161 -0
  63. package/dist/tools/run-tests/executor.js.map +1 -0
  64. package/dist/tools/run-typecheck/executor.d.ts +25 -0
  65. package/dist/tools/run-typecheck/executor.d.ts.map +1 -0
  66. package/dist/tools/run-typecheck/executor.js +83 -0
  67. package/dist/tools/run-typecheck/executor.js.map +1 -0
  68. package/dist/tools/search-code/executor.d.ts.map +1 -1
  69. package/dist/tools/search-code/executor.js +45 -24
  70. package/dist/tools/search-code/executor.js.map +1 -1
  71. package/dist/tools/todo-read/executor.d.ts +20 -0
  72. package/dist/tools/todo-read/executor.d.ts.map +1 -0
  73. package/dist/tools/todo-read/executor.js +26 -0
  74. package/dist/tools/todo-read/executor.js.map +1 -0
  75. package/dist/tools/todo-write/executor.d.ts +21 -0
  76. package/dist/tools/todo-write/executor.d.ts.map +1 -0
  77. package/dist/tools/todo-write/executor.js +38 -0
  78. package/dist/tools/todo-write/executor.js.map +1 -0
  79. package/package.json +2 -2
@@ -7,6 +7,21 @@ import { runShellExecutor } from "./run-shell/executor";
7
7
  import { applyPatchExecutor } from "./apply-patch/executor";
8
8
  import { executeWebFetch } from "./web-fetch";
9
9
  import { executeWebSearch } from "./web-search";
10
+ // 新增工具 — S1 工具层核心
11
+ import { editFileExecutor } from "./edit-file/executor";
12
+ import { multiEditExecutor } from "./multi-edit/executor";
13
+ import { globExecutor } from "./glob/executor";
14
+ import { todoWriteExecutor } from "./todo-write/executor";
15
+ import { todoReadExecutor } from "./todo-read/executor";
16
+ // 新增工具 — S2 Git + 测试诊断
17
+ import { gitStatusExecutor } from "./git-status/executor";
18
+ import { gitDiffExecutor } from "./git-diff/executor";
19
+ import { gitLogExecutor } from "./git-log/executor";
20
+ import { gitBlameExecutor } from "./git-blame/executor";
21
+ import { gitShowExecutor } from "./git-show/executor";
22
+ import { gitBranchExecutor } from "./git-branch/executor";
23
+ import { runTypecheckExecutor } from "./run-typecheck/executor";
24
+ import { runTestsExecutor } from "./run-tests/executor";
10
25
  /**
11
26
  * 内置工具描述符列表。
12
27
  */
@@ -14,7 +29,7 @@ export const toolDescriptors = [
14
29
  {
15
30
  kind: "tool",
16
31
  name: "read-file",
17
- description: "读取工作区内的文件内容",
32
+ description: "读取工作区内的文件内容。支持 offset/limit 分段读取、withLineNumbers 行号注入(默认开启)。",
18
33
  sideEffect: "readonly",
19
34
  idempotent: true,
20
35
  requiresApproval: false,
@@ -24,12 +39,20 @@ export const toolDescriptors = [
24
39
  properties: {
25
40
  path: { type: "string" },
26
41
  encoding: { type: "string", enum: ["utf-8", "base64"] },
42
+ offset: { type: "number", description: "起始行(1-based),默认 1" },
43
+ limit: { type: "number", description: "最多读多少行,默认全文" },
44
+ withLineNumbers: { type: "boolean", description: "是否在每行前插入行号前缀(默认 true)" },
27
45
  },
28
46
  required: ["path"],
29
47
  },
30
48
  outputSchema: {
31
49
  type: "object",
32
- properties: { content: { type: "string" }, bytes: { type: "number" } },
50
+ properties: {
51
+ content: { type: "string" },
52
+ bytes: { type: "number" },
53
+ totalLines: { type: "number" },
54
+ hasMore: { type: "boolean" },
55
+ },
33
56
  },
34
57
  execute: "read-file",
35
58
  },
@@ -246,7 +269,7 @@ export const toolDescriptors = [
246
269
  {
247
270
  kind: "tool",
248
271
  name: "apply-patch",
249
- description: "应用 unified diff 补丁并支持失败回滚",
272
+ description: "应用 unified diff 补丁并支持失败回滚。支持上下文行宽容匹配(trim + ±3 行偏移)。",
250
273
  sideEffect: "write",
251
274
  idempotent: false,
252
275
  requiresApproval: true,
@@ -268,11 +291,329 @@ export const toolDescriptors = [
268
291
  },
269
292
  execute: "apply-patch",
270
293
  },
294
+ // ─── S1:编辑工具 ──────────────────────────────────────────────────────────
295
+ {
296
+ kind: "tool",
297
+ name: "edit-file",
298
+ description: "在文件中替换精确字符串片段。oldString 必须在文件中唯一(或配合 replaceAll)。改前会校验唯一性,失败时返回 matchCount 方便 LLM 调整上下文。fuzzy 默认 true,允许行首尾空白差异。",
299
+ sideEffect: "write",
300
+ idempotent: false,
301
+ requiresApproval: true,
302
+ timeout: 10000,
303
+ inputSchema: {
304
+ type: "object",
305
+ properties: {
306
+ path: { type: "string" },
307
+ oldString: { type: "string", description: "要被替换的精确原始内容(含缩进/换行)" },
308
+ newString: { type: "string", description: "替换后的新内容" },
309
+ replaceAll: { type: "boolean", description: "true 时替换所有匹配,不做唯一性校验" },
310
+ fuzzy: { type: "boolean", description: "允许 oldString 行首尾空白差异(默认 true)" },
311
+ },
312
+ required: ["path", "oldString", "newString"],
313
+ },
314
+ outputSchema: {
315
+ type: "object",
316
+ properties: {
317
+ replaced: { type: "number" },
318
+ matchCount: { type: "number" },
319
+ },
320
+ },
321
+ execute: "edit-file",
322
+ },
323
+ {
324
+ kind: "tool",
325
+ name: "multi-edit",
326
+ description: "在同一文件中原子地应用多处字符串替换。任一替换失败则全部回滚,不写磁盘。",
327
+ sideEffect: "write",
328
+ idempotent: false,
329
+ requiresApproval: true,
330
+ timeout: 15000,
331
+ inputSchema: {
332
+ type: "object",
333
+ properties: {
334
+ path: { type: "string" },
335
+ edits: {
336
+ type: "array",
337
+ items: {
338
+ type: "object",
339
+ properties: {
340
+ oldString: { type: "string" },
341
+ newString: { type: "string" },
342
+ replaceAll: { type: "boolean" },
343
+ },
344
+ required: ["oldString", "newString"],
345
+ },
346
+ },
347
+ fuzzy: { type: "boolean" },
348
+ },
349
+ required: ["path", "edits"],
350
+ },
351
+ outputSchema: {
352
+ type: "object",
353
+ properties: {
354
+ applied: { type: "number" },
355
+ total: { type: "number" },
356
+ results: { type: "array" },
357
+ },
358
+ },
359
+ execute: "multi-edit",
360
+ },
361
+ {
362
+ kind: "tool",
363
+ name: "glob",
364
+ description: "按 glob 模式查找工作区内的文件路径。只返回路径,不读文件内容。适合探索项目结构、定位特定类型文件。例:pattern=\"**/*.test.ts\"",
365
+ sideEffect: "readonly",
366
+ idempotent: true,
367
+ requiresApproval: false,
368
+ timeout: 15000,
369
+ inputSchema: {
370
+ type: "object",
371
+ properties: {
372
+ pattern: { type: "string", description: "glob 模式,如 **/*.ts" },
373
+ cwd: { type: "string", description: "搜索根(默认 workspaceRoot)" },
374
+ ignore: { type: "array", items: { type: "string" }, description: "排除 pattern(默认排除 node_modules/.git)" },
375
+ maxResults: { type: "number", description: "默认 1000" },
376
+ },
377
+ required: ["pattern"],
378
+ },
379
+ outputSchema: {
380
+ type: "object",
381
+ properties: {
382
+ files: { type: "array", items: { type: "string" } },
383
+ truncated: { type: "boolean" },
384
+ matchCount: { type: "number" },
385
+ },
386
+ },
387
+ execute: "glob",
388
+ },
389
+ {
390
+ kind: "tool",
391
+ name: "todo-write",
392
+ description: "创建或更新会话任务清单(持久化到磁盘)。merge=true 时按 id 合并,false 时全量覆盖。用于追踪复杂多步任务的进度。",
393
+ sideEffect: "write",
394
+ idempotent: false,
395
+ requiresApproval: false,
396
+ timeout: 5000,
397
+ inputSchema: {
398
+ type: "object",
399
+ properties: {
400
+ todos: {
401
+ type: "array",
402
+ items: {
403
+ type: "object",
404
+ properties: {
405
+ id: { type: "string" },
406
+ content: { type: "string" },
407
+ status: { type: "string", enum: ["pending", "in_progress", "completed", "cancelled"] },
408
+ },
409
+ required: ["id", "content", "status"],
410
+ },
411
+ },
412
+ merge: { type: "boolean", description: "默认 true;false 时全量覆盖" },
413
+ },
414
+ required: ["todos"],
415
+ },
416
+ outputSchema: {
417
+ type: "object",
418
+ properties: { total: { type: "number" }, written: { type: "number" } },
419
+ },
420
+ execute: "todo-write",
421
+ },
422
+ {
423
+ kind: "tool",
424
+ name: "todo-read",
425
+ description: "读取当前会话的任务清单。返回全部或按状态过滤的任务列表。",
426
+ sideEffect: "readonly",
427
+ idempotent: true,
428
+ requiresApproval: false,
429
+ timeout: 3000,
430
+ inputSchema: {
431
+ type: "object",
432
+ properties: {
433
+ status: {
434
+ type: "string",
435
+ enum: ["pending", "in_progress", "completed", "cancelled", "all"],
436
+ description: "过滤状态,默认 all",
437
+ },
438
+ },
439
+ },
440
+ outputSchema: {
441
+ type: "object",
442
+ properties: {
443
+ todos: { type: "array" },
444
+ total: { type: "number" },
445
+ },
446
+ },
447
+ execute: "todo-read",
448
+ },
449
+ // ─── S2:Git 工具组 ─────────────────────────────────────────────────────────
450
+ {
451
+ kind: "tool",
452
+ name: "git-status",
453
+ description: "获取 git 工作区状态:当前分支、ahead/behind、staged/unstaged/untracked 文件列表。",
454
+ sideEffect: "readonly",
455
+ idempotent: true,
456
+ requiresApproval: false,
457
+ timeout: 10000,
458
+ inputSchema: {
459
+ type: "object",
460
+ properties: { cwd: { type: "string" } },
461
+ },
462
+ outputSchema: { type: "object" },
463
+ execute: "git-status",
464
+ },
465
+ {
466
+ kind: "tool",
467
+ name: "git-diff",
468
+ description: "获取 git diff,支持 staged(暂存区)、ref 范围、指定文件。返回结构化 FileDiff 列表。",
469
+ sideEffect: "readonly",
470
+ idempotent: true,
471
+ requiresApproval: false,
472
+ timeout: 15000,
473
+ inputSchema: {
474
+ type: "object",
475
+ properties: {
476
+ cwd: { type: "string" },
477
+ path: { type: "string", description: "限定文件路径" },
478
+ staged: { type: "boolean", description: "true 时等价于 git diff --staged" },
479
+ ref: { type: "string", description: "如 HEAD~1, abc123..def456" },
480
+ context: { type: "number", description: "context lines,默认 3" },
481
+ maxBytes: { type: "number", description: "输出字节上限,默认 32768" },
482
+ },
483
+ },
484
+ outputSchema: { type: "object" },
485
+ execute: "git-diff",
486
+ },
487
+ {
488
+ kind: "tool",
489
+ name: "git-log",
490
+ description: "获取 git 提交历史。支持 limit/since/until/author/path 过滤,返回结构化 commit 列表。",
491
+ sideEffect: "readonly",
492
+ idempotent: true,
493
+ requiresApproval: false,
494
+ timeout: 10000,
495
+ inputSchema: {
496
+ type: "object",
497
+ properties: {
498
+ cwd: { type: "string" },
499
+ limit: { type: "number", description: "默认 20,上限 100" },
500
+ since: { type: "string", description: "如 '2 weeks ago', '2026-01-01'" },
501
+ until: { type: "string" },
502
+ author: { type: "string" },
503
+ path: { type: "string", description: "只看影响此路径的 commits" },
504
+ ref: { type: "string", description: "起点 ref,默认 HEAD" },
505
+ oneline: { type: "boolean", description: "只返回 hash + subject" },
506
+ },
507
+ },
508
+ outputSchema: { type: "object" },
509
+ execute: "git-log",
510
+ },
511
+ {
512
+ kind: "tool",
513
+ name: "git-blame",
514
+ description: "查看文件每行的最后修改者和 commit。支持行范围过滤。",
515
+ sideEffect: "readonly",
516
+ idempotent: true,
517
+ requiresApproval: false,
518
+ timeout: 15000,
519
+ inputSchema: {
520
+ type: "object",
521
+ properties: {
522
+ path: { type: "string" },
523
+ cwd: { type: "string" },
524
+ startLine: { type: "number", description: "1-based,默认 1" },
525
+ endLine: { type: "number", description: "1-based,默认文件尾" },
526
+ },
527
+ required: ["path"],
528
+ },
529
+ outputSchema: { type: "object" },
530
+ execute: "git-blame",
531
+ },
532
+ {
533
+ kind: "tool",
534
+ name: "git-show",
535
+ description: "查看单个 git commit 的元信息和 diff。",
536
+ sideEffect: "readonly",
537
+ idempotent: true,
538
+ requiresApproval: false,
539
+ timeout: 10000,
540
+ inputSchema: {
541
+ type: "object",
542
+ properties: {
543
+ ref: { type: "string", description: "commit hash, tag, HEAD~1 等" },
544
+ cwd: { type: "string" },
545
+ maxBytes: { type: "number", description: "diff 输出上限,默认 32768" },
546
+ },
547
+ required: ["ref"],
548
+ },
549
+ outputSchema: { type: "object" },
550
+ execute: "git-show",
551
+ },
552
+ {
553
+ kind: "tool",
554
+ name: "git-branch",
555
+ description: "列出本地(或含远端)分支,包含 current、upstream、ahead/behind 信息。",
556
+ sideEffect: "readonly",
557
+ idempotent: true,
558
+ requiresApproval: false,
559
+ timeout: 10000,
560
+ inputSchema: {
561
+ type: "object",
562
+ properties: {
563
+ cwd: { type: "string" },
564
+ all: { type: "boolean", description: "true 时含远端分支,默认 false" },
565
+ },
566
+ },
567
+ outputSchema: { type: "object" },
568
+ execute: "git-branch",
569
+ },
570
+ // ─── S2:测试诊断 ──────────────────────────────────────────────────────────
571
+ {
572
+ kind: "tool",
573
+ name: "run-typecheck",
574
+ description: "对工作区运行 TypeScript 类型检查(tsc --noEmit 或 package.json 的 typecheck script)。返回结构化错误列表,适合改完代码后验证是否引入类型错误。",
575
+ sideEffect: "readonly",
576
+ idempotent: true,
577
+ requiresApproval: false,
578
+ timeout: 120000,
579
+ inputSchema: {
580
+ type: "object",
581
+ properties: {
582
+ cwd: { type: "string" },
583
+ tsconfig: { type: "string", description: "tsconfig 路径,默认自动查找" },
584
+ maxErrors: { type: "number", description: "返回错误条数上限,默认 50" },
585
+ },
586
+ },
587
+ outputSchema: { type: "object" },
588
+ execute: "run-typecheck",
589
+ },
590
+ {
591
+ kind: "tool",
592
+ name: "run-tests",
593
+ description: "运行工作区的测试套件(bun test 或 package.json test script)。返回结构化通过/失败/跳过数和失败用例详情。",
594
+ sideEffect: "readonly",
595
+ idempotent: true,
596
+ requiresApproval: false,
597
+ timeout: 180000,
598
+ inputSchema: {
599
+ type: "object",
600
+ properties: {
601
+ cwd: { type: "string" },
602
+ filter: { type: "string", description: "测试名过滤" },
603
+ file: { type: "string", description: "只跑指定文件" },
604
+ maxFailures: { type: "number", description: "失败用例返回上限,默认 20" },
605
+ timeout: { type: "number", description: "进程超时 ms,默认 60000" },
606
+ },
607
+ },
608
+ outputSchema: { type: "object" },
609
+ execute: "run-tests",
610
+ },
271
611
  ];
272
612
  /**
273
613
  * 工具执行函数注册表。
274
614
  */
275
615
  export const toolExecutors = {
616
+ // 原有工具
276
617
  "read-file": readFileExecutor,
277
618
  "write-file": writeFileExecutor,
278
619
  "list-dir": listDirExecutor,
@@ -282,5 +623,21 @@ export const toolExecutors = {
282
623
  "web-search": executeWebSearch,
283
624
  "run-shell": runShellExecutor,
284
625
  "apply-patch": applyPatchExecutor,
626
+ // S1:编辑工具
627
+ "edit-file": editFileExecutor,
628
+ "multi-edit": multiEditExecutor,
629
+ "glob": globExecutor,
630
+ "todo-write": todoWriteExecutor,
631
+ "todo-read": todoReadExecutor,
632
+ // S2:Git 工具组
633
+ "git-status": gitStatusExecutor,
634
+ "git-diff": gitDiffExecutor,
635
+ "git-log": gitLogExecutor,
636
+ "git-blame": gitBlameExecutor,
637
+ "git-show": gitShowExecutor,
638
+ "git-branch": gitBranchExecutor,
639
+ // S2:测试诊断
640
+ "run-typecheck": runTypecheckExecutor,
641
+ "run-tests": runTestsExecutor,
285
642
  };
286
643
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { ToolExecutor } from "../shared";
2
+ interface EditSpec {
3
+ oldString: string;
4
+ newString: string;
5
+ replaceAll?: boolean;
6
+ }
7
+ interface MultiEditInput {
8
+ path: string;
9
+ edits: EditSpec[];
10
+ fuzzy?: boolean;
11
+ }
12
+ interface EditResult {
13
+ index: number;
14
+ replaced: number;
15
+ matchCount: number;
16
+ error?: string;
17
+ }
18
+ interface MultiEditOutput {
19
+ applied: number;
20
+ total: number;
21
+ results: EditResult[];
22
+ }
23
+ /**
24
+ * 多处原子编辑 Tool 执行器。
25
+ * 在内存中顺序应用每个 edit,任一失败则全部回滚(不写文件)。
26
+ */
27
+ export declare const multiEditExecutor: ToolExecutor<MultiEditInput, MultiEditOutput>;
28
+ export {};
29
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/tools/multi-edit/executor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAI9C,UAAU,QAAQ;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,YAAY,CAAC,cAAc,EAAE,eAAe,CAuC3E,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { readFile, writeFile } from "node:fs/promises";
2
+ import { resolveAllowedPath } from "../../common/path";
3
+ import { assertNotAborted, resolveSandboxPolicy } from "../shared";
4
+ import { applyEdit } from "../edit-file/executor";
5
+ /**
6
+ * 多处原子编辑 Tool 执行器。
7
+ * 在内存中顺序应用每个 edit,任一失败则全部回滚(不写文件)。
8
+ */
9
+ export const multiEditExecutor = async (input, context) => {
10
+ assertNotAborted(context.abortSignal);
11
+ const target = resolveAllowedPath(input.path, resolveSandboxPolicy(context));
12
+ const original = await readFile(target, "utf8");
13
+ const fuzzy = input.fuzzy !== false;
14
+ const results = [];
15
+ let current = original;
16
+ let failed = false;
17
+ for (let i = 0; i < input.edits.length; i++) {
18
+ const edit = input.edits[i];
19
+ try {
20
+ const { newContent, replaced, matchCount } = applyEdit(current, edit.oldString, edit.newString, edit.replaceAll === true, fuzzy);
21
+ current = newContent;
22
+ results.push({ index: i, replaced, matchCount });
23
+ }
24
+ catch (err) {
25
+ const error = err instanceof Error ? err.message : String(err);
26
+ results.push({ index: i, replaced: 0, matchCount: 0, error });
27
+ failed = true;
28
+ break;
29
+ }
30
+ }
31
+ if (failed) {
32
+ return { applied: results.filter((r) => r.error === undefined).length, total: input.edits.length, results };
33
+ }
34
+ await writeFile(target, current, "utf8");
35
+ return { applied: results.length, total: input.edits.length, results };
36
+ };
37
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/tools/multi-edit/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AA2BlD;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAkD,KAAK,EACnF,KAAK,EACL,OAAO,EACP,EAAE;IACF,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC;IACpC,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,IAAI,OAAO,GAAG,QAAQ,CAAC;IACvB,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,SAAS,CACpD,OAAO,EACP,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,UAAU,KAAK,IAAI,EACxB,KAAK,CACN,CAAC;YACF,OAAO,GAAG,UAAU,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9D,MAAM,GAAG,IAAI,CAAC;YACd,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;IAC9G,CAAC;IAED,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;AACzE,CAAC,CAAC"}
@@ -2,10 +2,15 @@ import type { ToolExecutor } from "../shared";
2
2
  interface ReadFileInput {
3
3
  path: string;
4
4
  encoding?: "utf-8" | "base64";
5
+ offset?: number;
6
+ limit?: number;
7
+ withLineNumbers?: boolean;
5
8
  }
6
9
  interface ReadFileOutput {
7
10
  content: string;
8
11
  bytes: number;
12
+ totalLines?: number;
13
+ hasMore?: boolean;
9
14
  }
10
15
  /**
11
16
  * 读取文件 Tool 执行器。
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/tools/read-file/executor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAK9C,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC/B;AAED,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,aAAa,EAAE,cAAc,CAoBxE,CAAC"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/tools/read-file/executor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAK9C,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAOD;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,aAAa,EAAE,cAAc,CAsExE,CAAC"}
@@ -3,6 +3,10 @@ import { ValidationError } from "@tachu/core";
3
3
  import { resolveAllowedPath } from "../../common/path";
4
4
  import { assertNotAborted, resolveSandboxPolicy } from "../shared";
5
5
  const MAX_FILE_BYTES = 10 * 1024 * 1024;
6
+ /**
7
+ * 格式化行号前缀:右对齐 6 位 + `|`,例如 `" 1|"`
8
+ */
9
+ const formatLineNumber = (n) => String(n).padStart(6, " ") + "|";
6
10
  /**
7
11
  * 读取文件 Tool 执行器。
8
12
  */
@@ -14,9 +18,49 @@ export const readFileExecutor = async (input, context) => {
14
18
  throw new ValidationError("VALIDATION_FILE_TOO_LARGE", `文件超过限制: ${fileStat.size} bytes > ${MAX_FILE_BYTES} bytes`, { context: { path: input.path, size: fileStat.size, max: MAX_FILE_BYTES } });
15
19
  }
16
20
  const bytes = await readFile(target);
17
- return {
18
- content: input.encoding === "base64" ? Buffer.from(bytes).toString("base64") : bytes.toString(),
21
+ if (input.encoding === "base64") {
22
+ return {
23
+ content: Buffer.from(bytes).toString("base64"),
24
+ bytes: bytes.byteLength,
25
+ };
26
+ }
27
+ const rawText = bytes.toString("utf8");
28
+ const useLineNumbers = input.withLineNumbers !== false;
29
+ const hasOffsetOrLimit = input.offset !== undefined || input.limit !== undefined;
30
+ if (!hasOffsetOrLimit && !useLineNumbers) {
31
+ return { content: rawText, bytes: bytes.byteLength };
32
+ }
33
+ const allLines = rawText.split("\n");
34
+ // If file ends with \n, last element is empty string — keep for totalLines accounting
35
+ const totalLines = allLines.length;
36
+ const startLine = input.offset !== undefined ? Math.max(1, input.offset) : 1;
37
+ const startIdx = startLine - 1;
38
+ let endIdx;
39
+ if (input.limit !== undefined) {
40
+ endIdx = startIdx + input.limit;
41
+ }
42
+ else {
43
+ endIdx = totalLines;
44
+ }
45
+ endIdx = Math.min(endIdx, totalLines);
46
+ const selectedLines = allLines.slice(startIdx, endIdx);
47
+ let content;
48
+ if (useLineNumbers) {
49
+ content = selectedLines
50
+ .map((line, i) => formatLineNumber(startLine + i) + line)
51
+ .join("\n");
52
+ }
53
+ else {
54
+ content = selectedLines.join("\n");
55
+ }
56
+ const output = {
57
+ content,
19
58
  bytes: bytes.byteLength,
20
59
  };
60
+ if (hasOffsetOrLimit) {
61
+ output.totalLines = totalLines;
62
+ output.hasMore = endIdx < totalLines;
63
+ }
64
+ return output;
21
65
  };
22
66
  //# sourceMappingURL=executor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/tools/read-file/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEnE,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAYxC;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAgD,KAAK,EAChF,KAAK,EACL,OAAO,EACP,EAAE;IACF,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,QAAQ,CAAC,IAAI,GAAG,cAAc,EAAE,CAAC;QACnC,MAAM,IAAI,eAAe,CACvB,2BAA2B,EAC3B,WAAW,QAAQ,CAAC,IAAI,YAAY,cAAc,QAAQ,EAC1D,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,CAC5E,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE;QAC/F,KAAK,EAAE,KAAK,CAAC,UAAU;KACxB,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/tools/read-file/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEnE,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAiBxC;;GAEG;AACH,MAAM,gBAAgB,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;AAEjF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAgD,KAAK,EAChF,KAAK,EACL,OAAO,EACP,EAAE;IACF,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,QAAQ,CAAC,IAAI,GAAG,cAAc,EAAE,CAAC;QACnC,MAAM,IAAI,eAAe,CACvB,2BAA2B,EAC3B,WAAW,QAAQ,CAAC,IAAI,YAAY,cAAc,QAAQ,EAC1D,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,CAC5E,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;IAErC,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC9C,KAAK,EAAE,KAAK,CAAC,UAAU;SACxB,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEvC,MAAM,cAAc,GAAG,KAAK,CAAC,eAAe,KAAK,KAAK,CAAC;IACvD,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC;IAEjF,IAAI,CAAC,gBAAgB,IAAI,CAAC,cAAc,EAAE,CAAC;QACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;IACvD,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,sFAAsF;IACtF,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;IAEnC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC;IAE/B,IAAI,MAAc,CAAC;IACnB,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,UAAU,CAAC;IACtB,CAAC;IACD,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAEtC,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEvD,IAAI,OAAe,CAAC;IACpB,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,GAAG,aAAa;aACpB,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;aACxD,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,MAAM,GAAmB;QAC7B,OAAO;QACP,KAAK,EAAE,KAAK,CAAC,UAAU;KACxB,CAAC;IAEF,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/B,MAAM,CAAC,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;IACvC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}