billion-context-pi 0.1.49-pr.201.19 → 0.1.49

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
@@ -3753,15 +3753,6 @@ function extractText(content) {
3753
3753
  function stripRefTag(text) {
3754
3754
  return text.replace(REF_TAG, "").replace(TRAILING_REF_TAG, "");
3755
3755
  }
3756
- function countImageBlocks(content) {
3757
- if (!Array.isArray(content)) return 0;
3758
- let n = 0;
3759
- for (const block of content) {
3760
- const b = block;
3761
- if (b?.type === "image") n++;
3762
- }
3763
- return n;
3764
- }
3765
3756
  function messageIdentity(message) {
3766
3757
  return JSON.stringify(normalizeIdentityValue(message, true));
3767
3758
  }
@@ -9181,29 +9172,12 @@ function collectCoveredMessageIds(state) {
9181
9172
  }
9182
9173
  return ids;
9183
9174
  }
9184
- var IMAGE_TOKEN_COST = 1600;
9185
- function modelSupportsImages(model) {
9186
- const input = model?.input;
9187
- return Array.isArray(input) && input.includes("image");
9188
- }
9189
- function collectImageTokens(entries, visionCapable) {
9190
- const out = /* @__PURE__ */ new Map();
9191
- if (!visionCapable) return out;
9192
- for (const e of entries) {
9193
- if (e.type !== "message") continue;
9194
- const n = countImageBlocks(e.message?.content);
9195
- if (n > 0) out.set(e.id, n * IMAGE_TOKEN_COST);
9196
- }
9197
- return out;
9198
- }
9199
- function estimateTokens(messages, coveredIds, imageTokensById) {
9175
+ function estimateTokens(messages, coveredIds) {
9200
9176
  let tokens = 0;
9201
9177
  for (const m of messages) {
9202
9178
  if (m.toolName === "compress") continue;
9203
9179
  if (coveredIds?.has(m.id)) continue;
9204
9180
  tokens += defaultCountTokens(m.text ?? "");
9205
- const img = imageTokensById?.get(m.id);
9206
- if (img) tokens += img;
9207
9181
  }
9208
9182
  return tokens;
9209
9183
  }
@@ -9332,13 +9306,12 @@ async function handleCompress(args, runtime, ctx, toolCallId) {
9332
9306
  if (typeof maybeRanges === "string") throw new Error(maybeRanges);
9333
9307
  const ranges = maybeRanges;
9334
9308
  if (ranges.length === 0) return "No ranges provided.";
9335
- const { state: initialState, coreMessages, entries } = await runtime.stateFor(ctx);
9309
+ const { state: initialState, coreMessages } = await runtime.stateFor(ctx);
9336
9310
  const config = runtime.configFor(ctx);
9337
9311
  const modelId = ctx.model?.id ?? "default";
9338
9312
  const systemPromptText = getSystemPromptText(ctx);
9339
9313
  const systemPromptTokens = systemPromptText ? defaultCountTokens(systemPromptText) : 0;
9340
- const imageTokens = collectImageTokens(entries, modelSupportsImages(ctx.model));
9341
- const sentTokens = estimateTokens(coreMessages, collectCoveredMessageIds(initialState), imageTokens) + systemPromptTokens;
9314
+ const sentTokens = estimateTokens(coreMessages, collectCoveredMessageIds(initialState)) + systemPromptTokens;
9342
9315
  const turn = runtime.core.processTurn({
9343
9316
  messages: coreMessages,
9344
9317
  state: initialState,
@@ -9348,7 +9321,7 @@ async function handleCompress(args, runtime, ctx, toolCallId) {
9348
9321
  const state = turn.state;
9349
9322
  const messages = turn.messages;
9350
9323
  const density = runtime.density.densityFor(modelId);
9351
- const beforeTokens = calibrateTokens(estimateTokens(messages, collectCoveredMessageIds(state), imageTokens), density);
9324
+ const beforeTokens = calibrateTokens(estimateTokens(messages, collectCoveredMessageIds(state)), density);
9352
9325
  const summaryMaxChars = args.summaryMaxChars;
9353
9326
  const topLevelTopic = args.topic;
9354
9327
  debug.event("compress-in", {
@@ -9388,7 +9361,7 @@ async function handleCompress(args, runtime, ctx, toolCallId) {
9388
9361
  config,
9389
9362
  tokenCount: calibrateTokens(sentTokens, density)
9390
9363
  });
9391
- const afterTokens = calibrateTokens(estimateTokens(afterTurn.messages, collectCoveredMessageIds(applied.state), imageTokens), density);
9364
+ const afterTokens = calibrateTokens(estimateTokens(afterTurn.messages, collectCoveredMessageIds(applied.state)), density);
9392
9365
  const reclaimed = Math.max(0, beforeTokens - afterTokens);
9393
9366
  const newBlocks = applied.state.blocks.slice(-blocksCreated);
9394
9367
  debug.event("compress-out", {
@@ -11065,13 +11038,13 @@ function makeStatusTool(runtime) {
11065
11038
  };
11066
11039
  }
11067
11040
  async function handleStatus(args, runtime, ctx) {
11068
- const { state, coreMessages, entries } = await runtime.stateFor(ctx);
11041
+ const { state, coreMessages } = await runtime.stateFor(ctx);
11069
11042
  const config = runtime.configFor(ctx);
11070
11043
  const coveredIds = collectCoveredMessageIds(state);
11071
11044
  const modelId = ctx.model?.id ?? "default";
11072
11045
  const systemPromptText = getSystemPromptText(ctx);
11073
11046
  const systemPromptTokens = systemPromptText ? defaultCountTokens(systemPromptText) : 0;
11074
- const sentTokens = estimateTokens(coreMessages, coveredIds, collectImageTokens(entries, modelSupportsImages(ctx.model))) + systemPromptTokens;
11047
+ const sentTokens = estimateTokens(coreMessages, coveredIds) + systemPromptTokens;
11075
11048
  const turn = runtime.core.processTurn({
11076
11049
  messages: coreMessages,
11077
11050
  state,
@@ -11555,12 +11528,10 @@ async function statusReport(runtime, ctx) {
11555
11528
  const realUsage = ctx.getContextUsage?.();
11556
11529
  const systemPromptText = getSystemPromptText(ctx);
11557
11530
  const systemPromptTokens = systemPromptText ? defaultCountTokens(systemPromptText) : 0;
11558
- const imageTokens = collectImageTokens(entries, modelSupportsImages(ctx.model));
11559
- const imageTokensTotal = [...imageTokens.values()].reduce((a, b) => a + b, 0);
11560
- const sessionTokens = realUsage?.tokens && realUsage.tokens > 0 ? realUsage.tokens : defaultCountTokens(coreMessages.map((m) => m.text ?? "").join("\n")) + imageTokensTotal;
11531
+ const sessionTokens = realUsage?.tokens && realUsage.tokens > 0 ? realUsage.tokens : defaultCountTokens(coreMessages.map((m) => m.text ?? "").join("\n"));
11561
11532
  const coveredIds = collectCoveredMessageIds(state);
11562
11533
  const modelId = ctx.model?.id ?? "default";
11563
- const sentTokens = estimateTokens(coreMessages, coveredIds, imageTokens) + systemPromptTokens;
11534
+ const sentTokens = estimateTokens(coreMessages, coveredIds) + systemPromptTokens;
11564
11535
  const turn = runtime.core.processTurn({ messages: coreMessages, state, config, tokenCount: calibrateTokens(sentTokens, runtime.density.densityFor(modelId)) });
11565
11536
  const versionStr = "0.1.49" ? `billion-context-pi@${"0.1.49"}` : void 0;
11566
11537
  let text = buildStatusPanel({
@@ -11570,7 +11541,7 @@ async function statusReport(runtime, ctx) {
11570
11541
  state: turn.state,
11571
11542
  nudge: turn.nudge,
11572
11543
  modelContextLimit: config.modelContextLimit,
11573
- unprunedTokens: coreMessages.reduce((sum, m) => sum + defaultCountTokens(m.text ?? "") + (imageTokens.get(m.id) ?? 0), 0),
11544
+ unprunedTokens: coreMessages.reduce((sum, m) => sum + defaultCountTokens(m.text ?? ""), 0),
11574
11545
  cacheUsages: cacheUsageSamples(entries ?? [])
11575
11546
  });
11576
11547
  const delegateUsage = getDelegateUsage();
@@ -12137,7 +12108,7 @@ function wireContextTransform(pi, runtime) {
12137
12108
  const realUsage = ctx.getContextUsage?.();
12138
12109
  const systemPromptText = getSystemPromptText(ctx);
12139
12110
  const systemPromptTokens = systemPromptText ? defaultCountTokens(systemPromptText) : 0;
12140
- const sentTokens = estimateTokens(coreMessages, coveredIds, collectImageTokens(entries, modelSupportsImages(ctx.model))) + systemPromptTokens;
12111
+ const sentTokens = estimateTokens(coreMessages, coveredIds) + systemPromptTokens;
12141
12112
  let tokenCount = calibrateTokens(sentTokens, runtime.density.densityFor(modelId));
12142
12113
  if (ov.armed && config.modelContextLimit > 0) {
12143
12114
  ov.armed = false;