@te-river/opencode-team-mode 1.5.11 → 1.5.13
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 +154 -57
- package/README.zh-CN.md +126 -47
- package/dist/agents.d.ts +5 -1
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +37 -11
- package/dist/agents.js.map +1 -1
- package/dist/approval-gate.d.ts +54 -16
- package/dist/approval-gate.d.ts.map +1 -1
- package/dist/approval-gate.js +163 -42
- package/dist/approval-gate.js.map +1 -1
- package/dist/host-hooks.d.ts +115 -0
- package/dist/host-hooks.d.ts.map +1 -0
- package/dist/host-hooks.js +270 -0
- package/dist/host-hooks.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +68 -4
- package/dist/index.js.map +1 -1
- package/dist/prompts/lead.d.ts +1 -1
- package/dist/prompts/lead.d.ts.map +1 -1
- package/dist/prompts/lead.js +88 -6
- package/dist/prompts/lead.js.map +1 -1
- package/dist/prompts/shared.d.ts +1 -1
- package/dist/prompts/shared.d.ts.map +1 -1
- package/dist/prompts/shared.js +203 -119
- package/dist/prompts/shared.js.map +1 -1
- package/dist/prompts/specialists.d.ts +2 -2
- package/dist/prompts/specialists.d.ts.map +1 -1
- package/dist/prompts/specialists.js +73 -23
- package/dist/prompts/specialists.js.map +1 -1
- package/dist/tm/args-schema.d.ts +31 -1
- package/dist/tm/args-schema.d.ts.map +1 -1
- package/dist/tm/args-schema.js +155 -39
- package/dist/tm/args-schema.js.map +1 -1
- package/dist/tm/bash-timeout.d.ts +72 -0
- package/dist/tm/bash-timeout.d.ts.map +1 -0
- package/dist/tm/bash-timeout.js +100 -0
- package/dist/tm/bash-timeout.js.map +1 -0
- package/dist/tm/browser.d.ts +250 -20
- package/dist/tm/browser.d.ts.map +1 -1
- package/dist/tm/browser.js +1200 -143
- package/dist/tm/browser.js.map +1 -1
- package/dist/tm/config.d.ts +129 -0
- package/dist/tm/config.d.ts.map +1 -1
- package/dist/tm/config.js +117 -1
- package/dist/tm/config.js.map +1 -1
- package/dist/tm/dispatch.d.ts +95 -0
- package/dist/tm/dispatch.d.ts.map +1 -0
- package/dist/tm/dispatch.js +369 -0
- package/dist/tm/dispatch.js.map +1 -0
- package/dist/tm/index.d.ts +32 -7
- package/dist/tm/index.d.ts.map +1 -1
- package/dist/tm/index.js +74 -5
- package/dist/tm/index.js.map +1 -1
- package/dist/tm/memory.d.ts +88 -10
- package/dist/tm/memory.d.ts.map +1 -1
- package/dist/tm/memory.js +881 -99
- package/dist/tm/memory.js.map +1 -1
- package/dist/tm/pipelines.d.ts +26 -3
- package/dist/tm/pipelines.d.ts.map +1 -1
- package/dist/tm/pipelines.js +167 -11
- package/dist/tm/pipelines.js.map +1 -1
- package/dist/tm/ptc/budgets.d.ts +22 -1
- package/dist/tm/ptc/budgets.d.ts.map +1 -1
- package/dist/tm/ptc/budgets.js +87 -8
- package/dist/tm/ptc/budgets.js.map +1 -1
- package/dist/tm/ptc/contract.d.ts +49 -9
- package/dist/tm/ptc/contract.d.ts.map +1 -1
- package/dist/tm/ptc/contract.js +41 -3
- package/dist/tm/ptc/contract.js.map +1 -1
- package/dist/tm/ptc/driver.d.ts +5 -2
- package/dist/tm/ptc/driver.d.ts.map +1 -1
- package/dist/tm/ptc/driver.js +47 -15
- package/dist/tm/ptc/driver.js.map +1 -1
- package/dist/tm/ptc/engines.d.ts +15 -4
- package/dist/tm/ptc/engines.d.ts.map +1 -1
- package/dist/tm/ptc/engines.js +281 -28
- package/dist/tm/ptc/engines.js.map +1 -1
- package/dist/tm/ptc/index.d.ts +4 -4
- package/dist/tm/ptc/index.d.ts.map +1 -1
- package/dist/tm/ptc/index.js +2 -2
- package/dist/tm/ptc/index.js.map +1 -1
- package/dist/tm/ptc/pscan.d.ts +20 -1
- package/dist/tm/ptc/pscan.d.ts.map +1 -1
- package/dist/tm/ptc/pscan.js +328 -14
- package/dist/tm/ptc/pscan.js.map +1 -1
- package/dist/tm/ptc/summary.d.ts.map +1 -1
- package/dist/tm/ptc/summary.js +23 -1
- package/dist/tm/ptc/summary.js.map +1 -1
- package/dist/tm/ptc/tool.d.ts +34 -3
- package/dist/tm/ptc/tool.d.ts.map +1 -1
- package/dist/tm/ptc/tool.js +117 -20
- package/dist/tm/ptc/tool.js.map +1 -1
- package/dist/tm/pty.d.ts +70 -0
- package/dist/tm/pty.d.ts.map +1 -0
- package/dist/tm/pty.js +242 -0
- package/dist/tm/pty.js.map +1 -0
- package/dist/tm/search.d.ts +128 -15
- package/dist/tm/search.d.ts.map +1 -1
- package/dist/tm/search.js +556 -47
- package/dist/tm/search.js.map +1 -1
- package/dist/tm/shell-bridge.d.ts +14 -1
- package/dist/tm/shell-bridge.d.ts.map +1 -1
- package/dist/tm/shell-bridge.js +57 -10
- package/dist/tm/shell-bridge.js.map +1 -1
- package/dist/tm/webfetch.d.ts +29 -7
- package/dist/tm/webfetch.d.ts.map +1 -1
- package/dist/tm/webfetch.js +117 -15
- package/dist/tm/webfetch.js.map +1 -1
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/installation.md +216 -17
- package/package.json +5 -2
package/dist/tm/search.d.ts
CHANGED
|
@@ -3,16 +3,27 @@
|
|
|
3
3
|
*
|
|
4
4
|
* One call, one query, clean results: the engine URL is built here, fetched
|
|
5
5
|
* through the SAME pipeline as tm_webfetch (allowlist, manual redirects,
|
|
6
|
-
* 20 s timeout, 2 MB cap) and collapsed into a numbered title+URL
|
|
7
|
-
* before governance — the agent never sees raw SERP chrome.
|
|
8
|
-
*
|
|
9
|
-
* render with
|
|
6
|
+
* 20 s timeout, 2 MB cap) and collapsed into a numbered title+URL(+snippet)
|
|
7
|
+
* hit list before governance — the agent never sees raw SERP chrome. The
|
|
8
|
+
* structured engines (npm registry, GitHub repo search, StackExchange
|
|
9
|
+
* question search, HN Algolia, MediaWiki) render with stars/score/tags/
|
|
10
|
+
* snippets.
|
|
10
11
|
*
|
|
11
|
-
*
|
|
12
|
-
* bing
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* T4 quality upgrade (live benchmark 2026-09-14, CN host): of the HTML
|
|
13
|
+
* SERPs only bing still returns real results — sogou/so/baidu serve
|
|
14
|
+
* anti-bot shells and bing-int (ensearch=1) is 100% dead — so they are
|
|
15
|
+
* REMOVED from the engine table (webfetch's domain whitelist keeps their
|
|
16
|
+
* hosts untouched; users can still fetch those URLs directly). In their
|
|
17
|
+
* place two no-key JSON engines: stackoverflow (api.stackexchange.com,
|
|
18
|
+
* 300 req/day/IP — quota_remaining is tracked and auto-routing degrades to
|
|
19
|
+
* bing once exhausted) and hn (hn.algolia.com).
|
|
20
|
+
*
|
|
21
|
+
* `engine: "auto"` (the new default, TM_SEARCH_DEFAULT_ENGINE) classifies
|
|
22
|
+
* the query, fans out to the matching engine set IN PARALLEL, normalizes
|
|
23
|
+
* every engine's hits to SearchHit, dedupes by host+path and re-ranks
|
|
24
|
+
* with weighted RRF (stackoverflow 0.4 / bing 0.4 / others 0.2) into a
|
|
25
|
+
* top-10 list tagged with its source engine(s). Explicit single-engine
|
|
26
|
+
* calls keep the classic per-engine render.
|
|
16
27
|
*
|
|
17
28
|
* tm_webfetch stays the "fetch a KNOWN URL" tool; tm_browser covers
|
|
18
29
|
* JS-rendered pages. All three share one domain allowlist and one
|
|
@@ -23,14 +34,79 @@ import { type TmConfig } from "./config.js";
|
|
|
23
34
|
import type { TmPipelines } from "./pipelines.js";
|
|
24
35
|
export interface SearchEngine {
|
|
25
36
|
name: string;
|
|
26
|
-
/** html engines are extracted via extractSearchHits; json engines have
|
|
27
|
-
*
|
|
28
|
-
kind: "html" | "npm-json" | "github-json" | "wiki-json";
|
|
37
|
+
/** html engines are extracted via extractSearchHits; json engines have a
|
|
38
|
+
* dedicated parser/renderer below. */
|
|
39
|
+
kind: "html" | "npm-json" | "github-json" | "wiki-json" | "so-json" | "hn-json";
|
|
29
40
|
buildUrl: (encodedQuery: string) => string;
|
|
30
41
|
/** Hint appended when the engine returns nothing usable. */
|
|
31
42
|
alt: string;
|
|
43
|
+
/** Transform the RAW query before URL-encoding (CJK phrase protection,
|
|
44
|
+
* GitHub qualifier folding). Identity when absent. */
|
|
45
|
+
prepareQuery?: (query: string) => string;
|
|
32
46
|
}
|
|
33
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* CJK phrase protection: a multi-word Chinese query gets its CORE phrase
|
|
49
|
+
* (the token holding the most CJK chars, ≥2) wrapped in double quotes —
|
|
50
|
+
* CN SERPs otherwise free-match tokens across pages and drown the result
|
|
51
|
+
* list in tangential hits. Single-word queries and already-quoted queries
|
|
52
|
+
* pass through untouched (never fabricate a phrase boundary, never fight
|
|
53
|
+
* the user's own quoting). Applied to bing via prepareQuery; JSON query
|
|
54
|
+
* APIs are skipped because they treat quotes literally.
|
|
55
|
+
*/
|
|
56
|
+
export declare function protectCjkPhrase(query: string): string;
|
|
57
|
+
export declare function foldGithubQualifiers(query: string): {
|
|
58
|
+
q: string;
|
|
59
|
+
qualifiers: string[];
|
|
60
|
+
};
|
|
61
|
+
export type QueryClass = "error-code" | "dev-ecosystem" | "cjk" | "general";
|
|
62
|
+
export declare function classifyQuery(query: string): QueryClass;
|
|
63
|
+
export declare const AUTO_ENGINE_KEY = "auto";
|
|
64
|
+
/** RRF fusion constants. bing LOST its 0.4 trust weight (2026-09-18): with
|
|
65
|
+
* 0.4-vs-0.2 weights and a k=60 damping range of only 61..70, bing's WORST
|
|
66
|
+
* hit (0.4/70 = 0.0057) outranked every other engine's BEST (0.2/61 =
|
|
67
|
+
* 0.0033) — a weight ratio above the whole rank-damping range means the
|
|
68
|
+
* under-weighted engine can never place a single hit. bing is still in the
|
|
69
|
+
* table (it is the only live CN HTML SERP); it now has to EARN rank by
|
|
70
|
+
* overlapping the query. Override per engine via TM_SEARCH_WEIGHTS. */
|
|
71
|
+
export declare const RRF_K = 60;
|
|
72
|
+
export declare const RRF_WEIGHTS: Record<string, number>;
|
|
73
|
+
export declare const RRF_DEFAULT_WEIGHT = 0.2;
|
|
74
|
+
/** One engine's fusion weight: a TM_SEARCH_WEIGHTS override first, then the
|
|
75
|
+
* built-in table, then the default. */
|
|
76
|
+
export declare function weightFor(engine: string, overrides?: Record<string, number>): number;
|
|
77
|
+
/**
|
|
78
|
+
* Tokenize a query for the relevance floor. CJK has no word boundaries and
|
|
79
|
+
* the plugin ships no segmenter, so CJK runs index as every BIGRAM: "关键
|
|
80
|
+
* 词" contributes 关键/键词/词… which a Chinese title contains verbatim.
|
|
81
|
+
* Substring matching against that is a cheap, deterministic overlap proxy —
|
|
82
|
+
* no model, no network, no fabricated relevance.
|
|
83
|
+
*/
|
|
84
|
+
export declare function queryTerms(query: string): string[];
|
|
85
|
+
/** 0..1 overlap between the query and one hit (title + snippet + host). */
|
|
86
|
+
export declare function relevanceOf(terms: readonly string[], hit: SearchHit): number;
|
|
87
|
+
/** Mutable SO quota state (per process). api.stackexchange answers every
|
|
88
|
+
* payload with quota_remaining/quota_max; hitting 0 flips `exhausted`
|
|
89
|
+
* and engine:"auto" swaps the SO leg for bing until the process restarts
|
|
90
|
+
* (the daily quota rolls over on the server, not here). */
|
|
91
|
+
export declare const SO_QUOTA: {
|
|
92
|
+
max: number;
|
|
93
|
+
remaining: number | null;
|
|
94
|
+
exhausted: boolean;
|
|
95
|
+
};
|
|
96
|
+
export declare function resetSoQuota(): void;
|
|
97
|
+
/** Resolve the auto route set for a query (exported for tests + PTC).
|
|
98
|
+
* `disabled` (TM_SEARCH_DISABLED_ENGINES) removes legs; if that empties a
|
|
99
|
+
* route the caller still gets bing rather than an error — a search tool
|
|
100
|
+
* that refuses to answer because of its own config is worse than a
|
|
101
|
+
* single-engine answer. */
|
|
102
|
+
export declare function resolveAutoRoutes(query: string, disabled?: readonly string[]): {
|
|
103
|
+
routes: string[];
|
|
104
|
+
queryClass: QueryClass;
|
|
105
|
+
notes: string[];
|
|
106
|
+
};
|
|
107
|
+
/** The engine table — keys are the tm_search `engine` arg values. The
|
|
108
|
+
* dead CN SERPs (sogou/so/baidu/bing-int) are GONE, not even manually
|
|
109
|
+
* selectable (2026-09-14 benchmark: anti-bot shells / 100% empty). */
|
|
34
110
|
export declare const SEARCH_ENGINES: Record<string, SearchEngine>;
|
|
35
111
|
export declare const SEARCH_ENGINE_NAMES: string[];
|
|
36
112
|
/** npm registry search JSON → numbered package list (name@version — desc). */
|
|
@@ -40,9 +116,45 @@ export declare function renderGithubResults(query: string, body: string): string
|
|
|
40
116
|
/** MediaWiki search API JSON (moegirl) → numbered entry list with
|
|
41
117
|
* tag-stripped snippets and direct article URLs. */
|
|
42
118
|
export declare function renderWikiResults(query: string, body: string): string | null;
|
|
43
|
-
/**
|
|
119
|
+
/** StackExchange search JSON → numbered question list; the per-hit snippet
|
|
120
|
+
* is SYNTHESIZED from the engine's own metadata (score/answers/tags —
|
|
121
|
+
* search/advanced carries no body text). The quota footer reflects the
|
|
122
|
+
* tracked quota_remaining. */
|
|
123
|
+
export declare function renderSoResults(query: string, body: string): string | null;
|
|
124
|
+
/** HN Algolia story search JSON → numbered post list; the per-hit snippet
|
|
125
|
+
* is the engine's own points/comments/date metadata. */
|
|
126
|
+
export declare function renderHnResults(query: string, body: string): string | null;
|
|
127
|
+
/** Collapse an HTML SERP into the compact hit list; [] when the engine
|
|
44
128
|
* gave nothing extractable (anti-bot shell / markup change). */
|
|
45
|
-
export declare function extractHtmlResults(html: string): SearchHit[];
|
|
129
|
+
export declare function extractHtmlResults(html: string, max?: number): SearchHit[];
|
|
130
|
+
/** host+path identity across engines (query/fragment/trailing-slash/www
|
|
131
|
+
* ignored) — the fusion dedupe key. */
|
|
132
|
+
export declare function dedupeKey(url: string): string;
|
|
133
|
+
interface FusionGroup {
|
|
134
|
+
engine: string;
|
|
135
|
+
hits: SearchHit[];
|
|
136
|
+
}
|
|
137
|
+
/** Built-in zero-overlap multiplier (TmConfig.searchRelevanceFloor overrides). */
|
|
138
|
+
export declare const RELEVANCE_FLOOR_DEFAULT = 0.35;
|
|
139
|
+
/**
|
|
140
|
+
* Reciprocal Rank Fusion over the routed engines' hit lists: normalize →
|
|
141
|
+
* host+path dedupe → score = Σ (weight × relevance × fetchability)/(k+rank)
|
|
142
|
+
* → top-N, every hit tagged with its contributing engine(s).
|
|
143
|
+
*
|
|
144
|
+
* The relevance term is the fix for "auto returns a bing mirror": pure
|
|
145
|
+
* rank-position fusion lets a trusted engine's junk outrank another
|
|
146
|
+
* engine's best hit, so a hit that shares no token with the query now keeps
|
|
147
|
+
* only a floor fraction of its engine's weight. Nothing is deleted — bing
|
|
148
|
+
* still carries useful data, and an over-filtered list is unfixable from
|
|
149
|
+
* the agent side.
|
|
150
|
+
*/
|
|
151
|
+
export declare function fuseRrf(groups: FusionGroup[], opts?: {
|
|
152
|
+
max?: number;
|
|
153
|
+
query?: string;
|
|
154
|
+
weights?: Record<string, number>;
|
|
155
|
+
floor?: number;
|
|
156
|
+
fetchable?: (url: string) => boolean;
|
|
157
|
+
}): SearchHit[];
|
|
46
158
|
/** Build the tm_search ToolDefinition over the SHARED main pipelines
|
|
47
159
|
* instance. `fetchImpl` is injectable for tests. */
|
|
48
160
|
export declare function buildTmSearchTool(deps: {
|
|
@@ -55,4 +167,5 @@ export declare function buildTmSearchTool(deps: {
|
|
|
55
167
|
args: Record<string, unknown>;
|
|
56
168
|
execute: (rawArgs: Record<string, unknown>, ctx: unknown) => Promise<import("../types.js").ToolResult>;
|
|
57
169
|
};
|
|
170
|
+
export {};
|
|
58
171
|
//# sourceMappingURL=search.d.ts.map
|
package/dist/tm/search.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tm/search.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tm/search.ts"],"names":[],"mappings":"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"}
|