billion-context 0.1.118 → 0.1.119-pr.922.757

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/dist/index.js CHANGED
@@ -52703,6 +52703,7 @@ function resetSessionCompression(session) {
52703
52703
  session.blockContents.clear();
52704
52704
  session.stats.lastInputTokens = 0;
52705
52705
  delete session.stats.lastInputTokensSource;
52706
+ session.stats.localInputEstimate = 0;
52706
52707
  session.stats.contextTokens = 0;
52707
52708
  session.metadata.nativeCompactionAt = Date.now();
52708
52709
  markDirty(session);
@@ -64270,6 +64271,7 @@ ${bodyBuffer.toString("utf8")}`);
64270
64271
  prepared,
64271
64272
  runPrepare,
64272
64273
  req,
64274
+ bodyBuffer,
64273
64275
  res,
64274
64276
  opts,
64275
64277
  core,
@@ -64482,8 +64484,11 @@ function diagNudge(turn, sessionId, tokenCount, limit, model, willInject) {
64482
64484
  }
64483
64485
  function effectiveTokenCount(session, msgs) {
64484
64486
  if (session.stats.lastInputTokens > 0) return session.stats.lastInputTokens;
64485
- if (!session.metadata.anonymousPrefixAffinity) return 0;
64486
- return estimateCoreMessagesUpper(msgs);
64487
+ if (session.metadata.anonymousPrefixAffinity) return estimateCoreMessagesUpper(msgs);
64488
+ const est = session.stats.localInputEstimate ?? 0;
64489
+ if (est <= 0) return 0;
64490
+ const raw = estimateCoreMessagesUpper(msgs);
64491
+ return Math.min(est, raw);
64487
64492
  }
64488
64493
  function prepareAnthropic(parsed, req, opts, core, config, prompts, surface, log2, session, pluginMode, upstreamOrigin, reasoning) {
64489
64494
  const sessionId = session.id;
@@ -64555,6 +64560,7 @@ function prepareAnthropic(parsed, req, opts, core, config, prompts, surface, log
64555
64560
  const rebuilt = { ...parsed, messages: rebuiltMessages, system: systemOut, tools: toolsOut };
64556
64561
  warnAnthropicThinkingPairs(rebuiltMessages, log2, sessionId);
64557
64562
  delete rebuilt.prompt_cache_key;
64563
+ session.stats.localInputEstimate = estimateCoreMessagesUpper(processedMessages.length > 0 ? processedMessages : originalMessages) + countSystemAndToolsTokens(extractSystem(systemOut), toolsOut) + imageTokensInParsedBody("anthropic", rebuilt);
64558
64564
  return { body: JSON.stringify(rebuilt), session, processedMessages, originalMessages, anthropicSystem: parsed.system, protocol: "anthropic", stream: stream2, compressInjected: injectTools, pluginMode, nudge, prompts, surface, renderTags: "text-only" };
64559
64565
  }
64560
64566
  function prepareOpenai(parsed, req, opts, core, config, prompts, surface, log2, session, pluginMode, upstreamOrigin, nativeWindow, reasoning, billingUpstream) {
@@ -64637,6 +64643,9 @@ function prepareOpenai(parsed, req, opts, core, config, prompts, surface, log2,
64637
64643
  if (!isTitleGen && openaiOutboundSystem !== void 0) {
64638
64644
  session.metadata.systemPromptTokens = countSystemAndToolsTokens(openaiOutboundSystem, toolsOut);
64639
64645
  }
64646
+ if (!isTitleGen) {
64647
+ session.stats.localInputEstimate = estimateCoreMessagesUpper(processedMessages.length > 0 ? processedMessages : originalMessages) + countSystemAndToolsTokens(openaiOutboundSystem || openaiSystemText, toolsOut) + imageTokensInParsedBody("openai", rebuilt);
64648
+ }
64640
64649
  snapshotMessages(session, originalMessages);
64641
64650
  markDirty(session);
64642
64651
  return { body: JSON.stringify(rebuilt), session, processedMessages, originalMessages, protocol: "openai", stream: stream2, compressInjected: injectTools, pluginMode, nudge, prompts, surface, openaiSystemText, renderTags: "text-only" };
@@ -64789,6 +64798,9 @@ function prepareResponses(parsed, req, opts, core, config, prompts, surface, log
64789
64798
  if (transformOk) {
64790
64799
  session.metadata.systemPromptTokens = countSystemAndToolsTokens(responsesDevContent ?? "", toolsOut);
64791
64800
  }
64801
+ if (!isCompactionTrigger) {
64802
+ session.stats.localInputEstimate = estimateCoreMessagesUpper(processedMessages.length > 0 ? processedMessages : originalMessages) + countSystemAndToolsTokens(responsesDevContent ?? "", toolsOut) + imageTokensInParsedBody("responses", rebuilt);
64803
+ }
64792
64804
  snapshotMessages(session, originalMessages);
64793
64805
  markDirty(session);
64794
64806
  return {
@@ -65056,7 +65068,7 @@ function beginPreflightHold(res, prepared, log2) {
65056
65068
  }, PREFLIGHT_KEEPALIVE_MS);
65057
65069
  return () => clearInterval(iv);
65058
65070
  }
65059
- async function preflightCompressIfNeeded(prepared, runPrepare, req, res, opts, core, config, configuredWindow, model, route, affinity, anonymous, log2, instanceId) {
65071
+ async function preflightCompressIfNeeded(prepared, runPrepare, req, inboundBody, res, opts, core, config, configuredWindow, model, route, affinity, anonymous, log2, instanceId) {
65060
65072
  const session = prepared.session;
65061
65073
  const limit = config.modelContextLimit;
65062
65074
  const compressionTarget = prepared.protocol === "responses" && isCodexClient(req.headers) && codexCompactMode() === "intercept" ? limit * CODEX_COMPACT_HEALTH_RATIO : limit;
@@ -65094,7 +65106,7 @@ async function preflightCompressIfNeeded(prepared, runPrepare, req, res, opts, c
65094
65106
  return failFast(502, "no part of the conversation is compressible (nothing left to fold)", false);
65095
65107
  }
65096
65108
  }
65097
- const deadEndKey = `${model}\0${limit}\0${createHash8("sha256").update(prepared.body).digest("hex")}`;
65109
+ const deadEndKey = `${model}\0${limit}\0${createHash8("sha256").update(inboundBody).digest("hex")}`;
65098
65110
  const deadEnd = session.metadata.preflightDeadEnd;
65099
65111
  if (deadEnd && typeof deadEnd === "object") {
65100
65112
  const de2 = deadEnd;