@nervekit/tools 0.1.0 → 0.3.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 (117) hide show
  1. package/dist/execution/common/output-budget.d.ts +5 -0
  2. package/dist/execution/common/output-budget.d.ts.map +1 -1
  3. package/dist/execution/common/output-budget.js +26 -0
  4. package/dist/execution/common/output-budget.js.map +1 -1
  5. package/dist/execution/common/process-result.d.ts.map +1 -1
  6. package/dist/execution/common/process-result.js +55 -1
  7. package/dist/execution/common/process-result.js.map +1 -1
  8. package/dist/execution/filesystem/find.d.ts.map +1 -1
  9. package/dist/execution/filesystem/find.js +5 -2
  10. package/dist/execution/filesystem/find.js.map +1 -1
  11. package/dist/execution/filesystem/list.d.ts.map +1 -1
  12. package/dist/execution/filesystem/list.js +5 -2
  13. package/dist/execution/filesystem/list.js.map +1 -1
  14. package/dist/execution/filesystem/read.d.ts.map +1 -1
  15. package/dist/execution/filesystem/read.js +19 -2
  16. package/dist/execution/filesystem/read.js.map +1 -1
  17. package/dist/execution/filesystem/search.d.ts.map +1 -1
  18. package/dist/execution/filesystem/search.js +12 -2
  19. package/dist/execution/filesystem/search.js.map +1 -1
  20. package/dist/execution/index.d.ts +1 -1
  21. package/dist/execution/index.d.ts.map +1 -1
  22. package/dist/execution/index.js +1 -1
  23. package/dist/execution/index.js.map +1 -1
  24. package/dist/execution/shell/bash.d.ts.map +1 -1
  25. package/dist/execution/shell/bash.js +12 -1
  26. package/dist/execution/shell/bash.js.map +1 -1
  27. package/dist/execution/web/web-fetch.d.ts.map +1 -1
  28. package/dist/execution/web/web-fetch.js +39 -0
  29. package/dist/execution/web/web-fetch.js.map +1 -1
  30. package/dist/execution/web/web-search.d.ts.map +1 -1
  31. package/dist/execution/web/web-search.js +9 -2
  32. package/dist/execution/web/web-search.js.map +1 -1
  33. package/dist/index.d.ts +1 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +1 -1
  36. package/dist/index.js.map +1 -1
  37. package/package.json +2 -2
  38. package/dist/catalog/orchestration/process.tools.d.ts +0 -68
  39. package/dist/catalog/orchestration/process.tools.d.ts.map +0 -1
  40. package/dist/catalog/orchestration/process.tools.js +0 -96
  41. package/dist/catalog/orchestration/process.tools.js.map +0 -1
  42. package/dist/catalog/orchestration/subagent.tools.d.ts +0 -16
  43. package/dist/catalog/orchestration/subagent.tools.d.ts.map +0 -1
  44. package/dist/catalog/orchestration/subagent.tools.js +0 -25
  45. package/dist/catalog/orchestration/subagent.tools.js.map +0 -1
  46. package/dist/definitions.d.ts +0 -2
  47. package/dist/definitions.d.ts.map +0 -1
  48. package/dist/definitions.js +0 -2
  49. package/dist/definitions.js.map +0 -1
  50. package/dist/execution/atomic-write.d.ts +0 -2
  51. package/dist/execution/atomic-write.d.ts.map +0 -1
  52. package/dist/execution/atomic-write.js +0 -7
  53. package/dist/execution/atomic-write.js.map +0 -1
  54. package/dist/execution/bash.d.ts +0 -3
  55. package/dist/execution/bash.d.ts.map +0 -1
  56. package/dist/execution/bash.js +0 -133
  57. package/dist/execution/bash.js.map +0 -1
  58. package/dist/execution/common.d.ts +0 -2
  59. package/dist/execution/common.d.ts.map +0 -1
  60. package/dist/execution/common.js +0 -6
  61. package/dist/execution/common.js.map +0 -1
  62. package/dist/execution/dispatch.d.ts +0 -4
  63. package/dist/execution/dispatch.d.ts.map +0 -1
  64. package/dist/execution/dispatch.js +0 -54
  65. package/dist/execution/dispatch.js.map +0 -1
  66. package/dist/execution/edit.d.ts +0 -9
  67. package/dist/execution/edit.d.ts.map +0 -1
  68. package/dist/execution/edit.js +0 -175
  69. package/dist/execution/edit.js.map +0 -1
  70. package/dist/execution/file-mutation-queue.d.ts +0 -2
  71. package/dist/execution/file-mutation-queue.d.ts.map +0 -1
  72. package/dist/execution/file-mutation-queue.js +0 -19
  73. package/dist/execution/file-mutation-queue.js.map +0 -1
  74. package/dist/execution/filesystem/legacy-edit.d.ts +0 -9
  75. package/dist/execution/filesystem/legacy-edit.d.ts.map +0 -1
  76. package/dist/execution/filesystem/legacy-edit.js +0 -122
  77. package/dist/execution/filesystem/legacy-edit.js.map +0 -1
  78. package/dist/execution/find.d.ts +0 -3
  79. package/dist/execution/find.d.ts.map +0 -1
  80. package/dist/execution/find.js +0 -90
  81. package/dist/execution/find.js.map +0 -1
  82. package/dist/execution/list.d.ts +0 -3
  83. package/dist/execution/list.d.ts.map +0 -1
  84. package/dist/execution/list.js +0 -46
  85. package/dist/execution/list.js.map +0 -1
  86. package/dist/execution/path.d.ts +0 -7
  87. package/dist/execution/path.d.ts.map +0 -1
  88. package/dist/execution/path.js +0 -69
  89. package/dist/execution/path.js.map +0 -1
  90. package/dist/execution/read.d.ts +0 -3
  91. package/dist/execution/read.d.ts.map +0 -1
  92. package/dist/execution/read.js +0 -97
  93. package/dist/execution/read.js.map +0 -1
  94. package/dist/execution/search-utils.d.ts +0 -8
  95. package/dist/execution/search-utils.d.ts.map +0 -1
  96. package/dist/execution/search-utils.js +0 -110
  97. package/dist/execution/search-utils.js.map +0 -1
  98. package/dist/execution/search.d.ts +0 -3
  99. package/dist/execution/search.d.ts.map +0 -1
  100. package/dist/execution/search.js +0 -131
  101. package/dist/execution/search.js.map +0 -1
  102. package/dist/execution/truncate.d.ts +0 -21
  103. package/dist/execution/truncate.d.ts.map +0 -1
  104. package/dist/execution/truncate.js +0 -94
  105. package/dist/execution/truncate.js.map +0 -1
  106. package/dist/execution/web-fetch.d.ts +0 -3
  107. package/dist/execution/web-fetch.d.ts.map +0 -1
  108. package/dist/execution/web-fetch.js +0 -132
  109. package/dist/execution/web-fetch.js.map +0 -1
  110. package/dist/execution/web-search.d.ts +0 -3
  111. package/dist/execution/web-search.d.ts.map +0 -1
  112. package/dist/execution/web-search.js +0 -59
  113. package/dist/execution/web-search.js.map +0 -1
  114. package/dist/execution/write.d.ts +0 -3
  115. package/dist/execution/write.d.ts.map +0 -1
  116. package/dist/execution/write.js +0 -21
  117. package/dist/execution/write.js.map +0 -1
