maestro-agent-sdk 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/loop.d.ts.map +1 -1
- package/dist/core/loop.js +1 -1
- package/dist/core/loop.js.map +1 -1
- package/dist/index.d.ts +32 -32
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -33
- package/dist/index.js.map +1 -1
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/pool.d.ts.map +1 -1
- package/dist/mcp/pool.js.map +1 -1
- package/dist/memory/compressor.d.ts.map +1 -1
- package/dist/memory/compressor.js.map +1 -1
- package/dist/memory/reminder.d.ts.map +1 -1
- package/dist/memory/reminder.js.map +1 -1
- package/dist/memory/scrubber.d.ts.map +1 -1
- package/dist/memory/scrubber.js +1 -1
- package/dist/memory/scrubber.js.map +1 -1
- package/dist/platform/env-bootstrap.d.ts +2 -0
- package/dist/platform/env-bootstrap.d.ts.map +1 -0
- package/dist/platform/env-bootstrap.js +113 -0
- package/dist/platform/env-bootstrap.js.map +1 -0
- package/dist/platform/logger.d.ts.map +1 -1
- package/dist/platform/logger.js +0 -2
- package/dist/platform/logger.js.map +1 -1
- package/dist/platform/version.d.ts +1 -1
- package/dist/platform/version.js +1 -1
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +11 -3
- package/dist/provider.js.map +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +2 -2
- package/dist/registry.js.map +1 -1
- package/dist/session-store.d.ts.map +1 -1
- package/dist/session-store.js +3 -3
- package/dist/session-store.js.map +1 -1
- package/dist/skills/curator.d.ts.map +1 -1
- package/dist/skills/curator.js +1 -1
- package/dist/skills/curator.js.map +1 -1
- package/dist/skills/loader.js +1 -1
- package/dist/skills/loader.js.map +1 -1
- package/dist/sub-agent/runner.d.ts.map +1 -1
- package/dist/sub-agent/runner.js +2 -2
- package/dist/sub-agent/runner.js.map +1 -1
- package/dist/tools/builtin/agent.d.ts.map +1 -1
- package/dist/tools/builtin/agent.js +1 -1
- package/dist/tools/builtin/agent.js.map +1 -1
- package/dist/tools/builtin/bash.d.ts +11 -5
- package/dist/tools/builtin/bash.d.ts.map +1 -1
- package/dist/tools/builtin/bash.js +43 -11
- package/dist/tools/builtin/bash.js.map +1 -1
- package/dist/tools/builtin/glob.d.ts +25 -0
- package/dist/tools/builtin/glob.d.ts.map +1 -1
- package/dist/tools/builtin/glob.js +65 -4
- package/dist/tools/builtin/glob.js.map +1 -1
- package/dist/tools/builtin/grep.d.ts.map +1 -1
- package/dist/tools/builtin/grep.js +3 -8
- package/dist/tools/builtin/grep.js.map +1 -1
- package/dist/tools/builtin/skill_view.d.ts.map +1 -1
- package/dist/tools/builtin/skill_view.js +1 -1
- package/dist/tools/builtin/skill_view.js.map +1 -1
- package/dist/tools/builtin/skill_write.d.ts.map +1 -1
- package/dist/tools/builtin/skill_write.js +3 -3
- package/dist/tools/builtin/skill_write.js.map +1 -1
- package/dist/tools/builtin/tasks.d.ts.map +1 -1
- package/dist/tools/builtin/tasks.js.map +1 -1
- package/dist/tools/builtin/web_fetch.d.ts +16 -0
- package/dist/tools/builtin/web_fetch.d.ts.map +1 -1
- package/dist/tools/builtin/web_fetch.js +217 -4
- package/dist/tools/builtin/web_fetch.js.map +1 -1
- package/package.json +5 -1
|
@@ -51,24 +51,30 @@ export const globTool = {
|
|
|
51
51
|
pattern: {
|
|
52
52
|
type: "string",
|
|
53
53
|
description: "Glob pattern. Examples: `**/*.ts`, `src/**/*.tsx`, `README.md`, " +
|
|
54
|
-
"`config/*.json`.
|
|
54
|
+
"`config/*.json`. May also embed the absolute root (e.g. " +
|
|
55
|
+
"`/abs/path/**/*.ts`) — in that case `path` is auto-derived from " +
|
|
56
|
+
"the fixed prefix and the trailing portion becomes the matcher.",
|
|
55
57
|
},
|
|
56
58
|
path: {
|
|
57
59
|
type: "string",
|
|
58
60
|
description: "Optional absolute directory to search in. Defaults to the SDK's process cwd. " +
|
|
59
|
-
"
|
|
61
|
+
"If omitted and `pattern` is absolute, the walk root is auto-extracted " +
|
|
62
|
+
"from `pattern`. Relative paths are rejected.",
|
|
60
63
|
},
|
|
61
64
|
},
|
|
62
65
|
required: ["pattern"],
|
|
63
66
|
},
|
|
64
67
|
},
|
|
65
68
|
async execute(input) {
|
|
66
|
-
const
|
|
67
|
-
if (!
|
|
69
|
+
const rawPattern = typeof input.pattern === "string" ? input.pattern : "";
|
|
70
|
+
if (!rawPattern) {
|
|
68
71
|
return JSON.stringify({ error: "Glob: missing 'pattern' argument" });
|
|
69
72
|
}
|
|
70
73
|
const rawPath = typeof input.path === "string" ? input.path : undefined;
|
|
71
74
|
let root;
|
|
75
|
+
// `pattern` is what compileGlob() consumes. We may rewrite it below when
|
|
76
|
+
// the caller passed an absolute path inside `pattern` (claude SDK parity).
|
|
77
|
+
let pattern = rawPattern;
|
|
72
78
|
if (rawPath !== undefined) {
|
|
73
79
|
if (!isAbsolute(rawPath)) {
|
|
74
80
|
return JSON.stringify({
|
|
@@ -77,6 +83,17 @@ export const globTool = {
|
|
|
77
83
|
}
|
|
78
84
|
root = rawPath;
|
|
79
85
|
}
|
|
86
|
+
else if (isAbsolute(rawPattern)) {
|
|
87
|
+
// claude-SDK parity: when the caller embeds the absolute root inside
|
|
88
|
+
// `pattern` (e.g. `/Users/foo/proj/**/*.ts`) and omits `path`, we split
|
|
89
|
+
// off the longest fixed prefix and use that as the walk root. Without
|
|
90
|
+
// this the regex compiled from the absolute pattern matches against
|
|
91
|
+
// *relative* paths and returns zero — a footgun we hit often when the
|
|
92
|
+
// model copy-pastes absolute paths it just got from Read/Grep.
|
|
93
|
+
const split = splitAbsolutePattern(rawPattern);
|
|
94
|
+
root = split.root;
|
|
95
|
+
pattern = split.pattern;
|
|
96
|
+
}
|
|
80
97
|
else {
|
|
81
98
|
root = process.cwd();
|
|
82
99
|
}
|
|
@@ -232,4 +249,48 @@ export function compileGlob(pattern) {
|
|
|
232
249
|
return new RegExp(`^${s}$`);
|
|
233
250
|
}
|
|
234
251
|
const REGEX_META = ".+^$()[]{}|\\";
|
|
252
|
+
/**
|
|
253
|
+
* Split an absolute glob pattern into (root, relativePattern).
|
|
254
|
+
*
|
|
255
|
+
* claude-SDK accepts patterns like `/Users/foo/proj/**\/*.ts` directly —
|
|
256
|
+
* its implementation pulls out the longest fixed-segment prefix as the
|
|
257
|
+
* walk root and uses the rest as the matcher. We mirror that here so the
|
|
258
|
+
* model's pretrained instinct works without forcing the caller to split
|
|
259
|
+
* `path` and `pattern` manually.
|
|
260
|
+
*
|
|
261
|
+
* Algorithm:
|
|
262
|
+
* - Split the pattern by `/`. The leading `/` produces an empty first
|
|
263
|
+
* segment.
|
|
264
|
+
* - Find the first segment that contains a wildcard meta (`*` or `?`).
|
|
265
|
+
* - Everything strictly before it forms the root (rejoined with `/`).
|
|
266
|
+
* Everything from that segment onward is the new pattern (relative
|
|
267
|
+
* to root).
|
|
268
|
+
* - If no segment contains a wildcard the pattern is a literal absolute
|
|
269
|
+
* path; treat dirname as the root and basename as the pattern so
|
|
270
|
+
* `Glob({pattern: "/etc/hosts"})` still matches the single file.
|
|
271
|
+
* - Empty root collapses to "/" (POSIX absolute root).
|
|
272
|
+
*/
|
|
273
|
+
export function splitAbsolutePattern(p) {
|
|
274
|
+
const segs = p.split("/");
|
|
275
|
+
let wildAt = -1;
|
|
276
|
+
for (let i = 0; i < segs.length; i++) {
|
|
277
|
+
if (segs[i].includes("*") || segs[i].includes("?")) {
|
|
278
|
+
wildAt = i;
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
if (wildAt === -1) {
|
|
283
|
+
// No wildcard — split dirname/basename so literal absolute paths still
|
|
284
|
+
// match. `Glob({pattern: "/etc/hosts"})` → root "/etc", pattern "hosts".
|
|
285
|
+
const parts = segs.slice();
|
|
286
|
+
const last = parts.pop() ?? "";
|
|
287
|
+
const root = parts.join("/") || "/";
|
|
288
|
+
return { root, pattern: last };
|
|
289
|
+
}
|
|
290
|
+
const rootJoined = segs.slice(0, wildAt).join("/");
|
|
291
|
+
return {
|
|
292
|
+
root: rootJoined || "/",
|
|
293
|
+
pattern: segs.slice(wildAt).join("/"),
|
|
294
|
+
};
|
|
295
|
+
}
|
|
235
296
|
//# sourceMappingURL=glob.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glob.js","sourceRoot":"","sources":["../../../src/tools/builtin/glob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"glob.js","sourceRoot":"","sources":["../../../src/tools/builtin/glob.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/grep.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/grep.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAgDpD,eAAO,MAAM,QAAQ,EAAE,WA8OtB,CAAC"}
|
|
@@ -39,11 +39,7 @@ const RG_TIMEOUT_MS = 30_000;
|
|
|
39
39
|
/** Hard cap on stdout bytes — defensive against pathological matches that
|
|
40
40
|
* blow past head_limit because they're all on one line. */
|
|
41
41
|
const RG_MAX_OUTPUT = 1_000_000;
|
|
42
|
-
const VALID_OUTPUT_MODES = new Set([
|
|
43
|
-
"content",
|
|
44
|
-
"files_with_matches",
|
|
45
|
-
"count",
|
|
46
|
-
]);
|
|
42
|
+
const VALID_OUTPUT_MODES = new Set(["content", "files_with_matches", "count"]);
|
|
47
43
|
export const grepTool = {
|
|
48
44
|
// Pure read of the filesystem via an external process — multiple Greps
|
|
49
45
|
// in parallel are fine.
|
|
@@ -110,8 +106,7 @@ export const grepTool = {
|
|
|
110
106
|
},
|
|
111
107
|
"-o": {
|
|
112
108
|
type: "boolean",
|
|
113
|
-
description: "Print only the matched portion of each line (ripgrep `-o`). " +
|
|
114
|
-
"`content` mode only.",
|
|
109
|
+
description: "Print only the matched portion of each line (ripgrep `-o`). " + "`content` mode only.",
|
|
115
110
|
},
|
|
116
111
|
multiline: {
|
|
117
112
|
type: "boolean",
|
|
@@ -215,7 +210,7 @@ export const grepTool = {
|
|
|
215
210
|
error: `Grep: ripgrep exited with status 2: ${truncate(String(result.stderr ?? ""), 1000)}`,
|
|
216
211
|
});
|
|
217
212
|
}
|
|
218
|
-
|
|
213
|
+
const stdout = typeof result.stdout === "string" ? result.stdout : "";
|
|
219
214
|
// Head-limit / offset slicing — applied AFTER ripgrep returns the full
|
|
220
215
|
// result so we don't lose deterministic ordering by piping through
|
|
221
216
|
// external `head`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grep.js","sourceRoot":"","sources":["../../../src/tools/builtin/grep.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"grep.js","sourceRoot":"","sources":["../../../src/tools/builtin/grep.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill_view.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/skill_view.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"skill_view.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/skill_view.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,WAAW,oBAAoB;IACnC,gFAAgF;IAChF,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;gEAE4D;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,WAAW,CAuE3E"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { logger } from "../../platform/logger.js";
|
|
1
2
|
import { findSkillByName } from "../../skills/loader.js";
|
|
2
3
|
import { preprocessSkillContent } from "../../skills/preprocess.js";
|
|
3
4
|
import { bumpView } from "../../skills/usage.js";
|
|
4
|
-
import { logger } from "../../platform/logger.js";
|
|
5
5
|
export function createSkillViewTool(opts) {
|
|
6
6
|
return {
|
|
7
7
|
// Pure catalog lookup + file read. `bumpView` mutates a usage counter
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill_view.js","sourceRoot":"","sources":["../../../src/tools/builtin/skill_view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"skill_view.js","sourceRoot":"","sources":["../../../src/tools/builtin/skill_view.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill_write.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/skill_write.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,MAAM,WAAW,qBAAqB;IACpC;;;qCAGiC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAuBD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"skill_write.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/skill_write.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,MAAM,WAAW,qBAAqB;IACpC;;;qCAGiC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAuBD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,WAAW,CA4N7E"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { dirname, isAbsolute, join, normalize, relative } from "node:path";
|
|
3
|
-
import { invalidateSkillsCache } from "../../skills/loader.js";
|
|
4
3
|
import { logger } from "../../platform/logger.js";
|
|
4
|
+
import { invalidateSkillsCache } from "../../skills/loader.js";
|
|
5
5
|
/** kebab-case validator: lowercase letters, digits, dashes. Must start with
|
|
6
6
|
* a letter; no leading/trailing/consecutive dashes. */
|
|
7
7
|
const NAME_RE = /^[a-z](?:[a-z0-9]|-(?=[a-z0-9]))*$/;
|
|
@@ -71,8 +71,8 @@ export function createSkillWriteTool(opts) {
|
|
|
71
71
|
"`<skillsDir>/<name>/`, use forward slashes, must not contain `..` " +
|
|
72
72
|
"or absolute prefixes, and cannot equal `skill.md` (reserved for " +
|
|
73
73
|
"the manifest). Parent directories are created automatically. " +
|
|
74
|
-
|
|
75
|
-
"
|
|
74
|
+
'Example: `{"scripts/run.sh": "#!/bin/bash\\n...", ' +
|
|
75
|
+
'"templates/x.tex": "...", "references/api.md": "..."}`',
|
|
76
76
|
additionalProperties: { type: "string" },
|
|
77
77
|
},
|
|
78
78
|
overwrite: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill_write.js","sourceRoot":"","sources":["../../../src/tools/builtin/skill_write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"skill_write.js","sourceRoot":"","sources":["../../../src/tools/builtin/skill_write.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsC,SAAS,EAAe,MAAM,eAAe,CAAC;AAChG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,gBAAgB;IAC/B;;wCAEoC;IACpC,KAAK,EAAE,SAAS,CAAC;CAClB;AA+BD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG,WAAW,CAgExE;AAQD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG,WAAW,CAsGxE;AAMD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,WAAW,CAiCtE;AAMD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,WAAW,CAiCrE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/tools/builtin/tasks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/tools/builtin/tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,22 @@ export declare const webFetchTool: ToolHandler;
|
|
|
5
5
|
* decoding and comment removal built into cheerio's .text(). Collapses
|
|
6
6
|
* whitespace and preserves paragraph breaks — clean prose, no markup noise. */
|
|
7
7
|
export declare function htmlToText(html: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Convert HTML to markdown using cheerio. Walks the DOM emitting markdown
|
|
10
|
+
* for the structural elements the model uses for navigation and citation
|
|
11
|
+
* (headings, links, lists, code, emphasis, blockquotes, tables).
|
|
12
|
+
*
|
|
13
|
+
* Unknown / unhandled tags fall through to their text content, so any tag
|
|
14
|
+
* we forget still contributes the inner text rather than vanishing. This
|
|
15
|
+
* is the same defensive-default claude-SDK's WebFetch markdown converter
|
|
16
|
+
* adopts.
|
|
17
|
+
*
|
|
18
|
+
* Why this lives next to `htmlToText`: hosts may want plain text for
|
|
19
|
+
* downstream NLP (still exported), but the model gets a much better
|
|
20
|
+
* picture from markdown — headings preserve outline, link anchors stay
|
|
21
|
+
* resolvable, and code blocks aren't flattened into prose.
|
|
22
|
+
*/
|
|
23
|
+
export declare function htmlToMarkdown(html: string): string;
|
|
8
24
|
export declare const __FETCH_TIMEOUT_MS = 30000;
|
|
9
25
|
export declare const __MAX_RESPONSE_BYTES: number;
|
|
10
26
|
//# sourceMappingURL=web_fetch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web_fetch.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/web_fetch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"web_fetch.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/web_fetch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AA4BpD,eAAO,MAAM,YAAY,EAAE,WA8G1B,CAAC;AAWF;;;gFAGgF;AAChF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAa/C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmBnD;AAoKD,eAAO,MAAM,kBAAkB,QAAmB,CAAC;AACnD,eAAO,MAAM,oBAAoB,QAAqB,CAAC"}
|
|
@@ -105,11 +105,19 @@ export const webFetchTool = {
|
|
|
105
105
|
body = body.slice(0, MAX_RESPONSE_BYTES);
|
|
106
106
|
truncated = true;
|
|
107
107
|
}
|
|
108
|
-
// HTML →
|
|
109
|
-
// script, then
|
|
110
|
-
//
|
|
108
|
+
// HTML → markdown via cheerio: parse the DOM, drop noise nodes
|
|
109
|
+
// (script/style/head/noscript/iframe), then walk the remaining tree
|
|
110
|
+
// producing markdown for the structural elements the model relies on
|
|
111
|
+
// for context (headings, links, lists, code, emphasis). Falls back to
|
|
112
|
+
// the prose-only `htmlToText` if the markdown walker throws — defensive
|
|
113
|
+
// against pathological inputs, never breaks the fetch path.
|
|
111
114
|
if (contentType.includes("html")) {
|
|
112
|
-
|
|
115
|
+
try {
|
|
116
|
+
body = htmlToMarkdown(body);
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
body = htmlToText(body);
|
|
120
|
+
}
|
|
113
121
|
}
|
|
114
122
|
const parts = [];
|
|
115
123
|
parts.push(`URL: ${url}`);
|
|
@@ -144,6 +152,211 @@ export function htmlToText(html) {
|
|
|
144
152
|
out = out.replace(/\n\s*\n+/g, "\n\n");
|
|
145
153
|
return out.trim();
|
|
146
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Convert HTML to markdown using cheerio. Walks the DOM emitting markdown
|
|
157
|
+
* for the structural elements the model uses for navigation and citation
|
|
158
|
+
* (headings, links, lists, code, emphasis, blockquotes, tables).
|
|
159
|
+
*
|
|
160
|
+
* Unknown / unhandled tags fall through to their text content, so any tag
|
|
161
|
+
* we forget still contributes the inner text rather than vanishing. This
|
|
162
|
+
* is the same defensive-default claude-SDK's WebFetch markdown converter
|
|
163
|
+
* adopts.
|
|
164
|
+
*
|
|
165
|
+
* Why this lives next to `htmlToText`: hosts may want plain text for
|
|
166
|
+
* downstream NLP (still exported), but the model gets a much better
|
|
167
|
+
* picture from markdown — headings preserve outline, link anchors stay
|
|
168
|
+
* resolvable, and code blocks aren't flattened into prose.
|
|
169
|
+
*/
|
|
170
|
+
export function htmlToMarkdown(html) {
|
|
171
|
+
const $ = cheerio.load(html);
|
|
172
|
+
$("script, style, head, noscript, iframe, svg, canvas").remove();
|
|
173
|
+
// Prefer <main>/<article> as the root when present — same heuristic as
|
|
174
|
+
// reader-mode extractors. Falls back to <body> then the full document.
|
|
175
|
+
const root = $("main").first().length
|
|
176
|
+
? $("main").first()
|
|
177
|
+
: $("article").first().length
|
|
178
|
+
? $("article").first()
|
|
179
|
+
: $("body").length
|
|
180
|
+
? $("body")
|
|
181
|
+
: $.root();
|
|
182
|
+
const out = renderNode($, root);
|
|
183
|
+
// Collapse runs of 3+ blank lines down to a single blank line break.
|
|
184
|
+
return out
|
|
185
|
+
.replace(/[ \t]+\n/g, "\n")
|
|
186
|
+
.replace(/\n{3,}/g, "\n\n")
|
|
187
|
+
.trim();
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Render a cheerio node + descendants to markdown. Top-level walker.
|
|
191
|
+
*
|
|
192
|
+
* Block-level elements emit double newlines around them so adjacent
|
|
193
|
+
* paragraphs / headings / list items don't run together. Inline elements
|
|
194
|
+
* emit their content verbatim with markdown markers wrapped around them.
|
|
195
|
+
*/
|
|
196
|
+
function renderNode($, $node) {
|
|
197
|
+
let buf = "";
|
|
198
|
+
$node.contents().each((_, el) => {
|
|
199
|
+
// text node
|
|
200
|
+
if (el.type === "text") {
|
|
201
|
+
buf += (el.data ?? "").replace(/\s+/g, " ");
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
if (el.type !== "tag")
|
|
205
|
+
return;
|
|
206
|
+
const tag = (el.tagName ?? "").toLowerCase();
|
|
207
|
+
const $el = $(el);
|
|
208
|
+
switch (tag) {
|
|
209
|
+
case "h1":
|
|
210
|
+
case "h2":
|
|
211
|
+
case "h3":
|
|
212
|
+
case "h4":
|
|
213
|
+
case "h5":
|
|
214
|
+
case "h6": {
|
|
215
|
+
const level = Number(tag[1]);
|
|
216
|
+
const hashes = "#".repeat(level);
|
|
217
|
+
const text = renderNode($, $el).trim();
|
|
218
|
+
buf += `\n\n${hashes} ${text}\n\n`;
|
|
219
|
+
break;
|
|
220
|
+
}
|
|
221
|
+
case "p":
|
|
222
|
+
case "div":
|
|
223
|
+
case "section":
|
|
224
|
+
case "article":
|
|
225
|
+
case "main":
|
|
226
|
+
case "header":
|
|
227
|
+
case "footer":
|
|
228
|
+
case "aside":
|
|
229
|
+
case "nav": {
|
|
230
|
+
const inner = renderNode($, $el).trim();
|
|
231
|
+
if (inner)
|
|
232
|
+
buf += `\n\n${inner}\n\n`;
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
case "br":
|
|
236
|
+
buf += "\n";
|
|
237
|
+
break;
|
|
238
|
+
case "hr":
|
|
239
|
+
buf += "\n\n---\n\n";
|
|
240
|
+
break;
|
|
241
|
+
case "strong":
|
|
242
|
+
case "b": {
|
|
243
|
+
const inner = renderNode($, $el).trim();
|
|
244
|
+
if (inner)
|
|
245
|
+
buf += `**${inner}**`;
|
|
246
|
+
break;
|
|
247
|
+
}
|
|
248
|
+
case "em":
|
|
249
|
+
case "i": {
|
|
250
|
+
const inner = renderNode($, $el).trim();
|
|
251
|
+
if (inner)
|
|
252
|
+
buf += `*${inner}*`;
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
case "code": {
|
|
256
|
+
// Inline code only. Block-level <pre><code> is handled by <pre>.
|
|
257
|
+
const inner = $el.text();
|
|
258
|
+
if (inner)
|
|
259
|
+
buf += `\`${inner}\``;
|
|
260
|
+
break;
|
|
261
|
+
}
|
|
262
|
+
case "pre": {
|
|
263
|
+
const inner = $el.text().replace(/\n+$/, "");
|
|
264
|
+
if (inner)
|
|
265
|
+
buf += `\n\n\`\`\`\n${inner}\n\`\`\`\n\n`;
|
|
266
|
+
break;
|
|
267
|
+
}
|
|
268
|
+
case "a": {
|
|
269
|
+
const href = $el.attr("href")?.trim() ?? "";
|
|
270
|
+
const text = renderNode($, $el).trim() || href;
|
|
271
|
+
if (href && /^https?:\/\//i.test(href))
|
|
272
|
+
buf += `[${text}](${href})`;
|
|
273
|
+
else if (href)
|
|
274
|
+
buf += `[${text}](${href})`;
|
|
275
|
+
else
|
|
276
|
+
buf += text;
|
|
277
|
+
break;
|
|
278
|
+
}
|
|
279
|
+
case "img": {
|
|
280
|
+
const src = $el.attr("src")?.trim() ?? "";
|
|
281
|
+
const alt = $el.attr("alt")?.trim() ?? "";
|
|
282
|
+
if (src)
|
|
283
|
+
buf += ``;
|
|
284
|
+
else if (alt)
|
|
285
|
+
buf += alt;
|
|
286
|
+
break;
|
|
287
|
+
}
|
|
288
|
+
case "ul":
|
|
289
|
+
case "ol": {
|
|
290
|
+
const ordered = tag === "ol";
|
|
291
|
+
let n = 1;
|
|
292
|
+
let listOut = "\n\n";
|
|
293
|
+
$el.children("li").each((_, li) => {
|
|
294
|
+
const inner = renderNode($, $(li)).trim();
|
|
295
|
+
const marker = ordered ? `${n}.` : "-";
|
|
296
|
+
// Indent continuation lines by two spaces so nested blocks
|
|
297
|
+
// render under the right bullet.
|
|
298
|
+
listOut += `${marker} ${inner.split("\n").join("\n ")}\n`;
|
|
299
|
+
n += 1;
|
|
300
|
+
});
|
|
301
|
+
buf += `${listOut}\n`;
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
case "li": {
|
|
305
|
+
// Reached only when an <li> appears outside a <ul>/<ol> — uncommon
|
|
306
|
+
// but defensive. Treat as a bullet.
|
|
307
|
+
const inner = renderNode($, $el).trim();
|
|
308
|
+
buf += `\n- ${inner}\n`;
|
|
309
|
+
break;
|
|
310
|
+
}
|
|
311
|
+
case "blockquote": {
|
|
312
|
+
const inner = renderNode($, $el).trim();
|
|
313
|
+
if (inner)
|
|
314
|
+
buf += `\n\n${inner
|
|
315
|
+
.split("\n")
|
|
316
|
+
.map((l) => `> ${l}`)
|
|
317
|
+
.join("\n")}\n\n`;
|
|
318
|
+
break;
|
|
319
|
+
}
|
|
320
|
+
case "table": {
|
|
321
|
+
// Markdown tables: header from first <tr>, body from the rest.
|
|
322
|
+
const rows = [];
|
|
323
|
+
$el.find("tr").each((_, tr) => {
|
|
324
|
+
const cells = [];
|
|
325
|
+
$(tr)
|
|
326
|
+
.children("th,td")
|
|
327
|
+
.each((_, c) => {
|
|
328
|
+
cells.push(renderNode($, $(c)).trim().replace(/\n+/g, " "));
|
|
329
|
+
});
|
|
330
|
+
if (cells.length)
|
|
331
|
+
rows.push(cells);
|
|
332
|
+
});
|
|
333
|
+
if (rows.length === 0)
|
|
334
|
+
break;
|
|
335
|
+
const widths = rows.map((r) => r.length);
|
|
336
|
+
const cols = Math.max(...widths);
|
|
337
|
+
const header = rows[0];
|
|
338
|
+
// Pad header to column count.
|
|
339
|
+
while (header.length < cols)
|
|
340
|
+
header.push("");
|
|
341
|
+
let tbl = `\n\n| ${header.join(" | ")} |\n| ${header.map(() => "---").join(" | ")} |\n`;
|
|
342
|
+
for (let i = 1; i < rows.length; i++) {
|
|
343
|
+
const row = rows[i];
|
|
344
|
+
while (row.length < cols)
|
|
345
|
+
row.push("");
|
|
346
|
+
tbl += `| ${row.join(" | ")} |\n`;
|
|
347
|
+
}
|
|
348
|
+
buf += `${tbl}\n`;
|
|
349
|
+
break;
|
|
350
|
+
}
|
|
351
|
+
default: {
|
|
352
|
+
// Unknown / unhandled tag — fall through to inner content so we
|
|
353
|
+
// don't silently drop text.
|
|
354
|
+
buf += renderNode($, $el);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
});
|
|
358
|
+
return buf;
|
|
359
|
+
}
|
|
147
360
|
// Internal exports for tests.
|
|
148
361
|
export const __FETCH_TIMEOUT_MS = FETCH_TIMEOUT_MS;
|
|
149
362
|
export const __MAX_RESPONSE_BYTES = MAX_RESPONSE_BYTES;
|