maestro-agent-sdk 0.1.7 → 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/platform/version.d.ts +1 -1
- package/dist/platform/version.js +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/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 +1 -1
package/dist/platform/version.js
CHANGED
|
@@ -2,11 +2,17 @@ import type { ToolHandler } from "../../tools/registry.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* Bash tool — built-in subprocess executor.
|
|
4
4
|
*
|
|
5
|
-
* Minimal: shell out, capture stdout/stderr, enforce a
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
5
|
+
* Minimal: shell out, capture stdout/stderr, enforce a wall-clock timeout
|
|
6
|
+
* (30s default, model-overridable up to 10min) and a 16KB output cap. Not a
|
|
7
|
+
* permission-gated execution layer — hosts that need one should register an
|
|
8
|
+
* MCP terminal tool (or replace this with their own adapter via
|
|
9
|
+
* `ToolRegistry.register`) so subprocess calls flow through the host's
|
|
10
|
+
* existing permission system instead of an unguarded `spawn`.
|
|
11
|
+
*
|
|
12
|
+
* The `description` input field is accepted for claude-SDK parity. We don't
|
|
13
|
+
* store it anywhere — its presence in the schema is what matters: the model's
|
|
14
|
+
* pretrained instinct to emit a short rationale per Bash call survives the
|
|
15
|
+
* agent switch, which is what permission UIs / audit logs want to render.
|
|
10
16
|
*/
|
|
11
17
|
export declare const bashTool: ToolHandler;
|
|
12
18
|
//# sourceMappingURL=bash.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/bash.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/bash.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAapD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,QAAQ,EAAE,WA2GtB,CAAC"}
|
|
@@ -1,29 +1,55 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
+
/** Default wall-clock cap. The model can override via the `timeout` input
|
|
3
|
+
* field — useful for slow tests, builds, installs — capped at `BASH_TIMEOUT_MAX_MS`
|
|
4
|
+
* so a runaway can't pin the runtime indefinitely. */
|
|
2
5
|
const BASH_TIMEOUT_MS = 30_000;
|
|
6
|
+
/** Hard ceiling on caller-supplied `timeout`. 10 minutes matches claude SDK's
|
|
7
|
+
* documented cap and is plenty for `npm install` / `bun install` / test runs. */
|
|
8
|
+
const BASH_TIMEOUT_MAX_MS = 10 * 60_000;
|
|
3
9
|
const BASH_MAX_OUTPUT = 16_000;
|
|
4
10
|
/**
|
|
5
11
|
* Bash tool — built-in subprocess executor.
|
|
6
12
|
*
|
|
7
|
-
* Minimal: shell out, capture stdout/stderr, enforce a
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
13
|
+
* Minimal: shell out, capture stdout/stderr, enforce a wall-clock timeout
|
|
14
|
+
* (30s default, model-overridable up to 10min) and a 16KB output cap. Not a
|
|
15
|
+
* permission-gated execution layer — hosts that need one should register an
|
|
16
|
+
* MCP terminal tool (or replace this with their own adapter via
|
|
17
|
+
* `ToolRegistry.register`) so subprocess calls flow through the host's
|
|
18
|
+
* existing permission system instead of an unguarded `spawn`.
|
|
19
|
+
*
|
|
20
|
+
* The `description` input field is accepted for claude-SDK parity. We don't
|
|
21
|
+
* store it anywhere — its presence in the schema is what matters: the model's
|
|
22
|
+
* pretrained instinct to emit a short rationale per Bash call survives the
|
|
23
|
+
* agent switch, which is what permission UIs / audit logs want to render.
|
|
12
24
|
*/
|
|
13
25
|
export const bashTool = {
|
|
14
26
|
schema: {
|
|
15
|
-
name: "
|
|
16
|
-
description: "Execute a bash command and return stdout/stderr. 30s timeout
|
|
27
|
+
name: "Bash",
|
|
28
|
+
description: "Execute a bash command and return stdout/stderr. Default 30s timeout " +
|
|
29
|
+
"(override via `timeout`, max 10min). 16KB output cap. Optional `description` " +
|
|
30
|
+
"is recorded for audit/UI and otherwise ignored.",
|
|
17
31
|
input_schema: {
|
|
18
32
|
type: "object",
|
|
19
33
|
properties: {
|
|
20
34
|
command: {
|
|
21
35
|
type: "string",
|
|
22
|
-
description: "Bash command to execute",
|
|
36
|
+
description: "Bash command to execute.",
|
|
37
|
+
},
|
|
38
|
+
description: {
|
|
39
|
+
type: "string",
|
|
40
|
+
description: "Short human-readable rationale for the command (~5-10 words). " +
|
|
41
|
+
"Accepted for claude-SDK parity — surfaces in permission UIs / " +
|
|
42
|
+
"audit logs. Ignored by execution.",
|
|
43
|
+
},
|
|
44
|
+
timeout: {
|
|
45
|
+
type: "number",
|
|
46
|
+
description: "Wall-clock timeout in milliseconds. Defaults to 30000 (30s). " +
|
|
47
|
+
"Clamped to a hard ceiling of 600000 (10min). Use a higher value " +
|
|
48
|
+
"for slow tests, installs, or builds.",
|
|
23
49
|
},
|
|
24
50
|
cwd: {
|
|
25
51
|
type: "string",
|
|
26
|
-
description: "Working directory (optional)",
|
|
52
|
+
description: "Working directory (optional).",
|
|
27
53
|
},
|
|
28
54
|
},
|
|
29
55
|
required: ["command"],
|
|
@@ -35,6 +61,12 @@ export const bashTool = {
|
|
|
35
61
|
return JSON.stringify({ error: "empty command" });
|
|
36
62
|
}
|
|
37
63
|
const cwd = typeof input.cwd === "string" ? input.cwd : undefined;
|
|
64
|
+
// Resolve the effective timeout. Non-numeric / non-finite / non-positive
|
|
65
|
+
// falls back to the 30s default. Positive values are clamped to 10min.
|
|
66
|
+
const rawTimeout = input.timeout;
|
|
67
|
+
const timeoutMs = typeof rawTimeout === "number" && Number.isFinite(rawTimeout) && rawTimeout > 0
|
|
68
|
+
? Math.min(Math.floor(rawTimeout), BASH_TIMEOUT_MAX_MS)
|
|
69
|
+
: BASH_TIMEOUT_MS;
|
|
38
70
|
return new Promise((resolve) => {
|
|
39
71
|
const child = spawn("bash", ["-c", command], {
|
|
40
72
|
...(cwd ? { cwd } : {}),
|
|
@@ -46,11 +78,11 @@ export const bashTool = {
|
|
|
46
78
|
const timer = setTimeout(() => {
|
|
47
79
|
child.kill("SIGKILL");
|
|
48
80
|
resolve(JSON.stringify({
|
|
49
|
-
error: `timeout after ${
|
|
81
|
+
error: `timeout after ${timeoutMs}ms`,
|
|
50
82
|
stdout,
|
|
51
83
|
stderr,
|
|
52
84
|
}));
|
|
53
|
-
},
|
|
85
|
+
}, timeoutMs);
|
|
54
86
|
child.stdout?.on("data", (chunk) => {
|
|
55
87
|
const text = chunk.toString("utf-8");
|
|
56
88
|
if (stdout.length + text.length > BASH_MAX_OUTPUT) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../src/tools/builtin/bash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3C,MAAM,eAAe,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../src/tools/builtin/bash.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,4 +14,29 @@ export declare const globTool: ToolHandler;
|
|
|
14
14
|
* don't accidentally turn into "any char".
|
|
15
15
|
*/
|
|
16
16
|
export declare function compileGlob(pattern: string): RegExp;
|
|
17
|
+
/**
|
|
18
|
+
* Split an absolute glob pattern into (root, relativePattern).
|
|
19
|
+
*
|
|
20
|
+
* claude-SDK accepts patterns like `/Users/foo/proj/**\/*.ts` directly —
|
|
21
|
+
* its implementation pulls out the longest fixed-segment prefix as the
|
|
22
|
+
* walk root and uses the rest as the matcher. We mirror that here so the
|
|
23
|
+
* model's pretrained instinct works without forcing the caller to split
|
|
24
|
+
* `path` and `pattern` manually.
|
|
25
|
+
*
|
|
26
|
+
* Algorithm:
|
|
27
|
+
* - Split the pattern by `/`. The leading `/` produces an empty first
|
|
28
|
+
* segment.
|
|
29
|
+
* - Find the first segment that contains a wildcard meta (`*` or `?`).
|
|
30
|
+
* - Everything strictly before it forms the root (rejoined with `/`).
|
|
31
|
+
* Everything from that segment onward is the new pattern (relative
|
|
32
|
+
* to root).
|
|
33
|
+
* - If no segment contains a wildcard the pattern is a literal absolute
|
|
34
|
+
* path; treat dirname as the root and basename as the pattern so
|
|
35
|
+
* `Glob({pattern: "/etc/hosts"})` still matches the single file.
|
|
36
|
+
* - Empty root collapses to "/" (POSIX absolute root).
|
|
37
|
+
*/
|
|
38
|
+
export declare function splitAbsolutePattern(p: string): {
|
|
39
|
+
root: string;
|
|
40
|
+
pattern: string;
|
|
41
|
+
};
|
|
17
42
|
//# sourceMappingURL=glob.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/glob.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAuCpD,eAAO,MAAM,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/glob.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAuCpD,eAAO,MAAM,QAAQ,EAAE,WAoKtB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA+BnD;AAID;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAsBjF"}
|
|
@@ -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,EAAc,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAG5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,8EAA8E;AAC9E,MAAM,WAAW,GAAG,MAAM,CAAC;AAE3B;+BAC+B;AAC/B,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B,MAAM,CAAC,MAAM,QAAQ,GAAgB;IACnC,sEAAsE;IACtE,oCAAoC;IACpC,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,WAAW,EACT,sEAAsE;YACtE,wEAAwE;YACxE,yEAAyE;YACzE,8EAA8E;YAC9E,uEAAuE;QACzE,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,kEAAkE;wBAClE,
|
|
1
|
+
{"version":3,"file":"glob.js","sourceRoot":"","sources":["../../../src/tools/builtin/glob.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;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web_fetch.js","sourceRoot":"","sources":["../../../src/tools/builtin/web_fetch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web_fetch.js","sourceRoot":"","sources":["../../../src/tools/builtin/web_fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAInC;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,MAAM,kBAAkB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM;AAElD,MAAM,CAAC,MAAM,YAAY,GAAgB;IACvC,yEAAyE;IACzE,gDAAgD;IAChD,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU;QAChB,WAAW,EACT,gFAAgF;YAChF,uEAAuE;YACvE,yEAAyE;YACzE,0EAA0E;QAC5E,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gCAAgC;iBAC9C;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kDAAkD;iBAChE;aACF;YACD,QAAQ,EAAE,CAAC,KAAK,CAAC;SAClB;KACF;IACD,KAAK,CAAC,OAAO,CAAC,KAAK;QACjB,MAAM,GAAG,GAAG,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,KAAK,EAAE,2DAA2D,GAAG,GAAG;aACzE,CAAC,CAAC;QACL,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAErE,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,GAAG,GAAG,CAAwC,CAAC;YACrD,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,2BAA2B,gBAAgB,IAAI;oBACtD,GAAG;iBACJ,CAAC,CAAC;YACL,CAAC;YACD,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,KAAK,EAAE,2BAA2B,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;gBAC5D,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;QACD,YAAY,CAAC,KAAK,CAAC,CAAC;QAEpB,MAAM,WAAW,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/E,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,KAAK,EAAE,kBAAkB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE;gBACjE,GAAG;gBACH,WAAW;gBACX,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;aACzB,CAAC,CAAC;QACL,CAAC;QAED,0EAA0E;QAC1E,gEAAgE;QAChE,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,KAAK,EAAE,oCAAoC,WAAW,+BAA+B;gBACrF,GAAG;gBACH,WAAW;aACZ,CAAC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,IAAI,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;YACrC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;YACzC,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QAED,+DAA+D;QAC/D,oEAAoE;QACpE,qEAAqE;QACrE,sEAAsE;QACtE,wEAAwE;QACxE,4DAA4D;QAC5D,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,iBAAiB,WAAW,EAAE,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF,CAAC;AAEF,8CAA8C;AAC9C,KAAK,UAAU,QAAQ,CAAC,QAAkB;IACxC,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;gFAGgF;AAChF,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7B,uEAAuE;IACvE,CAAC,CAAC,+BAA+B,CAAC,CAAC,MAAM,EAAE,CAAC;IAE5C,oEAAoE;IACpE,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAEnB,wEAAwE;IACxE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAClC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACvC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,oDAAoD,CAAC,CAAC,MAAM,EAAE,CAAC;IACjE,uEAAuE;IACvE,uEAAuE;IACvE,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM;QACnC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE;QACnB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM;YAC3B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE;YACtB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;gBAChB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACX,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAEjB,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,EAAE,IAAgC,CAAC,CAAC;IAC5D,qEAAqE;IACrE,OAAO,GAAG;SACP,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC;SAC1B,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;SAC1B,IAAI,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,UAAU,CACjB,CAAqB,EACrB,KAA+B;IAE/B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QAC9B,YAAY;QACZ,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACvB,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QACD,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO;QAC9B,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAElB,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,IAAI,CAAC;YACV,KAAK,IAAI,CAAC;YACV,KAAK,IAAI,CAAC;YACV,KAAK,IAAI,CAAC;YACV,KAAK,IAAI,CAAC;YACV,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACjC,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBACvC,GAAG,IAAI,OAAO,MAAM,IAAI,IAAI,MAAM,CAAC;gBACnC,MAAM;YACR,CAAC;YACD,KAAK,GAAG,CAAC;YACT,KAAK,KAAK,CAAC;YACX,KAAK,SAAS,CAAC;YACf,KAAK,SAAS,CAAC;YACf,KAAK,MAAM,CAAC;YACZ,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ,CAAC;YACd,KAAK,OAAO,CAAC;YACb,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBACxC,IAAI,KAAK;oBAAE,GAAG,IAAI,OAAO,KAAK,MAAM,CAAC;gBACrC,MAAM;YACR,CAAC;YACD,KAAK,IAAI;gBACP,GAAG,IAAI,IAAI,CAAC;gBACZ,MAAM;YACR,KAAK,IAAI;gBACP,GAAG,IAAI,aAAa,CAAC;gBACrB,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBACxC,IAAI,KAAK;oBAAE,GAAG,IAAI,KAAK,KAAK,IAAI,CAAC;gBACjC,MAAM;YACR,CAAC;YACD,KAAK,IAAI,CAAC;YACV,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBACxC,IAAI,KAAK;oBAAE,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC;gBAC/B,MAAM;YACR,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,iEAAiE;gBACjE,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;gBACzB,IAAI,KAAK;oBAAE,GAAG,IAAI,KAAK,KAAK,IAAI,CAAC;gBACjC,MAAM;YACR,CAAC;YACD,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC7C,IAAI,KAAK;oBAAE,GAAG,IAAI,eAAe,KAAK,cAAc,CAAC;gBACrD,MAAM;YACR,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAC5C,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;gBAC/C,IAAI,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI,GAAG,CAAC;qBAC/D,IAAI,IAAI;oBAAE,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI,GAAG,CAAC;;oBACtC,GAAG,IAAI,IAAI,CAAC;gBACjB,MAAM;YACR,CAAC;YACD,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAC1C,IAAI,GAAG;oBAAE,GAAG,IAAI,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;qBAC/B,IAAI,GAAG;oBAAE,GAAG,IAAI,GAAG,CAAC;gBACzB,MAAM;YACR,CAAC;YACD,KAAK,IAAI,CAAC;YACV,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,MAAM,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC;gBAC7B,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,IAAI,OAAO,GAAG,MAAM,CAAC;gBACrB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;oBAChC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBACvC,2DAA2D;oBAC3D,iCAAiC;oBACjC,OAAO,IAAI,GAAG,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBAC3D,CAAC,IAAI,CAAC,CAAC;gBACT,CAAC,CAAC,CAAC;gBACH,GAAG,IAAI,GAAG,OAAO,IAAI,CAAC;gBACtB,MAAM;YACR,CAAC;YACD,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,mEAAmE;gBACnE,oCAAoC;gBACpC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBACxC,GAAG,IAAI,OAAO,KAAK,IAAI,CAAC;gBACxB,MAAM;YACR,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBACxC,IAAI,KAAK;oBACP,GAAG,IAAI,OAAO,KAAK;yBAChB,KAAK,CAAC,IAAI,CAAC;yBACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;yBACpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;gBACtB,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,+DAA+D;gBAC/D,MAAM,IAAI,GAAe,EAAE,CAAC;gBAC5B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;oBAC5B,MAAM,KAAK,GAAa,EAAE,CAAC;oBAC3B,CAAC,CAAC,EAAE,CAAC;yBACF,QAAQ,CAAC,OAAO,CAAC;yBACjB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;wBACb,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;oBAC9D,CAAC,CAAC,CAAC;oBACL,IAAI,KAAK,CAAC,MAAM;wBAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrC,CAAC,CAAC,CAAC;gBACH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM;gBAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACzC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;gBACjC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvB,8BAA8B;gBAC9B,OAAO,MAAM,CAAC,MAAM,GAAG,IAAI;oBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC7C,IAAI,GAAG,GAAG,SAAS,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBACxF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBACpB,OAAO,GAAG,CAAC,MAAM,GAAG,IAAI;wBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACvC,GAAG,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBACpC,CAAC;gBACD,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC;gBAClB,MAAM;YACR,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,gEAAgE;gBAChE,4BAA4B;gBAC5B,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8BAA8B;AAC9B,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AACnD,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "maestro-agent-sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "Embeddable, provider-agnostic TypeScript agent SDK — pluggable providers, built-in tools, skills, memory, and MCP.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Yeonwoo Jeong <aadd4020@gmail.com>",
|