@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.
Files changed (112) hide show
  1. package/README.md +154 -57
  2. package/README.zh-CN.md +126 -47
  3. package/dist/agents.d.ts +5 -1
  4. package/dist/agents.d.ts.map +1 -1
  5. package/dist/agents.js +37 -11
  6. package/dist/agents.js.map +1 -1
  7. package/dist/approval-gate.d.ts +54 -16
  8. package/dist/approval-gate.d.ts.map +1 -1
  9. package/dist/approval-gate.js +163 -42
  10. package/dist/approval-gate.js.map +1 -1
  11. package/dist/host-hooks.d.ts +115 -0
  12. package/dist/host-hooks.d.ts.map +1 -0
  13. package/dist/host-hooks.js +270 -0
  14. package/dist/host-hooks.js.map +1 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +68 -4
  17. package/dist/index.js.map +1 -1
  18. package/dist/prompts/lead.d.ts +1 -1
  19. package/dist/prompts/lead.d.ts.map +1 -1
  20. package/dist/prompts/lead.js +88 -6
  21. package/dist/prompts/lead.js.map +1 -1
  22. package/dist/prompts/shared.d.ts +1 -1
  23. package/dist/prompts/shared.d.ts.map +1 -1
  24. package/dist/prompts/shared.js +203 -119
  25. package/dist/prompts/shared.js.map +1 -1
  26. package/dist/prompts/specialists.d.ts +2 -2
  27. package/dist/prompts/specialists.d.ts.map +1 -1
  28. package/dist/prompts/specialists.js +73 -23
  29. package/dist/prompts/specialists.js.map +1 -1
  30. package/dist/tm/args-schema.d.ts +31 -1
  31. package/dist/tm/args-schema.d.ts.map +1 -1
  32. package/dist/tm/args-schema.js +155 -39
  33. package/dist/tm/args-schema.js.map +1 -1
  34. package/dist/tm/bash-timeout.d.ts +72 -0
  35. package/dist/tm/bash-timeout.d.ts.map +1 -0
  36. package/dist/tm/bash-timeout.js +100 -0
  37. package/dist/tm/bash-timeout.js.map +1 -0
  38. package/dist/tm/browser.d.ts +250 -20
  39. package/dist/tm/browser.d.ts.map +1 -1
  40. package/dist/tm/browser.js +1200 -143
  41. package/dist/tm/browser.js.map +1 -1
  42. package/dist/tm/config.d.ts +129 -0
  43. package/dist/tm/config.d.ts.map +1 -1
  44. package/dist/tm/config.js +117 -1
  45. package/dist/tm/config.js.map +1 -1
  46. package/dist/tm/dispatch.d.ts +95 -0
  47. package/dist/tm/dispatch.d.ts.map +1 -0
  48. package/dist/tm/dispatch.js +369 -0
  49. package/dist/tm/dispatch.js.map +1 -0
  50. package/dist/tm/index.d.ts +32 -7
  51. package/dist/tm/index.d.ts.map +1 -1
  52. package/dist/tm/index.js +74 -5
  53. package/dist/tm/index.js.map +1 -1
  54. package/dist/tm/memory.d.ts +88 -10
  55. package/dist/tm/memory.d.ts.map +1 -1
  56. package/dist/tm/memory.js +881 -99
  57. package/dist/tm/memory.js.map +1 -1
  58. package/dist/tm/pipelines.d.ts +26 -3
  59. package/dist/tm/pipelines.d.ts.map +1 -1
  60. package/dist/tm/pipelines.js +167 -11
  61. package/dist/tm/pipelines.js.map +1 -1
  62. package/dist/tm/ptc/budgets.d.ts +22 -1
  63. package/dist/tm/ptc/budgets.d.ts.map +1 -1
  64. package/dist/tm/ptc/budgets.js +87 -8
  65. package/dist/tm/ptc/budgets.js.map +1 -1
  66. package/dist/tm/ptc/contract.d.ts +49 -9
  67. package/dist/tm/ptc/contract.d.ts.map +1 -1
  68. package/dist/tm/ptc/contract.js +41 -3
  69. package/dist/tm/ptc/contract.js.map +1 -1
  70. package/dist/tm/ptc/driver.d.ts +5 -2
  71. package/dist/tm/ptc/driver.d.ts.map +1 -1
  72. package/dist/tm/ptc/driver.js +47 -15
  73. package/dist/tm/ptc/driver.js.map +1 -1
  74. package/dist/tm/ptc/engines.d.ts +15 -4
  75. package/dist/tm/ptc/engines.d.ts.map +1 -1
  76. package/dist/tm/ptc/engines.js +281 -28
  77. package/dist/tm/ptc/engines.js.map +1 -1
  78. package/dist/tm/ptc/index.d.ts +4 -4
  79. package/dist/tm/ptc/index.d.ts.map +1 -1
  80. package/dist/tm/ptc/index.js +2 -2
  81. package/dist/tm/ptc/index.js.map +1 -1
  82. package/dist/tm/ptc/pscan.d.ts +20 -1
  83. package/dist/tm/ptc/pscan.d.ts.map +1 -1
  84. package/dist/tm/ptc/pscan.js +328 -14
  85. package/dist/tm/ptc/pscan.js.map +1 -1
  86. package/dist/tm/ptc/summary.d.ts.map +1 -1
  87. package/dist/tm/ptc/summary.js +23 -1
  88. package/dist/tm/ptc/summary.js.map +1 -1
  89. package/dist/tm/ptc/tool.d.ts +34 -3
  90. package/dist/tm/ptc/tool.d.ts.map +1 -1
  91. package/dist/tm/ptc/tool.js +117 -20
  92. package/dist/tm/ptc/tool.js.map +1 -1
  93. package/dist/tm/pty.d.ts +70 -0
  94. package/dist/tm/pty.d.ts.map +1 -0
  95. package/dist/tm/pty.js +242 -0
  96. package/dist/tm/pty.js.map +1 -0
  97. package/dist/tm/search.d.ts +128 -15
  98. package/dist/tm/search.d.ts.map +1 -1
  99. package/dist/tm/search.js +556 -47
  100. package/dist/tm/search.js.map +1 -1
  101. package/dist/tm/shell-bridge.d.ts +14 -1
  102. package/dist/tm/shell-bridge.d.ts.map +1 -1
  103. package/dist/tm/shell-bridge.js +57 -10
  104. package/dist/tm/shell-bridge.js.map +1 -1
  105. package/dist/tm/webfetch.d.ts +29 -7
  106. package/dist/tm/webfetch.d.ts.map +1 -1
  107. package/dist/tm/webfetch.js +117 -15
  108. package/dist/tm/webfetch.js.map +1 -1
  109. package/dist/types.d.ts +16 -0
  110. package/dist/types.d.ts.map +1 -1
  111. package/docs/installation.md +216 -17
  112. package/package.json +5 -2
