@wrongstack/tools 0.320.1 → 1.0.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.
- package/dist/_danger-detect.d.ts +8 -0
- package/dist/_syntax-check.d.ts +1 -2
- package/dist/audit.d.ts +4 -5
- package/dist/audit.js +6 -6
- package/dist/auto-proceed-loop-guard.js +9 -160
- package/dist/bash-kill-guard.d.ts +2 -3
- package/dist/bash.d.ts +2 -3
- package/dist/bash.js +4 -4
- package/dist/batch-tool-use.d.ts +2 -3
- package/dist/batch-tool-use.js +1 -1
- package/dist/browser/index.d.ts +1 -1
- package/dist/browser/index.js +1 -1
- package/dist/browser/tools.d.ts +56 -45
- package/dist/builtin.js +50 -50
- package/dist/{chunk-T77XOX7E.js → chunk-24T5XIJU.js} +1 -1
- package/dist/{chunk-DTQ75VBC.js → chunk-2CTZW6JQ.js} +2 -2
- package/dist/chunk-37QKUQ2Z.js +171 -0
- package/dist/{chunk-KWXIKGE3.js → chunk-3D5DJWOE.js} +3 -3
- package/dist/{chunk-XSSFBS5I.js → chunk-4ERMPDHV.js} +11 -6
- package/dist/{chunk-QSNVDHOZ.js → chunk-4WPBS45A.js} +4 -5
- package/dist/{chunk-4CQWNZ62.js → chunk-5ITQPCLC.js} +2 -2
- package/dist/{chunk-B4HTSV6Z.js → chunk-5KS24LTS.js} +11 -11
- package/dist/{chunk-QPNYDH5B.js → chunk-62OAECEQ.js} +29 -7
- package/dist/{chunk-DFQDJT22.js → chunk-6GOZTS6F.js} +3 -3
- package/dist/{chunk-34VLZ35Z.js → chunk-7HL23T3T.js} +63 -10
- package/dist/{chunk-HFXSNKCV.js → chunk-7JJFC6CT.js} +1 -1
- package/dist/{chunk-NDIT3SBZ.js → chunk-7N5U2RAU.js} +2 -2
- package/dist/{chunk-QBV725YG.js → chunk-7ODZTPCU.js} +2 -2
- package/dist/{chunk-4BABEJC2.js → chunk-AB2CAUOP.js} +64 -53
- package/dist/{chunk-6AAOT4PW.js → chunk-AQ5YBURX.js} +16 -4
- package/dist/{chunk-ZMW6WJFT.js → chunk-ASEXQRA7.js} +3 -3
- package/dist/{chunk-FRN7TIAA.js → chunk-B3MGJBFI.js} +1 -1
- package/dist/{chunk-JLYA4X7K.js → chunk-CGXTR34H.js} +21 -6
- package/dist/{chunk-IU4DV2PA.js → chunk-CHEK3ASV.js} +6 -3
- package/dist/{chunk-GOIZNNOA.js → chunk-DJYLI7EW.js} +1 -1
- package/dist/{chunk-Z6IHMJMC.js → chunk-DK4J2WMH.js} +11 -11
- package/dist/{chunk-OYP27E3I.js → chunk-DRRY6SCM.js} +47 -20
- package/dist/{chunk-BK732J7I.js → chunk-FBUP524S.js} +4 -4
- package/dist/{chunk-NYRLWDT5.js → chunk-FVM3O4JQ.js} +1 -1
- package/dist/chunk-FYDBUVQD.js +244 -0
- package/dist/{chunk-PV6HIZQD.js → chunk-GDDXX27P.js} +50 -50
- package/dist/{chunk-3GIKYHLA.js → chunk-GKSG5CPH.js} +6 -6
- package/dist/{chunk-ESLPBT5A.js → chunk-HDYUBRMF.js} +4 -3
- package/dist/{chunk-ELRRTWNP.js → chunk-IXIS7RSG.js} +2 -2
- package/dist/{chunk-HR67OWEP.js → chunk-IYH4OHBP.js} +5 -5
- package/dist/{chunk-W232EFEM.js → chunk-JDOO4P6Z.js} +7 -4
- package/dist/{chunk-OTPTQBYE.js → chunk-KDEXUQY7.js} +19 -8
- package/dist/{chunk-2OXHS3KZ.js → chunk-KLJZ4WV4.js} +4 -3
- package/dist/{chunk-3M7LLN7W.js → chunk-LQSOU63Z.js} +12 -11
- package/dist/{chunk-JVRLTEO7.js → chunk-M6UV67BH.js} +2 -2
- package/dist/{chunk-C2DQKVLO.js → chunk-MJSJWXBF.js} +1 -1
- package/dist/{chunk-NSPNFOJ7.js → chunk-MK2JK35J.js} +25 -10
- package/dist/{chunk-JSNSMG5R.js → chunk-MSOAX3GC.js} +1 -1
- package/dist/{chunk-J43O3BOX.js → chunk-N3K2SFEI.js} +532 -492
- package/dist/{chunk-J74TMK4M.js → chunk-NJX2RXKJ.js} +50 -7
- package/dist/{chunk-5UFVCIUB.js → chunk-NN2SNP2R.js} +4 -4
- package/dist/{chunk-WAQASTXB.js → chunk-O6BY43ZB.js} +29 -8
- package/dist/{chunk-QGF2C7TF.js → chunk-PVCB7RUZ.js} +2 -2
- package/dist/{chunk-YTKSNTT4.js → chunk-QA6IASYX.js} +8 -8
- package/dist/{chunk-VPALDFYM.js → chunk-RV7BVTDG.js} +1 -1
- package/dist/chunk-S57CDR2H.js +288 -0
- package/dist/{chunk-W2CECGTG.js → chunk-SMARDKAC.js} +1 -1
- package/dist/{chunk-QWKSKFKZ.js → chunk-SOR7OCYP.js} +1 -1
- package/dist/{chunk-I7FBZOEP.js → chunk-T3SMFF5Q.js} +11 -5
- package/dist/{chunk-4BHUSMNL.js → chunk-UI3ZJIG3.js} +1 -1
- package/dist/{chunk-WXJY3BKV.js → chunk-VBF2YXUW.js} +2 -2
- package/dist/{chunk-FQNXYA6W.js → chunk-VU3QBYL4.js} +36 -5
- package/dist/{chunk-VD2LV5WO.js → chunk-VZGPASGD.js} +37 -12
- package/dist/{chunk-UZFY3CKD.js → chunk-WEEVSWQB.js} +17 -6
- package/dist/chunk-XXRMF2BC.js +186 -0
- package/dist/{chunk-LRDIRJJL.js → chunk-YEISRT4S.js} +5 -11
- package/dist/{chunk-Q5JPPCZC.js → chunk-YJTXRH5Y.js} +3 -2
- package/dist/{chunk-23EX5WDO.js → chunk-YULVUTK5.js} +3 -3
- package/dist/{chunk-Z5Q3TXRY.js → chunk-ZTCJCYLN.js} +3 -3
- package/dist/circuit-breaker.d.ts +1 -0
- package/dist/circuit-breaker.js +1 -1
- package/dist/clarify.d.ts +1 -0
- package/dist/codebase-index/codebase-ast-replace-tool.d.ts +2 -3
- package/dist/codebase-index/codebase-impact-analysis-tool.d.ts +5 -4
- package/dist/codebase-index/codebase-incoming-calls-tool.d.ts +4 -3
- package/dist/codebase-index/codebase-index-tool.d.ts +2 -3
- package/dist/codebase-index/codebase-invariant-check-tool.d.ts +2 -3
- package/dist/codebase-index/codebase-outgoing-calls-tool.d.ts +4 -3
- package/dist/codebase-index/codebase-repo-map-tool.d.ts +2 -3
- package/dist/codebase-index/codebase-search-tool.d.ts +2 -3
- package/dist/codebase-index/codebase-skeleton-tool.d.ts +2 -3
- package/dist/codebase-index/codebase-stats-tool.d.ts +9 -3
- package/dist/codebase-index/codebase-targeted-test-tool.d.ts +4 -3
- package/dist/codebase-index/index.d.ts +11 -11
- package/dist/codebase-index/index.js +8 -8
- package/dist/codebase-index/project-server-framing.d.ts +29 -0
- package/dist/codebase-index/project-server-lifecycle.d.ts +20 -0
- package/dist/codebase-index/project-server-operations.d.ts +37 -0
- package/dist/codebase-index/project-server-types.d.ts +30 -0
- package/dist/codebase-index/project-server-watcher.d.ts +25 -0
- package/dist/codebase-index/project-server.js +448 -391
- package/dist/codebase-index/worker.js +2 -2
- package/dist/codebase-index/writer-init.d.ts +13 -0
- package/dist/codebase-index/writer-maintenance.d.ts +14 -0
- package/dist/codebase-index/writer.d.ts +0 -15
- package/dist/design.d.ts +2 -2
- package/dist/design.js +1 -1
- package/dist/diff.d.ts +4 -4
- package/dist/diff.js +1 -1
- package/dist/document.d.ts +3 -4
- package/dist/document.js +1 -1
- package/dist/e2e.d.ts +1 -1
- package/dist/e2e.js +1 -1
- package/dist/edit.d.ts +3 -3
- package/dist/edit.js +6 -6
- package/dist/exec.d.ts +2 -3
- package/dist/exec.js +4 -4
- package/dist/fetch.d.ts +4 -3
- package/dist/fetch.js +1 -1
- package/dist/format.d.ts +17 -45
- package/dist/format.js +12 -8
- package/dist/git.d.ts +3 -3
- package/dist/git.js +1 -1
- package/dist/glob.d.ts +2 -3
- package/dist/glob.js +2 -2
- package/dist/grep.d.ts +7 -5
- package/dist/grep.js +3 -3
- package/dist/index.d.ts +54 -45
- package/dist/index.js +118 -59
- package/dist/install.d.ts +7 -55
- package/dist/install.js +6 -6
- package/dist/json.d.ts +3 -4
- package/dist/json.js +2 -2
- package/dist/kanban-tool-types.d.ts +1 -2
- package/dist/kanban.d.ts +3 -19
- package/dist/kanban.js +1 -1
- package/dist/languages/execute-tool.d.ts +2 -3
- package/dist/languages/index.d.ts +2 -2
- package/dist/languages/index.js +4 -4
- package/dist/languages/tool.d.ts +3 -4
- package/dist/{legacy-bridge-FOV5ODDI.js → legacy-bridge-YXANP5QB.js} +6 -6
- package/dist/lint.d.ts +5 -4
- package/dist/lint.js +6 -6
- package/dist/logs.d.ts +3 -4
- package/dist/logs.js +2 -2
- package/dist/memory.d.ts +7 -8
- package/dist/memory.js +1 -1
- package/dist/mode.d.ts +3 -4
- package/dist/mode.js +1 -1
- package/dist/next-steps-tool.d.ts +2 -3
- package/dist/next-steps.d.ts +4 -0
- package/dist/next-steps.js +9 -175
- package/dist/outdated.d.ts +5 -29
- package/dist/outdated.js +3 -3
- package/dist/pack.js +51 -51
- package/dist/patch.d.ts +2 -3
- package/dist/patch.js +5 -5
- package/dist/plan.d.ts +4 -4
- package/dist/plan.js +3 -3
- package/dist/process-registry.js +2 -2
- package/dist/ps-slash.js +4 -4
- package/dist/pwsh.d.ts +1 -0
- package/dist/read.d.ts +5 -5
- package/dist/read.js +5 -5
- package/dist/replace.d.ts +2 -3
- package/dist/replace.js +6 -6
- package/dist/scaffold.d.ts +7 -3
- package/dist/scaffold.js +3 -1
- package/dist/search.d.ts +17 -3
- package/dist/search.js +5 -1
- package/dist/set-working-dir.d.ts +2 -3
- package/dist/skill.d.ts +4 -5
- package/dist/skill.js +1 -1
- package/dist/task.d.ts +6 -6
- package/dist/task.js +3 -3
- package/dist/test.d.ts +5 -4
- package/dist/test.js +6 -6
- package/dist/todo.d.ts +8 -8
- package/dist/todo.js +2 -2
- package/dist/tool-diff.js +11 -230
- package/dist/tool-help.d.ts +2 -3
- package/dist/tool-help.js +1 -1
- package/dist/tool-search.d.ts +2 -3
- package/dist/tool-search.js +1 -1
- package/dist/tool-summary.js +5 -281
- package/dist/tool-tier.js +52 -52
- package/dist/tool-use.d.ts +2 -3
- package/dist/tool-use.js +1 -1
- package/dist/tree.d.ts +5 -3
- package/dist/tree.js +5 -1
- package/dist/typecheck.d.ts +3 -3
- package/dist/typecheck.js +6 -6
- package/dist/write.d.ts +2 -3
- package/dist/write.js +6 -6
- package/package.json +5 -5
- package/dist/spawn-background.d.ts +0 -80
package/dist/tool-diff.js
CHANGED
|
@@ -1,233 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
if (input && typeof input === "object") return input;
|
|
17
|
-
return null;
|
|
18
|
-
}
|
|
19
|
-
function diffFromToolInput(toolName, input) {
|
|
20
|
-
if (!toolName) return null;
|
|
21
|
-
const obj = asObject(input);
|
|
22
|
-
if (!obj) return null;
|
|
23
|
-
const name = toolName.toLowerCase();
|
|
24
|
-
const filePath = String(obj.file_path ?? obj.path ?? "");
|
|
25
|
-
switch (name) {
|
|
26
|
-
case "edit":
|
|
27
|
-
case "str_replace":
|
|
28
|
-
case "edit_file":
|
|
29
|
-
case "multi_edit": {
|
|
30
|
-
const oldText = typeof obj.old_string === "string" ? obj.old_string : "";
|
|
31
|
-
const newText = typeof obj.new_string === "string" ? obj.new_string : "";
|
|
32
|
-
if (!oldText && !newText) return null;
|
|
33
|
-
return { mode: "lcs", oldText, newText, caption: `edit ${filePath}`.trim() };
|
|
34
|
-
}
|
|
35
|
-
case "write":
|
|
36
|
-
case "write_file":
|
|
37
|
-
case "create_file": {
|
|
38
|
-
const content = typeof obj.content === "string" ? obj.content : "";
|
|
39
|
-
if (!content) return null;
|
|
40
|
-
return {
|
|
41
|
-
mode: "lcs",
|
|
42
|
-
oldText: "",
|
|
43
|
-
newText: content,
|
|
44
|
-
caption: `write ${filePath} (new)`.trim()
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
case "patch": {
|
|
48
|
-
const patchText = typeof obj.patch === "string" ? obj.patch : "";
|
|
49
|
-
if (!patchText.trim()) return null;
|
|
50
|
-
return { mode: "unified", patchText, caption: filePath ? `patch ${filePath}` : "patch" };
|
|
51
|
-
}
|
|
52
|
-
default:
|
|
53
|
-
return null;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
function computeLineDiff(oldText, newText) {
|
|
57
|
-
const a = oldText.split("\n");
|
|
58
|
-
const b = newText.split("\n");
|
|
59
|
-
if (a.length > DIFF_MAX_LINES || b.length > DIFF_MAX_LINES) return null;
|
|
60
|
-
const n = a.length;
|
|
61
|
-
const m = b.length;
|
|
62
|
-
const dp = Array.from({ length: n + 1 }, () => new Array(m + 1).fill(0));
|
|
63
|
-
for (let i2 = n - 1; i2 >= 0; i2--) {
|
|
64
|
-
for (let j2 = m - 1; j2 >= 0; j2--) {
|
|
65
|
-
dp[i2][j2] = a[i2] === b[j2] ? dp[i2 + 1][j2 + 1] + 1 : Math.max(dp[i2 + 1][j2], dp[i2][j2 + 1]);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
const rows = [];
|
|
69
|
-
let i = 0;
|
|
70
|
-
let j = 0;
|
|
71
|
-
while (i < n && j < m) {
|
|
72
|
-
if (a[i] === b[j]) {
|
|
73
|
-
rows.push({ kind: "ctx", text: a[i] });
|
|
74
|
-
i++;
|
|
75
|
-
j++;
|
|
76
|
-
} else if (dp[i + 1][j] >= dp[i][j + 1]) {
|
|
77
|
-
rows.push({ kind: "del", text: a[i] });
|
|
78
|
-
i++;
|
|
79
|
-
} else {
|
|
80
|
-
rows.push({ kind: "add", text: b[j] });
|
|
81
|
-
j++;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
while (i < n) rows.push({ kind: "del", text: a[i++] });
|
|
85
|
-
while (j < m) rows.push({ kind: "add", text: b[j++] });
|
|
86
|
-
return rows;
|
|
87
|
-
}
|
|
88
|
-
function parseUnifiedDiff(patchText) {
|
|
89
|
-
const rows = [];
|
|
90
|
-
const lines = patchText.split("\n");
|
|
91
|
-
for (const raw of lines) {
|
|
92
|
-
if (raw.startsWith("@@") || raw.startsWith("--- ") || raw.startsWith("+++ ") || raw.startsWith("diff ") || raw.startsWith("index ") || raw.startsWith("\\ ")) {
|
|
93
|
-
rows.push({ kind: "meta", text: raw });
|
|
94
|
-
} else if (raw.startsWith("+")) {
|
|
95
|
-
rows.push({ kind: "add", text: raw.slice(1) });
|
|
96
|
-
} else if (raw.startsWith("-")) {
|
|
97
|
-
rows.push({ kind: "del", text: raw.slice(1) });
|
|
98
|
-
} else {
|
|
99
|
-
rows.push({ kind: "ctx", text: raw.startsWith(" ") ? raw.slice(1) : raw });
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
if (rows.length > 0 && rows[rows.length - 1].kind === "ctx" && rows[rows.length - 1].text === "") {
|
|
103
|
-
rows.pop();
|
|
104
|
-
}
|
|
105
|
-
return rows;
|
|
106
|
-
}
|
|
107
|
-
function diffRowsFromToolInput(toolName, input) {
|
|
108
|
-
const d = diffFromToolInput(toolName, input);
|
|
109
|
-
if (!d) return null;
|
|
110
|
-
if (d.mode === "unified") return { caption: d.caption, rows: parseUnifiedDiff(d.patchText) };
|
|
111
|
-
return { caption: d.caption, rows: computeLineDiff(d.oldText, d.newText) };
|
|
112
|
-
}
|
|
113
|
-
var DIFF_LINE_SAFETY_CAP = 4e3;
|
|
114
|
-
function truncMid(s, max) {
|
|
115
|
-
if (s.length <= max) return s;
|
|
116
|
-
return `${s.slice(0, max - 1)}\u2026`;
|
|
117
|
-
}
|
|
118
|
-
function parseUnifiedDiffPreview(diff, maxLines, lineCap = DIFF_LINE_SAFETY_CAP) {
|
|
119
|
-
const all = [];
|
|
120
|
-
let oldLn = 0;
|
|
121
|
-
let newLn = 0;
|
|
122
|
-
for (const raw of diff.split("\n")) {
|
|
123
|
-
const line = raw.replace(/\r$/, "");
|
|
124
|
-
if (line.startsWith("+++") || line.startsWith("---")) continue;
|
|
125
|
-
if (line.startsWith("diff --git") || line.startsWith("index ")) continue;
|
|
126
|
-
if (line.startsWith("@@")) {
|
|
127
|
-
const m = line.match(/^@@\s+-(\d+)(?:,\d+)?\s+\+(\d+)(?:,\d+)?\s+@@/);
|
|
128
|
-
if (m) {
|
|
129
|
-
oldLn = Number.parseInt(m[1] ?? "0", 10) || 0;
|
|
130
|
-
newLn = Number.parseInt(m[2] ?? "0", 10) || 0;
|
|
131
|
-
}
|
|
132
|
-
all.push({ kind: "hunk", text: truncMid(line, 60) });
|
|
133
|
-
continue;
|
|
134
|
-
}
|
|
135
|
-
if (line.startsWith("+")) {
|
|
136
|
-
all.push({ kind: "add", text: truncMid(line, lineCap), newLine: newLn });
|
|
137
|
-
newLn++;
|
|
138
|
-
continue;
|
|
139
|
-
}
|
|
140
|
-
if (line.startsWith("-")) {
|
|
141
|
-
all.push({ kind: "del", text: truncMid(line, lineCap), oldLine: oldLn });
|
|
142
|
-
oldLn++;
|
|
143
|
-
continue;
|
|
144
|
-
}
|
|
145
|
-
if (line.startsWith("\\ No newline")) {
|
|
146
|
-
all.push({ kind: "meta", text: line });
|
|
147
|
-
continue;
|
|
148
|
-
}
|
|
149
|
-
if (line.length === 0) continue;
|
|
150
|
-
all.push({ kind: "ctx", text: truncMid(line, lineCap), oldLine: oldLn, newLine: newLn });
|
|
151
|
-
oldLn++;
|
|
152
|
-
newLn++;
|
|
153
|
-
}
|
|
154
|
-
const added = all.filter((row) => row.kind === "add").length;
|
|
155
|
-
const removed = all.filter((row) => row.kind === "del").length;
|
|
156
|
-
if (all.length === 0) {
|
|
157
|
-
return { rows: [], hidden: 0, added: 0, removed: 0, hiddenAdded: 0, hiddenRemoved: 0 };
|
|
158
|
-
}
|
|
159
|
-
if (all.length <= maxLines) {
|
|
160
|
-
return { rows: all, hidden: 0, added, removed, hiddenAdded: 0, hiddenRemoved: 0 };
|
|
161
|
-
}
|
|
162
|
-
const rows = all.slice(0, maxLines);
|
|
163
|
-
const hiddenRows = all.slice(maxLines);
|
|
164
|
-
return {
|
|
165
|
-
rows,
|
|
166
|
-
hidden: hiddenRows.length,
|
|
167
|
-
added,
|
|
168
|
-
removed,
|
|
169
|
-
hiddenAdded: hiddenRows.filter((row) => row.kind === "add").length,
|
|
170
|
-
hiddenRemoved: hiddenRows.filter((row) => row.kind === "del").length
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
var TOOL_DIFF_BROWSER_SRC = [
|
|
174
|
-
"var DIFF_MAX_LINES = 5000;",
|
|
175
|
-
"function __diffObj(input){",
|
|
176
|
-
' if(typeof input==="string"){ var s=input.trim(); if(s.charAt(0)==="{"||s.charAt(0)==="["){ try{ var p=JSON.parse(s); if(p&&typeof p==="object") return p; }catch(_e){} } return null; }',
|
|
177
|
-
' if(input&&typeof input==="object") return input; return null;',
|
|
178
|
-
"}",
|
|
179
|
-
"function diffFromToolInput(name, input){",
|
|
180
|
-
" if(!name) return null;",
|
|
181
|
-
" var obj=__diffObj(input); if(!obj) return null;",
|
|
182
|
-
" var n=String(name).toLowerCase();",
|
|
183
|
-
' var fp=String(obj.file_path!=null?obj.file_path:(obj.path!=null?obj.path:""));',
|
|
184
|
-
' if(n==="edit"||n==="str_replace"||n==="edit_file"||n==="multi_edit"){',
|
|
185
|
-
' var oldT=typeof obj.old_string==="string"?obj.old_string:"";',
|
|
186
|
-
' var newT=typeof obj.new_string==="string"?obj.new_string:"";',
|
|
187
|
-
" if(!oldT&&!newT) return null;",
|
|
188
|
-
' return { mode:"lcs", oldText:oldT, newText:newT, caption:("edit "+fp).replace(/\\s+$/,"") };',
|
|
189
|
-
" }",
|
|
190
|
-
' if(n==="write"||n==="write_file"||n==="create_file"){',
|
|
191
|
-
' var c=typeof obj.content==="string"?obj.content:"";',
|
|
192
|
-
" if(!c) return null;",
|
|
193
|
-
' return { mode:"lcs", oldText:"", newText:c, caption:("write "+fp+" (new)").replace(/^\\s+/,"").replace(/\\s+$/,"") };',
|
|
194
|
-
" }",
|
|
195
|
-
' if(n==="patch"){',
|
|
196
|
-
' var pt=typeof obj.patch==="string"?obj.patch:"";',
|
|
197
|
-
' if(!pt.replace(/\\s/g,"")) return null;',
|
|
198
|
-
' return { mode:"unified", patchText:pt, caption: fp ? ("patch "+fp) : "patch" };',
|
|
199
|
-
" }",
|
|
200
|
-
" return null;",
|
|
201
|
-
"}",
|
|
202
|
-
"function computeLineDiff(oldText, newText){",
|
|
203
|
-
' var a=oldText.split("\\n"), b=newText.split("\\n");',
|
|
204
|
-
" if(a.length>DIFF_MAX_LINES||b.length>DIFF_MAX_LINES) return null;",
|
|
205
|
-
" var nn=a.length, mm=b.length, i, j;",
|
|
206
|
-
" var dp=new Array(nn+1); for(i=0;i<=nn;i++){ dp[i]=new Array(mm+1); for(j=0;j<=mm;j++) dp[i][j]=0; }",
|
|
207
|
-
" for(i=nn-1;i>=0;i--){ for(j=mm-1;j>=0;j--){ dp[i][j]= a[i]===b[j] ? dp[i+1][j+1]+1 : Math.max(dp[i+1][j], dp[i][j+1]); } }",
|
|
208
|
-
" var rows=[]; i=0; j=0;",
|
|
209
|
-
' while(i<nn&&j<mm){ if(a[i]===b[j]){ rows.push({kind:"ctx",text:a[i]}); i++; j++; } else if(dp[i+1][j]>=dp[i][j+1]){ rows.push({kind:"del",text:a[i]}); i++; } else { rows.push({kind:"add",text:b[j]}); j++; } }',
|
|
210
|
-
' while(i<nn){ rows.push({kind:"del",text:a[i]}); i++; }',
|
|
211
|
-
' while(j<mm){ rows.push({kind:"add",text:b[j]}); j++; }',
|
|
212
|
-
" return rows;",
|
|
213
|
-
"}",
|
|
214
|
-
"function parseUnifiedDiff(patchText){",
|
|
215
|
-
' var rows=[], lines=patchText.split("\\n"), k, raw;',
|
|
216
|
-
" for(k=0;k<lines.length;k++){ raw=lines[k];",
|
|
217
|
-
' if(raw.indexOf("@@")===0||raw.indexOf("--- ")===0||raw.indexOf("+++ ")===0||raw.indexOf("diff ")===0||raw.indexOf("index ")===0||raw.indexOf("\\\\ ")===0){ rows.push({kind:"meta",text:raw}); }',
|
|
218
|
-
' else if(raw.charAt(0)==="+"){ rows.push({kind:"add",text:raw.slice(1)}); }',
|
|
219
|
-
' else if(raw.charAt(0)==="-"){ rows.push({kind:"del",text:raw.slice(1)}); }',
|
|
220
|
-
' else { rows.push({kind:"ctx",text: raw.charAt(0)===" " ? raw.slice(1) : raw}); }',
|
|
221
|
-
" }",
|
|
222
|
-
' if(rows.length>0 && rows[rows.length-1].kind==="ctx" && rows[rows.length-1].text===""){ rows.pop(); }',
|
|
223
|
-
" return rows;",
|
|
224
|
-
"}",
|
|
225
|
-
"function diffRowsFromToolInput(name, input){",
|
|
226
|
-
" var d=diffFromToolInput(name, input); if(!d) return null;",
|
|
227
|
-
' if(d.mode==="unified") return { caption:d.caption, rows:parseUnifiedDiff(d.patchText) };',
|
|
228
|
-
" return { caption:d.caption, rows:computeLineDiff(d.oldText, d.newText) };",
|
|
229
|
-
"}"
|
|
230
|
-
].join("\n");
|
|
1
|
+
import {
|
|
2
|
+
DIFF_LINE_SAFETY_CAP,
|
|
3
|
+
DIFF_MAX_LINES,
|
|
4
|
+
TOOL_DIFF_BROWSER_SRC,
|
|
5
|
+
computeLineDiff,
|
|
6
|
+
diffFromToolInput,
|
|
7
|
+
diffRowsFromToolInput,
|
|
8
|
+
parseUnifiedDiff,
|
|
9
|
+
parseUnifiedDiffPreview,
|
|
10
|
+
truncMid
|
|
11
|
+
} from "./chunk-FYDBUVQD.js";
|
|
231
12
|
export {
|
|
232
13
|
DIFF_LINE_SAFETY_CAP,
|
|
233
14
|
DIFF_MAX_LINES,
|
package/dist/tool-help.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Tool } from '@wrongstack/core/types';
|
|
2
|
-
interface ToolHelpInput {
|
|
2
|
+
export interface ToolHelpInput {
|
|
3
3
|
tool?: string | undefined;
|
|
4
4
|
format?: 'short' | 'full' | 'markdown' | undefined;
|
|
5
5
|
include_examples?: boolean | undefined;
|
|
6
6
|
}
|
|
7
|
-
interface ToolHelpOutput {
|
|
7
|
+
export interface ToolHelpOutput {
|
|
8
8
|
tool?: string | undefined;
|
|
9
9
|
help: string;
|
|
10
10
|
tools: {
|
|
@@ -18,5 +18,4 @@ interface ToolHelpOutput {
|
|
|
18
18
|
total: number;
|
|
19
19
|
}
|
|
20
20
|
export declare const toolHelpTool: Tool<ToolHelpInput, ToolHelpOutput>;
|
|
21
|
-
export {};
|
|
22
21
|
//# sourceMappingURL=tool-help.d.ts.map
|
package/dist/tool-help.js
CHANGED
package/dist/tool-search.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { Tool } from '@wrongstack/core/types';
|
|
2
|
-
interface ToolSearchInput {
|
|
2
|
+
export interface ToolSearchInput {
|
|
3
3
|
query?: string | undefined;
|
|
4
4
|
tags?: string[] | undefined;
|
|
5
5
|
permission?: 'auto' | 'confirm' | 'deny' | undefined;
|
|
6
6
|
mutating?: boolean | undefined;
|
|
7
7
|
limit?: number | undefined;
|
|
8
8
|
}
|
|
9
|
-
interface ToolSearchOutput {
|
|
9
|
+
export interface ToolSearchOutput {
|
|
10
10
|
tools: {
|
|
11
11
|
name: string;
|
|
12
12
|
description: string;
|
|
@@ -19,5 +19,4 @@ interface ToolSearchOutput {
|
|
|
19
19
|
_available?: number;
|
|
20
20
|
}
|
|
21
21
|
export declare const toolSearchTool: Tool<ToolSearchInput, ToolSearchOutput>;
|
|
22
|
-
export {};
|
|
23
22
|
//# sourceMappingURL=tool-search.d.ts.map
|
package/dist/tool-search.js
CHANGED
package/dist/tool-summary.js
CHANGED
|
@@ -1,284 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
"symbol",
|
|
7
|
-
"command",
|
|
8
|
-
"cmd",
|
|
9
|
-
"url",
|
|
10
|
-
"query",
|
|
11
|
-
"description",
|
|
12
|
-
"content"
|
|
13
|
-
];
|
|
14
|
-
function clip(s, n) {
|
|
15
|
-
return s.length > n ? `${s.slice(0, n - 1)}\u2026` : s;
|
|
16
|
-
}
|
|
17
|
-
function pickPath(obj) {
|
|
18
|
-
const p = obj.file_path ?? obj.path ?? obj.filepath;
|
|
19
|
-
return typeof p === "string" ? p : "";
|
|
20
|
-
}
|
|
21
|
-
function safeJson(v) {
|
|
22
|
-
try {
|
|
23
|
-
return JSON.stringify(v);
|
|
24
|
-
} catch {
|
|
25
|
-
return String(v);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
function coerceInput(input) {
|
|
29
|
-
if (typeof input === "string") {
|
|
30
|
-
const s = input.trim();
|
|
31
|
-
if (s.startsWith("{") || s.startsWith("[")) {
|
|
32
|
-
try {
|
|
33
|
-
const parsed = JSON.parse(s);
|
|
34
|
-
if (parsed && typeof parsed === "object")
|
|
35
|
-
return { obj: parsed, raw: parsed };
|
|
36
|
-
} catch {
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
return { obj: null, raw: input };
|
|
40
|
-
}
|
|
41
|
-
if (input && typeof input === "object")
|
|
42
|
-
return { obj: input, raw: input };
|
|
43
|
-
return { obj: null, raw: input };
|
|
44
|
-
}
|
|
45
|
-
function summarizeToolInput(toolName, input) {
|
|
46
|
-
if (input === null || input === void 0 || input === "") return "";
|
|
47
|
-
const { obj, raw } = coerceInput(input);
|
|
48
|
-
if (!obj) return clip(String(raw), 120);
|
|
49
|
-
const name = (toolName ?? "").toLowerCase();
|
|
50
|
-
if (/^todo(_?write)?$|^todos$/.test(name) || Array.isArray(obj.todos)) {
|
|
51
|
-
const todos = obj.todos ?? [];
|
|
52
|
-
if (Array.isArray(todos)) {
|
|
53
|
-
const done = todos.filter((t) => t?.status === "completed").length;
|
|
54
|
-
const wip = todos.filter((t) => t?.status === "in_progress").length;
|
|
55
|
-
const parts = [`${todos.length} todo${todos.length === 1 ? "" : "s"}`];
|
|
56
|
-
if (done > 0) parts.push(`${done} done`);
|
|
57
|
-
if (wip > 0) parts.push(`${wip} in-progress`);
|
|
58
|
-
return parts.join(" \xB7 ");
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
if (/batch|parallel/.test(name) || Array.isArray(obj.tool_uses) || Array.isArray(obj.calls)) {
|
|
62
|
-
const list = obj.tool_uses ?? obj.calls ?? obj.batch;
|
|
63
|
-
if (Array.isArray(list)) {
|
|
64
|
-
const subNames = /* @__PURE__ */ new Set();
|
|
65
|
-
for (const item of list) {
|
|
66
|
-
if (item && typeof item === "object" && "name" in item) {
|
|
67
|
-
subNames.add(String(item.name));
|
|
68
|
-
} else if (item && typeof item === "object" && "tool" in item) {
|
|
69
|
-
subNames.add(String(item.tool));
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
const preview = [...subNames].slice(0, 3).join(", ");
|
|
73
|
-
const more = subNames.size > 3 ? ` +${subNames.size - 3}` : "";
|
|
74
|
-
return `${list.length} sub-tool${list.length === 1 ? "" : "s"}${preview ? ` \xB7 ${preview}${more}` : ""}`;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
if (name === "patch" && typeof obj.patch === "string" && obj.patch) {
|
|
78
|
-
const fileCount = (obj.patch.match(/^\+\+\+ /gm) ?? []).length;
|
|
79
|
-
if (fileCount > 0) return `patch \xB7 ${fileCount} file${fileCount === 1 ? "" : "s"}`;
|
|
80
|
-
return `patch \xB7 ${obj.patch.split("\n").length} lines`;
|
|
81
|
-
}
|
|
82
|
-
if (/^(edit|str_replace|edit_file|patch)$/.test(name)) {
|
|
83
|
-
const fp = pickPath(obj);
|
|
84
|
-
const oldS = typeof obj.old_string === "string" ? obj.old_string : "";
|
|
85
|
-
const newS = typeof obj.new_string === "string" ? obj.new_string : "";
|
|
86
|
-
const oldLines = oldS ? oldS.split("\n").length : 0;
|
|
87
|
-
const newLines = newS ? newS.split("\n").length : 0;
|
|
88
|
-
return `edit ${fp || "(file)"}${oldLines || newLines ? ` (${oldLines} \u2192 ${newLines} lines)` : ""}`;
|
|
89
|
-
}
|
|
90
|
-
if (/^(write|write_file|create_file|new_file)$/.test(name)) {
|
|
91
|
-
const fp = pickPath(obj);
|
|
92
|
-
const c = typeof obj.content === "string" ? obj.content : "";
|
|
93
|
-
const lines = c ? c.split("\n").length : 0;
|
|
94
|
-
return `write ${fp || "(file)"}${lines ? ` \xB7 ${lines} lines` : ""}`;
|
|
95
|
-
}
|
|
96
|
-
if (/^(bash|shell|sh|exec|run|run_command|run_shell|command)$/.test(name)) {
|
|
97
|
-
const cmd = obj.command ?? obj.cmd ?? obj.script;
|
|
98
|
-
if (typeof cmd === "string") return `$ ${clip(cmd, 110)}`;
|
|
99
|
-
}
|
|
100
|
-
if (/^(fetch|http|web|web_fetch|web_search|webfetch|curl|request)$/.test(name)) {
|
|
101
|
-
const url = obj.url;
|
|
102
|
-
if (typeof url === "string") {
|
|
103
|
-
const method = obj.method ?? "GET";
|
|
104
|
-
return `${method.toUpperCase()} ${clip(url, 100)}`;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
if (/^(grep|search|ripgrep|rg)$/.test(name)) {
|
|
108
|
-
const pattern = obj.pattern;
|
|
109
|
-
const scope = obj.path ?? obj.glob ?? obj.type;
|
|
110
|
-
if (typeof pattern === "string") {
|
|
111
|
-
return scope ? `grep ${clip(pattern, 60)} in ${scope}` : `grep ${clip(pattern, 100)}`;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
if (/^(glob|find)$/.test(name)) {
|
|
115
|
-
const p = obj.pattern ?? obj.glob;
|
|
116
|
-
if (typeof p === "string") return `glob ${clip(p, 80)}`;
|
|
117
|
-
}
|
|
118
|
-
if (/^tree$/.test(name)) {
|
|
119
|
-
const p = typeof obj.path === "string" ? obj.path : "";
|
|
120
|
-
const d = typeof obj.depth === "number" ? obj.depth : null;
|
|
121
|
-
return `tree ${p || "."}${d !== null ? ` (depth ${d})` : ""}`;
|
|
122
|
-
}
|
|
123
|
-
if (/^diff$/.test(name)) {
|
|
124
|
-
const a = typeof obj.a === "string" ? obj.a : "";
|
|
125
|
-
const b = typeof obj.b === "string" ? obj.b : "";
|
|
126
|
-
if (a || b) return `diff ${a && b ? `${a}..${b}` : a || b}`;
|
|
127
|
-
const fl = [];
|
|
128
|
-
if (Array.isArray(obj.files)) {
|
|
129
|
-
for (const f of obj.files) if (typeof f === "string") fl.push(f);
|
|
130
|
-
} else if (typeof obj.files === "string") {
|
|
131
|
-
for (const part of obj.files.split(",")) {
|
|
132
|
-
const t = part.trim();
|
|
133
|
-
if (t) fl.push(t);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
if (fl.length === 1) return `diff ${clip(String(fl[0]), 80)}`;
|
|
137
|
-
if (fl.length > 1) return `diff ${fl.length} files`;
|
|
138
|
-
}
|
|
139
|
-
if (/^replace$/.test(name)) {
|
|
140
|
-
const pattern = typeof obj.pattern === "string" ? obj.pattern : "";
|
|
141
|
-
if (pattern) {
|
|
142
|
-
let scope = "";
|
|
143
|
-
if (typeof obj.files === "string") {
|
|
144
|
-
const parts = obj.files.split(",").map((s) => s.trim()).filter(Boolean);
|
|
145
|
-
scope = parts.length > 1 ? `${parts.length} files` : parts[0] ?? "";
|
|
146
|
-
} else if (Array.isArray(obj.files) && obj.files.length > 0) {
|
|
147
|
-
scope = obj.files.length === 1 ? String(obj.files[0]) : `${obj.files.length} files`;
|
|
148
|
-
}
|
|
149
|
-
return `replace ${clip(pattern, 60)}${scope ? ` in ${clip(scope, 50)}` : ""}`;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
if (/^(read|read_file|cat|view)$/.test(name)) {
|
|
153
|
-
const fp = pickPath(obj);
|
|
154
|
-
const offset = obj.offset;
|
|
155
|
-
const limit = obj.limit;
|
|
156
|
-
if (fp && (typeof offset === "number" || typeof limit === "number")) {
|
|
157
|
-
const start = offset ?? 0;
|
|
158
|
-
const end = typeof limit === "number" ? start + limit : "";
|
|
159
|
-
return `read ${fp} (${start}\u2026${end})`;
|
|
160
|
-
}
|
|
161
|
-
if (fp) return `read ${fp}`;
|
|
162
|
-
}
|
|
163
|
-
for (const k of FALLBACK_HEAD_FIELDS) {
|
|
164
|
-
const v = obj[k];
|
|
165
|
-
if (typeof v === "string" && v.length > 0) {
|
|
166
|
-
return `${k}: ${clip(v, 100)}`;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
return clip(safeJson(raw), 120);
|
|
170
|
-
}
|
|
171
|
-
var SUMMARIZE_TOOL_INPUT_BROWSER_SRC = [
|
|
172
|
-
'function __clip(s,n){ s=String(s==null?"":s); return s.length>n ? s.slice(0,n-1)+"\\u2026" : s; }',
|
|
173
|
-
"function toolInputSummary(name, rawInput){",
|
|
174
|
-
' if(rawInput==null || rawInput==="") return "";',
|
|
175
|
-
" var obj=null, raw=rawInput;",
|
|
176
|
-
' if(typeof rawInput==="string"){',
|
|
177
|
-
" var s=rawInput.trim();",
|
|
178
|
-
' if(s.charAt(0)==="{" || s.charAt(0)==="["){ try{ var pj=JSON.parse(s); if(pj && typeof pj==="object"){ obj=pj; raw=pj; } }catch(_e){} }',
|
|
179
|
-
' } else if(rawInput && typeof rawInput==="object"){ obj=rawInput; raw=rawInput; }',
|
|
180
|
-
" if(!obj) return __clip(String(raw),120);",
|
|
181
|
-
' var n=String(name==null?"":name).toLowerCase();',
|
|
182
|
-
" if(/^todo(_?write)?$|^todos$/.test(n) || Array.isArray(obj.todos)){",
|
|
183
|
-
" var todos=obj.todos||[];",
|
|
184
|
-
" if(Array.isArray(todos)){",
|
|
185
|
-
" var done=0, wip=0, ti;",
|
|
186
|
-
' for(ti=0; ti<todos.length; ti++){ var st=todos[ti]&&todos[ti].status; if(st==="completed") done++; else if(st==="in_progress") wip++; }',
|
|
187
|
-
' var tp=[todos.length+" todo"+(todos.length===1?"":"s")];',
|
|
188
|
-
' if(done>0) tp.push(done+" done"); if(wip>0) tp.push(wip+" in-progress");',
|
|
189
|
-
' return tp.join(" \\u00b7 ");',
|
|
190
|
-
" }",
|
|
191
|
-
" }",
|
|
192
|
-
" if(/batch|parallel/.test(n) || Array.isArray(obj.tool_uses) || Array.isArray(obj.calls)){",
|
|
193
|
-
" var list=obj.tool_uses||obj.calls||obj.batch;",
|
|
194
|
-
" if(Array.isArray(list)){",
|
|
195
|
-
" var names={}, ord=[], li, it, nm;",
|
|
196
|
-
' for(li=0; li<list.length; li++){ it=list[li]; if(it && typeof it==="object"){ nm=("name" in it)?it.name:(("tool" in it)?it.tool:null); if(nm!=null){ nm=String(nm); if(!names[nm]){ names[nm]=1; ord.push(nm); } } } }',
|
|
197
|
-
' var preview=ord.slice(0,3).join(", ");',
|
|
198
|
-
' var more=ord.length>3 ? " +"+(ord.length-3) : "";',
|
|
199
|
-
' return list.length+" sub-tool"+(list.length===1?"":"s")+(preview?(" \\u00b7 "+preview+more):"");',
|
|
200
|
-
" }",
|
|
201
|
-
" }",
|
|
202
|
-
" var fp;",
|
|
203
|
-
' if(n==="patch" && typeof obj.patch==="string" && obj.patch){',
|
|
204
|
-
" var pfm=obj.patch.match(/^\\+\\+\\+ /gm);",
|
|
205
|
-
" var pfc=pfm?pfm.length:0;",
|
|
206
|
-
' if(pfc>0) return "patch \\u00b7 "+pfc+" file"+(pfc===1?"":"s");',
|
|
207
|
-
' return "patch \\u00b7 "+obj.patch.split("\\n").length+" lines";',
|
|
208
|
-
" }",
|
|
209
|
-
" if(/^(edit|str_replace|edit_file|patch)$/.test(n)){",
|
|
210
|
-
" fp=(obj.file_path!=null?obj.file_path:(obj.path!=null?obj.path:obj.filepath));",
|
|
211
|
-
' var oldS=typeof obj.old_string==="string"?obj.old_string:"";',
|
|
212
|
-
' var newS=typeof obj.new_string==="string"?obj.new_string:"";',
|
|
213
|
-
' var ol=oldS?oldS.split("\\n").length:0, nl=newS?newS.split("\\n").length:0;',
|
|
214
|
-
' var efp=typeof fp==="string"?fp:"";',
|
|
215
|
-
' return "edit "+(efp||"(file)")+((ol||nl)?(" ("+ol+" \\u2192 "+nl+" lines)"):"");',
|
|
216
|
-
" }",
|
|
217
|
-
" if(/^(write|write_file|create_file|new_file)$/.test(n)){",
|
|
218
|
-
" fp=(obj.file_path!=null?obj.file_path:(obj.path!=null?obj.path:obj.filepath));",
|
|
219
|
-
' var wc=typeof obj.content==="string"?obj.content:"";',
|
|
220
|
-
' var wl=wc?wc.split("\\n").length:0;',
|
|
221
|
-
' var wfp=typeof fp==="string"?fp:"";',
|
|
222
|
-
' return "write "+(wfp||"(file)")+(wl?(" \\u00b7 "+wl+" lines"):"");',
|
|
223
|
-
" }",
|
|
224
|
-
" if(/^(bash|shell|sh|exec|run|run_command|run_shell|command)$/.test(n)){",
|
|
225
|
-
" var cmd=(obj.command!=null?obj.command:(obj.cmd!=null?obj.cmd:obj.script));",
|
|
226
|
-
' if(typeof cmd==="string") return "$ "+__clip(cmd,110);',
|
|
227
|
-
" }",
|
|
228
|
-
" if(/^(fetch|http|web|web_fetch|web_search|webfetch|curl|request)$/.test(n)){",
|
|
229
|
-
' if(typeof obj.url==="string"){ var mth=(typeof obj.method==="string"?obj.method:"GET"); return mth.toUpperCase()+" "+__clip(obj.url,100); }',
|
|
230
|
-
" }",
|
|
231
|
-
" if(/^(grep|search|ripgrep|rg)$/.test(n)){",
|
|
232
|
-
" var pat=obj.pattern, scope=(obj.path!=null?obj.path:(obj.glob!=null?obj.glob:obj.type));",
|
|
233
|
-
' if(typeof pat==="string"){ return scope ? ("grep "+__clip(pat,60)+" in "+scope) : ("grep "+__clip(pat,100)); }',
|
|
234
|
-
" }",
|
|
235
|
-
" if(/^(glob|find)$/.test(n)){",
|
|
236
|
-
" var gp=(obj.pattern!=null?obj.pattern:obj.glob);",
|
|
237
|
-
' if(typeof gp==="string") return "glob "+__clip(gp,80);',
|
|
238
|
-
" }",
|
|
239
|
-
" if(/^tree$/.test(n)){",
|
|
240
|
-
' var trp=typeof obj.path==="string"?obj.path:"";',
|
|
241
|
-
' var trd=typeof obj.depth==="number"?obj.depth:null;',
|
|
242
|
-
' return "tree "+(trp||".")+(trd!==null?(" (depth "+trd+")"):"");',
|
|
243
|
-
" }",
|
|
244
|
-
" if(/^diff$/.test(n)){",
|
|
245
|
-
' var da=typeof obj.a==="string"?obj.a:"", db=typeof obj.b==="string"?obj.b:"";',
|
|
246
|
-
' if(da||db) return "diff "+((da&&db)?(da+".."+db):(da||db));',
|
|
247
|
-
" var dfl=[], dfi, dpi;",
|
|
248
|
-
' if(Array.isArray(obj.files)){ for(dfi=0; dfi<obj.files.length; dfi++){ if(typeof obj.files[dfi]==="string") dfl.push(obj.files[dfi]); } }',
|
|
249
|
-
' else if(typeof obj.files==="string"){ var dparts=obj.files.split(","); for(dpi=0; dpi<dparts.length; dpi++){ var dt=dparts[dpi].trim(); if(dt) dfl.push(dt); } }',
|
|
250
|
-
' if(dfl.length===1) return "diff "+__clip(String(dfl[0]),80);',
|
|
251
|
-
' if(dfl.length>1) return "diff "+dfl.length+" files";',
|
|
252
|
-
" }",
|
|
253
|
-
" if(/^replace$/.test(n)){",
|
|
254
|
-
' var rpat=typeof obj.pattern==="string"?obj.pattern:"";',
|
|
255
|
-
" if(rpat){",
|
|
256
|
-
' var rscope="";',
|
|
257
|
-
' if(typeof obj.files==="string"){',
|
|
258
|
-
" var rparts=[], rsi;",
|
|
259
|
-
' var rraw=obj.files.split(",");',
|
|
260
|
-
" for(rsi=0; rsi<rraw.length; rsi++){ var rt=rraw[rsi].trim(); if(rt) rparts.push(rt); }",
|
|
261
|
-
' rscope=rparts.length>1?(rparts.length+" files"):(rparts.length===1?rparts[0]:"");',
|
|
262
|
-
" } else if(Array.isArray(obj.files) && obj.files.length>0){",
|
|
263
|
-
' rscope=obj.files.length===1?String(obj.files[0]):(obj.files.length+" files");',
|
|
264
|
-
" }",
|
|
265
|
-
' return "replace "+__clip(rpat,60)+(rscope?(" in "+__clip(rscope,50)):"");',
|
|
266
|
-
" }",
|
|
267
|
-
" }",
|
|
268
|
-
" if(/^(read|read_file|cat|view)$/.test(n)){",
|
|
269
|
-
" fp=(obj.file_path!=null?obj.file_path:(obj.path!=null?obj.path:obj.filepath));",
|
|
270
|
-
' if(typeof fp==="string" && fp){',
|
|
271
|
-
" var off=obj.offset, lim=obj.limit;",
|
|
272
|
-
' if(typeof off==="number" || typeof lim==="number"){ var start=(typeof off==="number"?off:0); var end=(typeof lim==="number"?(start+lim):""); return "read "+fp+" ("+start+"\\u2026"+end+")"; }',
|
|
273
|
-
' return "read "+fp;',
|
|
274
|
-
" }",
|
|
275
|
-
" }",
|
|
276
|
-
' var HEAD=["path","file_path","pattern","symbol","command","cmd","url","query","description","content"], hi;',
|
|
277
|
-
' for(hi=0; hi<HEAD.length; hi++){ var hv=obj[HEAD[hi]]; if(typeof hv==="string" && hv.length>0){ return HEAD[hi]+": "+__clip(hv,100); } }',
|
|
278
|
-
" var jsonStr; try{ jsonStr=JSON.stringify(raw); }catch(_e2){ jsonStr=String(raw); }",
|
|
279
|
-
" return __clip(jsonStr,120);",
|
|
280
|
-
"}"
|
|
281
|
-
].join("\n");
|
|
1
|
+
import {
|
|
2
|
+
FALLBACK_HEAD_FIELDS,
|
|
3
|
+
SUMMARIZE_TOOL_INPUT_BROWSER_SRC,
|
|
4
|
+
summarizeToolInput
|
|
5
|
+
} from "./chunk-S57CDR2H.js";
|
|
282
6
|
export {
|
|
283
7
|
FALLBACK_HEAD_FIELDS,
|
|
284
8
|
SUMMARIZE_TOOL_INPUT_BROWSER_SRC,
|