@te-river/opencode-team-mode 1.8.1 → 1.8.3
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 +47 -38
- package/README.zh-CN.md +47 -36
- package/dist/host/v2-prune.d.ts +81 -1
- package/dist/host/v2-prune.d.ts.map +1 -1
- package/dist/host/v2-prune.js +303 -18
- package/dist/host/v2-prune.js.map +1 -1
- package/dist/host/v2-retry.d.ts +14 -4
- package/dist/host/v2-retry.d.ts.map +1 -1
- package/dist/host/v2-retry.js +22 -10
- package/dist/host/v2-retry.js.map +1 -1
- package/dist/host/v2-session.d.ts +8 -0
- package/dist/host/v2-session.d.ts.map +1 -1
- package/dist/host/v2-session.js +18 -5
- package/dist/host/v2-session.js.map +1 -1
- package/dist/host/v2-state.d.ts +165 -0
- package/dist/host/v2-state.d.ts.map +1 -0
- package/dist/host/v2-state.js +448 -0
- package/dist/host/v2-state.js.map +1 -0
- package/dist/host/v2-tail.d.ts +98 -0
- package/dist/host/v2-tail.d.ts.map +1 -0
- package/dist/host/v2-tail.js +191 -0
- package/dist/host/v2-tail.js.map +1 -0
- package/dist/host/v2-types.d.ts +2 -0
- package/dist/host/v2-types.d.ts.map +1 -1
- package/dist/host/v2-usage.d.ts +72 -2
- package/dist/host/v2-usage.d.ts.map +1 -1
- package/dist/host/v2-usage.js +142 -9
- package/dist/host/v2-usage.js.map +1 -1
- package/dist/host/v2.d.ts.map +1 -1
- package/dist/host/v2.js +187 -3
- package/dist/host/v2.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 +12 -0
- 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 +5 -0
- package/dist/prompts/shared.js.map +1 -1
- package/dist/tm/config-layers.d.ts.map +1 -1
- package/dist/tm/config-layers.js +4 -0
- package/dist/tm/config-layers.js.map +1 -1
- package/dist/tm/config.d.ts +8 -0
- package/dist/tm/config.d.ts.map +1 -1
- package/dist/tm/config.js.map +1 -1
- package/dist/tm/pipelines.d.ts +9 -0
- package/dist/tm/pipelines.d.ts.map +1 -1
- package/dist/tm/pipelines.js +1 -1
- package/dist/tm/pipelines.js.map +1 -1
- package/dist/tm/stats.d.ts +11 -0
- package/dist/tm/stats.d.ts.map +1 -1
- package/dist/tm/stats.js +34 -1
- package/dist/tm/stats.js.map +1 -1
- package/docs/v2-port-notes.md +7 -3
- package/package.json +1 -1
package/dist/host/v2-prune.js
CHANGED
|
@@ -21,6 +21,19 @@
|
|
|
21
21
|
* protected STRING: the message may be pruned, but the stub must carry the
|
|
22
22
|
* handle verbatim, which is exactly the "keep the pointer, drop the body"
|
|
23
23
|
* contract.
|
|
24
|
+
* - **Nothing leaves that cannot be recovered.** A message carrying no handle
|
|
25
|
+
* of its own is offloaded to the run store BEFORE its body is replaced, so
|
|
26
|
+
* the stub carries a full `tm_fetch` handle (`pruneOffload`, default on). A
|
|
27
|
+
* failed offload falls back to today's echo note, one message at a time —
|
|
28
|
+
* losing a body is data loss, losing an offload is a counter. A stub with no
|
|
29
|
+
* handle to offer still carries the ADDRESSES the body named (board paths,
|
|
30
|
+
* `file:line`, URLs; at most three, deduplicated, in document order), because a
|
|
31
|
+
* pointer the reader can act on is the whole point of keeping one — and that
|
|
32
|
+
* scan is SINGLE-PASS and linear in the body length, not three global regexes
|
|
33
|
+
* over the whole text (which went quadratic on a long word run).
|
|
34
|
+
* - **A user pattern outranks the budget** (`pruneProtectPatterns`): a message
|
|
35
|
+
* whose text matches any compiled entry is never pruned, and the matches are
|
|
36
|
+
* counted (`protectMatched`) instead of silently changing the saving figure.
|
|
24
37
|
* - **The threshold is derived, never hard-coded.** `TM_PRUNE_AT_PERCENT`
|
|
25
38
|
* (default 70) of `limit.context`, the same denominator the desktop's own
|
|
26
39
|
* usage meter reads. No `limit.context` → no prune, counted `no_limit`.
|
|
@@ -40,6 +53,28 @@ const CHILD_ID_RE = /ses_[A-Za-z0-9]+/;
|
|
|
40
53
|
const SETTLED_STATE_RE = /state\s*=\s*"(?:completed|error)"/i;
|
|
41
54
|
const RUNNING_STATE_RE = /state\s*=\s*"(?:running|pending|in[_-]?progress)"/i;
|
|
42
55
|
const HANDLE_RE = /ref\s*:\s*"([^"]+)"[\s\S]*?access_token\s*:\s*"([^"]+)"[\s\S]*?expire_at\s*:\s*(\d+)/;
|
|
56
|
+
/**
|
|
57
|
+
* Compile the comma-separated pattern list. One invalid pattern loses only
|
|
58
|
+
* itself (a typo must not disable the ones next to it, and must never throw into
|
|
59
|
+
* the request path); an empty / absent value compiles to `[]` = off.
|
|
60
|
+
*/
|
|
61
|
+
export function parseProtectPatterns(raw) {
|
|
62
|
+
if (typeof raw !== "string" || !raw.trim())
|
|
63
|
+
return [];
|
|
64
|
+
const out = [];
|
|
65
|
+
for (const part of raw.split(",")) {
|
|
66
|
+
const src = part.trim();
|
|
67
|
+
if (!src)
|
|
68
|
+
continue;
|
|
69
|
+
try {
|
|
70
|
+
out.push(new RegExp(src));
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
/* an invalid regex is ignored, never fatal */
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return out;
|
|
77
|
+
}
|
|
43
78
|
const isOff = (v) => typeof v === "string" && ["off", "false", "0", "no"].includes(v.trim().toLowerCase());
|
|
44
79
|
export function resolvePruneConfig(config = resolveConfig()) {
|
|
45
80
|
return {
|
|
@@ -49,6 +84,7 @@ export function resolvePruneConfig(config = resolveConfig()) {
|
|
|
49
84
|
// prune is looking at the clamp, not at a broken layer.
|
|
50
85
|
atPercent: config.pruneAtPercent,
|
|
51
86
|
keepTailPercent: config.pruneKeepTailPercent,
|
|
87
|
+
protectPatterns: parseProtectPatterns(config.pruneProtectPatterns),
|
|
52
88
|
};
|
|
53
89
|
}
|
|
54
90
|
/**
|
|
@@ -243,7 +279,142 @@ export function isProtectedMessage(msg) {
|
|
|
243
279
|
return true;
|
|
244
280
|
return false;
|
|
245
281
|
}
|
|
282
|
+
/** 地址行最多留几条——再多就不是「地址」,而是正文摘抄。 */
|
|
283
|
+
export const PRUNE_ADDRESS_MAX = 3;
|
|
284
|
+
/** 地址行的前缀;整行只在真的抽到地址时出现。 */
|
|
285
|
+
export const PRUNE_ADDRESS_PREFIX = "地址:";
|
|
286
|
+
/**
|
|
287
|
+
* 单个 token 的字符上限。 超过它的不是地址,是正文——这条上限也是性能闸门:
|
|
288
|
+
* 长词串整段跳过,永远不会进到正则里。
|
|
289
|
+
*/
|
|
290
|
+
export const PRUNE_ADDRESS_TOKEN_MAX = 2048;
|
|
291
|
+
/**
|
|
292
|
+
* Token separators. `<` / `>` are deliberately NOT separators: the board note
|
|
293
|
+
* publishes `<board-root>/…md`, and splitting on the angle brackets would strip
|
|
294
|
+
* the placeholder off the address it belongs to.
|
|
295
|
+
*/
|
|
296
|
+
const ADDRESS_SEPARATORS = new Set([" ", "\t", "\n", "\r", "\f", "\v", '"', "'", "|", "`", ";", ",", "(", ")"]);
|
|
297
|
+
/** A cheap anchored pre-filter: only these suffixes can be a path address. */
|
|
298
|
+
const PATH_EXT_RE = /\.(?:md|json|jsonl|txt|log|ts|tsx|js|py|yml|yaml)$/;
|
|
299
|
+
/** `file:line` / `file:line:col`, ANCHORED inside one token (no per-start retry). */
|
|
300
|
+
const FILE_LINE_TOKEN_RE = /^(?:[A-Za-z]:)?[\w./\\-]+:\d+(?::\d+)?$/;
|
|
301
|
+
/**
|
|
302
|
+
* A path-shaped token with a KNOWN extension: `C:\…\01-team-report.md`,
|
|
303
|
+
* `/x/y/z.json`, `<board-root>/…md`, `src/host/v2-prune.ts`. The leading run is
|
|
304
|
+
* optional (drive letter, an angle-bracket placeholder, a relative first
|
|
305
|
+
* segment); every further segment must start with a separator, which is what
|
|
306
|
+
* keeps a bare `v2-prune.ts` from being called an address. BOTH ENDS ANCHORED:
|
|
307
|
+
* the engine never re-tries every start position, which is the whole point of
|
|
308
|
+
* the token pass.
|
|
309
|
+
*/
|
|
310
|
+
const PATH_TOKEN_RE = /^(?:[A-Za-z]:|<[^>\s]+>|[^\s"'<>|`;,():\/\\]+)?(?:[\/\\][^\s"'<>|`;,():\/\\]+)+\.(?:md|json|jsonl|txt|log|ts|tsx|js|py|yml|yaml)$/;
|
|
311
|
+
/** Strip the `<`/`>` a prose writer may have wrapped an address in. */
|
|
312
|
+
const trimAngles = (s) => s.replace(/^</, "").replace(/>+$/, "");
|
|
313
|
+
/**
|
|
314
|
+
* The first `http(s)://` inside a token, or -1. `indexOf` is linear, and it is
|
|
315
|
+
* how an address glued to Chinese text (`看https://…`) is still recovered —
|
|
316
|
+
* without a cross-text regex that would try every start position.
|
|
317
|
+
*/
|
|
318
|
+
function urlAt(token) {
|
|
319
|
+
const a = token.indexOf("http://");
|
|
320
|
+
const b = token.indexOf("https://");
|
|
321
|
+
if (a < 0)
|
|
322
|
+
return b;
|
|
323
|
+
if (b < 0)
|
|
324
|
+
return a;
|
|
325
|
+
return Math.min(a, b);
|
|
326
|
+
}
|
|
327
|
+
/** Retry a token from its first path separator: `见:/a/one.md` → `/a/one.md`. */
|
|
328
|
+
function tailFromSeparator(token) {
|
|
329
|
+
const a = token.indexOf("/");
|
|
330
|
+
const b = token.indexOf("\\");
|
|
331
|
+
const cut = a < 0 ? b : b < 0 ? a : Math.min(a, b);
|
|
332
|
+
return cut > 0 ? token.slice(cut) : null;
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* The addresses a pruned body carried, in DOCUMENT ORDER, deduplicated, at most
|
|
336
|
+
* `PRUNE_ADDRESS_MAX`. Pure, and it only ever yields the address itself — never a
|
|
337
|
+
* fragment of the body around it, because the stub is a pointer, not a summary.
|
|
338
|
+
*
|
|
339
|
+
* LINEAR BY CONSTRUCTION (this is a performance contract, not a style note): the
|
|
340
|
+
* text is walked ONCE, token by token, and every pattern is anchored to a single
|
|
341
|
+
* token. The previous version ran three GLOBAL regexes over the whole body and
|
|
342
|
+
* blanked each URL match by rebuilding the string — quadratic on a long word run
|
|
343
|
+
* (`"a".repeat(200000)` was hundreds of seconds) and O(k·n) with many URLs. A
|
|
344
|
+
* token longer than `PRUNE_ADDRESS_TOKEN_MAX` is skipped without touching a regex.
|
|
345
|
+
*
|
|
346
|
+
* A longer address that CONTAINS a shorter one wins: `…/v2-prune.ts:120` is the
|
|
347
|
+
* pointer a reader can use, while `…/v2-prune.ts` would send them hunting for the
|
|
348
|
+
* line the message was about.
|
|
349
|
+
*/
|
|
350
|
+
export function extractAddresses(text) {
|
|
351
|
+
if (!text)
|
|
352
|
+
return [];
|
|
353
|
+
const found = [];
|
|
354
|
+
const n = text.length;
|
|
355
|
+
let i = 0;
|
|
356
|
+
while (i < n) {
|
|
357
|
+
while (i < n && ADDRESS_SEPARATORS.has(text[i]))
|
|
358
|
+
i++;
|
|
359
|
+
if (i >= n)
|
|
360
|
+
break;
|
|
361
|
+
const start = i;
|
|
362
|
+
while (i < n && !ADDRESS_SEPARATORS.has(text[i]))
|
|
363
|
+
i++;
|
|
364
|
+
const token = text.slice(start, i);
|
|
365
|
+
if (token.length > PRUNE_ADDRESS_TOKEN_MAX)
|
|
366
|
+
continue;
|
|
367
|
+
// URL first: its own path must never be counted as a second address.
|
|
368
|
+
const scheme = urlAt(token);
|
|
369
|
+
if (scheme >= 0) {
|
|
370
|
+
const address = trimAngles(token.slice(scheme));
|
|
371
|
+
if (address.length > 8)
|
|
372
|
+
found.push({ at: start + scheme, address });
|
|
373
|
+
continue;
|
|
374
|
+
}
|
|
375
|
+
// `file:line` — a prefix with no separator is a word (`expire_at:9`), not a path.
|
|
376
|
+
if (token.includes(":") && /\d$/.test(token)) {
|
|
377
|
+
const direct = FILE_LINE_TOKEN_RE.test(token) ? token : null;
|
|
378
|
+
const candidate = direct ?? tailFromSeparator(token);
|
|
379
|
+
if (candidate && FILE_LINE_TOKEN_RE.test(candidate)) {
|
|
380
|
+
const cut = candidate.lastIndexOf(":");
|
|
381
|
+
if (/[\/\\]/.test(candidate.slice(0, cut))) {
|
|
382
|
+
found.push({ at: start, address: candidate });
|
|
383
|
+
continue;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
if (PATH_EXT_RE.test(token)) {
|
|
388
|
+
const direct = PATH_TOKEN_RE.test(token) ? token : null;
|
|
389
|
+
const tail = direct ? null : tailFromSeparator(token);
|
|
390
|
+
const candidate = direct ?? (tail && PATH_EXT_RE.test(tail) && PATH_TOKEN_RE.test(tail) ? tail : null);
|
|
391
|
+
if (candidate)
|
|
392
|
+
found.push({ at: start, address: candidate });
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
// Tokens are already in document order; the sort stays because an embedded URL
|
|
396
|
+
// reports an offset inside its token, and "document order" is what the reader
|
|
397
|
+
// expects either way.
|
|
398
|
+
found.sort((a, b) => a.at - b.at);
|
|
399
|
+
const out = [];
|
|
400
|
+
for (const { address } of found) {
|
|
401
|
+
if (out.some((kept) => kept.includes(address)))
|
|
402
|
+
continue;
|
|
403
|
+
if (found.some((o) => o.address !== address && o.address.includes(address)))
|
|
404
|
+
continue;
|
|
405
|
+
out.push(address);
|
|
406
|
+
if (out.length >= PRUNE_ADDRESS_MAX)
|
|
407
|
+
break;
|
|
408
|
+
}
|
|
409
|
+
return out;
|
|
410
|
+
}
|
|
246
411
|
const withCommas = (n) => String(n).replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
412
|
+
/** One trailing line carrying the recoverable addresses; "" when none were found. */
|
|
413
|
+
function addressLine(addresses) {
|
|
414
|
+
if (!addresses || !addresses.length)
|
|
415
|
+
return "";
|
|
416
|
+
return `\n${PRUNE_ADDRESS_PREFIX}${addresses.join(" · ")}`;
|
|
417
|
+
}
|
|
247
418
|
/**
|
|
248
419
|
* The replacement text. It must be self-explanatory: a reader has to know what
|
|
249
420
|
* used to be here and where to get it back. The handle / child id is copied
|
|
@@ -257,7 +428,15 @@ export function renderPruneStub(entry) {
|
|
|
257
428
|
if (entry.kind === "child" && entry.childId) {
|
|
258
429
|
return `${head} 子代理 ${entry.childId} 的报告已结算(state=${entry.childState ?? "completed"});需要原文用 tm_join { ids:["${entry.childId}"] } 取回。`;
|
|
259
430
|
}
|
|
260
|
-
|
|
431
|
+
if (entry.kind === "offload" && entry.handle) {
|
|
432
|
+
// Deliberately different wording from the tool-result stub above: this body
|
|
433
|
+
// had NO handle until the prune created one, so "re-run the command" would
|
|
434
|
+
// be wrong advice — the bytes are in the store, not behind a command.
|
|
435
|
+
return `${head} 本条消息已卸载:tm_fetch { ref:"${entry.handle.ref}", access_token:"${entry.handle.accessToken}", expire_at:${entry.handle.expireAt} }。原文可回取(TTL 由 blackboardTtlDays 决定),不要重跑。${addressLine(entry.addresses)}`;
|
|
436
|
+
}
|
|
437
|
+
// The echo stub is the one that keeps NO copy of the body, so the addresses it
|
|
438
|
+
// reports are the only thing the next round can still act on.
|
|
439
|
+
return `${head} 已结算的工具输出/命令回显,正文已裁剪;如需重看请重跑原命令,或从轨迹(tm_stats { recent: N })取回。${addressLine(entry.addresses)}`;
|
|
261
440
|
}
|
|
262
441
|
function extractHandle(text) {
|
|
263
442
|
const m = HANDLE_RE.exec(text);
|
|
@@ -279,18 +458,21 @@ function buildStub(text, tokens) {
|
|
|
279
458
|
const child = extractChild(text);
|
|
280
459
|
if (child)
|
|
281
460
|
return { kind: "child", stub: renderPruneStub({ kind: "child", originalTokens: tokens, childId: child.id, childState: child.state }) };
|
|
282
|
-
|
|
461
|
+
// Only the branches that carry no recoverable pointer get the address line: a
|
|
462
|
+
// handle already says where the bytes are, and a child id where the report is.
|
|
463
|
+
return { kind: "echo", stub: renderPruneStub({ kind: "echo", originalTokens: tokens, addresses: extractAddresses(text) }) };
|
|
283
464
|
}
|
|
284
465
|
/**
|
|
285
466
|
* Decide which messages to prune, oldest first, until the request fits the
|
|
286
467
|
* budget. Pure: it reads the messages and returns a plan; nothing is mutated.
|
|
287
468
|
*/
|
|
288
469
|
export function prunePlan(messages, opts = {}) {
|
|
289
|
-
const plan = { prune: [], protectedCount: 0, keptCount: 0, savedTokens: 0 };
|
|
470
|
+
const plan = { prune: [], protectedCount: 0, protectMatched: 0, keptCount: 0, savedTokens: 0 };
|
|
290
471
|
if (!Array.isArray(messages) || messages.length === 0)
|
|
291
472
|
return plan;
|
|
292
473
|
const keepTailTokens = Math.max(0, opts.keepTailTokens ?? 0);
|
|
293
474
|
const budgetTokens = opts.budgetTokens ?? Number.POSITIVE_INFINITY;
|
|
475
|
+
const protectPatterns = opts.protectPatterns ?? [];
|
|
294
476
|
// The tail boundary: walk from the newest message until the cumulative token
|
|
295
477
|
// count would exceed the tail budget. The newest message is ALWAYS protected.
|
|
296
478
|
let acc = 0;
|
|
@@ -307,6 +489,13 @@ export function prunePlan(messages, opts = {}) {
|
|
|
307
489
|
let saved = 0;
|
|
308
490
|
for (let i = 0; i < tailStart; i++) {
|
|
309
491
|
const msg = messages[i];
|
|
492
|
+
if (protectPatterns.length) {
|
|
493
|
+
const body = messageText(msg);
|
|
494
|
+
if (body && protectPatterns.some((re) => re.test(body))) {
|
|
495
|
+
plan.protectMatched++;
|
|
496
|
+
continue;
|
|
497
|
+
}
|
|
498
|
+
}
|
|
310
499
|
if (isProtectedMessage(msg)) {
|
|
311
500
|
plan.protectedCount++;
|
|
312
501
|
continue;
|
|
@@ -342,6 +531,63 @@ export function applyPrunePlan(messages, plan) {
|
|
|
342
531
|
slots[i].container[slots[i].key] = "";
|
|
343
532
|
}
|
|
344
533
|
}
|
|
534
|
+
/**
|
|
535
|
+
* Offload a planned body BEFORE its message is rewritten, so the stub can carry
|
|
536
|
+
* a real `tm_fetch` handle. Only `echo` entries are offloaded: a `handle` entry
|
|
537
|
+
* already points at a payload (offloading it again would duplicate the bytes) and
|
|
538
|
+
* a `child` entry points at a session (its body lives in the child, not here).
|
|
539
|
+
*
|
|
540
|
+
* Failure is BOUNDED and per message: one throw degrades that one stub to today's
|
|
541
|
+
* echo note and increments a counter — the remaining plan still runs, and the
|
|
542
|
+
* caller's hook never sees an exception. `savedTokens` is recomputed afterwards
|
|
543
|
+
* because a handle stub is longer than an echo note, and a reported saving that
|
|
544
|
+
* did not happen is exactly the kind of claim this product refuses.
|
|
545
|
+
*/
|
|
546
|
+
async function offloadPlannedBodies(messages, plan, offload, onFailure, report, sessionID) {
|
|
547
|
+
if (!offload || plan.prune.length === 0)
|
|
548
|
+
return;
|
|
549
|
+
let saved = 0;
|
|
550
|
+
for (const entry of plan.prune) {
|
|
551
|
+
const text = entry.kind === "echo" ? messageText(messages[entry.index]) : "";
|
|
552
|
+
if (entry.kind === "echo" && text) {
|
|
553
|
+
let handle = null;
|
|
554
|
+
let failure = null;
|
|
555
|
+
try {
|
|
556
|
+
handle = await offload(text);
|
|
557
|
+
if (!handle || !handle.ref || !handle.accessToken || !Number.isFinite(handle.expireAt)) {
|
|
558
|
+
failure = { reason: handle ? "invalid" : "empty" };
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
catch (err) {
|
|
562
|
+
failure = { reason: "threw", error: String(err?.message ?? err).slice(0, 120) };
|
|
563
|
+
}
|
|
564
|
+
if (handle && !failure) {
|
|
565
|
+
entry.kind = "offload";
|
|
566
|
+
entry.stub = renderPruneStub({
|
|
567
|
+
kind: "offload",
|
|
568
|
+
originalTokens: entry.originalTokens,
|
|
569
|
+
handle,
|
|
570
|
+
// The offload stub points at bytes a reader may not want to page
|
|
571
|
+
// through; the addresses are what they can act on in one round.
|
|
572
|
+
addresses: extractAddresses(text),
|
|
573
|
+
});
|
|
574
|
+
// A dedupe hit means these bytes are ALREADY in the store — counting it as
|
|
575
|
+
// a fresh offload would report a saving that was not made, and would make
|
|
576
|
+
// the card's "上轮修剪" line grow on a replayed request.
|
|
577
|
+
if (handle.reused)
|
|
578
|
+
report.reused++;
|
|
579
|
+
else
|
|
580
|
+
report.offloaded++;
|
|
581
|
+
}
|
|
582
|
+
else {
|
|
583
|
+
report.offloadFailed++;
|
|
584
|
+
onFailure({ sessionID, index: entry.index, ...(failure ?? {}) });
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
saved += Math.max(0, entry.originalTokens - estimateTokens(entry.stub));
|
|
588
|
+
}
|
|
589
|
+
plan.savedTokens = saved;
|
|
590
|
+
}
|
|
345
591
|
/** The default denominator: `ctx.model.list()` keyed by the session's model,
|
|
346
592
|
* the same lookup the desktop's usage meter and this package's usage readers use. */
|
|
347
593
|
function defaultModelLimitOf(ctx) {
|
|
@@ -409,6 +655,9 @@ function defaultModelLimitOf(ctx) {
|
|
|
409
655
|
}
|
|
410
656
|
export async function applyV2ContextPrune(ctx, input = {}) {
|
|
411
657
|
const config = input.config ?? resolvePruneConfig();
|
|
658
|
+
// A hand-built config (a test, an embedder) may predate the pattern list; `[]` is
|
|
659
|
+
// the "off" path, so tolerating it changes no behaviour and throws nothing.
|
|
660
|
+
const protectPatterns = config.protectPatterns ?? [];
|
|
412
661
|
const report = {
|
|
413
662
|
enabled: config.enabled,
|
|
414
663
|
atPercent: config.atPercent,
|
|
@@ -422,7 +671,14 @@ export async function applyV2ContextPrune(ctx, input = {}) {
|
|
|
422
671
|
noMessages: 0,
|
|
423
672
|
foreignSkipped: 0,
|
|
424
673
|
threw: 0,
|
|
674
|
+
offloaded: 0,
|
|
675
|
+
reused: 0,
|
|
676
|
+
offloadFailed: 0,
|
|
677
|
+
overBudget: 0,
|
|
678
|
+
orphans: 0,
|
|
425
679
|
unknownParts: 0,
|
|
680
|
+
protectPatterns: protectPatterns.length,
|
|
681
|
+
protectMatched: 0,
|
|
426
682
|
lastPercent: 0,
|
|
427
683
|
lastUsed: 0,
|
|
428
684
|
lastLimit: 0,
|
|
@@ -475,21 +731,50 @@ export async function applyV2ContextPrune(ctx, input = {}) {
|
|
|
475
731
|
}
|
|
476
732
|
const budgetTokens = Math.floor((limit * config.atPercent) / 100);
|
|
477
733
|
const keepTailTokens = Math.floor((limit * config.keepTailPercent) / 100);
|
|
478
|
-
const plan = prunePlan(messages, { budgetTokens, keepTailTokens });
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
734
|
+
const plan = prunePlan(messages, { budgetTokens, keepTailTokens, protectPatterns });
|
|
735
|
+
const freshBefore = report.offloaded;
|
|
736
|
+
await offloadPlannedBodies(messages, plan, input.offload, (row) => emit("prune_offload_failed", row), report, sessionID);
|
|
737
|
+
try {
|
|
738
|
+
applyPrunePlan(messages, plan);
|
|
739
|
+
// A handle stub is longer than the echo note it replaced, so the plan's
|
|
740
|
+
// own arithmetic can land ABOVE the budget. Counted, never silently
|
|
741
|
+
// re-pruned: a second pass would have to offload again to be lossless.
|
|
742
|
+
const overBudget = messagesTokens(messages) > budgetTokens;
|
|
743
|
+
if (overBudget)
|
|
744
|
+
report.overBudget++;
|
|
745
|
+
report.prunedMessages += plan.prune.length;
|
|
746
|
+
report.prunedTokens += plan.savedTokens;
|
|
747
|
+
report.skippedProtected += plan.protectedCount;
|
|
748
|
+
report.protectMatched += plan.protectMatched;
|
|
749
|
+
emit("prune", {
|
|
750
|
+
sessionID,
|
|
751
|
+
percent: pct,
|
|
752
|
+
used,
|
|
753
|
+
limit,
|
|
754
|
+
pruned: plan.prune.length,
|
|
755
|
+
saved: plan.savedTokens,
|
|
756
|
+
protected: plan.protectedCount,
|
|
757
|
+
protect_matched: plan.protectMatched,
|
|
758
|
+
protect_patterns: protectPatterns.length,
|
|
759
|
+
unknown: report.unknownParts,
|
|
760
|
+
over_budget: overBudget,
|
|
761
|
+
reused: report.reused,
|
|
762
|
+
});
|
|
763
|
+
}
|
|
764
|
+
catch (err) {
|
|
765
|
+
// Bodies stored for THIS request but never pointed at by a message are
|
|
766
|
+
// orphans: counted, and named on their own trajectory row — a payload
|
|
767
|
+
// nobody can reach is otherwise invisible until the TTL sweep.
|
|
768
|
+
// R4: only the FRESH writes of this request count. A reused handle points
|
|
769
|
+
// at a payload an earlier request already stored, so calling it an orphan
|
|
770
|
+
// would invent garbage — and deleting nothing would be the fix anyway.
|
|
771
|
+
const freshThisRequest = Math.max(0, report.offloaded - freshBefore);
|
|
772
|
+
if (freshThisRequest > 0) {
|
|
773
|
+
report.orphans += freshThisRequest;
|
|
774
|
+
emit("prune_offload_failed", { sessionID, reason: "orphaned", orphan: freshThisRequest });
|
|
775
|
+
}
|
|
776
|
+
throw err;
|
|
777
|
+
}
|
|
493
778
|
}
|
|
494
779
|
catch (err) {
|
|
495
780
|
report.threw++;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v2-prune.js","sourceRoot":"","sources":["../../src/host/v2-prune.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"v2-prune.js","sourceRoot":"","sources":["../../src/host/v2-prune.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAIvD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAA;AAEtC,mFAAmF;AACnF,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CAAA;AAEnF,MAAM,WAAW,GAAG,kBAAkB,CAAA;AACtC,MAAM,gBAAgB,GAAG,oCAAoC,CAAA;AAC7D,MAAM,gBAAgB,GAAG,oDAAoD,CAAA;AAC7E,MAAM,SAAS,GAAG,sFAAsF,CAAA;AAgBxG;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAY;IAC/C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAA;IACrD,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACvB,IAAI,CAAC,GAAG;YAAE,SAAQ;QAClB,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;QAChD,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,CAAqB,EAAW,EAAE,CAC/C,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;AAEvF,MAAM,UAAU,kBAAkB,CAChC,SAKI,aAAa,EAAE;IAEnB,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,KAAK,KAAK,KAAK;QAC/B,yEAAyE;QACzE,4EAA4E;QAC5E,wDAAwD;QACxD,SAAS,EAAE,MAAM,CAAC,cAAc;QAChC,eAAe,EAAE,MAAM,CAAC,oBAAoB;QAC5C,eAAe,EAAE,oBAAoB,CAAC,MAAM,CAAC,oBAAoB,CAAC;KACnE,CAAA;AACH,CAAC;AAUD;;;;;;;;;;;GAWG;AACH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAA;AAElF;;;;;;GAMG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;AAE9C,yDAAyD;AACzD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAA;AAE9E;;;;;;;;GAQG;AACH,SAAS,WAAW,CAAC,KAAc,EAAE,KAAK,GAAG,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACjF,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,CAAA;IAC5B,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IACxB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;aACrC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;aAC3B,IAAI,CAAC,IAAI,CAAC,CAAA;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,KAAgC,CAAA;QAC1C,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;YACtF,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBACxC,IAAI,CAAC;oBAAE,OAAO,CAAC,CAAA;YACjB,CAAC;QACH,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAA;QACX,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,GAAY;IACpC,MAAM,CAAC,GAAG,GAAiD,CAAA;IAC3D,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAA;IAC1C,MAAM,KAAK,GAAe,EAAE,CAAA;IAC5B,MAAM,OAAO,GAAG,CAAC,GAAY,EAAE,EAAE;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAM;QAC/B,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,CAA+C,CAAA;YAC5D,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,SAAQ;YAC/C,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACzF,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YAC/D,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBAC3D,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBACrC,IAAI,IAAI;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;YAChE,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACxD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACpC,IAAI,IAAI;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YAC/D,CAAC;QACH,CAAC;IACH,CAAC,CAAA;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;SACvC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;SAChD,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC5F,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,MAAM,CAAC,GAAG,GAAiD,CAAA;IAC3D,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAA;IACzC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;IAC1F,IAAI,CAAC,GAAG;QAAE,OAAO,CAAC,CAAA;IAClB,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,CAA+C,CAAA;QAC5D,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1G,CAAC,EAAE,CAAA;QACL,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAiB;IACpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,CAAA;IACtC,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAClD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,OAAO,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAiB;IAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,CAAA;IACtC,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,CAAA;IACjD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,MAAM,CAAC,GAAG,GAAiD,CAAA;IAC3D,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAA;IAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,IAA2C,CAAA;IAC1D,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,CAAA;IACjC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AAC3D,CAAC;AAED,iDAAiD;AAEjD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAA;IACvB,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC9C,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAAE,OAAO,IAAI,CAAA;IACpD,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IAC5D,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACzE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAA;IACvC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAC5C,kFAAkF;IAClF,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACvE,OAAO,KAAK,CAAA;AACd,CAAC;AAYD,kCAAkC;AAClC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAClC,4BAA4B;AAC5B,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAA;AACzC;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAA;AAE3C;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAE/G,8EAA8E;AAC9E,MAAM,WAAW,GAAG,oDAAoD,CAAA;AACxE,qFAAqF;AACrF,MAAM,kBAAkB,GAAG,yCAAyC,CAAA;AACpE;;;;;;;;GAQG;AACH,MAAM,aAAa,GACjB,mIAAmI,CAAA;AAErI,uEAAuE;AACvE,MAAM,UAAU,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AAEhF;;;;GAIG;AACH,SAAS,KAAK,CAAC,KAAa;IAC1B,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAClC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACnC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAA;IACnB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAA;IACnB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACvB,CAAC;AAED,gFAAgF;AAChF,SAAS,iBAAiB,CAAC,KAAa;IACtC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAClD,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAC1C,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAA;IACpB,MAAM,KAAK,GAA2C,EAAE,CAAA;IACxD,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;IACrB,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,EAAE,CAAA;QACpD,IAAI,CAAC,IAAI,CAAC;YAAE,MAAK;QACjB,MAAM,KAAK,GAAG,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,EAAE,CAAA;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAClC,IAAI,KAAK,CAAC,MAAM,GAAG,uBAAuB;YAAE,SAAQ;QAEpD,qEAAqE;QACrE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QAC3B,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;YAC/C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;YACnE,SAAQ;QACV,CAAC;QAED,kFAAkF;QAClF,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;YAC5D,MAAM,SAAS,GAAG,MAAM,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAA;YACpD,IAAI,SAAS,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpD,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;gBACtC,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;oBAC7C,SAAQ;gBACV,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;YACvD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;YACrD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YACtG,IAAI,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;QAC9D,CAAC;IACH,CAAC;IACD,+EAA+E;IAC/E,8EAA8E;IAC9E,sBAAsB;IACtB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAA;IACjC,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAAE,SAAQ;QACxD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAAE,SAAQ;QACrF,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACjB,IAAI,GAAG,CAAC,MAAM,IAAI,iBAAiB;YAAE,MAAK;IAC5C,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAYD,MAAM,UAAU,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAA;AAEzF,qFAAqF;AACrF,SAAS,WAAW,CAAC,SAA+B;IAClD,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IAC9C,OAAO,KAAK,oBAAoB,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAA;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAqB;IACnD,MAAM,IAAI,GAAG,GAAG,cAAc,MAAM,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAA;IAC7E,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5C,OAAO,GAAG,IAAI,4BAA4B,KAAK,CAAC,MAAM,CAAC,GAAG,oBAAoB,KAAK,CAAC,MAAM,CAAC,WAAW,gBAAgB,KAAK,CAAC,MAAM,CAAC,QAAQ,8BAA8B,CAAA;IAC3K,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC5C,OAAO,GAAG,IAAI,QAAQ,KAAK,CAAC,OAAO,iBAAiB,KAAK,CAAC,UAAU,IAAI,WAAW,2BAA2B,KAAK,CAAC,OAAO,UAAU,CAAA;IACvI,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC7C,4EAA4E;QAC5E,2EAA2E;QAC3E,sEAAsE;QACtE,OAAO,GAAG,IAAI,4BAA4B,KAAK,CAAC,MAAM,CAAC,GAAG,oBAAoB,KAAK,CAAC,MAAM,CAAC,WAAW,gBAAgB,KAAK,CAAC,MAAM,CAAC,QAAQ,6CAA6C,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAA;IACxN,CAAC;IACD,+EAA+E;IAC/E,8DAA8D;IAC9D,OAAO,GAAG,IAAI,kEAAkE,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAA;AAChH,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IACnB,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AACjE,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACtC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAA;IACpB,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW,CAAA;IAC7D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;AACtB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,MAAc;IAC7C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;IAClC,IAAI,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;IAChH,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IAChC,IAAI,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAA;IACjJ,8EAA8E;IAC9E,+EAA+E;IAC/E,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;AAC7H,CAAC;AA6BD;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,QAAiB,EAAE,OAAyB,EAAE;IACtE,MAAM,IAAI,GAAc,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAA;IACzG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAClE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,CAAA;IAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,iBAAiB,CAAA;IAClE,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,CAAA;IAElD,6EAA6E;IAC7E,+EAA+E;IAC/E,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAA;IAC/B,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QACpC,IAAI,GAAG,GAAG,CAAC,GAAG,cAAc;YAAE,MAAK;QACnC,GAAG,IAAI,CAAC,CAAA;QACR,SAAS,GAAG,CAAC,CAAA;IACf,CAAC;IACD,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAEpD,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IACtC,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;YAC7B,IAAI,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,cAAc,EAAE,CAAA;gBACrB,SAAQ;YACV,CAAC;QACH,CAAC;QACD,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,EAAE,CAAA;YACrB,SAAQ;QACV,CAAC;QACD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,SAAS,EAAE,CAAA;YAChB,SAAQ;QACV,CAAC;QACD,IAAI,KAAK,GAAG,KAAK,IAAI,YAAY,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,EAAE,CAAA;YAChB,SAAQ;QACV,CAAC;QACD,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;QAC3C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAA;QAChE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QACzD,KAAK,IAAI,KAAK,CAAA;IAChB,CAAC;IACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;IACxB,OAAO,IAAI,CAAA;AACb,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,cAAc,CAAC,QAAiB,EAAE,IAAe;IAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAM;IACpC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;QAC9C,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,SAAQ;QAC3B,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;IAC9E,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,oBAAoB,CACjC,QAAmB,EACnB,IAAe,EACf,OAAoE,EACpE,SAAiD,EACjD,MAAmB,EACnB,SAAiB;IAEjB,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAC/C,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAC5E,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC;YAClC,IAAI,MAAM,GAAuB,IAAI,CAAA;YACrC,IAAI,OAAO,GAAmC,IAAI,CAAA;YAClD,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;gBAC5B,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACvF,OAAO,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;gBACpD,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAE,GAAa,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;YAC5F,CAAC;YACD,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,GAAG,SAAS,CAAA;gBACtB,KAAK,CAAC,IAAI,GAAG,eAAe,CAAC;oBAC3B,IAAI,EAAE,SAAS;oBACf,cAAc,EAAE,KAAK,CAAC,cAAc;oBACpC,MAAM;oBACN,iEAAiE;oBACjE,gEAAgE;oBAChE,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC;iBAClC,CAAC,CAAA;gBACF,2EAA2E;gBAC3E,0EAA0E;gBAC1E,qDAAqD;gBACrD,IAAI,MAAM,CAAC,MAAM;oBAAE,MAAM,CAAC,MAAM,EAAE,CAAA;;oBAC7B,MAAM,CAAC,SAAS,EAAE,CAAA;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,aAAa,EAAE,CAAA;gBACtB,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;YAClE,CAAC;QACH,CAAC;QACD,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IACzE,CAAC;IACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;AAC1B,CAAC;AA0DD;sFACsF;AACtF,SAAS,mBAAmB,CAAC,GAAc;IACzC,IAAI,MAAM,GAA+B,IAAI,CAAA;IAC7C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAA;IACtC,MAAM,cAAc,GAAG,IAAI,GAAG,EAA8C,CAAA;IAE5E,KAAK,UAAU,UAAU,CAAC,KAAK,GAAG,KAAK;QACrC,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAA;YACtC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAmC,CAAA;gBAC3E,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;gBACtD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;oBACrB,MAAM,GAAG,GAAG,CAAwB,CAAA;oBACpC,MAAM,UAAU,GAAG,OAAO,GAAG,EAAE,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;oBACnH,MAAM,EAAE,GAAG,OAAO,GAAG,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;oBACrG,MAAM,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,CAAA;oBACjC,IAAI,UAAU,IAAI,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC;wBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;gBACxG,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,qDAAqD;YACvD,CAAC;YACD,MAAM,GAAG,IAAI,CAAA;QACf,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,SAAS,iBAAiB,CAAC,QAAmB;QAC5C,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;YACvC,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAA;QACzB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,UAAU,YAAY,CAAC,SAAiB;QAC3C,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC3C,IAAI,KAAK;YAAE,OAAO,KAAK,CAAA;QACvB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,GAAmE,CAAA;YAC5F,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,CAAyC,CAAC,CAAC,CAAC,SAAS,CAAA;YACnH,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;YAC/B,IAAI,KAAK;gBAAE,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;YAC/C,OAAO,KAAK,CAAA;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC,CAAA;QAC5E,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAA;QACvB,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,EAAE,EAAE,CAAA;QAC7C,IAAI,KAAK,GAAG,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACzC,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACrB,KAAK,GAAG,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3C,CAAC;QACD,OAAO,KAAK,IAAI,IAAI,CAAA;IACtB,CAAC,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAc,EAAE,QAAoB,EAAE;IAC9E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,kBAAkB,EAAE,CAAA;IACnD,kFAAkF;IAClF,4EAA4E;IAC5E,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAA;IACpD,MAAM,MAAM,GAAgB;QAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,OAAO,EAAE,CAAC;QACV,cAAc,EAAE,CAAC;QACjB,YAAY,EAAE,CAAC;QACf,gBAAgB,EAAE,CAAC;QACnB,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,CAAC;QACb,cAAc,EAAE,CAAC;QACjB,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC;QACT,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;QACV,YAAY,EAAE,CAAC;QACf,eAAe,EAAE,eAAe,CAAC,MAAM;QACvC,cAAc,EAAE,CAAC;QACjB,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,CAAC;KACb,CAAA;IACD,MAAM,aAAa,GAAqB,EAAE,CAAA;IAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;IAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACtE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,CAAA;IAClC,CAAC;IACD,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAA;IACnE,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,MAA+B,EAAE,EAAE;QAC7D,IAAI,CAAC;YACH,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,6EAA6E;QAC/E,CAAC;IACH,CAAC,CAAA;IAED,aAAa,CAAC,IAAI,CAChB,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,KAAuB,EAAE,EAAE;QAC9D,IAAI,CAAC;YACH,uEAAuE;YACvE,wEAAwE;YACxE,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;gBAC3E,MAAM,CAAC,cAAc,EAAE,CAAA;gBACvB,OAAM;YACR,CAAC;YACD,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAG,KAAiC,EAAE,SAAS,CAAC,CAAA;YAC/E,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAQ,CAAA;YAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtD,MAAM,CAAC,UAAU,EAAE,CAAA;gBACnB,OAAM;YACR,CAAC;YACD,MAAM,CAAC,OAAO,EAAE,CAAA;YAChB,MAAM,CAAC,YAAY,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAA;YACrD,MAAM,SAAS,GAAG,MAAM,CAAE,KAAiC,EAAE,SAAS,IAAI,EAAE,CAAC,CAAA;YAC7E,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YACrD,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACpD,MAAM,CAAC,OAAO,EAAE,CAAA;gBAChB,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;gBAC/B,OAAM;YACR,CAAC;YACD,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;YACrC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAClC,MAAM,CAAC,WAAW,GAAG,GAAG,CAAA;YACxB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAA;YACtB,MAAM,CAAC,SAAS,GAAG,KAAK,CAAA;YACxB,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC3B,MAAM,CAAC,KAAK,EAAE,CAAA;gBACd,OAAM;YACR,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAA;YACjE,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,CAAA;YACzE,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC,CAAA;YACnF,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAA;YACpC,MAAM,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;YACxH,IAAI,CAAC;gBACH,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;gBAC9B,wEAAwE;gBACxE,qEAAqE;gBACrE,uEAAuE;gBACvE,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAA;gBAC1D,IAAI,UAAU;oBAAE,MAAM,CAAC,UAAU,EAAE,CAAA;gBACnC,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;gBAC1C,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,CAAA;gBACvC,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,CAAA;gBAC9C,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAA;gBAC5C,IAAI,CAAC,OAAO,EAAE;oBACZ,SAAS;oBACT,OAAO,EAAE,GAAG;oBACZ,IAAI;oBACJ,KAAK;oBACL,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;oBACzB,KAAK,EAAE,IAAI,CAAC,WAAW;oBACvB,SAAS,EAAE,IAAI,CAAC,cAAc;oBAC9B,eAAe,EAAE,IAAI,CAAC,cAAc;oBACpC,gBAAgB,EAAE,eAAe,CAAC,MAAM;oBACxC,OAAO,EAAE,MAAM,CAAC,YAAY;oBAC5B,WAAW,EAAE,UAAU;oBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,uEAAuE;gBACvE,sEAAsE;gBACtE,+DAA+D;gBAC/D,2EAA2E;gBAC3E,0EAA0E;gBAC1E,uEAAuE;gBACvE,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,CAAA;gBACpE,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;oBACzB,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAA;oBAClC,IAAI,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAA;gBAC3F,CAAC;gBACD,MAAM,GAAG,CAAA;YACX,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,EAAE,CAAA;YACd,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAE,GAAa,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;QAChF,CAAC;IACH,CAAC,CAAC,CACH,CAAA;IAED,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,CAAA;AAClC,CAAC"}
|
package/dist/host/v2-retry.d.ts
CHANGED
|
@@ -17,9 +17,10 @@
|
|
|
17
17
|
* 5s/10s/20s/40s/60s; the chain never accumulates across requests, and the
|
|
18
18
|
* host's own `session.retry.scheduled` stands our directive down — the desktop
|
|
19
19
|
* is already rendering that countdown; jitter applies only when retryJitter > 0) — but ONLY for the
|
|
20
|
-
* kinds a wait can fix. A HARD quota (
|
|
21
|
-
*
|
|
22
|
-
* and the breaker trips on the SECOND
|
|
20
|
+
* kinds a wait can fix. A HARD quota (the BILLING family only: insufficient
|
|
21
|
+
* balance / 余额不足 / 欠费 / insufficient_quota / billing) names no wait: the
|
|
22
|
+
* directive says stop and raise-or-reset, and the breaker trips on the SECOND
|
|
23
|
+
* consecutive hard-quota error instead of
|
|
23
24
|
* `breakAfter`. The structured `retryAfterMs` host 2.1.2 (#57146) puts on session
|
|
24
25
|
* errors is honored as the wait floor. Inject it into the
|
|
25
26
|
* NEXT request's system prompt as an actionable sentence ("等 N 秒再发"),
|
|
@@ -42,6 +43,7 @@
|
|
|
42
43
|
* idempotent under the host's in-process hook replay.
|
|
43
44
|
*/
|
|
44
45
|
import type { TeamScope } from "./v2-scope.js";
|
|
46
|
+
import type { DynamicSink } from "./v2-tail.js";
|
|
45
47
|
import type { V2Context, V2Registration } from "./v2-types.js";
|
|
46
48
|
/** The stable prefix a human (and a test) can recognise the injected line by. */
|
|
47
49
|
export declare const RETRY_MARKER = "## Team Retry";
|
|
@@ -51,7 +53,8 @@ export interface ProviderErrorClass {
|
|
|
51
53
|
/** A `Retry-After`-style hint parsed out of the text, in ms; 0 when absent. */
|
|
52
54
|
retryAfterMs: number;
|
|
53
55
|
/** true only inside the quota kind when the text says waiting cannot fix this
|
|
54
|
-
* (
|
|
56
|
+
* (the BILLING family: insufficient balance / 余额不足 / 欠费 / insufficient_quota /
|
|
57
|
+
* billing — NOT alibaba's transient token-limit throttle, user correction 2026-10-21). */
|
|
55
58
|
hardQuota: boolean;
|
|
56
59
|
}
|
|
57
60
|
export declare function classifyProviderError(text: unknown): ProviderErrorClass;
|
|
@@ -229,6 +232,13 @@ export declare function sessionIDOf(raw: unknown): string;
|
|
|
229
232
|
export interface RetryLayerInput {
|
|
230
233
|
scope?: TeamScope;
|
|
231
234
|
governor: RetryGovernor;
|
|
235
|
+
/**
|
|
236
|
+
* 易变注入的尾部通道 (`dynamicTail: "on"`). When handed in, the pending
|
|
237
|
+
* directive goes to the request's TAIL (one message at the very end) instead
|
|
238
|
+
* of `event.system`, so the prefix stays cacheable; absent = the old system
|
|
239
|
+
* push, byte-exact.
|
|
240
|
+
*/
|
|
241
|
+
sink?: DynamicSink;
|
|
232
242
|
/** Fired for each observable outcome so the personality can write the
|
|
233
243
|
* `step_id:"v2-retry"` trajectory line — the layer owns no store. */
|
|
234
244
|
onEvent?: (row: Record<string, unknown>) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v2-retry.d.ts","sourceRoot":"","sources":["../../src/host/v2-retry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"v2-retry.d.ts","sourceRoot":"","sources":["../../src/host/v2-retry.ts"],"names":[],"mappings":"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"}
|
package/dist/host/v2-retry.js
CHANGED
|
@@ -17,9 +17,10 @@
|
|
|
17
17
|
* 5s/10s/20s/40s/60s; the chain never accumulates across requests, and the
|
|
18
18
|
* host's own `session.retry.scheduled` stands our directive down — the desktop
|
|
19
19
|
* is already rendering that countdown; jitter applies only when retryJitter > 0) — but ONLY for the
|
|
20
|
-
* kinds a wait can fix. A HARD quota (
|
|
21
|
-
*
|
|
22
|
-
* and the breaker trips on the SECOND
|
|
20
|
+
* kinds a wait can fix. A HARD quota (the BILLING family only: insufficient
|
|
21
|
+
* balance / 余额不足 / 欠费 / insufficient_quota / billing) names no wait: the
|
|
22
|
+
* directive says stop and raise-or-reset, and the breaker trips on the SECOND
|
|
23
|
+
* consecutive hard-quota error instead of
|
|
23
24
|
* `breakAfter`. The structured `retryAfterMs` host 2.1.2 (#57146) puts on session
|
|
24
25
|
* errors is honored as the wait floor. Inject it into the
|
|
25
26
|
* NEXT request's system prompt as an actionable sentence ("等 N 秒再发"),
|
|
@@ -53,17 +54,22 @@ export const RETRY_MARKER = "## Team Retry";
|
|
|
53
54
|
* more than one token (e.g. "quota exceeded (429)") and the most specific class
|
|
54
55
|
* is the useful one.
|
|
55
56
|
*/
|
|
56
|
-
/** The exhaustion sub-signature: a wait cannot fix these — the
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
|
|
57
|
+
/** The exhaustion sub-signature: a wait cannot fix these — the account must be topped
|
|
58
|
+
* up, the plan changed, or the debt cleared. USER CORRECTION 2026-10-21: alibaba's
|
|
59
|
+
* `Allocated quota exceeded … error-code#token-limit` is a TRANSIENT per-minute throttle
|
|
60
|
+
* (the window rolls over — the same child got bounced six times and kept coming back),
|
|
61
|
+
* so it is NOT hard: it rides the ladder and the ③ re-drive, and a structured
|
|
62
|
+
* `retryAfterMs` sets the floor. Hard is the BILLING family only. A genuinely dead
|
|
63
|
+
* allocation misread as soft stays bounded: the chain exhausts at `maxRetries` into the
|
|
64
|
+
* stop directive, and the throttle breaker counts it. */
|
|
65
|
+
const HARD_QUOTA_RE = /insufficient balance|余额不足|欠费|arrears|insufficient_quota|billing|check your plan/;
|
|
60
66
|
export function classifyProviderError(text) {
|
|
61
67
|
const s = typeof text === "string" ? text : "";
|
|
62
68
|
if (!s.trim())
|
|
63
69
|
return { kind: "unknown", retryAfterMs: 0, hardQuota: false };
|
|
64
70
|
const lower = s.toLowerCase();
|
|
65
71
|
const retryAfterMs = parseRetryAfter(s);
|
|
66
|
-
if (/allocated quota exceeded|quota exceeded|insufficient_quota|exceeded.*quota|quota.*exceed|配额|余额不足/.test(lower)) {
|
|
72
|
+
if (/allocated quota exceeded|quota exceeded|insufficient_quota|insufficient balance|arrears|exceeded.*quota|quota.*exceed|配额|余额不足/.test(lower)) {
|
|
67
73
|
return { kind: "quota", retryAfterMs, hardQuota: HARD_QUOTA_RE.test(lower) };
|
|
68
74
|
}
|
|
69
75
|
if (/\b429\b|too many requests|rate[ _-]?limit|rate_limit_exceeded|限流|请求过于频繁/.test(lower)) {
|
|
@@ -639,14 +645,20 @@ export async function applyV2RetryGovernor(ctx, input) {
|
|
|
639
645
|
// The session is assembling a request on its own (host retry, or the model
|
|
640
646
|
// re-issued): stand the scheduled re-drive down — the revival happened.
|
|
641
647
|
cancelRedrive(sid);
|
|
642
|
-
|
|
648
|
+
// 尾层模式不读 system:指令进滞留区,由最后一个 context hook 拼成末尾消息。
|
|
649
|
+
if (!input.sink && !Array.isArray(event?.system))
|
|
643
650
|
return;
|
|
644
651
|
// Per-session delivery: a child's wait directive must never ride the
|
|
645
652
|
// lead's request (and vice versa) — the two chains are independent.
|
|
646
653
|
const d = governor.takeDirective(sid);
|
|
647
654
|
if (!d)
|
|
648
655
|
return;
|
|
649
|
-
|
|
656
|
+
if (input.sink) {
|
|
657
|
+
input.sink.set(sid, "retry", d.text);
|
|
658
|
+
}
|
|
659
|
+
else {
|
|
660
|
+
event.system.push({ type: "text", text: d.text });
|
|
661
|
+
}
|
|
650
662
|
report.directivesInjected++;
|
|
651
663
|
try {
|
|
652
664
|
input.onEvent?.({ event: "injected", delay_ms: d.delayMs, session: sid });
|