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.
@@ -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 loadSessionUsageReport(host);
417771
- const managedUsage = await loadManagedUsageReport(host);
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
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blun-king-cli",
3
- "version": "9.1.190",
3
+ "version": "9.1.191",
4
4
  "description": "BLUN CLI - your own AI agent with a Telegram channel. Get it done. With BLUN.",
5
5
  "license": "MIT",
6
6
  "bin": {