claude-code-infinite 1.0.28 → 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.
Files changed (121) hide show
  1. package/README.md +96 -19
  2. package/dist/auto-update.d.ts +2 -0
  3. package/dist/auto-update.d.ts.map +1 -1
  4. package/dist/auto-update.js +4 -0
  5. package/dist/auto-update.js.map +1 -1
  6. package/dist/claude-auth.d.ts +27 -2
  7. package/dist/claude-auth.d.ts.map +1 -1
  8. package/dist/claude-auth.js +76 -4
  9. package/dist/claude-auth.js.map +1 -1
  10. package/dist/claude-install.d.ts +73 -0
  11. package/dist/claude-install.d.ts.map +1 -0
  12. package/dist/claude-install.js +142 -0
  13. package/dist/claude-install.js.map +1 -0
  14. package/dist/claude-plan-warning.d.ts +70 -7
  15. package/dist/claude-plan-warning.d.ts.map +1 -1
  16. package/dist/claude-plan-warning.js +152 -8
  17. package/dist/claude-plan-warning.js.map +1 -1
  18. package/dist/cli-lifecycle.d.ts +45 -1
  19. package/dist/cli-lifecycle.d.ts.map +1 -1
  20. package/dist/cli-lifecycle.js +59 -0
  21. package/dist/cli-lifecycle.js.map +1 -1
  22. package/dist/cli-main.js +136 -29
  23. package/dist/cli-main.js.map +1 -1
  24. package/dist/count-tokens.d.ts +15 -0
  25. package/dist/count-tokens.d.ts.map +1 -1
  26. package/dist/count-tokens.js +23 -1
  27. package/dist/count-tokens.js.map +1 -1
  28. package/dist/diagnostics-schema.d.ts +4 -0
  29. package/dist/diagnostics-schema.d.ts.map +1 -1
  30. package/dist/diagnostics-schema.js +25 -0
  31. package/dist/diagnostics-schema.js.map +1 -1
  32. package/dist/diagnostics.d.ts +24 -1
  33. package/dist/diagnostics.d.ts.map +1 -1
  34. package/dist/diagnostics.js +86 -5
  35. package/dist/diagnostics.js.map +1 -1
  36. package/dist/final-index.d.ts +7 -1
  37. package/dist/final-index.d.ts.map +1 -1
  38. package/dist/final-index.js +10 -3
  39. package/dist/final-index.js.map +1 -1
  40. package/dist/image-refs.d.ts +51 -0
  41. package/dist/image-refs.d.ts.map +1 -0
  42. package/dist/image-refs.js +169 -0
  43. package/dist/image-refs.js.map +1 -0
  44. package/dist/image-tokens.d.ts +37 -0
  45. package/dist/image-tokens.d.ts.map +1 -0
  46. package/dist/image-tokens.js +158 -0
  47. package/dist/image-tokens.js.map +1 -0
  48. package/dist/install-ping.d.ts +54 -0
  49. package/dist/install-ping.d.ts.map +1 -0
  50. package/dist/install-ping.js +177 -0
  51. package/dist/install-ping.js.map +1 -0
  52. package/dist/memtree-body.d.ts +52 -0
  53. package/dist/memtree-body.d.ts.map +1 -0
  54. package/dist/memtree-body.js +99 -0
  55. package/dist/memtree-body.js.map +1 -0
  56. package/dist/memtree-finder.d.ts +2 -1
  57. package/dist/memtree-finder.d.ts.map +1 -1
  58. package/dist/memtree-finder.js +4 -5
  59. package/dist/memtree-finder.js.map +1 -1
  60. package/dist/memtree-mcp.d.ts.map +1 -1
  61. package/dist/memtree-mcp.js +17 -7
  62. package/dist/memtree-mcp.js.map +1 -1
  63. package/dist/memtree-times.d.ts +35 -0
  64. package/dist/memtree-times.d.ts.map +1 -0
  65. package/dist/memtree-times.js +166 -0
  66. package/dist/memtree-times.js.map +1 -0
  67. package/dist/memtree-tools.d.ts +12 -0
  68. package/dist/memtree-tools.d.ts.map +1 -1
  69. package/dist/memtree-tools.js +63 -7
  70. package/dist/memtree-tools.js.map +1 -1
  71. package/dist/memtree.d.ts +77 -3
  72. package/dist/memtree.d.ts.map +1 -1
  73. package/dist/memtree.js +267 -53
  74. package/dist/memtree.js.map +1 -1
  75. package/dist/paused-session.d.ts.map +1 -1
  76. package/dist/paused-session.js +11 -8
  77. package/dist/paused-session.js.map +1 -1
  78. package/dist/postinstall.d.ts +2 -0
  79. package/dist/postinstall.d.ts.map +1 -0
  80. package/dist/postinstall.js +4 -0
  81. package/dist/postinstall.js.map +1 -0
  82. package/dist/prefix-store.d.ts +2 -0
  83. package/dist/prefix-store.d.ts.map +1 -1
  84. package/dist/prefix-store.js +4 -0
  85. package/dist/prefix-store.js.map +1 -1
  86. package/dist/prepared-compression.d.ts +78 -0
  87. package/dist/prepared-compression.d.ts.map +1 -0
  88. package/dist/prepared-compression.js +127 -0
  89. package/dist/prepared-compression.js.map +1 -0
  90. package/dist/proxy.d.ts +370 -13
  91. package/dist/proxy.d.ts.map +1 -1
  92. package/dist/proxy.js +790 -92
  93. package/dist/proxy.js.map +1 -1
  94. package/dist/rate-limit.d.ts +64 -0
  95. package/dist/rate-limit.d.ts.map +1 -0
  96. package/dist/rate-limit.js +126 -0
  97. package/dist/rate-limit.js.map +1 -0
  98. package/dist/reqlog.d.ts +66 -2
  99. package/dist/reqlog.d.ts.map +1 -1
  100. package/dist/reqlog.js.map +1 -1
  101. package/dist/request-sizing.d.ts +21 -2
  102. package/dist/request-sizing.d.ts.map +1 -1
  103. package/dist/request-sizing.js +57 -11
  104. package/dist/request-sizing.js.map +1 -1
  105. package/dist/route-identity.d.ts +27 -0
  106. package/dist/route-identity.d.ts.map +1 -1
  107. package/dist/route-identity.js +88 -8
  108. package/dist/route-identity.js.map +1 -1
  109. package/dist/token-estimate.d.ts +3 -20
  110. package/dist/token-estimate.d.ts.map +1 -1
  111. package/dist/token-estimate.js +9 -50
  112. package/dist/token-estimate.js.map +1 -1
  113. package/dist/tool-output-store.d.ts +12 -0
  114. package/dist/tool-output-store.d.ts.map +1 -0
  115. package/dist/tool-output-store.js +146 -0
  116. package/dist/tool-output-store.js.map +1 -0
  117. package/dist/tool-result-truncation.d.ts +32 -0
  118. package/dist/tool-result-truncation.d.ts.map +1 -0
  119. package/dist/tool-result-truncation.js +135 -0
  120. package/dist/tool-result-truncation.js.map +1 -0
  121. package/package.json +2 -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 { estimateRequestTokens } from "./request-sizing.js";