@@ -1,133 +0,0 @@
1
- import { spawn } from "node:child_process";
2
- import { writeFile } from "node:fs/promises";
3
- import { tmpdir } from "node:os";
4
- import { join } from "node:path";
5
- import { numberArg } from "./common.js";
6
- import { truncateTail } from "./truncate.js";
7
- export async function executeBash(args, context) {
8
- if (typeof args.command !== "string" || args.command.trim().length === 0) {
9
- throw new Error("Tool argument 'command' must be a non-empty string.");
10
- }
11
- const timeoutSeconds = typeof args.timeout === "number"
12
- ? Math.max(0, numberArg(args.timeout, 0))
13
- : undefined;
14
- const stdoutChunks = [];
15
- const stderrChunks = [];
16
- const combinedChunks = [];
17
- return await new Promise((resolve, reject) => {
18
- if (context.signal?.aborted) {
19
- reject(new Error("Command aborted."));
20
- return;
21
- }
22
- const child = spawn(args.command, {
23
- cwd: context.cwd,
24
- shell: true,
25
- detached: process.platform !== "win32",
26
- env: process.env,
27
- });
28
- let settled = false;
29
- let timeout;
30
- const cleanup = () => {
31
- if (timeout)
32
- clearTimeout(timeout);
33
- context.signal?.removeEventListener("abort", onAbort);
34
- };
35
- const kill = () => {
36
- try {
37
- if (process.platform !== "win32" && child.pid) {
38
- process.kill(-child.pid, "SIGTERM");
39
- }
40
- else {
41
- child.kill("SIGTERM");
42
- }
43
- }
44
- catch {
45
- child.kill("SIGTERM");
46
- }
47
- };
48
- const onAbort = () => {
49
- if (settled)
50
- return;
51
- kill();
52
- settled = true;
53
- cleanup();
54
- reject(new Error("Command aborted."));
55
- };
56
- context.signal?.addEventListener("abort", onAbort, { once: true });
57
- if (timeoutSeconds !== undefined && timeoutSeconds > 0) {
58
- timeout = setTimeout(() => {
59
- if (settled)
60
- return;
61
- kill();
62
- settled = true;
63
- cleanup();
64
- reject(new Error(`Command timed out after ${timeoutSeconds}s.`));
65
- }, timeoutSeconds * 1000);
66
- }
67
- child.stdout?.on("data", (chunk) => {
68
- stdoutChunks.push(chunk);
69
- combinedChunks.push(chunk);
70
- context.onUpdate?.({
71
- kind: "output",
72
- stream: "stdout",
73
- chunk: chunk.toString("utf8"),
74
- });
75
- });
76
- child.stderr?.on("data", (chunk) => {
77
- stderrChunks.push(chunk);
78
- combinedChunks.push(chunk);
79
- context.onUpdate?.({
80
- kind: "output",
81
- stream: "stderr",
82
- chunk: chunk.toString("utf8"),
83
- });
84
- });
85
- child.on("error", (error) => {
86
- if (settled)
87
- return;
88
- settled = true;
89
- cleanup();
90
- reject(error);
91
- });
92
- child.on("close", (code, signal) => {
93
- if (settled)
94
- return;
95
- settled = true;
96
- cleanup();
97
- void buildResult(stdoutChunks, stderrChunks, combinedChunks, code, signal)
98
- .then(resolve)
99
- .catch(reject);
100
- });
101
- });
102
- }
103
- async function buildResult(stdoutChunks, stderrChunks, combinedChunks, code, signal) {
104
- const stdout = Buffer.concat(stdoutChunks).toString("utf8");
105
- const stderr = Buffer.concat(stderrChunks).toString("utf8");
106
- const combined = Buffer.concat(combinedChunks).toString("utf8");
107
- const exitCode = code ?? (signal ? 128 : 0);
108
- const output = combined.length > 0 ? combined : "(no output)";
109
- const truncated = truncateTail(output);
110
- let content = truncated.text;
111
- let fullOutputPath;
112
- if (truncated.truncated) {
113
- fullOutputPath = join(tmpdir(), `nerve-bash-${Date.now()}-${Math.random().toString(16).slice(2)}.log`);
114
- await writeFile(fullOutputPath, output, "utf8");
115
- content = `[...output truncated; full output saved to ${fullOutputPath}]\n${content}`;
116
- }
117
- if (exitCode !== 0) {
118
- content += `${content.endsWith("\n") ? "" : "\n"}Command exited with code ${exitCode}.`;
119
- }
120
- return {
121
- stdout,
122
- stderr,
123
- exitCode,
124
- content,
125
- contentBlocks: [{ type: "text", text: content }],
126
- details: {
127
- truncation: truncated.truncated ? truncated : undefined,
128
- fullOutputPath,
129
- signal,
130
- },
131
- };
132
- }
133
- //# sourceMappingURL=bash.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../src/execution/bash.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function numberArg(value: unknown, fallback: number): number;
2
- //# sourceMappingURL=common.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/execution/common.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGlE"}
@@ -1,6 +0,0 @@
1
- export function numberArg(value, fallback) {
2
- if (typeof value !== "number" || !Number.isFinite(value))
3
- return fallback;
4
- return Math.max(0, Math.floor(value));
5
- }
6
- //# sourceMappingURL=common.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/execution/common.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAC,KAAc,EAAE,QAAgB;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { ToolName } from "@nerve/shared";
2
- import type { ToolExecutionContext, ToolExecutionResult } from "../types.js";
3
- export declare function executeTool(name: ToolName, args: Record<string, unknown>, context: ToolExecutionContext): Promise<ToolExecutionResult>;
4
- //# sourceMappingURL=dispatch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/execution/dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAW7E,wBAAsB,WAAW,CAC/B,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAiD9B"}
@@ -1,54 +0,0 @@
1
- import { executeBash } from "./bash.js";
2
- import { executeEdit } from "./edit.js";
3
- import { executeFind } from "./find.js";
4
- import { executeLs } from "./list.js";
5
- import { executeRead } from "./read.js";
6
- import { executeGrep } from "./search.js";
7
- import { executeWebFetch } from "./web-fetch.js";
8
- import { executeWebSearch } from "./web-search.js";
9
- import { executeWrite } from "./write.js";
10
- export async function executeTool(name, args, context) {
11
- switch (name) {
12
- case "read":
13
- return executeRead(args, context);
14
- case "bash":
15
- return executeBash(args, context);
16
- case "edit":
17
- return executeEdit(args, context);
18
- case "write":
19
- return executeWrite(args, context);
20
- case "grep":
21
- return executeGrep(args, context);
22
- case "find":
23
- return executeFind(args, context);
24
- case "ls":
25
- return executeLs(args, context);
26
- case "web_search":
27
- return executeWebSearch(args, context);
28
- case "web_fetch":
29
- return executeWebFetch(args, context);
30
- case "ask_user":
31
- throw new Error("ask_user is executed by the orchestrator user-interaction service.");
32
- case "todos_set":
33
- case "todos_get":
34
- throw new Error(`${name} is executed by the orchestrator task-state service.`);
35
- case "process_start":
36
- case "process_stop":
37
- case "process_restart":
38
- case "process_list":
39
- case "process_logs":
40
- // packages/tools executes only core local tools. Managed process tools are
41
- // orchestration tools: descriptors are shared for prompting/API purposes,
42
- // but execution is mediated by the orchestrator process manager.
43
- throw new Error(`${name} is executed by the orchestrator process manager.`);
44
- case "subagent_run":
45
- // Subagents require runtime/conversation authority checks owned by orchestrator.
46
- throw new Error(`${name} is executed by the orchestrator agent runtime.`);
47
- case "plan_mode_enter":
48
- case "plan_mode_present":
49
- case "plan_mode_force_exit":
50
- // Plan mode requires runtime/conversation state and user-review waiters owned by orchestrator.
51
- throw new Error(`${name} is executed by the orchestrator plan service.`);
52
- }
53
- }
54
- //# sourceMappingURL=dispatch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/execution/dispatch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAc,EACd,IAA6B,EAC7B,OAA6B;IAE7B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,KAAK,MAAM;YACT,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,KAAK,MAAM;YACT,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,KAAK,OAAO;YACV,OAAO,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrC,KAAK,MAAM;YACT,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,KAAK,MAAM;YACT,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,KAAK,IAAI;YACP,OAAO,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAClC,KAAK,YAAY;YACf,OAAO,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzC,KAAK,WAAW;YACd,OAAO,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxC,KAAK,UAAU;YACb,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;QACJ,KAAK,WAAW,CAAC;QACjB,KAAK,WAAW;YACd,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,sDAAsD,CAC9D,CAAC;QACJ,KAAK,eAAe,CAAC;QACrB,KAAK,cAAc,CAAC;QACpB,KAAK,iBAAiB,CAAC;QACvB,KAAK,cAAc,CAAC;QACpB,KAAK,cAAc;YACjB,2EAA2E;YAC3E,0EAA0E;YAC1E,iEAAiE;YACjE,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,mDAAmD,CAC3D,CAAC;QACJ,KAAK,cAAc;YACjB,iFAAiF;YACjF,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,iDAAiD,CAAC,CAAC;QAC5E,KAAK,iBAAiB,CAAC;QACvB,KAAK,mBAAmB,CAAC;QACzB,KAAK,sBAAsB;YACzB,+FAA+F;YAC/F,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,gDAAgD,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { ToolExecutionContext, ToolExecutionResult } from "../types.js";
2
- type NormalizedEdit = {
3
- oldText: string;
4
- newText: string;
5
- };
6
- export declare function executeEdit(args: Record<string, unknown>, context: ToolExecutionContext): Promise<ToolExecutionResult>;
7
- export declare function normalizeEditOperations(args: Record<string, unknown>): NormalizedEdit[];
8
- export {};
9
- //# sourceMappingURL=edit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../src/execution/edit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAK7E,KAAK,cAAc,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAG3D,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAoD9B;AAsHD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,cAAc,EAAE,CA2BlB"}
@@ -1,175 +0,0 @@
1
- import { readFile } from "node:fs/promises";
2
- import { writeTextFileAtomically } from "./atomic-write.js";
3
- import { withFileMutationQueue } from "./file-mutation-queue.js";
4
- import { resolveToolPath } from "./path.js";
5
- export async function executeEdit(args, context) {
6
- const path = resolveToolPath(context.cwd, args.path);
7
- const edits = normalizeEditOperations(args);
8
- return withFileMutationQueue(path, async () => {
9
- const raw = await readFile(path, "utf8");
10
- const bom = raw.startsWith("\uFEFF") ? "\uFEFF" : "";
11
- const withoutBom = bom ? raw.slice(1) : raw;
12
- const lineEnding = detectLineEnding(withoutBom);
13
- const content = normalizeLineEndings(withoutBom);
14
- const normalizedEdits = edits.map((edit) => ({
15
- oldText: normalizeLineEndings(edit.oldText),
16
- newText: normalizeLineEndings(edit.newText),
17
- }));
18
- const matches = normalizedEdits.map((edit, index) => findUniqueMatch(content, edit, index));
19
- const ordered = [...matches].sort((a, b) => a.start - b.start);
20
- for (let i = 1; i < ordered.length; i++) {
21
- const previous = ordered[i - 1];
22
- const current = ordered[i];
23
- if (!previous || !current)
24
- continue;
25
- if (current.start < previous.end) {
26
- throw new Error(`edits[${current.index}] overlaps edits[${previous.index}]; merge overlapping changes.`);
27
- }
28
- }
29
- let updated = content;
30
- for (const edit of [...ordered].reverse()) {
31
- updated = `${updated.slice(0, edit.start)}${edit.newText}${updated.slice(edit.end)}`;
32
- }
33
- if (updated === content) {
34
- throw new Error("Edit would not change the file.");
35
- }
36
- const restored = bom + restoreLineEndings(updated, lineEnding);
37
- await writeTextFileAtomically(path, restored);
38
- const contentMessage = `Edited file with ${edits.length} replacement(s).`;
39
- return {
40
- path,
41
- content: contentMessage,
42
- contentBlocks: [{ type: "text", text: contentMessage }],
43
- details: {
44
- diff: generateDiffString(content, updated),
45
- firstChangedLine: firstChangedLine(content, updated),
46
- lineEnding,
47
- bom: Boolean(bom),
48
- },
49
- };
50
- });
51
- }
52
- function findUniqueMatch(content, edit, index) {
53
- const first = content.indexOf(edit.oldText);
54
- if (first >= 0) {
55
- if (content.indexOf(edit.oldText, first + edit.oldText.length) >= 0) {
56
- throw new Error(`edits[${index}].oldText matched more than once; provide a unique region.`);
57
- }
58
- return { ...edit, index, start: first, end: first + edit.oldText.length };
59
- }
60
- const fuzzy = fuzzyFind(content, edit.oldText);
61
- if (!fuzzy)
62
- throw new Error(`edits[${index}].oldText was not found.`);
63
- if (fuzzy.duplicate) {
64
- throw new Error(`edits[${index}].oldText matched more than once; provide a unique region.`);
65
- }
66
- return { ...edit, index, start: fuzzy.start, end: fuzzy.end };
67
- }
68
- function fuzzyFind(content, needle) {
69
- const normalizedNeedle = normalizeForFuzzyMatch(needle);
70
- const lines = content.split("\n");
71
- const needleLineCount = needle.split("\n").length;
72
- const matches = [];
73
- const offsets = [];
74
- let offset = 0;
75
- for (const line of lines) {
76
- offsets.push(offset);
77
- offset += line.length + 1;
78
- }
79
- for (let line = 0; line < lines.length; line += 1) {
80
- for (let count = Math.max(1, needleLineCount - 1); count <= needleLineCount + 1; count += 1) {
81
- const chunk = lines.slice(line, line + count).join("\n");
82
- if (normalizeForFuzzyMatch(chunk) !== normalizedNeedle)
83
- continue;
84
- const start = offsets[line] ?? 0;
85
- const end = start + chunk.length;
86
- matches.push({ start, end });
87
- }
88
- }
89
- const first = matches[0];
90
- if (!first)
91
- return undefined;
92
- return { ...first, duplicate: matches.length > 1 };
93
- }
94
- function normalizeForFuzzyMatch(input) {
95
- return normalizeLineEndings(input)
96
- .replace(/[“”]/g, '"')
97
- .replace(/[‘’]/g, "'")
98
- .replace(/[–—]/g, "-")
99
- .split("\n")
100
- .map((line) => line.trimEnd())
101
- .join("\n")
102
- .trim();
103
- }
104
- function detectLineEnding(input) {
105
- const crlf = input.match(/\r\n/g)?.length ?? 0;
106
- const lf = input.match(/(?<!\r)\n/g)?.length ?? 0;
107
- return crlf > lf ? "\r\n" : "\n";
108
- }
109
- function normalizeLineEndings(input) {
110
- return input.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
111
- }
112
- function restoreLineEndings(input, lineEnding) {
113
- return lineEnding === "\n" ? input : input.replace(/\n/g, "\r\n");
114
- }
115
- function firstChangedLine(before, after) {
116
- const beforeLines = before.split("\n");
117
- const afterLines = after.split("\n");
118
- const length = Math.max(beforeLines.length, afterLines.length);
119
- for (let index = 0; index < length; index += 1) {
120
- if (beforeLines[index] !== afterLines[index])
121
- return index + 1;
122
- }
123
- return undefined;
124
- }
125
- function generateDiffString(before, after) {
126
- const line = firstChangedLine(before, after) ?? 1;
127
- const beforeLines = before.split("\n");
128
- const afterLines = after.split("\n");
129
- const start = Math.max(0, line - 3);
130
- const end = Math.min(Math.max(beforeLines.length, afterLines.length), line + 3);
131
- const output = [
132
- `@@ -${start + 1},${end - start} +${start + 1},${end - start} @@`,
133
- ];
134
- for (let index = start; index < end; index += 1) {
135
- const beforeLine = beforeLines[index];
136
- const afterLine = afterLines[index];
137
- if (beforeLine === afterLine)
138
- output.push(` ${beforeLine ?? ""}`);
139
- else {
140
- if (beforeLine !== undefined)
141
- output.push(`-${beforeLine}`);
142
- if (afterLine !== undefined)
143
- output.push(`+${afterLine}`);
144
- }
145
- }
146
- return output.join("\n");
147
- }
148
- export function normalizeEditOperations(args) {
149
- if (Array.isArray(args.edits)) {
150
- if (args.edits.length === 0) {
151
- throw new Error("Tool argument 'edits' must contain at least one edit.");
152
- }
153
- return args.edits.map((entry, index) => {
154
- if (!entry || typeof entry !== "object") {
155
- throw new Error(`edits[${index}] must be an object.`);
156
- }
157
- const edit = entry;
158
- if (typeof edit.oldText !== "string" || edit.oldText.length === 0) {
159
- throw new Error(`edits[${index}].oldText must be a non-empty string.`);
160
- }
161
- if (typeof edit.newText !== "string") {
162
- throw new Error(`edits[${index}].newText must be a string.`);
163
- }
164
- return { oldText: edit.oldText, newText: edit.newText };
165
- });
166
- }
167
- if (typeof args.oldText !== "string" || args.oldText.length === 0) {
168
- throw new Error("Tool argument 'oldText' must be a non-empty string.");
169
- }
170
- if (typeof args.newText !== "string") {
171
- throw new Error("Tool argument 'newText' must be a string.");
172
- }
173
- return [{ oldText: args.oldText, newText: args.newText }];
174
- }
175
- //# sourceMappingURL=edit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/execution/edit.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function withFileMutationQueue<T>(path: string, task: () => Promise<T>): Promise<T>;
2
- //# sourceMappingURL=file-mutation-queue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-mutation-queue.d.ts","sourceRoot":"","sources":["../../src/execution/file-mutation-queue.ts"],"names":[],"mappings":"AAEA,wBAAsB,qBAAqB,CAAC,CAAC,EAC3C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,CAAC,CAAC,CAoBZ"}
@@ -1,19 +0,0 @@
1
- const queues = new Map();
2
- export async function withFileMutationQueue(path, task) {
3
- const previous = queues.get(path) ?? Promise.resolve();
4
- let release;
5
- const current = new Promise((resolve) => {
6
- release = resolve;
7
- });
8
- queues.set(path, previous.then(() => current, () => current));
9
- await previous.catch(() => undefined);
10
- try {
11
- return await task();
12
- }
13
- finally {
14
- release();
15
- if (queues.get(path) === current)
16
- queues.delete(path);
17
- }
18
- }
19
- //# sourceMappingURL=file-mutation-queue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-mutation-queue.js","sourceRoot":"","sources":["../../src/execution/file-mutation-queue.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAY,EACZ,IAAsB;IAEtB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACvD,IAAI,OAAoB,CAAC;IACzB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAC5C,OAAO,GAAG,OAAO,CAAC;IACpB,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,CACR,IAAI,EACJ,QAAQ,CAAC,IAAI,CACX,GAAG,EAAE,CAAC,OAAO,EACb,GAAG,EAAE,CAAC,OAAO,CACd,CACF,CAAC;IACF,MAAM,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,EAAE,CAAC;IACtB,CAAC;YAAS,CAAC;QACT,OAAO,EAAE,CAAC;QACV,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,OAAO;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;AACH,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { ToolExecutionContext, ToolExecutionResult } from "../../types.js";
2
- type NormalizedLegacyEdit = {
3
- oldText: string;
4
- newText: string;
5
- };
6
- export declare function executeLegacyEdit(args: Record<string, unknown>, context: ToolExecutionContext): Promise<ToolExecutionResult>;
7
- export declare function normalizeLegacyEditOperations(args: Record<string, unknown>): NormalizedLegacyEdit[];
8
- export {};
9
- //# sourceMappingURL=legacy-edit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"legacy-edit.d.ts","sourceRoot":"","sources":["../../../src/execution/filesystem/legacy-edit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAahF,KAAK,oBAAoB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAOjE,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAoD9B;AA2DD,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,oBAAoB,EAAE,CA2BxB"}
@@ -1,122 +0,0 @@
1
- import { readFile } from "node:fs/promises";
2
- import { writeTextFileAtomically } from "./atomic-write.js";
3
- import { withFileMutationQueue } from "./file-mutation-queue.js";
4
- import { resolveToolPath } from "./path.js";
5
- import { detectLineEnding, firstChangedLine, generateDiffString, normalizeForTrimmedMatch, normalizeLineEndings, restoreLineEndings, } from "./text-editing.js";
6
- export async function executeLegacyEdit(args, context) {
7
- const path = resolveToolPath(context.cwd, args.path);
8
- const edits = normalizeLegacyEditOperations(args);
9
- return withFileMutationQueue(path, async () => {
10
- const raw = await readFile(path, "utf8");
11
- const bom = raw.startsWith("\uFEFF") ? "\uFEFF" : "";
12
- const withoutBom = bom ? raw.slice(1) : raw;
13
- const lineEnding = detectLineEnding(withoutBom);
14
- const content = normalizeLineEndings(withoutBom);
15
- const normalizedEdits = edits.map((edit) => ({
16
- oldText: normalizeLineEndings(edit.oldText),
17
- newText: normalizeLineEndings(edit.newText),
18
- }));
19
- const matches = normalizedEdits.map((edit, index) => findUniqueMatch(content, edit, index));
20
- const ordered = [...matches].sort((a, b) => a.start - b.start);
21
- for (let i = 1; i < ordered.length; i++) {
22
- const previous = ordered[i - 1];
23
- const current = ordered[i];
24
- if (!previous || !current)
25
- continue;
26
- if (current.start < previous.end) {
27
- throw new Error(`edits[${current.index}] overlaps edits[${previous.index}]; merge overlapping changes.`);
28
- }
29
- }
30
- let updated = content;
31
- for (const edit of [...ordered].reverse()) {
32
- updated = `${updated.slice(0, edit.start)}${edit.newText}${updated.slice(edit.end)}`;
33
- }
34
- if (updated === content) {
35
- throw new Error("Legacy edit would not change the file.");
36
- }
37
- const restored = bom + restoreLineEndings(updated, lineEnding);
38
- await writeTextFileAtomically(path, restored);
39
- const contentMessage = `Edited file with ${edits.length} replacement(s).`;
40
- return {
41
- path,
42
- content: contentMessage,
43
- contentBlocks: [{ type: "text", text: contentMessage }],
44
- details: {
45
- diff: generateDiffString(content, updated),
46
- firstChangedLine: firstChangedLine(content, updated),
47
- lineEnding,
48
- bom: Boolean(bom),
49
- },
50
- };
51
- });
52
- }
53
- function findUniqueMatch(content, edit, index) {
54
- const first = content.indexOf(edit.oldText);
55
- if (first >= 0) {
56
- if (content.indexOf(edit.oldText, first + edit.oldText.length) >= 0) {
57
- throw new Error(`edits[${index}].oldText matched more than once; provide a unique region.`);
58
- }
59
- return { ...edit, index, start: first, end: first + edit.oldText.length };
60
- }
61
- const fuzzy = fuzzyFind(content, edit.oldText);
62
- if (!fuzzy)
63
- throw new Error(`edits[${index}].oldText was not found.`);
64
- if (fuzzy.duplicate) {
65
- throw new Error(`edits[${index}].oldText matched more than once; provide a unique region.`);
66
- }
67
- return { ...edit, index, start: fuzzy.start, end: fuzzy.end };
68
- }
69
- function fuzzyFind(content, needle) {
70
- const normalizedNeedle = normalizeForTrimmedMatch(needle);
71
- const lines = content.split("\n");
72
- const needleLineCount = needle.split("\n").length;
73
- const matches = [];
74
- const offsets = [];
75
- let offset = 0;
76
- for (const line of lines) {
77
- offsets.push(offset);
78
- offset += line.length + 1;
79
- }
80
- for (let line = 0; line < lines.length; line += 1) {
81
- for (let count = Math.max(1, needleLineCount - 1); count <= needleLineCount + 1; count += 1) {
82
- const chunk = lines.slice(line, line + count).join("\n");
83
- if (normalizeForTrimmedMatch(chunk) !== normalizedNeedle)
84
- continue;
85
- const start = offsets[line] ?? 0;
86
- const end = start + chunk.length;
87
- matches.push({ start, end });
88
- }
89
- }
90
- const first = matches[0];
91
- if (!first)
92
- return undefined;
93
- return { ...first, duplicate: matches.length > 1 };
94
- }
95
- export function normalizeLegacyEditOperations(args) {
96
- if (Array.isArray(args.edits)) {
97
- if (args.edits.length === 0) {
98
- throw new Error("Tool argument 'edits' must contain at least one edit.");
99
- }
100
- return args.edits.map((entry, index) => {
101
- if (!entry || typeof entry !== "object") {
102
- throw new Error(`edits[${index}] must be an object.`);
103
- }
104
- const edit = entry;
105
- if (typeof edit.oldText !== "string" || edit.oldText.length === 0) {
106
- throw new Error(`edits[${index}].oldText must be a non-empty string.`);
107
- }
108
- if (typeof edit.newText !== "string") {
109
- throw new Error(`edits[${index}].newText must be a string.`);
110
- }
111
- return { oldText: edit.oldText, newText: edit.newText };
112
- });
113
- }
114
- if (typeof args.oldText !== "string" || args.oldText.length === 0) {
115
- throw new Error("Tool argument 'oldText' must be a non-empty string.");
116
- }
117
- if (typeof args.newText !== "string") {
118
- throw new Error("Tool argument 'newText' must be a string.");
119
- }
120
- return [{ oldText: args.oldText, newText: args.newText }];
121
- }
122
- //# sourceMappingURL=legacy-edit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"legacy-edit.js","sourceRoot":"","sources":["../../../src/execution/filesystem/legacy-edit.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { ToolExecutionContext, ToolExecutionResult } from "../types.js";
2
- export declare function executeFind(args: Record<string, unknown>, context: ToolExecutionContext): Promise<ToolExecutionResult>;
3
- //# sourceMappingURL=find.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../src/execution/find.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAY7E,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CA0B9B"}