claude-code-infinite 1.0.29 → 1.0.30
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 +57 -7
- package/dist/cli-lifecycle.d.ts +45 -1
- package/dist/cli-lifecycle.d.ts.map +1 -1
- package/dist/cli-lifecycle.js +59 -0
- package/dist/cli-lifecycle.js.map +1 -1
- package/dist/cli-main.js +49 -15
- package/dist/cli-main.js.map +1 -1
- package/dist/count-tokens.d.ts +15 -0
- package/dist/count-tokens.d.ts.map +1 -1
- package/dist/count-tokens.js +23 -1
- package/dist/count-tokens.js.map +1 -1
- package/dist/diagnostics-schema.d.ts.map +1 -1
- package/dist/diagnostics-schema.js +5 -0
- package/dist/diagnostics-schema.js.map +1 -1
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +18 -1
- package/dist/diagnostics.js.map +1 -1
- package/dist/final-index.d.ts +7 -1
- package/dist/final-index.d.ts.map +1 -1
- package/dist/final-index.js +10 -3
- package/dist/final-index.js.map +1 -1
- package/dist/image-refs.d.ts +51 -0
- package/dist/image-refs.d.ts.map +1 -0
- package/dist/image-refs.js +169 -0
- package/dist/image-refs.js.map +1 -0
- package/dist/image-tokens.d.ts +37 -0
- package/dist/image-tokens.d.ts.map +1 -0
- package/dist/image-tokens.js +158 -0
- package/dist/image-tokens.js.map +1 -0
- package/dist/memtree-body.d.ts +52 -0
- package/dist/memtree-body.d.ts.map +1 -0
- package/dist/memtree-body.js +99 -0
- package/dist/memtree-body.js.map +1 -0
- package/dist/memtree.d.ts +77 -3
- package/dist/memtree.d.ts.map +1 -1
- package/dist/memtree.js +267 -53
- package/dist/memtree.js.map +1 -1
- package/dist/paused-session.d.ts.map +1 -1
- package/dist/paused-session.js +11 -8
- package/dist/paused-session.js.map +1 -1
- package/dist/prefix-store.d.ts +2 -0
- package/dist/prefix-store.d.ts.map +1 -1
- package/dist/prefix-store.js +4 -0
- package/dist/prefix-store.js.map +1 -1
- package/dist/prepared-compression.d.ts +78 -0
- package/dist/prepared-compression.d.ts.map +1 -0
- package/dist/prepared-compression.js +127 -0
- package/dist/prepared-compression.js.map +1 -0
- package/dist/proxy.d.ts +363 -14
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +708 -90
- package/dist/proxy.js.map +1 -1
- package/dist/reqlog.d.ts +55 -0
- package/dist/reqlog.d.ts.map +1 -1
- package/dist/reqlog.js.map +1 -1
- package/dist/request-sizing.d.ts +21 -2
- package/dist/request-sizing.d.ts.map +1 -1
- package/dist/request-sizing.js +57 -11
- package/dist/request-sizing.js.map +1 -1
- package/dist/route-identity.d.ts +27 -0
- package/dist/route-identity.d.ts.map +1 -1
- package/dist/route-identity.js +88 -8
- package/dist/route-identity.js.map +1 -1
- package/dist/token-estimate.d.ts +3 -20
- package/dist/token-estimate.d.ts.map +1 -1
- package/dist/token-estimate.js +9 -50
- package/dist/token-estimate.js.map +1 -1
- package/dist/tool-output-store.d.ts +12 -0
- package/dist/tool-output-store.d.ts.map +1 -0
- package/dist/tool-output-store.js +146 -0
- package/dist/tool-output-store.js.map +1 -0
- package/dist/tool-result-truncation.d.ts +32 -0
- package/dist/tool-result-truncation.d.ts.map +1 -0
- package/dist/tool-result-truncation.js +135 -0
- package/dist/tool-result-truncation.js.map +1 -0
- package/package.json +1 -1
package/dist/proxy.d.ts
CHANGED
|
@@ -39,12 +39,19 @@
|
|
|
39
39
|
* upstream response bytes pass through to the client unchanged.
|
|
40
40
|
*/
|
|
41
41
|
import { capCacheBreakpoints } from "./route-cache.js";
|
|
42
|
-
import {
|
|
43
|
-
import {
|
|
44
|
-
import { type
|
|
42
|
+
import { PromptAccounting } from "./prompt-accounting.js";
|
|
43
|
+
import { RouteFallbackFailures } from "./route-fallback.js";
|
|
44
|
+
import { CountTokensCooldowns, type SizeSample } from "./count-tokens.js";
|
|
45
|
+
import { RequestSizing, estimateRequestTokens, type RequestCandidate } from "./request-sizing.js";
|
|
46
|
+
import { PreparedCompressions } from "./prepared-compression.js";
|
|
47
|
+
import type { ToolOutputStore } from "./tool-output-store.js";
|
|
48
|
+
import { MemtreeClient, type CompressResult } from "./memtree.js";
|
|
49
|
+
import { type Message } from "./turns.js";
|
|
50
|
+
import { NoticeDeliveryQueue, type FirstTreeIntro } from "./hooks.js";
|
|
51
|
+
import { PaymentNoticeThrottle } from "./payment-notice.js";
|
|
45
52
|
import type { MemtreeLinkPlacement } from "./cli-args.js";
|
|
46
53
|
import { type MemtreeLinkStore } from "./memtree-links.js";
|
|
47
|
-
import type { StablePrefixStore } from "./prefix-store.js";
|
|
54
|
+
import type { PersistedEntry, StablePrefixStore } from "./prefix-store.js";
|
|
48
55
|
import type { NewestTreeLookup } from "./memtree-newest.js";
|
|
49
56
|
import type { TranscriptUsageSource } from "./transcript-usage.js";
|
|
50
57
|
import type { ProjectMeta } from "./project-meta.js";
|
|
@@ -161,6 +168,12 @@ export interface ProxyOptions {
|
|
|
161
168
|
* persistence (tests); the CLI passes the store under ~/.claude-code-infinite.
|
|
162
169
|
*/
|
|
163
170
|
stablePrefixStore?: StablePrefixStore;
|
|
171
|
+
/**
|
|
172
|
+
* Where a tool result shortened to fit the window (truncatedToFit) is saved
|
|
173
|
+
* whole, for the model to read with its Read tool. Omitted means no such
|
|
174
|
+
* shortening (tests); the CLI passes the store under ~/.claude-code-infinite.
|
|
175
|
+
*/
|
|
176
|
+
toolOutputs?: ToolOutputStore;
|
|
164
177
|
/**
|
|
165
178
|
* The session's newest completed tree, asked of the server, which the link
|
|
166
179
|
* shown to the user points at (the compress page is only the tree the memory
|
|
@@ -234,22 +247,303 @@ export interface RunningProxy {
|
|
|
234
247
|
*/
|
|
235
248
|
mainSessionId: () => string | undefined;
|
|
236
249
|
}
|
|
250
|
+
/**
|
|
251
|
+
* A MemTree page the server stamped on a main-conversation compress, with
|
|
252
|
+
* the completed index that turn was compressed against. The page shows that
|
|
253
|
+
* index until the request's own tree is built, so it is safe to link at once.
|
|
254
|
+
*/
|
|
255
|
+
interface MemtreePage {
|
|
256
|
+
sessionId?: string;
|
|
257
|
+
url: string;
|
|
258
|
+
/** `X-Polychat-Memtree-Index`: what the link is news about. */
|
|
259
|
+
index: string;
|
|
260
|
+
/**
|
|
261
|
+
* Whether the call behind the page actually compressed. False means the
|
|
262
|
+
* conversation fit the model's budget and went out whole; the trailer says
|
|
263
|
+
* so, since the link alone reads as "MemTree rewrote this turn".
|
|
264
|
+
*/
|
|
265
|
+
compressed: boolean;
|
|
266
|
+
seq: number;
|
|
267
|
+
}
|
|
268
|
+
/** Per-server mutable state (one server per ccc process). */
|
|
269
|
+
interface ProxyState {
|
|
270
|
+
/** Unpaid-key notice throttle; marked only when a hook delivers the notice. */
|
|
271
|
+
paymentNotice: PaymentNoticeThrottle;
|
|
272
|
+
/** Invalid-key (401/403) notice throttle, on the payment notice's interval. */
|
|
273
|
+
keyNotice: PaymentNoticeThrottle;
|
|
274
|
+
/** Whether MemTree's latest answer refused the key (MemtreeClient.keyInvalid). */
|
|
275
|
+
keyInvalid: () => boolean;
|
|
276
|
+
/** Where to get a new MemTree key (MemtreeClient.keyPageUrl). */
|
|
277
|
+
keyPageUrl: string;
|
|
278
|
+
/**
|
|
279
|
+
* Sessions shown the paused notice's near-the-window line: once per session,
|
|
280
|
+
* past the throttle, since /compact only works while the conversation fits.
|
|
281
|
+
*/
|
|
282
|
+
pausedNearWindowWarned: Set<string>;
|
|
283
|
+
/** The queued near-window line, so a refusal can withdraw it undelivered. */
|
|
284
|
+
nearWindowNotice?: object;
|
|
285
|
+
/** The MemTree client's last 402 detail, or null while the key is paid. */
|
|
286
|
+
unpaidDetail: () => string | null;
|
|
287
|
+
/** The 402 detail only while MemTree's latest answer was that 402 (MemtreeClient.pausedDetail). */
|
|
288
|
+
pausedDetail: () => string | null;
|
|
289
|
+
/** polychat's usage dashboard for the MemTree environment, if known. */
|
|
290
|
+
usageUrl: string | undefined;
|
|
291
|
+
/** ProxyOptions.sessionStartNotice. */
|
|
292
|
+
sessionStartNotice?: () => string | undefined;
|
|
293
|
+
/** ProxyOptions.promptSubmitNotice. */
|
|
294
|
+
promptSubmitNotice?: () => string | undefined;
|
|
295
|
+
/** ProxyOptions.projectTrees. */
|
|
296
|
+
projectTrees?: ProjectTreesHint;
|
|
297
|
+
/** ProxyOptions.diagnostics. */
|
|
298
|
+
diagnostics?: DiagnosticsRecorder;
|
|
299
|
+
notices: NoticeDeliveryQueue;
|
|
300
|
+
/** RunningProxy.mainSessionId. */
|
|
301
|
+
resumableMainSession?: string;
|
|
302
|
+
/** Hook state affects notices only, never routing. */
|
|
303
|
+
mainNoticePending: boolean;
|
|
304
|
+
mainPromptId?: string;
|
|
305
|
+
mainPromptText?: string;
|
|
306
|
+
mainPromptGeneration: number;
|
|
307
|
+
promptAccounting: PromptAccounting;
|
|
308
|
+
fallbackFailures: RouteFallbackFailures;
|
|
309
|
+
/** Suppress producer-side state changes while agent API traffic is active. */
|
|
310
|
+
activeSubagents: Set<string>;
|
|
311
|
+
/** Validated prefixes per API session/lane, LRU-bounded to MEMORY_ROUTE_MAX_LANES. */
|
|
312
|
+
memoryRoutes: Map<string, MemoryRoute>;
|
|
313
|
+
/** Latest main route for validated away-summary forks, independent of hook events. */
|
|
314
|
+
lastMainRoute?: MemoryRoute;
|
|
315
|
+
/**
|
|
316
|
+
* Index coverage (MemTree `cached_tokens`) observed on the last compression
|
|
317
|
+
* this session displayed a notice for. Only a turn whose coverage GREW
|
|
318
|
+
* indexed newer messages; equal coverage means MemTree re-unfolded the same
|
|
319
|
+
* index behind the current question and appended this turn verbatim, which
|
|
320
|
+
* is not something to announce.
|
|
321
|
+
*
|
|
322
|
+
* Coverage, not the rendered memory text, is the signal: the server unfolds
|
|
323
|
+
* the index per question (expanding the sections relevant to it), so the
|
|
324
|
+
* memory message differs byte-wise on nearly every turn even when nothing
|
|
325
|
+
* new was indexed.
|
|
326
|
+
*/
|
|
327
|
+
lastNoticedIndexCoverage?: {
|
|
328
|
+
sessionId?: string;
|
|
329
|
+
indexedTokens: number;
|
|
330
|
+
};
|
|
331
|
+
/**
|
|
332
|
+
* The newest MemTree page per session, linked from the success
|
|
333
|
+
* line once per new served index. `seq` orders calls by submission so a
|
|
334
|
+
* slow older call that settles after a newer one cannot roll the link back
|
|
335
|
+
* to a staler tree.
|
|
336
|
+
*/
|
|
337
|
+
memtreePages: Map<string, MemtreePage>;
|
|
338
|
+
/**
|
|
339
|
+
* Per session, the page whose memory the prompt carries: set only when a
|
|
340
|
+
* main-lane compress answer's route is installed after a complete upstream
|
|
341
|
+
* response (the prefix later requests reuse), so `/memtree/current`
|
|
342
|
+
* (the MCP tools' "current" tree, where bare node ids resolve) never moves to
|
|
343
|
+
* a tree whose memory was rejected while an older prefix rides on. The link
|
|
344
|
+
* (memtreePages) still follows every answer.
|
|
345
|
+
*/
|
|
346
|
+
memorySourcePages: Map<string, MemtreePage>;
|
|
347
|
+
/** Submission counter behind the pages' `seq`. */
|
|
348
|
+
memtreeCallSeq: number;
|
|
349
|
+
memtreeLinkStore?: MemtreeLinkStore;
|
|
350
|
+
stablePrefixStore?: StablePrefixStore;
|
|
351
|
+
/**
|
|
352
|
+
* Session → its persisted prefix as loaded (null: none, or already adopted
|
|
353
|
+
* or discarded), so the disk is read once per session. Bounded.
|
|
354
|
+
*/
|
|
355
|
+
storedPrefixLookups: Map<string, PersistedEntry | null>;
|
|
356
|
+
/** MemtreeClient.storageIdentity: whose persisted prefixes this process may use. */
|
|
357
|
+
storageOwner?: string;
|
|
358
|
+
newestTrees?: NewestTreeLookup;
|
|
359
|
+
memtreeLinkPlacement: MemtreeLinkPlacement;
|
|
360
|
+
/**
|
|
361
|
+
* `/memtree-compact` targets by Claude Code session: every compression for
|
|
362
|
+
* that session asks the server for this whole-request size instead of the
|
|
363
|
+
* model-based budget, so it stays compressed while it would still fit.
|
|
364
|
+
*/
|
|
365
|
+
/**
|
|
366
|
+
* Per-session `/memtree-compact` target; null means explicitly off, and
|
|
367
|
+
* undefined the automatic target (half the budget) even when
|
|
368
|
+
* `CCC_COMPACT_TARGET=off` made off the default.
|
|
369
|
+
*/
|
|
370
|
+
compactTargets: Map<string, number | null | undefined>;
|
|
371
|
+
/** `CCC_COMPACT_TARGET=off`: sessions start with compaction off. */
|
|
372
|
+
defaultCompactOff: boolean;
|
|
373
|
+
/**
|
|
374
|
+
* Sessions that ran `/memtree-compact [N]` and have not compacted since:
|
|
375
|
+
* their next main human turn compresses whatever its size (reason
|
|
376
|
+
* "manual").
|
|
377
|
+
*/
|
|
378
|
+
compactNow: Set<string>;
|
|
379
|
+
/**
|
|
380
|
+
* Each session's stable compressed prefix (edge compaction): the bytes of
|
|
381
|
+
* its last compaction, reused unchanged on every later main-thread request
|
|
382
|
+
* — human turns included — until prefix + newer turns reach the budget
|
|
383
|
+
* again or the messages it covers change. Unlike memoryRoutes it survives
|
|
384
|
+
* turn boundaries, which is what makes it a prompt-cache read on every
|
|
385
|
+
* human turn after the one that compacted. LRU-bounded.
|
|
386
|
+
*/
|
|
387
|
+
stablePrefixes: Map<string, StablePrefix>;
|
|
388
|
+
/**
|
|
389
|
+
* Each session's prepared compressed prefix (prepared-compression.ts): made
|
|
390
|
+
* in the background once the main thread's request nears the budget, and
|
|
391
|
+
* installed as the stable prefix, with no compress call, on the turn that
|
|
392
|
+
* would cross it.
|
|
393
|
+
*/
|
|
394
|
+
prepared: PreparedCompressions<StablePrefix>;
|
|
395
|
+
/** Each session's preparation still in flight (maybePrepareCompression). */
|
|
396
|
+
preparing: Map<string, Promise<void>>;
|
|
397
|
+
/**
|
|
398
|
+
* Conversations with an under-budget background compress in flight
|
|
399
|
+
* (compressInBackground), each with the newest call waiting for it, if any.
|
|
400
|
+
* An entry lives only while its call runs, so this holds no more than the calls.
|
|
401
|
+
*/
|
|
402
|
+
backgroundCompress: Map<string, {
|
|
403
|
+
waiting?: BackgroundCompressArgs;
|
|
404
|
+
}>;
|
|
405
|
+
/**
|
|
406
|
+
* Model budgets the server reported (`model_budget_tokens`), keyed by
|
|
407
|
+
* model and context window (serverBudgetKey).
|
|
408
|
+
*/
|
|
409
|
+
serverBudgets: Map<string, number>;
|
|
410
|
+
/**
|
|
411
|
+
* True once any compress response carried `model_budget_tokens`: the
|
|
412
|
+
* server understands `compression_threshold_tokens`, so it can make the
|
|
413
|
+
* over-budget decision itself. Until then the proxy decides from its own
|
|
414
|
+
* size estimate.
|
|
415
|
+
*/
|
|
416
|
+
serverReportsBudget: boolean;
|
|
417
|
+
countTokensCooldowns: CountTokensCooldowns;
|
|
418
|
+
/**
|
|
419
|
+
* Per session and model (sessionSizeKey): Anthropic's reported size of the
|
|
420
|
+
* last main-thread request forwarded whole (no prefix), with its body bytes,
|
|
421
|
+
* to estimate the next one while the session is still passing through. The
|
|
422
|
+
* model is part of the key because the ratio is its tokenizer's: a Haiku
|
|
423
|
+
* side request on the main lane once replaced the Opus sample (2026-10-13).
|
|
424
|
+
*/
|
|
425
|
+
passthroughSizes: Map<string, SizeSample>;
|
|
426
|
+
/**
|
|
427
|
+
* The same for requests other than the main thread's (subagents), keyed by
|
|
428
|
+
* laneSizeKey: the lane, the requester's own agent id and the model, so a
|
|
429
|
+
* helper sharing a subagent's lane (a web-search call reporting server tool
|
|
430
|
+
* results as input) cannot teach that subagent its ratio (2026-10-05).
|
|
431
|
+
*/
|
|
432
|
+
laneSizes: Map<string, SizeSample>;
|
|
433
|
+
/** Process lifetime identity; hooks never advance it. */
|
|
434
|
+
mainRouteEpoch: number;
|
|
435
|
+
/** Monotonically orders asynchronous replacements within each request lane. */
|
|
436
|
+
mainRouteDecisionGeneration: number;
|
|
437
|
+
/** Live and committed lane generations. At most 128 lanes; evicted generations fail closed. */
|
|
438
|
+
routeDecisionsLive: Map<string, Set<number>>;
|
|
439
|
+
retiredRouteDecisionFloor: number;
|
|
440
|
+
/** At most 128 recovery attempts; failed attempts retry after growth or their deadline. */
|
|
441
|
+
toolRecoveryAttemptedLanes: Map<string, ToolRecoveryAttempt>;
|
|
442
|
+
/**
|
|
443
|
+
* Epoch-ms deadline until which tool-route miss recovery skips its blocking
|
|
444
|
+
* attempt, set when an attempt returns null. Zero means no cooldown.
|
|
445
|
+
*/
|
|
446
|
+
toolRecoveryCooldownUntil: number;
|
|
447
|
+
/** Fired by drain after its grace period so every forwarding path can stop. */
|
|
448
|
+
shutdownSignal: AbortSignal;
|
|
449
|
+
/**
|
|
450
|
+
* Fired as drain starts: background compress and prepare calls (not awaited by any
|
|
451
|
+
* request) stop, and none starts, so the exit drain is left to the final index.
|
|
452
|
+
*/
|
|
453
|
+
backgroundSignal: AbortSignal;
|
|
454
|
+
/** Test-only fault-injection seam; see ProxyOptions.routeInstallFault. */
|
|
455
|
+
routeInstallFault?: () => void;
|
|
456
|
+
}
|
|
457
|
+
interface MemoryRoute {
|
|
458
|
+
sessionId: string;
|
|
459
|
+
originalSystemHash: string;
|
|
460
|
+
originalPrefixHashes: string[];
|
|
461
|
+
/** Media-free identities of the same messages (prefixMessageMatches); absent on old stores. */
|
|
462
|
+
originalMediaFreeHashes?: string[];
|
|
463
|
+
compressedMessages: Message[];
|
|
464
|
+
compressedSystem: unknown;
|
|
465
|
+
hasCompressedSystem: boolean;
|
|
466
|
+
routeEpoch: number;
|
|
467
|
+
/**
|
|
468
|
+
* The stable prefix this route's compressed messages start with, when the
|
|
469
|
+
* route came from a main-thread compaction or prefix ride. Tool turns that
|
|
470
|
+
* ride the route report their Anthropic usage to it (lastSize).
|
|
471
|
+
*/
|
|
472
|
+
stablePrefix?: StablePrefix;
|
|
473
|
+
/**
|
|
474
|
+
* Newest reported size of a tool turn sent on this route, for a route with
|
|
475
|
+
* no stable prefix (subagent lanes; sessions with compaction off). The
|
|
476
|
+
* tool-turn budget check (planToolCompaction) starts from it.
|
|
477
|
+
*/
|
|
478
|
+
lastSize?: SizeSample;
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* A session's stable compressed prefix (see ProxyState.stablePrefixes). The
|
|
482
|
+
* route fields mean what they mean on MemoryRoute: the hashes of the original
|
|
483
|
+
* messages the prefix stands for, and the compressed bytes sent instead.
|
|
484
|
+
*/
|
|
485
|
+
interface StablePrefix {
|
|
486
|
+
sessionId: string;
|
|
487
|
+
originalSystemHash: string;
|
|
488
|
+
originalPrefixHashes: string[];
|
|
489
|
+
/** Media-free identities of the same messages (prefixMessageMatches); absent on old stores. */
|
|
490
|
+
originalMediaFreeHashes?: string[];
|
|
491
|
+
compressedMessages: Message[];
|
|
492
|
+
compressedSystem: unknown;
|
|
493
|
+
hasCompressedSystem: boolean;
|
|
494
|
+
/** The compaction target this prefix was built with. */
|
|
495
|
+
targetTokens: number;
|
|
496
|
+
/** Whether that target was explicit (N / CCC_COMPACT_TARGET) or budget/2. */
|
|
497
|
+
explicitTarget: boolean;
|
|
498
|
+
/** Context window of the request that built it; a change recompresses. */
|
|
499
|
+
modelContextLimit: number;
|
|
500
|
+
/** Newest reported size of a request sent on this prefix. */
|
|
501
|
+
lastSize?: SizeSample;
|
|
502
|
+
}
|
|
237
503
|
/**
|
|
238
504
|
* Budget fallback until the server reports `model_budget_tokens`, mirroring the
|
|
239
|
-
* server's ccc policy (polychat index_budget.py):
|
|
240
|
-
* near its window,
|
|
241
|
-
*
|
|
242
|
-
*
|
|
243
|
-
*
|
|
244
|
-
* FALLBACK_BUDGET_WINDOW_RATIO. Plain Claude Code 2.1.302 auto-compacts
|
|
245
|
-
* window
|
|
246
|
-
*
|
|
247
|
-
* jumps past the budget reaches the proxy and is compressed here
|
|
505
|
+
* server's ccc policy (polychat index_budget.py near_window_budget_tokens):
|
|
506
|
+
* every Claude model compresses near its window, at the window less the
|
|
507
|
+
* reply's room (COMPRESSION_RESERVE_TOKENS, 40k) and never below
|
|
508
|
+
* FALLBACK_BUDGET_WINDOW_RATIO of it: 960k of 1M, 160k of 200k; at most a
|
|
509
|
+
* Sonnet's usable-context ceiling (SONNET_CEILINGS). Other models get
|
|
510
|
+
* FALLBACK_BUDGET_WINDOW_RATIO. Plain Claude Code 2.1.302 auto-compacts at
|
|
511
|
+
* window - 33k (967k of 1M), so MemTree compresses just before it would; ccc
|
|
512
|
+
* lifts Claude Code's own 977k refusal (claude-env.ts) so a tool turn that
|
|
513
|
+
* jumps past the budget reaches the proxy and is compressed here, on a
|
|
514
|
+
* prepared prefix when there is one (prepared-compression.ts).
|
|
248
515
|
*/
|
|
249
516
|
export declare const FALLBACK_BUDGET_WINDOW_RATIO = 0.8;
|
|
250
|
-
export declare const NEAR_WINDOW_FALLBACK_RATIO = 0.9;
|
|
251
517
|
/** The fallback whole-request budget for `model` on this window (see above). */
|
|
252
518
|
export declare function fallbackBudgetTokens(model: unknown, modelContextLimit: number): number;
|
|
519
|
+
interface ToolRecoveryAttempt {
|
|
520
|
+
retryDeadline?: number;
|
|
521
|
+
modelContextLimit: number;
|
|
522
|
+
inFlight: boolean;
|
|
523
|
+
/**
|
|
524
|
+
* Set when the attempt produced no prefix (failure, no-op, no gain, ...):
|
|
525
|
+
* the lane's next attempt this human turn waits until the estimate reaches
|
|
526
|
+
* this size, so a lane that cannot compress does not pay a blocking call on
|
|
527
|
+
* every tool turn (routeRecovery outcome "backoff").
|
|
528
|
+
*/
|
|
529
|
+
retryAtTokens?: number;
|
|
530
|
+
/**
|
|
531
|
+
* Set when the attempt's reply showed no finished tree for the conversation
|
|
532
|
+
* (a no-op with no indexed tokens), or a reply whose index trails the
|
|
533
|
+
* conversation (indexLagEvidence). Until the
|
|
534
|
+
* tree catches up a compress call cannot shrink that history: the server
|
|
535
|
+
* keeps every unindexed message verbatim. The lane
|
|
536
|
+
* makes no compress call (routeRecovery outcome "awaiting-index") and
|
|
537
|
+
* instead checks, in the background and one at a time, whether that
|
|
538
|
+
* reply's MemTree page has finished building. A window overflow still
|
|
539
|
+
* attempts.
|
|
540
|
+
*/
|
|
541
|
+
awaitingIndex?: {
|
|
542
|
+
pageId: string;
|
|
543
|
+
checking: boolean;
|
|
544
|
+
deadline: number;
|
|
545
|
+
};
|
|
546
|
+
}
|
|
253
547
|
export declare function startProxy(opts: ProxyOptions): Promise<RunningProxy>;
|
|
254
548
|
/** The page id in a server-stamped link (`…/m/<id>` or `…/usage/memtree/<id>`). */
|
|
255
549
|
export declare function memtreePageId(pageUrl: string): string | undefined;
|
|
@@ -273,9 +567,64 @@ export declare function parseTokenCount(text: string): number | undefined;
|
|
|
273
567
|
* never bytes/4, which reads base64 images as text.
|
|
274
568
|
*/
|
|
275
569
|
declare function compressedResultExceedsWindow(body: Record<string, any>, rec: MessagesRecord, compressedRaw: Buffer, modelContextLimit: number, exactTokens?: number): boolean;
|
|
570
|
+
interface BlockingCompressionOutcome {
|
|
571
|
+
result: CompressResult | null;
|
|
572
|
+
/** Current server-health evidence contributed by this blocking operation. */
|
|
573
|
+
liveHealth: "success" | "failure" | "none";
|
|
574
|
+
}
|
|
575
|
+
/**
|
|
576
|
+
* The blocking-compression step, shared by the main followup path and
|
|
577
|
+
* tool-route miss recovery: the compress call plus the `compress` telemetry
|
|
578
|
+
* record. Callers own downstream-close tracking (compression promises are
|
|
579
|
+
* hash-deduped and may serve another live retry, so a per-request disconnect
|
|
580
|
+
* signal must never feed compress()) and all decisions about the returned
|
|
581
|
+
* result: both `didMemtreeCompress(result)` and
|
|
582
|
+
* `checkCompressedHistory(result, msgsForMemtree).usable` must hold before
|
|
583
|
+
* the result may be forwarded or become a route.
|
|
584
|
+
*/
|
|
585
|
+
declare function runBlockingCompression(args: {
|
|
586
|
+
opts: ProxyOptions;
|
|
587
|
+
state: ProxyState;
|
|
588
|
+
body: Record<string, any>;
|
|
589
|
+
msgsForMemtree: Message[];
|
|
590
|
+
hash: string;
|
|
591
|
+
modelContextLimit: number;
|
|
592
|
+
rec: MessagesRecord;
|
|
593
|
+
sessionId: string | undefined;
|
|
594
|
+
/** The subagent this request belongs to: its transcript has the usage and times. */
|
|
595
|
+
agentId?: string;
|
|
596
|
+
clientMeta?: Record<string, string>;
|
|
597
|
+
sizing: RequestSizing;
|
|
598
|
+
inputCandidate?: RequestCandidate;
|
|
599
|
+
/**
|
|
600
|
+
* compression_target_tokens / compression_threshold_tokens for this call.
|
|
601
|
+
* Omitted: laneCompaction's (never a bare forcing target).
|
|
602
|
+
*/
|
|
603
|
+
compaction?: {
|
|
604
|
+
target?: number;
|
|
605
|
+
threshold?: number;
|
|
606
|
+
};
|
|
607
|
+
/**
|
|
608
|
+
* Nothing else could be sent if this compress fails (no prefix to ride, raw
|
|
609
|
+
* request known over the window): use the long budget. See longCompressFor.
|
|
610
|
+
*/
|
|
611
|
+
longBudget?: boolean;
|
|
612
|
+
/** Aborts the compress call; default state.shutdownSignal. */
|
|
613
|
+
signal?: AbortSignal;
|
|
614
|
+
}): Promise<BlockingCompressionOutcome>;
|
|
615
|
+
type BackgroundCompressArgs = Omit<Parameters<typeof runBlockingCompression>[0], "longBudget"> & {
|
|
616
|
+
linkSeq?: number;
|
|
617
|
+
};
|
|
618
|
+
/**
|
|
619
|
+
* Run a delivery-time compression as the lane's in-flight operation, so a
|
|
620
|
+
* concurrent request of the lane neither starts its own (planning sees
|
|
621
|
+
* "in-flight") nor races it; the lane's own attempt state is kept.
|
|
622
|
+
*/
|
|
623
|
+
declare function holdingLane<T>(state: ProxyState, routeKey: string, run: () => Promise<T>): Promise<T>;
|
|
276
624
|
/** Test seam. */
|
|
277
625
|
export declare const __testCapCacheBreakpoints: typeof capCacheBreakpoints;
|
|
278
626
|
export declare const __testEstimateRequestTokens: typeof estimateRequestTokens;
|
|
279
627
|
export declare const __testCompressedResultExceedsWindow: typeof compressedResultExceedsWindow;
|
|
628
|
+
export declare const __testHoldingLane: typeof holdingLane;
|
|
280
629
|
export {};
|
|
281
630
|
//# sourceMappingURL=proxy.d.ts.map
|
package/dist/proxy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
|