@te-river/opencode-team-mode 1.5.5 → 1.5.7
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/README.md +544 -634
- package/README.zh-CN.md +511 -576
- package/dist/agents.d.ts +6 -1
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +113 -533
- package/dist/agents.js.map +1 -1
- package/dist/approval-gate.d.ts +16 -0
- package/dist/approval-gate.d.ts.map +1 -1
- package/dist/approval-gate.js +8 -1
- package/dist/approval-gate.js.map +1 -1
- package/dist/blackboard.d.ts.map +1 -1
- package/dist/blackboard.js +3 -2
- package/dist/blackboard.js.map +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +7 -6
- package/dist/commands.js.map +1 -1
- package/dist/envprotect/bash-classify.d.ts +42 -0
- package/dist/envprotect/bash-classify.d.ts.map +1 -0
- package/dist/envprotect/bash-classify.js +221 -0
- package/dist/envprotect/bash-classify.js.map +1 -0
- package/dist/envprotect/gate-predicates.d.ts +57 -0
- package/dist/envprotect/gate-predicates.d.ts.map +1 -0
- package/dist/envprotect/gate-predicates.js +174 -0
- package/dist/envprotect/gate-predicates.js.map +1 -0
- package/dist/envprotect/hook.d.ts +45 -0
- package/dist/envprotect/hook.d.ts.map +1 -0
- package/dist/envprotect/hook.js +158 -0
- package/dist/envprotect/hook.js.map +1 -0
- package/dist/envprotect/path-classify.d.ts +16 -0
- package/dist/envprotect/path-classify.d.ts.map +1 -0
- package/dist/envprotect/path-classify.js +72 -0
- package/dist/envprotect/path-classify.js.map +1 -0
- package/dist/envprotect/patterns.d.ts +77 -0
- package/dist/envprotect/patterns.d.ts.map +1 -0
- package/dist/envprotect/patterns.js +182 -0
- package/dist/envprotect/patterns.js.map +1 -0
- package/dist/envprotect.d.ts +19 -217
- package/dist/envprotect.d.ts.map +1 -1
- package/dist/envprotect.js +18 -803
- package/dist/envprotect.js.map +1 -1
- package/dist/fs-safe.d.ts +16 -0
- package/dist/fs-safe.d.ts.map +1 -0
- package/dist/fs-safe.js +56 -0
- package/dist/fs-safe.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -6
- package/dist/index.js.map +1 -1
- package/dist/prompts/lead.d.ts +7 -0
- package/dist/prompts/lead.d.ts.map +1 -0
- package/dist/prompts/lead.js +233 -0
- package/dist/prompts/lead.js.map +1 -0
- package/dist/prompts/shared.d.ts +8 -0
- package/dist/prompts/shared.d.ts.map +1 -0
- package/dist/prompts/shared.js +120 -0
- package/dist/prompts/shared.js.map +1 -0
- package/dist/prompts/specialists.d.ts +12 -0
- package/dist/prompts/specialists.d.ts.map +1 -0
- package/dist/prompts/specialists.js +241 -0
- package/dist/prompts/specialists.js.map +1 -0
- package/dist/shell-text.d.ts +14 -0
- package/dist/shell-text.d.ts.map +1 -0
- package/dist/shell-text.js +16 -0
- package/dist/shell-text.js.map +1 -0
- package/dist/tm/args-schema.d.ts +42 -0
- package/dist/tm/args-schema.d.ts.map +1 -0
- package/dist/tm/args-schema.js +213 -0
- package/dist/tm/args-schema.js.map +1 -0
- package/dist/tm/browser.d.ts +52 -0
- package/dist/tm/browser.d.ts.map +1 -0
- package/dist/tm/browser.js +361 -0
- package/dist/tm/browser.js.map +1 -0
- package/dist/tm/client-unwrap.d.ts +38 -0
- package/dist/tm/client-unwrap.d.ts.map +1 -0
- package/dist/tm/client-unwrap.js +113 -0
- package/dist/tm/client-unwrap.js.map +1 -0
- package/dist/tm/config.d.ts +55 -19
- package/dist/tm/config.d.ts.map +1 -1
- package/dist/tm/config.js +74 -19
- package/dist/tm/config.js.map +1 -1
- package/dist/tm/guard.d.ts.map +1 -1
- package/dist/tm/guard.js +4 -7
- package/dist/tm/guard.js.map +1 -1
- package/dist/tm/index.d.ts +24 -7
- package/dist/tm/index.d.ts.map +1 -1
- package/dist/tm/index.js +111 -21
- package/dist/tm/index.js.map +1 -1
- package/dist/tm/memory.d.ts +88 -0
- package/dist/tm/memory.d.ts.map +1 -0
- package/dist/tm/memory.js +360 -0
- package/dist/tm/memory.js.map +1 -0
- package/dist/tm/pipelines.d.ts +58 -0
- package/dist/tm/pipelines.d.ts.map +1 -0
- package/dist/tm/pipelines.js +308 -0
- package/dist/tm/pipelines.js.map +1 -0
- package/dist/tm/preview.d.ts +6 -1
- package/dist/tm/preview.d.ts.map +1 -1
- package/dist/tm/preview.js +63 -13
- package/dist/tm/preview.js.map +1 -1
- package/dist/tm/ptc/budgets.d.ts +38 -0
- package/dist/tm/ptc/budgets.d.ts.map +1 -0
- package/dist/tm/ptc/budgets.js +59 -0
- package/dist/tm/ptc/budgets.js.map +1 -0
- package/dist/tm/ptc/contract.d.ts +131 -0
- package/dist/tm/ptc/contract.d.ts.map +1 -0
- package/dist/tm/ptc/contract.js +47 -0
- package/dist/tm/ptc/contract.js.map +1 -0
- package/dist/tm/ptc/driver.d.ts +37 -0
- package/dist/tm/ptc/driver.d.ts.map +1 -0
- package/dist/tm/ptc/driver.js +181 -0
- package/dist/tm/ptc/driver.js.map +1 -0
- package/dist/tm/ptc/engines.d.ts +32 -0
- package/dist/tm/ptc/engines.d.ts.map +1 -0
- package/dist/tm/ptc/engines.js +201 -0
- package/dist/tm/ptc/engines.js.map +1 -0
- package/dist/tm/ptc/gate.d.ts +28 -0
- package/dist/tm/ptc/gate.d.ts.map +1 -0
- package/dist/tm/ptc/gate.js +130 -0
- package/dist/tm/ptc/gate.js.map +1 -0
- package/dist/tm/ptc/index.d.ts +19 -0
- package/dist/tm/ptc/index.d.ts.map +1 -0
- package/dist/tm/ptc/index.js +15 -0
- package/dist/tm/ptc/index.js.map +1 -0
- package/dist/tm/ptc/pscan.d.ts +11 -0
- package/dist/tm/ptc/pscan.d.ts.map +1 -0
- package/dist/tm/ptc/pscan.js +27 -0
- package/dist/tm/ptc/pscan.js.map +1 -0
- package/dist/tm/ptc/summary.d.ts +17 -0
- package/dist/tm/ptc/summary.d.ts.map +1 -0
- package/dist/tm/ptc/summary.js +112 -0
- package/dist/tm/ptc/summary.js.map +1 -0
- package/dist/tm/ptc/tool.d.ts +35 -0
- package/dist/tm/ptc/tool.d.ts.map +1 -0
- package/dist/tm/ptc/tool.js +136 -0
- package/dist/tm/ptc/tool.js.map +1 -0
- package/dist/tm/ptc.d.ts +45 -26
- package/dist/tm/ptc.d.ts.map +1 -1
- package/dist/tm/ptc.js +71 -45
- package/dist/tm/ptc.js.map +1 -1
- package/dist/tm/result.d.ts +34 -0
- package/dist/tm/result.d.ts.map +1 -0
- package/dist/tm/result.js +87 -0
- package/dist/tm/result.js.map +1 -0
- package/dist/tm/search.d.ts +58 -0
- package/dist/tm/search.d.ts.map +1 -0
- package/dist/tm/search.js +229 -0
- package/dist/tm/search.js.map +1 -0
- package/dist/tm/shell-bridge.d.ts +22 -0
- package/dist/tm/shell-bridge.d.ts.map +1 -0
- package/dist/tm/shell-bridge.js +116 -0
- package/dist/tm/shell-bridge.js.map +1 -0
- package/dist/tm/store.d.ts.map +1 -1
- package/dist/tm/store.js +2 -1
- package/dist/tm/store.js.map +1 -1
- package/dist/tm/tools.d.ts +13 -71
- package/dist/tm/tools.d.ts.map +1 -1
- package/dist/tm/tools.js +22 -656
- package/dist/tm/tools.js.map +1 -1
- package/dist/tm/webfetch.d.ts +109 -0
- package/dist/tm/webfetch.d.ts.map +1 -0
- package/dist/tm/webfetch.js +305 -0
- package/dist/tm/webfetch.js.map +1 -0
- package/docs/installation.md +201 -0
- package/package.json +4 -3
package/dist/tm/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tm/tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tm/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAiC,MAAM,gBAAgB,CAAA;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,qCAAqC;AACrC,8EAA8E;AAC9E,8EAA8E;AAC9E,wDAAwD;AAExD,MAAM,mBAAmB,GAAG;;;;;iIAKqG,CAAA;AAEjI,MAAM,mBAAmB,GAAG;;;;;wFAK4D,CAAA;AAExF,MAAM,mBAAmB,GAAG;;;;6NAIiM,CAAA;AAE7N,MAAM,oBAAoB,GAAG;;;uJAG0H,CAAA;AAEvJ;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAY,EACZ,SAAuB;IAEvB,MAAM,EAAE,GAAG,SAAS,IAAI,cAAc,CAAC,IAAI,CAAC,CAAA;IAC5C,MAAM,WAAW,GAAG,MAAM,gBAAgB,EAAE,CAAA;IAC5C,OAAO;QACL,OAAO,EAAE;YACP,WAAW,EAAE,mBAAmB;YAChC,IAAI,EAAE,WAAW,CAAC,OAAO;YACzB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;SAC7E;QACD,OAAO,EAAE;YACP,WAAW,EAAE,mBAAmB;YAChC,IAAI,EAAE,WAAW,CAAC,OAAO;YACzB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;SAC7E;QACD,OAAO,EAAE;YACP,WAAW,EAAE,mBAAmB;YAChC,IAAI,EAAE,WAAW,CAAC,OAAO;YACzB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;SAC7E;QACD,QAAQ,EAAE;YACR,WAAW,EAAE,oBAAoB;YACjC,IAAI,EAAE,WAAW,CAAC,QAAQ;YAC1B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;SAC9E;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tm_webfetch — governed web fetching (the sanctioned network channel).
|
|
3
|
+
*
|
|
4
|
+
* Two-channel design: user-configured MCP/plugin tools (browser automation,
|
|
5
|
+
* search, page fetchers riding the host tool surface) are the HIGH-priority
|
|
6
|
+
* channel — the whitelist never touches them. tm_webfetch is the governed
|
|
7
|
+
* FALLBACK: a domain-allowlisted fetch whose output rides the SAME
|
|
8
|
+
* governance as the other tm_* tools (threshold offload, content-aware
|
|
9
|
+
* preview, tm_fetch handle) so a web page can never flood the context.
|
|
10
|
+
*
|
|
11
|
+
* Red lines carried over from the P5 network-zero era:
|
|
12
|
+
* - only http(s) URLs — file:// and every other scheme rejected outright;
|
|
13
|
+
* - the HOST must be on the allowlist (seeded with the CN-reachable
|
|
14
|
+
* lookup hosts: moegirl wiki / bilibili / bing CN+int / baidu / sogou /
|
|
15
|
+
* 360 / npm registry / GitHub API — see config.ts
|
|
16
|
+
* DEFAULT_WEBFETCH_DOMAINS; TM_WEBFETCH_ALLOWED_DOMAINS overrides, "*"
|
|
17
|
+
* opens every host);
|
|
18
|
+
* - redirects are followed MANUALLY and every hop re-checked against the
|
|
19
|
+
* allowlist (an allowlisted shortener cannot bounce off-site);
|
|
20
|
+
* - a URL naming an env file (isEnvFilePath) is refused — the R6 red
|
|
21
|
+
* line applies to remote spellings too;
|
|
22
|
+
* - response body capped at 2 MB, whole fetch under a hard 20 s timeout,
|
|
23
|
+
* HTML stripped to text before governance.
|
|
24
|
+
*/
|
|
25
|
+
import type { ToolResult } from "../types.js";
|
|
26
|
+
import { type TmConfig } from "./config.js";
|
|
27
|
+
import type { TmPipelines } from "./pipelines.js";
|
|
28
|
+
/** True when `hostname` is the domain itself or a subdomain of it. */
|
|
29
|
+
export declare function hostAllowed(hostname: string, allowlist: readonly string[]): boolean;
|
|
30
|
+
export type UrlVerdict = {
|
|
31
|
+
ok: true;
|
|
32
|
+
url: URL;
|
|
33
|
+
} | {
|
|
34
|
+
ok: false;
|
|
35
|
+
message: string;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Validate a fetch target: absolute http(s) URL, host on the allowlist
|
|
39
|
+
* ("*" opens every host), and never an env-file spelling (R6 red line on
|
|
40
|
+
* remote `.env` / shell-rc names).
|
|
41
|
+
*/
|
|
42
|
+
export declare function checkWebUrl(raw: unknown, allowlist: readonly string[]): UrlVerdict;
|
|
43
|
+
/** Crude but dependency-free HTML → text (script/style/comments stripped,
|
|
44
|
+
* block tags become newlines, common entities decoded). */
|
|
45
|
+
export declare function htmlToText(html: string): string;
|
|
46
|
+
/** Search-engine result pages whose raw HTML is worth collapsing into a
|
|
47
|
+
* clean hit list (title + URL) instead of a wall of stripped page text. */
|
|
48
|
+
export declare const SEARCH_PAGE_RE: RegExp;
|
|
49
|
+
export interface SearchHit {
|
|
50
|
+
title: string;
|
|
51
|
+
url: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Pull external result hits (title + URL) out of a search-engine result
|
|
55
|
+
* page's RAW HTML. Dependency-free: anchor scan + noise filters (relative
|
|
56
|
+
* hrefs, click trackers, engine chrome, duplicates). Engines rearrange
|
|
57
|
+
* their markup often, so the filter set is intentionally loose — callers
|
|
58
|
+
* fall back to plain text extraction when the list comes back thin.
|
|
59
|
+
*/
|
|
60
|
+
export declare function extractSearchHits(html: string, max?: number): SearchHit[];
|
|
61
|
+
/** Compact numbered rendering — what actually enters the context. */
|
|
62
|
+
export declare function renderSearchHits(query: string, engine: string, hits: SearchHit[]): string;
|
|
63
|
+
export interface WebFetchResult {
|
|
64
|
+
text: string;
|
|
65
|
+
contentType: string;
|
|
66
|
+
finalUrl: string;
|
|
67
|
+
}
|
|
68
|
+
export type FetchImpl = (input: string, init?: Record<string, unknown>) => Promise<{
|
|
69
|
+
ok?: boolean;
|
|
70
|
+
status: number;
|
|
71
|
+
headers: {
|
|
72
|
+
get(name: string): string | null;
|
|
73
|
+
};
|
|
74
|
+
body?: {
|
|
75
|
+
getReader(): ReadableStreamDefaultReader<Uint8Array>;
|
|
76
|
+
} | null;
|
|
77
|
+
arrayBuffer?: () => Promise<ArrayBuffer>;
|
|
78
|
+
text?: () => Promise<string>;
|
|
79
|
+
}>;
|
|
80
|
+
/**
|
|
81
|
+
* Fetch a URL with hard timeout, byte cap, and MANUAL redirects — every
|
|
82
|
+
* hop is re-checked against the allowlist before it is requested.
|
|
83
|
+
* `fetchImpl` is injectable for tests (default: globalThis.fetch).
|
|
84
|
+
*/
|
|
85
|
+
export declare function fetchWebText(url: URL, allowlist: readonly string[], opts?: {
|
|
86
|
+
timeoutMs?: number;
|
|
87
|
+
maxBytes?: number;
|
|
88
|
+
fetchImpl?: FetchImpl;
|
|
89
|
+
}): Promise<WebFetchResult>;
|
|
90
|
+
/** Content extraction: HTML stripped to text; JSON kept for the json
|
|
91
|
+
* preview branch; anything else passes through untouched. */
|
|
92
|
+
export declare function extractWebResponse(raw: string, contentType: string): {
|
|
93
|
+
text: string;
|
|
94
|
+
isHtml: boolean;
|
|
95
|
+
};
|
|
96
|
+
/** Build the tm_webfetch ToolDefinition over the SHARED main pipelines
|
|
97
|
+
* instance (same step counter as tm_read/tm_grep/tm_bash — refs stay
|
|
98
|
+
* unambiguous). `fetchImpl` is injectable for tests. */
|
|
99
|
+
export declare function buildTmWebfetchTool(deps: {
|
|
100
|
+
pipelines: TmPipelines;
|
|
101
|
+
cfg: TmConfig;
|
|
102
|
+
args?: Record<string, unknown>;
|
|
103
|
+
fetchImpl?: FetchImpl;
|
|
104
|
+
}): {
|
|
105
|
+
description: string;
|
|
106
|
+
args: Record<string, unknown>;
|
|
107
|
+
execute: (rawArgs: Record<string, unknown>, ctx: unknown) => Promise<ToolResult>;
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=webfetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webfetch.d.ts","sourceRoot":"","sources":["../../src/tm/webfetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tm_webfetch — governed web fetching (the sanctioned network channel).
|
|
3
|
+
*
|
|
4
|
+
* Two-channel design: user-configured MCP/plugin tools (browser automation,
|
|
5
|
+
* search, page fetchers riding the host tool surface) are the HIGH-priority
|
|
6
|
+
* channel — the whitelist never touches them. tm_webfetch is the governed
|
|
7
|
+
* FALLBACK: a domain-allowlisted fetch whose output rides the SAME
|
|
8
|
+
* governance as the other tm_* tools (threshold offload, content-aware
|
|
9
|
+
* preview, tm_fetch handle) so a web page can never flood the context.
|
|
10
|
+
*
|
|
11
|
+
* Red lines carried over from the P5 network-zero era:
|
|
12
|
+
* - only http(s) URLs — file:// and every other scheme rejected outright;
|
|
13
|
+
* - the HOST must be on the allowlist (seeded with the CN-reachable
|
|
14
|
+
* lookup hosts: moegirl wiki / bilibili / bing CN+int / baidu / sogou /
|
|
15
|
+
* 360 / npm registry / GitHub API — see config.ts
|
|
16
|
+
* DEFAULT_WEBFETCH_DOMAINS; TM_WEBFETCH_ALLOWED_DOMAINS overrides, "*"
|
|
17
|
+
* opens every host);
|
|
18
|
+
* - redirects are followed MANUALLY and every hop re-checked against the
|
|
19
|
+
* allowlist (an allowlisted shortener cannot bounce off-site);
|
|
20
|
+
* - a URL naming an env file (isEnvFilePath) is refused — the R6 red
|
|
21
|
+
* line applies to remote spellings too;
|
|
22
|
+
* - response body capped at 2 MB, whole fetch under a hard 20 s timeout,
|
|
23
|
+
* HTML stripped to text before governance.
|
|
24
|
+
*/
|
|
25
|
+
import { isEnvFilePath } from "../envprotect.js";
|
|
26
|
+
import { shorten, DEFAULT_WEBFETCH_DOMAINS } from "./config.js";
|
|
27
|
+
import { detectContentType } from "./preview.js";
|
|
28
|
+
import { tmError, toToolResult } from "./result.js";
|
|
29
|
+
const WEBFETCH_UA = "Mozilla/5.0 (compatible; TeamMode-tm_webfetch/1.0)";
|
|
30
|
+
const WEBFETCH_TIMEOUT_MS = 20_000;
|
|
31
|
+
const WEBFETCH_MAX_BYTES = 2_000_000;
|
|
32
|
+
const WEBFETCH_MAX_REDIRECTS = 5;
|
|
33
|
+
// ---------- allowlist matching ----------
|
|
34
|
+
/** True when `hostname` is the domain itself or a subdomain of it. */
|
|
35
|
+
export function hostAllowed(hostname, allowlist) {
|
|
36
|
+
const host = hostname.toLowerCase().replace(/\.$/, "");
|
|
37
|
+
return allowlist.some((raw) => {
|
|
38
|
+
const dom = String(raw ?? "").trim().toLowerCase();
|
|
39
|
+
if (!dom || dom === "*")
|
|
40
|
+
return false;
|
|
41
|
+
return host === dom || host.endsWith("." + dom);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Validate a fetch target: absolute http(s) URL, host on the allowlist
|
|
46
|
+
* ("*" opens every host), and never an env-file spelling (R6 red line on
|
|
47
|
+
* remote `.env` / shell-rc names).
|
|
48
|
+
*/
|
|
49
|
+
export function checkWebUrl(raw, allowlist) {
|
|
50
|
+
const text = String(raw ?? "").trim();
|
|
51
|
+
if (!text)
|
|
52
|
+
return { ok: false, message: "缺少 url 参数" };
|
|
53
|
+
if (isEnvFilePath(text)) {
|
|
54
|
+
return { ok: false, message: "URL 指向环境文件(.env / shell rc 家族)——R6 红线,拒绝抓取" };
|
|
55
|
+
}
|
|
56
|
+
let url;
|
|
57
|
+
try {
|
|
58
|
+
url = new URL(text);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return { ok: false, message: `url 不是合法的绝对 URL: ${shorten(text, 120)}` };
|
|
62
|
+
}
|
|
63
|
+
if (url.protocol !== "https:" && url.protocol !== "http:") {
|
|
64
|
+
return { ok: false, message: `仅允许 http(s) 抓取(收到 ${url.protocol})——file:// 等本地协议一律拒绝` };
|
|
65
|
+
}
|
|
66
|
+
if (!allowlist.includes("*") && !hostAllowed(url.hostname, allowlist)) {
|
|
67
|
+
return {
|
|
68
|
+
ok: false,
|
|
69
|
+
message: `主机 "${url.hostname}" 不在 tm_webfetch 域名白名单内(预置: ${DEFAULT_WEBFETCH_DOMAINS.join(", ")})。` +
|
|
70
|
+
`用 TM_WEBFETCH_ALLOWED_DOMAINS 扩展(逗号/分号分隔,"*" 放开全部主机)`,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
return { ok: true, url };
|
|
74
|
+
}
|
|
75
|
+
// ---------- HTML → text ----------
|
|
76
|
+
/** Crude but dependency-free HTML → text (script/style/comments stripped,
|
|
77
|
+
* block tags become newlines, common entities decoded). */
|
|
78
|
+
export function htmlToText(html) {
|
|
79
|
+
return html
|
|
80
|
+
.replace(/<script[\s\S]*?<\/script\s*>/gi, " ")
|
|
81
|
+
.replace(/<style[\s\S]*?<\/style\s*>/gi, " ")
|
|
82
|
+
.replace(/<noscript[\s\S]*?<\/noscript\s*>/gi, " ")
|
|
83
|
+
.replace(/<!--[\s\S]*?-->/g, " ")
|
|
84
|
+
.replace(/<(?:br|hr)\s*\/?>/gi, "\n")
|
|
85
|
+
.replace(/<\/(?:p|div|li|h[1-6]|tr|section|article|header|footer)>/gi, "\n")
|
|
86
|
+
.replace(/<[^>]+>/g, " ")
|
|
87
|
+
.replace(/ /gi, " ")
|
|
88
|
+
.replace(/&/gi, "&")
|
|
89
|
+
.replace(/</gi, "<")
|
|
90
|
+
.replace(/>/gi, ">")
|
|
91
|
+
.replace(/"/gi, '"')
|
|
92
|
+
.replace(/�?39;|'/gi, "'")
|
|
93
|
+
.replace(/[ \t]+/g, " ")
|
|
94
|
+
.replace(/\s*\n\s*/g, "\n")
|
|
95
|
+
.replace(/\n{2,}/g, "\n")
|
|
96
|
+
.trim();
|
|
97
|
+
}
|
|
98
|
+
// ---------- search-result extraction ----------
|
|
99
|
+
/** Anchor tag scanner — captures the href (double- or single-quoted) plus
|
|
100
|
+
* the inner text. */
|
|
101
|
+
const ANCHOR_RE = /<a\b[^>]*href\s*=\s*(?:"([^"]*)"|'([^']*)')[^>]*>([\s\S]*?)<\/a\s*>/gi;
|
|
102
|
+
/** Search-engine result pages whose raw HTML is worth collapsing into a
|
|
103
|
+
* clean hit list (title + URL) instead of a wall of stripped page text. */
|
|
104
|
+
export const SEARCH_PAGE_RE = /(?:cn\.bing\.com|www\.bing\.com)\/search|\.baidu\.com\/s\b|sogou\.com\/web|so\.com\/s\b|search\.bilibili\.com\/all/i;
|
|
105
|
+
/** Click trackers / redirector links that point back at the engine instead
|
|
106
|
+
* of the destination (bing /ck/, baidu /link?, sogou /link?, ms fwlink). */
|
|
107
|
+
const ENGINE_TRACKER_RE = /bing\.com\/ck\/|baidu\.com\/link\?|sogou\.com\/link\?|go\.microsoft\.com\/fwlink/i;
|
|
108
|
+
function decodeEntities(s) {
|
|
109
|
+
return s
|
|
110
|
+
.replace(/ /gi, " ")
|
|
111
|
+
.replace(/&/gi, "&")
|
|
112
|
+
.replace(/</gi, "<")
|
|
113
|
+
.replace(/>/gi, ">")
|
|
114
|
+
.replace(/"/gi, '"')
|
|
115
|
+
.replace(/�?39;|'/gi, "'");
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Pull external result hits (title + URL) out of a search-engine result
|
|
119
|
+
* page's RAW HTML. Dependency-free: anchor scan + noise filters (relative
|
|
120
|
+
* hrefs, click trackers, engine chrome, duplicates). Engines rearrange
|
|
121
|
+
* their markup often, so the filter set is intentionally loose — callers
|
|
122
|
+
* fall back to plain text extraction when the list comes back thin.
|
|
123
|
+
*/
|
|
124
|
+
export function extractSearchHits(html, max = 10) {
|
|
125
|
+
const hits = [];
|
|
126
|
+
const seen = new Set();
|
|
127
|
+
for (const m of html.matchAll(ANCHOR_RE)) {
|
|
128
|
+
const href = decodeEntities((m[1] ?? m[2] ?? "").trim());
|
|
129
|
+
if (!/^https?:\/\//i.test(href))
|
|
130
|
+
continue;
|
|
131
|
+
if (ENGINE_TRACKER_RE.test(href))
|
|
132
|
+
continue;
|
|
133
|
+
const title = decodeEntities(m[3].replace(/<[^>]+>/g, " "))
|
|
134
|
+
.replace(/\s+/g, " ")
|
|
135
|
+
.trim();
|
|
136
|
+
// <4 chars kills engine chrome (下一页 / 首页 / More) without risking real titles
|
|
137
|
+
if (title.length < 4)
|
|
138
|
+
continue;
|
|
139
|
+
const key = href.split("#")[0];
|
|
140
|
+
if (seen.has(key))
|
|
141
|
+
continue;
|
|
142
|
+
seen.add(key);
|
|
143
|
+
hits.push({ title: title.length > 110 ? title.slice(0, 110) + "…" : title, url: href });
|
|
144
|
+
if (hits.length >= max)
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
return hits;
|
|
148
|
+
}
|
|
149
|
+
/** Compact numbered rendering — what actually enters the context. */
|
|
150
|
+
export function renderSearchHits(query, engine, hits) {
|
|
151
|
+
const lines = [`[search] ${engine} × "${query}" → ${hits.length} 条结果:`];
|
|
152
|
+
hits.forEach((h, i) => {
|
|
153
|
+
lines.push(`${i + 1}. ${h.title}`);
|
|
154
|
+
lines.push(` ${h.url}`);
|
|
155
|
+
});
|
|
156
|
+
lines.push("(读正文: tm_webfetch 结果 URL;JS 渲染页用 tm_browser 打开。)");
|
|
157
|
+
return lines.join("\n");
|
|
158
|
+
}
|
|
159
|
+
const REDIRECT_STATUSES = new Set([301, 302, 303, 307, 308]);
|
|
160
|
+
async function readBodyCapped(res, maxBytes) {
|
|
161
|
+
const reader = res.body?.getReader?.();
|
|
162
|
+
if (!reader) {
|
|
163
|
+
// some hosts expose only text() (no streaming body) — the cap still
|
|
164
|
+
// applies, as a post-read string truncation
|
|
165
|
+
const t = String(await res.text?.() ?? "");
|
|
166
|
+
return t.length > maxBytes ? t.slice(0, maxBytes) + "\n…(响应体超出字节上限,已截断)" : t;
|
|
167
|
+
}
|
|
168
|
+
const decoder = new TextDecoder("utf-8");
|
|
169
|
+
let out = "";
|
|
170
|
+
let bytes = 0;
|
|
171
|
+
for (;;) {
|
|
172
|
+
const { done, value } = await reader.read();
|
|
173
|
+
if (done)
|
|
174
|
+
break;
|
|
175
|
+
bytes += value.byteLength;
|
|
176
|
+
out += decoder.decode(value, { stream: true });
|
|
177
|
+
if (bytes >= maxBytes) {
|
|
178
|
+
void reader.cancel().catch(() => { });
|
|
179
|
+
out += "\n…(响应体超出字节上限,已截断)";
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return out + decoder.decode();
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Fetch a URL with hard timeout, byte cap, and MANUAL redirects — every
|
|
187
|
+
* hop is re-checked against the allowlist before it is requested.
|
|
188
|
+
* `fetchImpl` is injectable for tests (default: globalThis.fetch).
|
|
189
|
+
*/
|
|
190
|
+
export async function fetchWebText(url, allowlist, opts = {}) {
|
|
191
|
+
const doFetch = opts.fetchImpl ?? globalThis.fetch;
|
|
192
|
+
if (typeof doFetch !== "function") {
|
|
193
|
+
throw new Error("宿主无可用 fetch 实现(globalThis.fetch 缺失)");
|
|
194
|
+
}
|
|
195
|
+
const timeoutMs = opts.timeoutMs ?? WEBFETCH_TIMEOUT_MS;
|
|
196
|
+
const maxBytes = opts.maxBytes ?? WEBFETCH_MAX_BYTES;
|
|
197
|
+
let current = url;
|
|
198
|
+
for (let hop = 0; hop <= WEBFETCH_MAX_REDIRECTS; hop++) {
|
|
199
|
+
// every hop re-checked — an allowlisted shortener cannot bounce off-site
|
|
200
|
+
const verdict = checkWebUrl(current.toString(), allowlist);
|
|
201
|
+
if (!verdict.ok)
|
|
202
|
+
throw new Error(verdict.message);
|
|
203
|
+
const ctrl = new AbortController();
|
|
204
|
+
const timer = setTimeout(() => ctrl.abort(), timeoutMs);
|
|
205
|
+
try {
|
|
206
|
+
const res = (await doFetch(current.toString(), {
|
|
207
|
+
redirect: "manual",
|
|
208
|
+
signal: ctrl.signal,
|
|
209
|
+
headers: { "user-agent": WEBFETCH_UA },
|
|
210
|
+
}));
|
|
211
|
+
if (REDIRECT_STATUSES.has(res.status)) {
|
|
212
|
+
const loc = res.headers.get("location");
|
|
213
|
+
if (!loc)
|
|
214
|
+
throw new Error(`重定向 ${res.status} 缺少 Location 头`);
|
|
215
|
+
current = new URL(loc, current);
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
if (res.status < 200 || res.status >= 300) {
|
|
219
|
+
throw new Error(`HTTP ${res.status}(最终 URL: ${shorten(current.toString(), 120)})`);
|
|
220
|
+
}
|
|
221
|
+
const contentType = (res.headers.get("content-type") ?? "text/plain").toLowerCase();
|
|
222
|
+
const raw = await readBodyCapped(res, maxBytes);
|
|
223
|
+
return { text: raw, contentType, finalUrl: current.toString() };
|
|
224
|
+
}
|
|
225
|
+
finally {
|
|
226
|
+
clearTimeout(timer);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
throw new Error(`重定向超过 ${WEBFETCH_MAX_REDIRECTS} 跳,放弃抓取`);
|
|
230
|
+
}
|
|
231
|
+
/** Content extraction: HTML stripped to text; JSON kept for the json
|
|
232
|
+
* preview branch; anything else passes through untouched. */
|
|
233
|
+
export function extractWebResponse(raw, contentType) {
|
|
234
|
+
if (contentType.includes("text/html") || contentType.includes("application/xhtml")) {
|
|
235
|
+
return { text: htmlToText(raw), isHtml: true };
|
|
236
|
+
}
|
|
237
|
+
return { text: raw, isHtml: false };
|
|
238
|
+
}
|
|
239
|
+
// ---------- tool definition ----------
|
|
240
|
+
const WEBFETCH_DESCRIPTION = `Fetch a web page through the governed pipeline (domain allowlist + threshold offload) — use it for a KNOWN URL; for open-ended lookups PREFER tm_search (multi-engine, extracted results) and user-configured MCP/browser/search tools.
|
|
241
|
+
|
|
242
|
+
- Seeded hosts (CN-reachable, no API keys): mobile.moegirl.org.cn (wiki term: https://mobile.moegirl.org.cn/TERM) · search.bilibili.com (https://search.bilibili.com/all?keyword=QUERY) · cn.bing.com (https://cn.bing.com/search?q=QUERY; append &ensearch=1 for international results) · www.baidu.com (https://www.baidu.com/s?wd=QUERY) · www.sogou.com (https://www.sogou.com/web?query=QUERY) · www.so.com (https://www.so.com/s?q=QUERY) · registry.npmjs.org (package JSON: https://registry.npmjs.org/<pkg>/latest, search: https://registry.npmjs.org/-/v1/search?text=QUERY) · api.github.com (repo search: https://api.github.com/search/repositories?q=QUERY). URL-encode the query (CJK terms too). Search-engine result pages are auto-extracted to a title+URL hit list. Expand colloquial/abbreviated terms to canonical forms and fetch BOTH spellings.
|
|
243
|
+
- Governance: only http(s), hosts must be allowlisted (extend via TM_WEBFETCH_ALLOWED_DOMAINS, "*" opens all), redirects re-checked per hop, HTML stripped to text; output above TM_OFFLOAD_THRESHOLD tokens is offloaded to a handle — page with tm_fetch (try mode:"structure" first).
|
|
244
|
+
- This is a governed tool: out-of-allowlist hosts are rejected, not dialog-governed.`;
|
|
245
|
+
/** Build the tm_webfetch ToolDefinition over the SHARED main pipelines
|
|
246
|
+
* instance (same step counter as tm_read/tm_grep/tm_bash — refs stay
|
|
247
|
+
* unambiguous). `fetchImpl` is injectable for tests. */
|
|
248
|
+
export function buildTmWebfetchTool(deps) {
|
|
249
|
+
const { pipelines, cfg } = deps;
|
|
250
|
+
const allowlist = cfg.webfetchAllowedDomains;
|
|
251
|
+
return {
|
|
252
|
+
description: WEBFETCH_DESCRIPTION,
|
|
253
|
+
args: deps.args ?? {
|
|
254
|
+
url: { descriptor: "url: string (required, absolute https URL on an allowlisted host, query URL-encoded)" },
|
|
255
|
+
},
|
|
256
|
+
execute: async (rawArgs, ctx) => {
|
|
257
|
+
const tool = "tm_webfetch";
|
|
258
|
+
try {
|
|
259
|
+
const args = rawArgs ?? {};
|
|
260
|
+
const requested = typeof args.url === "string" ? args.url.trim() : "";
|
|
261
|
+
const verdict = checkWebUrl(requested, allowlist);
|
|
262
|
+
if (!verdict.ok)
|
|
263
|
+
return toToolResult(tmError(tool, "permission", verdict.message));
|
|
264
|
+
const stepId = pipelines.nextStepId();
|
|
265
|
+
pipelines.store.appendTrajectory({ tool, step_id: stepId, event: "call" });
|
|
266
|
+
const res = await fetchWebText(verdict.url, allowlist, { fetchImpl: deps.fetchImpl });
|
|
267
|
+
// Search-engine result pages collapse to a clean hit list (title +
|
|
268
|
+
// URL) BEFORE governance — the stripped page text is ~90% engine
|
|
269
|
+
// chrome. Thin extraction (markup changed / anti-bot shell) falls
|
|
270
|
+
// through to the plain-text path.
|
|
271
|
+
if (SEARCH_PAGE_RE.test(res.finalUrl)) {
|
|
272
|
+
const hits = extractSearchHits(res.text);
|
|
273
|
+
if (hits.length > 0) {
|
|
274
|
+
const sp = verdict.url.searchParams;
|
|
275
|
+
const query = sp.get("q") ?? sp.get("wd") ?? sp.get("query") ?? sp.get("keyword") ?? "";
|
|
276
|
+
const listing = renderSearchHits(query || res.finalUrl, "webfetch", hits);
|
|
277
|
+
return toToolResult(pipelines.govern(stepId, tool, listing, {
|
|
278
|
+
contentType: detectContentType(listing),
|
|
279
|
+
clue: `search url=${shorten(res.finalUrl, 120)}`,
|
|
280
|
+
}));
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
const { text } = extractWebResponse(res.text, res.contentType);
|
|
284
|
+
if (!text.trim()) {
|
|
285
|
+
// anti-bot / JS-rendered pages (baidu is the usual offender) return
|
|
286
|
+
// an empty shell — tell the agent instead of storing nothing
|
|
287
|
+
return toToolResult(tmError(tool, "execute", "页面内容为空——该站点可能是反爬或 JS 渲染页(baidu 常见)。换 tm_search 的其他引擎(bing/sogou/so)、用 tm_browser 打开,或直接访问数据源 URL(如 registry.npmjs.org/<pkg>/latest)。"));
|
|
288
|
+
}
|
|
289
|
+
const contentType = detectContentType(text);
|
|
290
|
+
return toToolResult(pipelines.govern(stepId, tool, text, {
|
|
291
|
+
contentType,
|
|
292
|
+
clue: `url=${shorten(res.finalUrl, 120)}`,
|
|
293
|
+
}));
|
|
294
|
+
}
|
|
295
|
+
catch (err) {
|
|
296
|
+
const e = err;
|
|
297
|
+
if (e?.name === "AbortError") {
|
|
298
|
+
return toToolResult(tmError(tool, "execute", "抓取超时(20s)——换更具体的搜索词或稍后重试"));
|
|
299
|
+
}
|
|
300
|
+
return toToolResult(tmError(tool, "execute", String(e?.message ?? err ?? "webfetch 失败")));
|
|
301
|
+
}
|
|
302
|
+
},
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=webfetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webfetch.js","sourceRoot":"","sources":["../../src/tm/webfetch.ts"],"names":[],"mappings":"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"}
|