@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.
- package/dist/context-engine.js +29 -4
- package/dist/index.js +29 -4
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
package/dist/context-engine.js
CHANGED
|
@@ -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 =
|
|
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
|
-
|
|
236
|
+
const approxTotal = systemPromptTokens + approxFromMessages;
|
|
237
|
+
if (estimated <= effectiveBudget && approxTotal <= effectiveBudget) {
|
|
224
238
|
return result;
|
|
225
239
|
}
|
|
226
|
-
|
|
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 =
|
|
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
|
-
|
|
33853
|
+
const approxTotal = systemPromptTokens + approxFromMessages;
|
|
33854
|
+
if (estimated <= effectiveBudget && approxTotal <= effectiveBudget) {
|
|
33844
33855
|
return result;
|
|
33845
33856
|
}
|
|
33846
|
-
|
|
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) {
|
package/openclaw.plugin.json
CHANGED