43
- import { MemtreeClient } from "./memtree.js";
44
- import { type FirstTreeIntro } from "./hooks.js";
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
@@ -186,6 +199,11 @@ export interface ProxyOptions {
186
199
  * provider decides how often it has something to say.
187
200
  */
188
201
  sessionStartNotice?: () => string | undefined;
202
+ /**
203
+ * A line to show as the user submits a main-session prompt (UserPromptSubmit),
204
+ * e.g. a rate limit Anthropic answered with (rate-limit.ts). Called once per prompt.
205
+ */
206
+ promptSubmitNotice?: () => string | undefined;
189
207
  /**
190
208
  * Earlier MemTree sessions in this project, added to a main session's
191
209
  * SessionStart as model context (project-trees.ts). Omitted means none.
@@ -230,18 +248,302 @@ export interface RunningProxy {
230
248
  mainSessionId: () => string | undefined;
231
249
  }
232
250
  /**
233
- * Budget fallback until the server reports `model_budget_tokens`: this share
234
- * of the model's context window. 0.8 by default; NEAR_WINDOW_FALLBACK_RATIO
235
- * (900k of 1M) for the 1M-window models the server budgets at 900k for ccc
236
- * (NEAR_WINDOW_MODEL_RE). Plain Claude Code 2.1.302 auto-compacts a 1M window
237
- * at 967k, so MemTree compresses no earlier than ~70k before it would; ccc
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
+ }
503
+ /**
504
+ * Budget fallback until the server reports `model_budget_tokens`, mirroring the
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
238
512
  * lifts Claude Code's own 977k refusal (claude-env.ts) so a tool turn that
239
- * jumps past the budget reaches the proxy and is compressed here.
513
+ * jumps past the budget reaches the proxy and is compressed here, on a
514
+ * prepared prefix when there is one (prepared-compression.ts).
240
515
  */
241
516
  export declare const FALLBACK_BUDGET_WINDOW_RATIO = 0.8;
242
- export declare const NEAR_WINDOW_FALLBACK_RATIO = 0.9;
243
- /** The fallback share of the window for `model` (see FALLBACK_BUDGET_WINDOW_RATIO). */
244
- export declare function fallbackBudgetRatio(model: unknown, modelContextLimit: number): number;
517
+ /** The fallback whole-request budget for `model` on this window (see above). */
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
+ }
245
547
  export declare function startProxy(opts: ProxyOptions): Promise<RunningProxy>;
246
548
  /** The page id in a server-stamped link (`…/m/<id>` or `…/usage/memtree/<id>`). */
247
549
  export declare function memtreePageId(pageUrl: string): string | undefined;
@@ -265,9 +567,64 @@ export declare function parseTokenCount(text: string): number | undefined;
265
567
  * never bytes/4, which reads base64 images as text.
266
568
  */
267
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>;
268
624
  /** Test seam. */
269
625
  export declare const __testCapCacheBreakpoints: typeof capCacheBreakpoints;
270
626
  export declare const __testEstimateRequestTokens: typeof estimateRequestTokens;
271
627
  export declare const __testCompressedResultExceedsWindow: typeof compressedResultExceedsWindow;
628
+ export declare const __testHoldingLane: typeof holdingLane;
272
629
  export {};
273
630
  //# sourceMappingURL=proxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}