@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.
- package/README.md +24 -5
- package/README.zh-CN.md +20 -4
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +4 -2
- package/dist/agents.js.map +1 -1
- package/dist/capabilities.d.ts +66 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +165 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/host-hooks.d.ts.map +1 -1
- package/dist/host-hooks.js +1 -0
- package/dist/host-hooks.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -0
- 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 +51 -0
- package/dist/prompts/lead.js.map +1 -1
- package/dist/prompts/shared.d.ts +2 -2
- package/dist/prompts/shared.d.ts.map +1 -1
- package/dist/prompts/shared.js +32 -6
- package/dist/prompts/shared.js.map +1 -1
- package/dist/tm/args-schema.d.ts.map +1 -1
- package/dist/tm/args-schema.js +8 -0
- package/dist/tm/args-schema.js.map +1 -1
- package/dist/tm/browser.d.ts +25 -0
- package/dist/tm/browser.d.ts.map +1 -1
- package/dist/tm/browser.js +90 -2
- package/dist/tm/browser.js.map +1 -1
- package/dist/tm/cache.d.ts +68 -0
- package/dist/tm/cache.d.ts.map +1 -0
- package/dist/tm/cache.js +157 -0
- package/dist/tm/cache.js.map +1 -0
- package/dist/tm/config.d.ts +43 -0
- package/dist/tm/config.d.ts.map +1 -1
- package/dist/tm/config.js +10 -0
- package/dist/tm/config.js.map +1 -1
- package/dist/tm/dispatch.d.ts +84 -2
- package/dist/tm/dispatch.d.ts.map +1 -1
- package/dist/tm/dispatch.js +397 -39
- package/dist/tm/dispatch.js.map +1 -1
- package/dist/tm/dupe-guard.d.ts +58 -0
- package/dist/tm/dupe-guard.d.ts.map +1 -0
- package/dist/tm/dupe-guard.js +105 -0
- package/dist/tm/dupe-guard.js.map +1 -0
- package/dist/tm/index.d.ts +5 -0
- package/dist/tm/index.d.ts.map +1 -1
- package/dist/tm/index.js +29 -2
- package/dist/tm/index.js.map +1 -1
- package/dist/tm/perm-ask.d.ts +1 -0
- package/dist/tm/perm-ask.d.ts.map +1 -1
- package/dist/tm/perm-ask.js +15 -1
- package/dist/tm/perm-ask.js.map +1 -1
- package/dist/tm/pipelines.d.ts.map +1 -1
- package/dist/tm/pipelines.js +11 -0
- package/dist/tm/pipelines.js.map +1 -1
- package/dist/tm/search.d.ts +5 -0
- package/dist/tm/search.d.ts.map +1 -1
- package/dist/tm/search.js +44 -4
- package/dist/tm/search.js.map +1 -1
- package/dist/tm/stats.d.ts +147 -0
- package/dist/tm/stats.d.ts.map +1 -0
- package/dist/tm/stats.js +383 -0
- package/dist/tm/stats.js.map +1 -0
- package/dist/tm/store.d.ts +3 -0
- package/dist/tm/store.d.ts.map +1 -1
- package/dist/tm/store.js +6 -1
- package/dist/tm/store.js.map +1 -1
- package/dist/tm/webfetch.d.ts +19 -0
- package/dist/tm/webfetch.d.ts.map +1 -1
- package/dist/tm/webfetch.js +70 -4
- package/dist/tm/webfetch.js.map +1 -1
- package/package.json +4 -2
package/dist/tm/stats.js
ADDED
|
@@ -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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"}
|
package/dist/tm/store.d.ts
CHANGED
|
@@ -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
|
package/dist/tm/store.d.ts.map
CHANGED
|
@@ -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(
|
|
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())
|
package/dist/tm/store.js.map
CHANGED
|
@@ -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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"}
|
package/dist/tm/webfetch.d.ts
CHANGED
|
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAA6B,KAAK,OAAO,EAAE,MAAM,eAAe,CAAA;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE9E;;;;;6EAK6E;AAC7E,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAgD,CAAA;AAE/F,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAK1E;AAGD,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"webfetch.d.ts","sourceRoot":"","sources":["../../src/tm/webfetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAA6B,KAAK,OAAO,EAAE,MAAM,eAAe,CAAA;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE9E;;;;;6EAK6E;AAC7E,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAgD,CAAA;AAE/F,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAK1E;AAGD,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAkB1C,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAOnF;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,GACtB;IACE,EAAE,EAAE,KAAK,CAAA;IACT,OAAO,EAAE,MAAM,CAAA;IACf;;0BAEsB;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,GAAG,CAAA;CACV,CAAA;AAEL;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CA0BlF;AAID;4DAC4D;AAC5D,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmB/C;AAQD;4EAC4E;AAC5E,eAAO,MAAM,cAAc,QAC4F,CAAA;AAWvH;;;;;;6DAM6D;AAC7D,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoBlE;AAgBD;;;;6EAI6E;AAC7E,eAAO,MAAM,4BAA4B,EAAE,SAAS,MAAM,EAAkB,CAAA;AAE5E,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAM7C;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX;0EACsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;gEAE4D;IAC5D,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AA4BD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,GAAG,SAAK,EACR,SAAS,GAAE,SAAS,MAAM,EAAyB,GAClD,SAAS,EAAE,CAwDb;AAED;;2DAE2D;AAC3D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,CASzF;AAID,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB;iFAC6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;IACjF,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE;QAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IAC7C,IAAI,CAAC,EAAE;QAAE,SAAS,IAAI,2BAA2B,CAAC,UAAU,CAAC,CAAA;KAAE,GAAG,IAAI,CAAA;IACtE,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAA;IACxC,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;CAC7B,CAAC,CAAA;AAgCF;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,IAAI,GAAE;IACJ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;2CAEuC;IACvC,GAAG,CAAC,EAAE,OAAO,CAAA;IACb;mDAC+C;IAC/C,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B;;oDAEgD;IAChD,KAAK,CAAC,EAAE,QAAQ,CAAA;CACZ,GACL,OAAO,CAAC,cAAc,CAAC,CAqFzB;AAED;8DAC8D;AAC9D,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAKtG;AAYD;;0DAE0D;AAC1D,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,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;IACrB;sEACkE;IAClE,KAAK,CAAC,EAAE,QAAQ,CAAA;CACjB,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,UAAU,CAAC,CAAA;CACjF,CAyIA"}
|