blun-king-cli 9.1.190 → 9.1.191
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/bin/context-budget-ledger.cjs +31 -0
- package/blun.mjs +32 -6
- package/package.json +1 -1
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function wholeTokenCount(value) {
|
|
4
|
+
if (!Number.isFinite(value) || value <= 0) return 0;
|
|
5
|
+
return Math.floor(value);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
function reconcileContextBudget(input = {}) {
|
|
9
|
+
const totalTokens = wholeTokenCount(input.totalTokens);
|
|
10
|
+
const maxTokens = Math.max(totalTokens, wholeTokenCount(input.maxTokens));
|
|
11
|
+
const conversationTokens = Math.min(totalTokens, wholeTokenCount(input.conversationTokens));
|
|
12
|
+
const toolTokens = Math.min(
|
|
13
|
+
totalTokens - conversationTokens,
|
|
14
|
+
wholeTokenCount(input.toolTokens),
|
|
15
|
+
);
|
|
16
|
+
const systemTokens = totalTokens - conversationTokens - toolTokens;
|
|
17
|
+
|
|
18
|
+
return {
|
|
19
|
+
systemTokens,
|
|
20
|
+
conversationTokens,
|
|
21
|
+
toolTokens,
|
|
22
|
+
freeTokens: maxTokens - totalTokens,
|
|
23
|
+
totalTokens,
|
|
24
|
+
maxTokens,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
module.exports = {
|
|
29
|
+
reconcileContextBudget,
|
|
30
|
+
wholeTokenCount,
|
|
31
|
+
};
|
package/blun.mjs
CHANGED
|
@@ -265084,7 +265084,9 @@ var init_agent = __esmMin((() => {
|
|
|
265084
265084
|
...this.context.data(),
|
|
265085
265085
|
projectedTokenCount: this.fullCompaction.estimateCurrentRequestTokens(),
|
|
265086
265086
|
effectiveMaxContextTokens: this.fullCompaction.getEffectiveMaxContextTokens(),
|
|
265087
|
-
compactionBudgetTokens: this.fullCompaction.getCompactionBudgetTokens()
|
|
265087
|
+
compactionBudgetTokens: this.fullCompaction.getCompactionBudgetTokens(),
|
|
265088
|
+
conversationTokens: estimateTokensForMessages(this.context.messages),
|
|
265089
|
+
toolSchemaTokens: estimateTokensForTools(this.tools.loopTools)
|
|
265088
265090
|
}),
|
|
265089
265091
|
getConfig: () => this.config.data(),
|
|
265090
265092
|
getPermission: () => this.permission.data(),
|
|
@@ -327382,6 +327384,8 @@ var SDKRpcClientBase = class {
|
|
|
327382
327384
|
contextTokens,
|
|
327383
327385
|
maxContextTokens,
|
|
327384
327386
|
compactionBudgetTokens: context.compactionBudgetTokens,
|
|
327387
|
+
conversationTokens: context.conversationTokens,
|
|
327388
|
+
toolSchemaTokens: context.toolSchemaTokens,
|
|
327385
327389
|
contextUsage,
|
|
327386
327390
|
usage: hasUsage ? usage : void 0
|
|
327387
327391
|
};
|
|
@@ -402997,7 +403001,7 @@ const BUILTIN_SLASH_COMMAND_DEFINITIONS = [
|
|
|
402997
403001
|
},
|
|
402998
403002
|
{
|
|
402999
403003
|
name: "usage",
|
|
403000
|
-
aliases: [],
|
|
403004
|
+
aliases: ["context"],
|
|
403001
403005
|
descriptionKey: "command.usage.description",
|
|
403002
403006
|
priority: 60,
|
|
403003
403007
|
availability: "always"
|
|
@@ -416738,6 +416742,7 @@ function buildManagedUsageReportLines(options) {
|
|
|
416738
416742
|
const errorStyle = (text) => currentTheme.fg("error", text);
|
|
416739
416743
|
return buildManagedUsageSection(options.managedUsage, options.managedUsageError, accent, value, muted, errorStyle);
|
|
416740
416744
|
}
|
|
416745
|
+
var { reconcileContextBudget } = createRequire(import.meta.url)("./bin/context-budget-ledger.cjs");
|
|
416741
416746
|
function buildUsageReportLines(options) {
|
|
416742
416747
|
const accent = (text) => currentTheme.boldFg("primary", text);
|
|
416743
416748
|
const value = (text) => currentTheme.fg("text", text);
|
|
@@ -416753,6 +416758,22 @@ function buildUsageReportLines(options) {
|
|
|
416753
416758
|
lines.push("");
|
|
416754
416759
|
lines.push(accent(uiText("usage.context.title")));
|
|
416755
416760
|
lines.push(` ${barColoured} ${value(pct.padStart(6, " "))} ` + muted(`(${formatExactTokenCount(options.contextTokens, getCurrentUiLocale())} / ${formatExactTokenCount(options.maxContextTokens, getCurrentUiLocale())})`));
|
|
416761
|
+
if (Number.isFinite(options.conversationTokens) && Number.isFinite(options.toolSchemaTokens)) {
|
|
416762
|
+
const budget = reconcileContextBudget({
|
|
416763
|
+
totalTokens: options.contextTokens,
|
|
416764
|
+
maxTokens: options.maxContextTokens,
|
|
416765
|
+
conversationTokens: options.conversationTokens,
|
|
416766
|
+
toolTokens: options.toolSchemaTokens
|
|
416767
|
+
});
|
|
416768
|
+
const locale = getCurrentUiLocale();
|
|
416769
|
+
const contextRows = [
|
|
416770
|
+
[uiText("export.system"), budget.systemTokens],
|
|
416771
|
+
[uiText("export.conversation"), budget.conversationTokens],
|
|
416772
|
+
[uiText("mcp.capability.tools"), budget.toolTokens]
|
|
416773
|
+
];
|
|
416774
|
+
for (const [label, count] of contextRows) lines.push(` ${muted(`${label}:`)} ${value(formatExactTokenCount(count, locale))}`);
|
|
416775
|
+
lines.push(` ${muted(uiText("usage.plan.metric.remaining", { count: formatExactTokenCount(budget.freeTokens, locale) }))}`);
|
|
416776
|
+
}
|
|
416756
416777
|
}
|
|
416757
416778
|
const managedSection = buildManagedUsageReportLines({
|
|
416758
416779
|
managedUsage: options.managedUsage,
|
|
@@ -417767,14 +417788,19 @@ function managedUsageErrorCode(error) {
|
|
|
417767
417788
|
return record.status === 401 || record.status === 403 ? "unauthenticated" : "unavailable";
|
|
417768
417789
|
}
|
|
417769
417790
|
async function showUsage(host) {
|
|
417770
|
-
const sessionUsage = await
|
|
417771
|
-
|
|
417791
|
+
const [sessionUsage, managedUsage, runtimeStatus] = await Promise.all([
|
|
417792
|
+
loadSessionUsageReport(host),
|
|
417793
|
+
loadManagedUsageReport(host),
|
|
417794
|
+
loadRuntimeStatusReport(host)
|
|
417795
|
+
]);
|
|
417772
417796
|
const reportArgs = {
|
|
417773
417797
|
sessionUsage: sessionUsage.usage,
|
|
417774
417798
|
sessionUsageError: sessionUsage.error,
|
|
417775
417799
|
contextUsage: host.state.appState.contextUsage,
|
|
417776
|
-
contextTokens: host.state.appState.contextTokens,
|
|
417777
|
-
maxContextTokens: host.state.appState.maxContextTokens,
|
|
417800
|
+
contextTokens: runtimeStatus.status?.contextTokens ?? host.state.appState.contextTokens,
|
|
417801
|
+
maxContextTokens: runtimeStatus.status?.maxContextTokens ?? host.state.appState.maxContextTokens,
|
|
417802
|
+
conversationTokens: runtimeStatus.status?.conversationTokens,
|
|
417803
|
+
toolSchemaTokens: runtimeStatus.status?.toolSchemaTokens,
|
|
417778
417804
|
managedUsage: managedUsage?.usage,
|
|
417779
417805
|
managedUsageError: managedUsage?.error
|
|
417780
417806
|
};
|