@te-river/opencode-team-mode 1.5.13 → 1.5.15

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 (74) hide show
  1. package/README.md +24 -5
  2. package/README.zh-CN.md +20 -4
  3. package/dist/agents.d.ts.map +1 -1
  4. package/dist/agents.js +4 -2
  5. package/dist/agents.js.map +1 -1
  6. package/dist/capabilities.d.ts +66 -0
  7. package/dist/capabilities.d.ts.map +1 -0
  8. package/dist/capabilities.js +165 -0
  9. package/dist/capabilities.js.map +1 -0
  10. package/dist/host-hooks.d.ts.map +1 -1
  11. package/dist/host-hooks.js +1 -0
  12. package/dist/host-hooks.js.map +1 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +35 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/prompts/lead.d.ts +1 -1
  17. package/dist/prompts/lead.d.ts.map +1 -1
  18. package/dist/prompts/lead.js +51 -0
  19. package/dist/prompts/lead.js.map +1 -1
  20. package/dist/prompts/shared.d.ts +2 -2
  21. package/dist/prompts/shared.d.ts.map +1 -1
  22. package/dist/prompts/shared.js +32 -6
  23. package/dist/prompts/shared.js.map +1 -1
  24. package/dist/tm/args-schema.d.ts.map +1 -1
  25. package/dist/tm/args-schema.js +8 -0
  26. package/dist/tm/args-schema.js.map +1 -1
  27. package/dist/tm/browser.d.ts +25 -0
  28. package/dist/tm/browser.d.ts.map +1 -1
  29. package/dist/tm/browser.js +90 -2
  30. package/dist/tm/browser.js.map +1 -1
  31. package/dist/tm/cache.d.ts +68 -0
  32. package/dist/tm/cache.d.ts.map +1 -0
  33. package/dist/tm/cache.js +157 -0
  34. package/dist/tm/cache.js.map +1 -0
  35. package/dist/tm/config.d.ts +43 -0
  36. package/dist/tm/config.d.ts.map +1 -1
  37. package/dist/tm/config.js +10 -0
  38. package/dist/tm/config.js.map +1 -1
  39. package/dist/tm/dispatch.d.ts +84 -2
  40. package/dist/tm/dispatch.d.ts.map +1 -1
  41. package/dist/tm/dispatch.js +397 -39
  42. package/dist/tm/dispatch.js.map +1 -1
  43. package/dist/tm/dupe-guard.d.ts +58 -0
  44. package/dist/tm/dupe-guard.d.ts.map +1 -0
  45. package/dist/tm/dupe-guard.js +105 -0
  46. package/dist/tm/dupe-guard.js.map +1 -0
  47. package/dist/tm/index.d.ts +5 -0
  48. package/dist/tm/index.d.ts.map +1 -1
  49. package/dist/tm/index.js +29 -2
  50. package/dist/tm/index.js.map +1 -1
  51. package/dist/tm/perm-ask.d.ts +1 -0
  52. package/dist/tm/perm-ask.d.ts.map +1 -1
  53. package/dist/tm/perm-ask.js +15 -1
  54. package/dist/tm/perm-ask.js.map +1 -1
  55. package/dist/tm/pipelines.d.ts.map +1 -1
  56. package/dist/tm/pipelines.js +11 -0
  57. package/dist/tm/pipelines.js.map +1 -1
  58. package/dist/tm/search.d.ts +5 -0
  59. package/dist/tm/search.d.ts.map +1 -1
  60. package/dist/tm/search.js +44 -4
  61. package/dist/tm/search.js.map +1 -1
  62. package/dist/tm/stats.d.ts +147 -0
  63. package/dist/tm/stats.d.ts.map +1 -0
  64. package/dist/tm/stats.js +383 -0
  65. package/dist/tm/stats.js.map +1 -0
  66. package/dist/tm/store.d.ts +3 -0
  67. package/dist/tm/store.d.ts.map +1 -1
  68. package/dist/tm/store.js +6 -1
  69. package/dist/tm/store.js.map +1 -1
  70. package/dist/tm/webfetch.d.ts +19 -0
  71. package/dist/tm/webfetch.d.ts.map +1 -1
  72. package/dist/tm/webfetch.js +70 -4
  73. package/dist/tm/webfetch.js.map +1 -1
  74. package/package.json +4 -2
