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 +11 -40
- package/dist/index.js.map +1 -1
- package/dist/messages.d.ts +0 -1
- package/dist/tokens.d.ts +1 -11
- package/package.json +1 -1
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
|
-
|
|
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
|
|
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
|
|
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)
|
|
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)
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 ?? "")
|
|
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
|
|
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;
|