@@ -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 hit list
7
- * before governance — the agent never sees raw SERP chrome. Two engines
8
- * return structured JSON (npm registry search, GitHub repo search API) and
9
- * render with versions/stars/descriptions.
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
- * Engine set is chosen for mainland-China reachability without API keys:
12
- * bing CN + international (ensearch=1), sogou, 360 (so.com), baidu,
13
- * bilibili, plus the npm/GitHub data sources. Baidu is the flakiest
14
- * (anti-bot) and stays in the table because it is sometimes the only
15
- * engine indexing CN-specific content — failures name the alternatives.
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
- * a dedicated renderer below. */
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
- /** The engine table — keys are the tm_search `engine` arg values. */
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
- /** Collapse an HTML SERP into the compact hit list; null when the engine
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
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tm/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAkE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9H,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAA;AAGpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ;sCACkC;IAClC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,CAAA;IACvD,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAA;IAC1C,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,qEAAqE;AACrE,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAuDvD,CAAA;AAED,eAAO,MAAM,mBAAmB,UAA8B,CAAA;AAI9D,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmB3E;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsB9E;AAED;qDACqD;AACrD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA2B5E;AAED;iEACiE;AACjE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAE5D;AAUD;sDACsD;AACtD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,SAAS,EAAE,WAAW,CAAA;IACtB,GAAG,EAAE,QAAQ,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GAAG;IACF,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,aAAa,EAAE,UAAU,CAAC,CAAA;CACvG,CA8FA"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tm/search.ts"],"names":[],"mappings":"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"}