@@ -0,0 +1,383 @@
1
+ /**
2
+ * tm_stats — read the plugin's own trajectory back (2026-09-19).
3
+ *
4
+ * Why: the project's whole justification is throughput ("if Team isn't
5
+ * faster, Team has no point"), and until now every claim about it was
6
+ * unfalsifiable — the run store and `steps.jsonl` were append-only outputs
7
+ * nothing read back. This module turns that log into the two numbers that
8
+ * actually decide the argument:
9
+ *
10
+ * 1. TOKENS kept out of the context window (offload events, measured by
11
+ * the same CJK-aware estimator the offload decision used, net of the
12
+ * preview that DID come back);
13
+ * 2. SECONDS saved by overlap (dispatch children's own
14
+ * durations summed against the wall-clock window they actually
15
+ * occupied — serial cost minus parallel cost).
16
+ *
17
+ * Plus the governance and degrade counts a user needs to see whether the
18
+ * guardrails are biting (blocked subresources, refused tm_pty starts,
19
+ * clamped bash timeouts, engine fallbacks).
20
+ *
21
+ * Honesty rules baked in: the numbers are an ESTIMATE over the retained
22
+ * trajectory (TTL-swept, run-per-process), the window is stated alongside
23
+ * them, and the host-capability matrix rides the same reply so "what broke
24
+ * after the upgrade" is answerable in one call. Read-only, no network, no
25
+ * new surface: it reads files this plugin wrote.
26
+ */
27
+ import * as fs from "node:fs";
28
+ import * as path from "node:path";
29
+ import { renderCapabilityMatrix } from "../capabilities.js";
30
+ import { tmError, toToolResult } from "./result.js";
31
+ /** Torn/crashed tail lines are normal in an append-only log — skip, never throw. */
32
+ export function parseTrajectoryJsonl(text) {
33
+ const out = [];
34
+ for (const line of text.split(/\r?\n/)) {
35
+ if (!line.trim())
36
+ continue;
37
+ try {
38
+ const e = JSON.parse(line);
39
+ if (e && typeof e === "object")
40
+ out.push(e);
41
+ }
42
+ catch {
43
+ /* skip */
44
+ }
45
+ }
46
+ return out;
47
+ }
48
+ /** Newest-first trajectory runs (one dir per plugin process). */
49
+ export function listTrajectoryRuns(trajectoryRoot, limit = 10) {
50
+ const runsRoot = path.join(trajectoryRoot, "runs");
51
+ let names = [];
52
+ try {
53
+ names = fs.readdirSync(runsRoot);
54
+ }
55
+ catch {
56
+ return [];
57
+ }
58
+ const files = [];
59
+ for (const name of names) {
60
+ const file = path.join(runsRoot, name, "steps.jsonl");
61
+ try {
62
+ const st = fs.statSync(file);
63
+ if (st.isFile())
64
+ files.push({ runId: name, file, mtimeMs: st.mtimeMs, bytes: st.size });
65
+ }
66
+ catch {
67
+ /* run without a trajectory file — nothing to read */
68
+ }
69
+ }
70
+ files.sort((a, b) => b.mtimeMs - a.mtimeMs);
71
+ return files.slice(0, Math.max(1, Math.min(50, Math.round(limit) || 1)));
72
+ }
73
+ function num(v) {
74
+ const n = typeof v === "number" ? v : Number(v);
75
+ return Number.isFinite(n) ? n : 0;
76
+ }
77
+ function tsMs(e) {
78
+ const t = Date.parse(String(e.ts ?? ""));
79
+ return Number.isFinite(t) ? t : 0;
80
+ }
81
+ /** The preview that DID reach the context — fall back to the 80-token cap. */
82
+ const PREVIEW_FALLBACK_TOKENS = 80;
83
+ export function summarizeEvents(events) {
84
+ const stats = {
85
+ window: { runs: 0, events: events.length, wallMs: 0 },
86
+ tools: [],
87
+ dispatch: { starts: 0, settled: 0, failed: 0, adopted: 0, cancelled: 0, sumMs: 0, maxMs: 0, overlapSavedMs: 0 },
88
+ ptc: { runs: 0, calls: 0, errors: 0, retries: 0, sumMs: 0 },
89
+ governance: { blockedSubresources: 0, blockedHosts: [], ptyRefused: 0, clampedTimeouts: 0, clampSavedMs: 0, offloadDegraded: 0, webCacheHits: 0, evalMasks: 0 },
90
+ degrades: [],
91
+ };
92
+ const byTool = new Map();
93
+ const hosts = new Set();
94
+ const runs = new Set();
95
+ let first = 0;
96
+ let last = 0;
97
+ // dispatch overlap window: from the first start to the last settle
98
+ let dFirstAt = 0;
99
+ let dLastAt = 0;
100
+ /** child session id -> its first observed start, to derive a duration the
101
+ * event itself may not carry. */
102
+ const startAt = new Map();
103
+ const row = (tool) => {
104
+ let r = byTool.get(tool);
105
+ if (!r) {
106
+ r = { tool, calls: 0, results: 0, offloaded: 0, tokens: 0, savedTokens: 0 };
107
+ byTool.set(tool, r);
108
+ }
109
+ return r;
110
+ };
111
+ for (const e of events) {
112
+ const tool = String(e.tool ?? "?");
113
+ const ev = String(e.event ?? "");
114
+ if (e.run_id)
115
+ runs.add(String(e.run_id));
116
+ const at = tsMs(e);
117
+ if (at) {
118
+ if (!first || at < first)
119
+ first = at;
120
+ if (at > last)
121
+ last = at;
122
+ }
123
+ if (ev === "call")
124
+ row(tool).calls++;
125
+ if (ev === "result") {
126
+ const r = row(tool);
127
+ r.results++;
128
+ const tokens = num(e.tokens);
129
+ r.tokens += tokens;
130
+ if (e.offloaded === true) {
131
+ r.offloaded++;
132
+ // what actually entered the window is the preview, not the payload
133
+ r.savedTokens += Math.max(0, tokens - (num(e.preview_tokens) || PREVIEW_FALLBACK_TOKENS));
134
+ }
135
+ }
136
+ if (tool === "tm_dispatch" && ev === "start") {
137
+ stats.dispatch.starts++;
138
+ const cid = String(e.child ?? "");
139
+ if (at && cid && !startAt.has(cid))
140
+ startAt.set(cid, at);
141
+ if (at) {
142
+ if (!dFirstAt || at < dFirstAt)
143
+ dFirstAt = at;
144
+ dLastAt = Math.max(dLastAt, at);
145
+ }
146
+ }
147
+ if (tool === "tm_dispatch" && (ev === "idle" || ev === "error")) {
148
+ if (ev === "idle")
149
+ stats.dispatch.settled++;
150
+ else
151
+ stats.dispatch.failed++;
152
+ // The child's OWN duration: the live path writes `ms`, but an event that
153
+ // only says "this child stopped" still pins it from the timestamps — and
154
+ // a failed child that worked for 12 s must not count as free.
155
+ const started = startAt.get(String(e.child ?? ""));
156
+ const dur = num(e.ms) || (at && started && at > started ? at - started : 0);
157
+ stats.dispatch.sumMs += dur;
158
+ stats.dispatch.maxMs = Math.max(stats.dispatch.maxMs, dur);
159
+ if (at)
160
+ dLastAt = Math.max(dLastAt, at);
161
+ }
162
+ if (tool === "tm_dispatch" && ev === "adopt")
163
+ stats.dispatch.adopted++;
164
+ if (tool === "tm_dispatch" && ev === "cancel")
165
+ stats.dispatch.cancelled++;
166
+ if (tool === "tm_ptc_run" && ev === "finish") {
167
+ stats.ptc.runs++;
168
+ stats.ptc.calls += num(e.calls);
169
+ stats.ptc.errors += num(e.errors);
170
+ stats.ptc.retries += num(e.retries);
171
+ stats.ptc.sumMs += num(e.ms);
172
+ }
173
+ if (ev === "blocked") {
174
+ stats.governance.blockedSubresources += num(e.count);
175
+ for (const h of String(e.hosts ?? "").split(","))
176
+ if (h.trim())
177
+ hosts.add(h.trim());
178
+ }
179
+ if (tool === "tm_pty" && ev === "refused")
180
+ stats.governance.ptyRefused++;
181
+ if (ev === "cache_hit")
182
+ stats.governance.webCacheHits++;
183
+ if (ev === "eval_redacted")
184
+ stats.governance.evalMasks++;
185
+ if (tool === "bash" && e.step_id === "timeout-clamp") {
186
+ stats.governance.clampedTimeouts++;
187
+ stats.governance.clampSavedMs += Math.max(0, num(e.from_ms) - num(e.to_ms));
188
+ }
189
+ if (ev === "engine" && tool === "tm_browser" && String(e.kind ?? "") === "cdp-legacy") {
190
+ stats.degrades.push({ seam: "tm_browser/playwright-core", reason: String(e.reason ?? "").slice(0, 160) });
191
+ }
192
+ if (e.degraded === true)
193
+ stats.governance.offloadDegraded++;
194
+ }
195
+ const dispatchWindow = dFirstAt && dLastAt > dFirstAt ? dLastAt - dFirstAt : 0;
196
+ stats.dispatch.overlapSavedMs =
197
+ stats.dispatch.settled + stats.dispatch.failed > 1
198
+ ? Math.max(0, stats.dispatch.sumMs - dispatchWindow)
199
+ : 0;
200
+ stats.window.runs = runs.size;
201
+ stats.window.from = first || undefined;
202
+ stats.window.to = last || undefined;
203
+ stats.window.wallMs = last > first ? last - first : 0;
204
+ stats.governance.blockedHosts = [...hosts].slice(0, 12);
205
+ stats.tools = [...byTool.values()].sort((a, b) => b.savedTokens - a.savedTokens || b.calls - a.calls || a.tool.localeCompare(b.tool));
206
+ return stats;
207
+ }
208
+ function secs(ms) {
209
+ return `${(ms / 1000).toFixed(ms >= 10_000 ? 0 : 1)}s`;
210
+ }
211
+ /** Markdown, in the shapes the host renders fastest (tables, not prose). */
212
+ export function renderStats(stats, opts) {
213
+ const now = opts.now ?? Date.now();
214
+ const head = [];
215
+ head.push(`**口径**:统计自本插件保留的 trajectory(每次插件进程一个 run 目录,TTL 到期即清),` +
216
+ `token 为 CJK 感知估算值,时间来自事件时间戳——是量级,不是账单。`);
217
+ head.push(`窗口:${stats.window.runs} 个 run(本次读取 ${opts.runDirs} 个)· ${stats.window.events} 条事件 · ` +
218
+ `墙钟 ${stats.window.wallMs ? secs(stats.window.wallMs) : "—"}(末次事件距今 ${stats.window.to ? secs(Math.max(0, now - stats.window.to)) : "—"})`);
219
+ const out = [head.join("\n")];
220
+ out.push("", "### 令牌经济(卸载 = 没进上下文的部分)", "", "| 工具 | 调用 | 结果 | 卸载 | 原始 token | 省下 token(估算) |", "|---|---:|---:|---:|---:|---:|");
221
+ let savedTotal = 0;
222
+ for (const t of stats.tools) {
223
+ savedTotal += t.savedTokens;
224
+ out.push(`| \`${t.tool}\` | ${t.calls} | ${t.results} | ${t.offloaded} | ${t.tokens.toLocaleString("en-US")} | ${t.savedTokens ? t.savedTokens.toLocaleString("en-US") : "—"} |`);
225
+ }
226
+ out.push(`| **合计** | | | | | **${savedTotal.toLocaleString("en-US")}** |`);
227
+ const d = stats.dispatch;
228
+ out.push("", "### 并行度(Team 的存在理由)", "", "| 指标 | 值 |", "|---|---|", `| 派发 / 完成 / 失败 / 取消 | ${d.starts} / ${d.settled} / ${d.failed} / ${d.cancelled} |`, `| 单个子代理耗时(最长 / 合计=串行代价) | ${d.maxMs ? secs(d.maxMs) : "—"} / ${d.sumMs ? secs(d.sumMs) : "—"} |`, `| **重叠省下**(串行 − 实际墙钟) | ${d.overlapSavedMs ? `**${secs(d.overlapSavedMs)}**` : "—(不足两个已结算的派发,或它们本就串行)"} |`, `| 重启后由宿主会话树接管 | ${d.adopted} |`);
229
+ const p = stats.ptc;
230
+ const g = stats.governance;
231
+ out.push("", "### 一次程序 N 次调用(tm_ptc_run)与治理面", "", "| 指标 | 值 |", "|---|---|", `| PTC 程序 / 内部调用 / 重试 / 错误 | ${p.runs} / ${p.calls} / ${p.retries} / ${p.errors}(合计 ${p.sumMs ? secs(p.sumMs) : "—"}) |`, `| 被拦子资源请求(浏览器) | ${g.blockedSubresources}${g.blockedHosts.length ? ` · 域名:${g.blockedHosts.join(", ")}` : ""} |`, `| tm_pty 治理面拒绝 | ${g.ptyRefused} |`, `| web URL 缓存命中(省下的抓取) | ${g.webCacheHits} |`, `| evaluate_script 结果脱敏次数 | ${g.evalMasks} |`, `| bash 超时夹顶 | ${g.clampedTimeouts} 次 · 省 ${g.clampSavedMs ? secs(g.clampSavedMs) : "—"} |`, `| 卸载降级(存储写失败→截断) | ${g.offloadDegraded} |`);
232
+ if (stats.degrades.length) {
233
+ out.push("", "### 引擎降级", "", "| 接口 | 原因 |", "|---|---|");
234
+ for (const x of stats.degrades)
235
+ out.push(`| ${x.seam} | ${x.reason || "—"} |`);
236
+ }
237
+ if (opts.matrix?.length) {
238
+ out.push("", "### 宿主能力矩阵(升级后先看这张表)", "", renderCapabilityMatrix(opts.matrix));
239
+ }
240
+ if (opts.roots.length) {
241
+ out.push("", `数据目录:${opts.roots.map((r) => `\`${r}\``).join(" · ")}`);
242
+ }
243
+ return out.join("\n");
244
+ }
245
+ export function parseOffloadIndex(text) {
246
+ const rows = [];
247
+ for (const line of text.split(/\r?\n/)) {
248
+ if (!line.trim())
249
+ continue;
250
+ try {
251
+ const e = JSON.parse(line);
252
+ if (e && typeof e.ref === "string")
253
+ rows.push(e);
254
+ }
255
+ catch {
256
+ /* torn tail line */
257
+ }
258
+ }
259
+ return rows;
260
+ }
261
+ /** Newest-first over `event:"result"` lines; `index` resolves refs to files. */
262
+ export function recentCalls(events, limit, index, stepsRoot) {
263
+ const byRef = new Map();
264
+ for (const row of index)
265
+ byRef.set(row.ref, row);
266
+ const out = [];
267
+ for (let i = events.length - 1; i >= 0 && out.length < limit; i--) {
268
+ const e = events[i];
269
+ if (!e || e.event !== "result")
270
+ continue;
271
+ const ref = typeof e.ref === "string" ? e.ref : undefined;
272
+ const row = ref ? byRef.get(ref) : undefined;
273
+ const call = {
274
+ ts: String(e.ts ?? ""),
275
+ tool: String(e.tool ?? "?"),
276
+ stepId: String(e.step_id ?? "?"),
277
+ tokens: num(e.tokens),
278
+ offloaded: e.offloaded === true,
279
+ };
280
+ if (ref)
281
+ call.ref = ref;
282
+ const pt = num(e.preview_tokens);
283
+ if (pt)
284
+ call.previewTokens = pt;
285
+ if (row) {
286
+ call.file = path.join(stepsRoot, row.file);
287
+ call.preview = row.preview.replace(/\s+/g, " ").trim().slice(0, 160);
288
+ }
289
+ out.push(call);
290
+ }
291
+ return out;
292
+ }
293
+ /** The recap the UI cannot give: every card a plugin tool renders is a one-line
294
+ * row (the desktop's ToolRegistry holds only its own built-in names), so the
295
+ * payload paths and previews have to be said out loud in the reply. */
296
+ export function renderRecent(calls) {
297
+ if (!calls.length)
298
+ return ["", "### 最近调用", "", "(这段时间里没有受治理的工具结果落盘。)"];
299
+ const out = [
300
+ "",
301
+ "### 最近调用(宿主不给插件工具卡片开详情——全文在下面这些文件里)",
302
+ "",
303
+ "| 时间 | 工具 | step | token | 细节在哪 |",
304
+ "|---|---|---|---:|---|",
305
+ ];
306
+ for (const c of calls) {
307
+ const hhmm = c.ts.length >= 16 ? c.ts.slice(11, 19) : c.ts || "—";
308
+ const detail = !c.offloaded
309
+ ? "结果未超限,全文就在模型上下文里"
310
+ : c.ref
311
+ ? `句柄 \`tm_fetch {ref:"${c.ref}"}\`${c.file ? ` · 文件 \`${c.file}\`` : " · 载荷不在本 run"}(${c.previewTokens ?? "?"} token 预览已进上下文)`
312
+ : "已卸载(本条事件没带句柄)";
313
+ out.push(`| ${hhmm} | \`${c.tool}\` | ${c.stepId} | ${c.tokens.toLocaleString("en-US")} | ${detail} |`);
314
+ if (c.offloaded && c.preview)
315
+ out.push(`| | | | | 预览:${c.preview} |`);
316
+ }
317
+ return out;
318
+ }
319
+ export function buildStatsTool(deps) {
320
+ const tool = "tm_stats";
321
+ const readDefault = (runs) => {
322
+ const all = [];
323
+ for (const r of runs) {
324
+ try {
325
+ all.push(...parseTrajectoryJsonl(fs.readFileSync(r.file, "utf8")));
326
+ }
327
+ catch {
328
+ /* one unreadable run must not blank the whole report */
329
+ }
330
+ }
331
+ return all;
332
+ };
333
+ return {
334
+ description: `Read the plugin's OWN trajectory back as numbers: what it saved and where it broke.
335
+ - The throughput argument in one call — tokens kept out of the context window by offloading, and seconds saved by dispatch overlap (serial cost minus the wall-clock the children actually used), plus governance counts (blocked subresources, refused tm_pty starts, clamped bash timeouts, engine fallbacks).
336
+ - It also renders the HOST CAPABILITY MATRIX: every OpenCode surface this plugin leans on, marked 已验证 / 存在未用 / 待观察 / 缺失. After an OpenCode upgrade, call this FIRST — a missing row names the feature that silently went away.
337
+ - { runs: 10 } recent run dirs (default 10, max 50); { capabilities: false } to skip the matrix. Read-only over files this plugin wrote: no network, no shell, no secrets (the trajectory never records command text or values).
338
+ - { recent: 20 } appends a call-by-call recap — the host renders a plugin tool as a one-line card nobody can open, so this is where an offloaded result's handle AND its payload file path are named out loud. When the user asks "what did that tool actually return", call this and paste the table.`,
339
+ args: {
340
+ runs: { descriptor: "runs: number (optional, how many recent run dirs to read; default 10, max 50)" },
341
+ capabilities: { descriptor: "capabilities: false to omit the host-capability matrix" },
342
+ recent: { descriptor: "recent: number (optional, 1..50 — append a newest-first recap of governed calls with their handle refs and payload paths)" },
343
+ },
344
+ execute: async (rawArgs) => {
345
+ try {
346
+ const args = (rawArgs ?? {});
347
+ const limit = Math.max(1, Math.min(50, Math.round(num(args.runs)) || 10));
348
+ const runs = listTrajectoryRuns(deps.store.trajectoryRoot, limit);
349
+ if (!runs.length) {
350
+ return toToolResult(tmError(tool, "execute", `trajectory 目录为空(${deps.store.trajectoryRoot})——本插件还没跑过任何受治理工具,没有可统计的东西。`));
351
+ }
352
+ const events = (deps.readEvents ?? readDefault)(runs);
353
+ const stats = summarizeEvents(events);
354
+ const wantMatrix = !(args.capabilities === false || args.capabilities === "false");
355
+ let lines = renderStats(stats, {
356
+ runDirs: runs.length,
357
+ roots: [deps.store.trajectoryRoot],
358
+ matrix: wantMatrix ? (deps.capabilities?.() ?? []) : [],
359
+ });
360
+ const recentLimit = Math.max(0, Math.min(50, Math.round(num(args.recent)) || 0));
361
+ if (recentLimit) {
362
+ let rows = [];
363
+ try {
364
+ rows = parseOffloadIndex(fs.readFileSync(deps.store.indexFile(), "utf8"));
365
+ }
366
+ catch {
367
+ /* no offloads yet — the recap says so rather than failing */
368
+ }
369
+ lines += "\n" + renderRecent(recentCalls(events, recentLimit, rows, deps.store.stepsRoot())).join("\n");
370
+ }
371
+ // Deliberately NOT offloaded: the point of this tool is the table the
372
+ // user (or the lead) reads whole; it is bounded by construction (one
373
+ // row per tool, per degraded seam, per capability).
374
+ return toToolResult(lines);
375
+ }
376
+ catch (err) {
377
+ const e = err;
378
+ return toToolResult(tmError(tool, "execute", `tm_stats 失败:${String(e?.message ?? err).slice(0, 160)}`));
379
+ }
380
+ },
381
+ };
382
+ }
383
+ //# sourceMappingURL=stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/tm/stats.ts"],"names":[],"mappings":"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"}
@@ -65,6 +65,9 @@ export declare class RunStore {
65
65
  private runDir;
66
66
  stepsRoot(): string;
67
67
  trajectoryFile(): string;
68
+ /** The offload index for THIS run — every handle this process issued, with
69
+ * the payload file path and preview (read back by tm_stats' recap). */
70
+ indexFile(): string;
68
71
  /**
69
72
  * Write one offloaded result: step file (single write, never rewritten) +
70
73
  * index.jsonl append. Throws on store failures — the caller degrades
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/tm/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAOH,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,gBAAgB,CAAA;AAKhD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,QAAQ;IACnB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;gBAEnB,IAAI,EAAE,eAAe;IAWjC,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,OAAO,CAAC,MAAM;IAId,SAAS,IAAI,MAAM;IAInB,cAAc,IAAI,MAAM;IAIxB;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,SAAS;IA+BzD;;;;OAIG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAYtD,gEAAgE;IAChE,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAmB9C;;wEAEoE;IACpE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAWxD;;;;OAIG;IACH,YAAY,CAAC,GAAG,GAAE,MAAmB,GAAG,MAAM;CA+B/C"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/tm/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAOH,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,gBAAgB,CAAA;AAKhD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,QAAQ;IACnB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;gBAEnB,IAAI,EAAE,eAAe;IAWjC,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,OAAO,CAAC,MAAM;IAId,SAAS,IAAI,MAAM;IAInB,cAAc,IAAI,MAAM;IAIxB;4EACwE;IACxE,SAAS,IAAI,MAAM;IAInB;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,SAAS;IA+BzD;;;;OAIG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAYtD,gEAAgE;IAChE,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAmB9C;;wEAEoE;IACpE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAWxD;;;;OAIG;IACH,YAAY,CAAC,GAAG,GAAE,MAAmB,GAAG,MAAM;CA+B/C"}
package/dist/tm/store.js CHANGED
@@ -53,6 +53,11 @@ export class RunStore {
53
53
  trajectoryFile() {
54
54
  return path.join(this.trajectoryRoot, "runs", this._runId, "steps.jsonl");
55
55
  }
56
+ /** The offload index for THIS run — every handle this process issued, with
57
+ * the payload file path and preview (read back by tm_stats' recap). */
58
+ indexFile() {
59
+ return path.join(this.runDir(), "index.jsonl");
60
+ }
56
61
  /**
57
62
  * Write one offloaded result: step file (single write, never rewritten) +
58
63
  * index.jsonl append. Throws on store failures — the caller degrades
@@ -102,7 +107,7 @@ export class RunStore {
102
107
  /** Latest index entry for a ref (last append wins), or null. */
103
108
  findIndexEntry(ref) {
104
109
  try {
105
- const text = fs.readFileSync(path.join(this.runDir(), "index.jsonl"), "utf8");
110
+ const text = fs.readFileSync(this.indexFile(), "utf8");
106
111
  let found = null;
107
112
  for (const line of text.split(/\r?\n/)) {
108
113
  if (!line.trim())
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/tm/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/tm/store.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,7 @@ import { type TmConfig } from "./config.js";
34
34
  export declare const T4_SEEDED_DOMAINS: readonly string[];
35
35
  export declare function seedWebfetchDomains(allowlist: readonly string[]): string[];
36
36
  import { type TmPipelines } from "./pipelines.js";
37
+ import type { WebCache } from "./cache.js";
37
38
  /** True when `hostname` is the domain itself or a subdomain of it. */
38
39
  export declare function hostAllowed(hostname: string, allowlist: readonly string[]): boolean;
39
40
  export type UrlVerdict = {
@@ -60,6 +61,14 @@ export declare function htmlToText(html: string): string;
60
61
  /** Search-engine result pages whose raw HTML is worth collapsing into a
61
62
  * clean hit list (title + URL) instead of a wall of stripped page text. */
62
63
  export declare const SEARCH_PAGE_RE: RegExp;
64
+ /** BING WRAPS EVERY RESULT of its international layout (`…&ensearch=1`) in
65
+ * `https://www.bing.com/ck/a?...&u=a1<base64(destination)>`. Dropping those
66
+ * anchors (what ENGINE_TRACKER_RE does) is why the 2026-09-14 benchmark
67
+ * recorded "bing-int serves an anti-bot shell / 100% empty" — the shell was
68
+ * fine, our extractor threw every hit away (re-probed 2026-09-19: 10 real
69
+ * `b_algo` results, 0 extracted). Decode the wrapper so the hit survives;
70
+ * anything unrecognised still falls through to the skip. */
71
+ export declare function decodeEngineWrapperUrl(href: string): string | null;
63
72
  /** Domains that collide with common search terms (e.g. maimai.cn is the
64
73
  * Chinese professional-networking site 脉脉, NOT the SEGA maimai DX rhythm
65
74
  * game — a real session showed bing returning 10/10 maimai.cn hits for
@@ -99,6 +108,9 @@ export interface WebFetchResult {
99
108
  text: string;
100
109
  contentType: string;
101
110
  finalUrl: string;
111
+ /** Set when the body came from the URL cache instead of the network — the
112
+ * reply says so, because a re-served page is not a freshly-verified one. */
113
+ cachedAt?: number;
102
114
  }
103
115
  export type FetchImpl = (input: string, init?: Record<string, unknown>) => Promise<{
104
116
  ok?: boolean;
@@ -128,6 +140,10 @@ export declare function fetchWebText(url: URL, allowlist: readonly string[], opt
128
140
  /** Hosts already approved by the caller (e.g. the initial target) —
129
141
  * their hops pass without a second dialog. */
130
142
  skipAskHosts?: Set<string>;
143
+ /** URL-level TTL cache (see tm/cache.ts). Consulted and written ONLY for
144
+ * a hop the static allowlist admitted, so a hit can never bypass a
145
+ * dialog the current config still requires. */
146
+ cache?: WebCache;
131
147
  }): Promise<WebFetchResult>;
132
148
  /** Content extraction: HTML stripped to text; JSON kept for the json
133
149
  * preview branch; anything else passes through untouched. */
@@ -143,6 +159,9 @@ export declare function buildTmWebfetchTool(deps: {
143
159
  cfg: TmConfig;
144
160
  args?: Record<string, unknown>;
145
161
  fetchImpl?: FetchImpl;
162
+ /** Shared URL cache (tm/index.ts owns the one instance so tm_search and
163
+ * tm_webfetch cannot drift into two stores of the same page). */
164
+ cache?: WebCache;
146
165
  }): {
147
166
  description: string;
148
167
  args: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"webfetch.d.ts","sourceRoot":"","sources":["../../src/tm/webfetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webfetch.d.ts","sourceRoot":"","sources":["../../src/tm/webfetch.ts"],"names":[],"mappings":"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"}