@xdarkicex/openclaw-memory-libravdb 1.4.59 → 1.4.60

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.
@@ -186,6 +186,15 @@ function truncateContentToTokenBudget(content, tokenBudget) {
186
186
  // Keep the tail so recent tool output / latest answer content is preserved.
187
187
  return normalized.slice(normalized.length - maxChars);
188
188
  }
189
+ function truncateSystemPromptAdditionToTokenBudget(value, tokenBudget) {
190
+ if (tokenBudget <= 0)
191
+ return "";
192
+ const maxChars = Math.max(1, tokenBudget * APPROX_CHARS_PER_TOKEN);
193
+ if (value.length <= maxChars)
194
+ return value;
195
+ // System additions are head-structured: preserve XML/preamble/instructions.
196
+ return value.slice(0, maxChars);
197
+ }
189
198
  function trimMessagesToBudget(messages, tokenBudget) {
190
199
  if (tokenBudget <= 0 || messages.length === 0) {
191
200
  return [];
@@ -205,7 +214,10 @@ function trimMessagesToBudget(messages, tokenBudget) {
205
214
  return kept.reverse();
206
215
  }
207
216
  const last = messages[messages.length - 1];
208
- const contentBudget = Math.max(1, tokenBudget - 8);
217
+ const contentBudget = tokenBudget - 8;
218
+ if (contentBudget <= 0) {
219
+ return [];
220
+ }
209
221
  const truncated = truncateContentToTokenBudget(last.content, contentBudget);
210
222
  if (!truncated) {
211
223
  return [];
@@ -219,16 +231,29 @@ function enforceTokenBudgetInvariant(result, tokenBudget) {
219
231
  const hardBudget = Math.max(1, Math.floor(tokenBudget));
220
232
  const effectiveBudget = resolveEffectiveAssembleBudget(hardBudget);
221
233
  const estimated = typeof result.estimatedTokens === "number" ? result.estimatedTokens : 0;
234
+ const systemPromptTokens = approximateTokenCount(result.systemPromptAddition);
222
235
  const approxFromMessages = approximateMessagesTokens(result.messages);
223
- if (estimated <= effectiveBudget && approxFromMessages <= effectiveBudget) {
236
+ const approxTotal = systemPromptTokens + approxFromMessages;
237
+ if (estimated <= effectiveBudget && approxTotal <= effectiveBudget) {
224
238
  return result;
225
239
  }
226
- const trimmedMessages = trimMessagesToBudget(result.messages, effectiveBudget);
240
+ if (systemPromptTokens >= effectiveBudget) {
241
+ const trimmedSystemPromptAddition = truncateSystemPromptAdditionToTokenBudget(result.systemPromptAddition, effectiveBudget);
242
+ const trimmedSystemPromptTokens = approximateTokenCount(trimmedSystemPromptAddition);
243
+ return {
244
+ ...result,
245
+ systemPromptAddition: trimmedSystemPromptAddition,
246
+ messages: [],
247
+ estimatedTokens: Math.min(effectiveBudget, trimmedSystemPromptTokens),
248
+ };
249
+ }
250
+ const messageBudget = Math.max(0, effectiveBudget - systemPromptTokens);
251
+ const trimmedMessages = trimMessagesToBudget(result.messages, messageBudget);
227
252
  const trimmedEstimate = approximateMessagesTokens(trimmedMessages);
228
253
  return {
229
254
  ...result,
230
255
  messages: trimmedMessages,
231
- estimatedTokens: Math.min(effectiveBudget, trimmedEstimate),
256
+ estimatedTokens: Math.min(effectiveBudget, systemPromptTokens + trimmedEstimate),
232
257
  };
233
258
  }
234
259
  function buildBudgetFallbackContext(messages, tokenBudget) {
package/dist/index.js CHANGED
@@ -33806,6 +33806,12 @@ function truncateContentToTokenBudget(content, tokenBudget) {
33806
33806
  if (normalized.length <= maxChars) return normalized;
33807
33807
  return normalized.slice(normalized.length - maxChars);
33808
33808
  }
33809
+ function truncateSystemPromptAdditionToTokenBudget(value, tokenBudget) {
33810
+ if (tokenBudget <= 0) return "";
33811
+ const maxChars = Math.max(1, tokenBudget * APPROX_CHARS_PER_TOKEN);
33812
+ if (value.length <= maxChars) return value;
33813
+ return value.slice(0, maxChars);
33814
+ }
33809
33815
  function trimMessagesToBudget(messages, tokenBudget) {
33810
33816
  if (tokenBudget <= 0 || messages.length === 0) {
33811
33817
  return [];
@@ -33825,7 +33831,10 @@ function trimMessagesToBudget(messages, tokenBudget) {
33825
33831
  return kept.reverse();
33826
33832
  }
33827
33833
  const last = messages[messages.length - 1];
33828
- const contentBudget = Math.max(1, tokenBudget - 8);
33834
+ const contentBudget = tokenBudget - 8;
33835
+ if (contentBudget <= 0) {
33836
+ return [];
33837
+ }
33829
33838
  const truncated = truncateContentToTokenBudget(last.content, contentBudget);
33830
33839
  if (!truncated) {
33831
33840
  return [];
@@ -33839,16 +33848,32 @@ function enforceTokenBudgetInvariant(result, tokenBudget) {
33839
33848
  const hardBudget = Math.max(1, Math.floor(tokenBudget));
33840
33849
  const effectiveBudget = resolveEffectiveAssembleBudget(hardBudget);
33841
33850
  const estimated = typeof result.estimatedTokens === "number" ? result.estimatedTokens : 0;
33851
+ const systemPromptTokens = approximateTokenCount(result.systemPromptAddition);
33842
33852
  const approxFromMessages = approximateMessagesTokens(result.messages);
33843
- if (estimated <= effectiveBudget && approxFromMessages <= effectiveBudget) {
33853
+ const approxTotal = systemPromptTokens + approxFromMessages;
33854
+ if (estimated <= effectiveBudget && approxTotal <= effectiveBudget) {
33844
33855
  return result;
33845
33856
  }
33846
- const trimmedMessages = trimMessagesToBudget(result.messages, effectiveBudget);
33857
+ if (systemPromptTokens >= effectiveBudget) {
33858
+ const trimmedSystemPromptAddition = truncateSystemPromptAdditionToTokenBudget(
33859
+ result.systemPromptAddition,
33860
+ effectiveBudget
33861
+ );
33862
+ const trimmedSystemPromptTokens = approximateTokenCount(trimmedSystemPromptAddition);
33863
+ return {
33864
+ ...result,
33865
+ systemPromptAddition: trimmedSystemPromptAddition,
33866
+ messages: [],
33867
+ estimatedTokens: Math.min(effectiveBudget, trimmedSystemPromptTokens)
33868
+ };
33869
+ }
33870
+ const messageBudget = Math.max(0, effectiveBudget - systemPromptTokens);
33871
+ const trimmedMessages = trimMessagesToBudget(result.messages, messageBudget);
33847
33872
  const trimmedEstimate = approximateMessagesTokens(trimmedMessages);
33848
33873
  return {
33849
33874
  ...result,
33850
33875
  messages: trimmedMessages,
33851
- estimatedTokens: Math.min(effectiveBudget, trimmedEstimate)
33876
+ estimatedTokens: Math.min(effectiveBudget, systemPromptTokens + trimmedEstimate)
33852
33877
  };
33853
33878
  }
33854
33879
  function buildBudgetFallbackContext(messages, tokenBudget) {
@@ -2,7 +2,7 @@
2
2
  "id": "libravdb-memory",
3
3
  "name": "LibraVDB Memory",
4
4
  "description": "Persistent vector memory with three-tier hybrid scoring",
5
- "version": "1.4.59",
5
+ "version": "1.4.60",
6
6
  "kind": [
7
7
  "memory",
8
8
  "context-engine"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xdarkicex/openclaw-memory-libravdb",
3
- "version": "1.4.59",
3
+ "version": "1.4.60",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",