@xdarkicex/openclaw-memory-libravdb 1.8.11 → 1.8.12

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.
@@ -279,9 +279,13 @@ function hasToolProtocolBeforeSinceLastUser(sourceMessages, sourceIndex) {
279
279
  }
280
280
  // Live tool protocol must come back from daemon replay in source order.
281
281
  // Out-of-order or already-consumed fragments are unsafe to restore or demote.
282
- function findCurrentTurnToolProtocolSourceIndex(message, normalizedContent, sourceMessages, preferredStartIndex) {
282
+ function findLiveToolSourceInCurrentTurn(message, normalizedContent, sourceMessages, preferredStartIndex) {
283
283
  if (!sourceMessages)
284
284
  return -1;
285
+ // Daemon flattens structured toolCall blocks into [tool:name] text, which
286
+ // no longer triggers hasKernelToolCallBlock. Allow assistant messages through
287
+ // so flattened tool calls reach source-message validation. Plain assistant
288
+ // text responses are filtered out by subsequent source-message checks.
285
289
  if (!isToolResultRole(message.role) && message.role !== "assistant" && !hasKernelToolCallBlock(message.content)) {
286
290
  return -1;
287
291
  }
@@ -325,7 +329,7 @@ function isHistoricalToolDerivedAssistantReply(message, normalizedContent, sourc
325
329
  return false;
326
330
  return hasToolProtocolBeforeSinceLastUser(sourceMessages, sourceIndex);
327
331
  }
328
- function findLiveToolProtocolSourceMessage(message, normalizedContent, sourceMessages, preferredStartIndex) {
332
+ function consumeLiveToolAtCursor(message, normalizedContent, sourceMessages, preferredStartIndex) {
329
333
  if (!sourceMessages)
330
334
  return undefined;
331
335
  if (!isToolResultRole(message.role) && message.role !== "assistant" && !hasKernelToolCallBlock(message.content)) {
@@ -337,7 +341,7 @@ function findLiveToolProtocolSourceMessage(message, normalizedContent, sourceMes
337
341
  const searchStartIndex = preferredStartIndex === undefined
338
342
  ? lastUserIndex + 1
339
343
  : Math.max(lastUserIndex + 1, preferredStartIndex);
340
- const sourceIndex = findCurrentTurnToolProtocolSourceIndex(message, normalizedContent, sourceMessages, searchStartIndex);
344
+ const sourceIndex = findLiveToolSourceInCurrentTurn(message, normalizedContent, sourceMessages, searchStartIndex);
341
345
  if (sourceIndex !== searchStartIndex)
342
346
  return undefined;
343
347
  const sourceMessage = sourceMessages[sourceIndex];
@@ -810,13 +814,9 @@ function demoteDaemonAuthoredContextBlocks(text) {
810
814
  ].join("\n");
811
815
  });
812
816
  }
813
- function sanitizeProviderReplayMessage(message, sourceMessages, preferredStartIndex) {
817
+ function sanitizeProviderReplayMessage(message, sourceMessages) {
814
818
  const content = normalizeKernelContent(message.content);
815
- const liveToolProtocolSource = findLiveToolProtocolSourceMessage(message, content, sourceMessages, preferredStartIndex);
816
- if (liveToolProtocolSource) {
817
- return preserveLiveToolProtocolMessage(liveToolProtocolSource.message);
818
- }
819
- if (findCurrentTurnToolProtocolSourceIndex(message, content, sourceMessages) >= 0) {
819
+ if (findLiveToolSourceInCurrentTurn(message, content, sourceMessages) >= 0) {
820
820
  return null;
821
821
  }
822
822
  if (isToolResultRole(message.role) || hasKernelToolCallBlock(message.content)) {
@@ -847,12 +847,12 @@ function sanitizeProviderReplayMessages(result, sourceMessages) {
847
847
  let liveSourceCursor = sourceMessages ? findLastUserMessageIndex(sourceMessages) + 1 : undefined;
848
848
  const messages = result.messages.flatMap((message) => {
849
849
  const content = normalizeKernelContent(message.content);
850
- const liveToolProtocolSource = findLiveToolProtocolSourceMessage(message, content, sourceMessages, liveSourceCursor);
850
+ const liveToolProtocolSource = consumeLiveToolAtCursor(message, content, sourceMessages, liveSourceCursor);
851
851
  if (liveToolProtocolSource) {
852
852
  liveSourceCursor = liveToolProtocolSource.index + 1;
853
853
  return [preserveLiveToolProtocolMessage(liveToolProtocolSource.message)];
854
854
  }
855
- const sanitized = sanitizeProviderReplayMessage(message, sourceMessages, liveSourceCursor);
855
+ const sanitized = sanitizeProviderReplayMessage(message, sourceMessages);
856
856
  if (!sanitized)
857
857
  return [];
858
858
  return [sanitized];
@@ -1247,12 +1247,12 @@ export function normalizeAssembleResult(result, sourceMessages) {
1247
1247
  else {
1248
1248
  isRealTranscript = message.role === "user" || message.role === "assistant";
1249
1249
  }
1250
- const liveToolProtocolSource = findLiveToolProtocolSourceMessage(message, content, sourceMessages, liveSourceCursor);
1250
+ const liveToolProtocolSource = consumeLiveToolAtCursor(message, content, sourceMessages, liveSourceCursor);
1251
1251
  if (liveToolProtocolSource) {
1252
1252
  messages.push(preserveLiveToolProtocolMessage(liveToolProtocolSource.message));
1253
1253
  liveSourceCursor = liveToolProtocolSource.index + 1;
1254
1254
  }
1255
- else if (findCurrentTurnToolProtocolSourceIndex(message, content, sourceMessages) >= 0) {
1255
+ else if (findLiveToolSourceInCurrentTurn(message, content, sourceMessages) >= 0) {
1256
1256
  continue;
1257
1257
  }
1258
1258
  else if (isRealTranscript && !historicalToolSource && isProviderReplayRole(message.role)) {
package/dist/index.js CHANGED
@@ -35721,7 +35721,7 @@ function hasToolProtocolBeforeSinceLastUser(sourceMessages, sourceIndex) {
35721
35721
  }
35722
35722
  return false;
35723
35723
  }
35724
- function findCurrentTurnToolProtocolSourceIndex(message, normalizedContent, sourceMessages, preferredStartIndex) {
35724
+ function findLiveToolSourceInCurrentTurn(message, normalizedContent, sourceMessages, preferredStartIndex) {
35725
35725
  if (!sourceMessages) return -1;
35726
35726
  if (!isToolResultRole(message.role) && message.role !== "assistant" && !hasKernelToolCallBlock(message.content)) {
35727
35727
  return -1;
@@ -35761,7 +35761,7 @@ function isHistoricalToolDerivedAssistantReply(message, normalizedContent, sourc
35761
35761
  if (sourceIndex < 0) return false;
35762
35762
  return hasToolProtocolBeforeSinceLastUser(sourceMessages, sourceIndex);
35763
35763
  }
35764
- function findLiveToolProtocolSourceMessage(message, normalizedContent, sourceMessages, preferredStartIndex) {
35764
+ function consumeLiveToolAtCursor(message, normalizedContent, sourceMessages, preferredStartIndex) {
35765
35765
  if (!sourceMessages) return void 0;
35766
35766
  if (!isToolResultRole(message.role) && message.role !== "assistant" && !hasKernelToolCallBlock(message.content)) {
35767
35767
  return void 0;
@@ -35769,7 +35769,7 @@ function findLiveToolProtocolSourceMessage(message, normalizedContent, sourceMes
35769
35769
  const lastUserIndex = findLastUserMessageIndex(sourceMessages);
35770
35770
  if (lastUserIndex < 0) return void 0;
35771
35771
  const searchStartIndex = preferredStartIndex === void 0 ? lastUserIndex + 1 : Math.max(lastUserIndex + 1, preferredStartIndex);
35772
- const sourceIndex = findCurrentTurnToolProtocolSourceIndex(
35772
+ const sourceIndex = findLiveToolSourceInCurrentTurn(
35773
35773
  message,
35774
35774
  normalizedContent,
35775
35775
  sourceMessages,
@@ -36171,18 +36171,9 @@ function demoteDaemonAuthoredContextBlocks(text) {
36171
36171
  ].join("\n");
36172
36172
  });
36173
36173
  }
36174
- function sanitizeProviderReplayMessage(message, sourceMessages, preferredStartIndex) {
36174
+ function sanitizeProviderReplayMessage(message, sourceMessages) {
36175
36175
  const content = normalizeKernelContent(message.content);
36176
- const liveToolProtocolSource = findLiveToolProtocolSourceMessage(
36177
- message,
36178
- content,
36179
- sourceMessages,
36180
- preferredStartIndex
36181
- );
36182
- if (liveToolProtocolSource) {
36183
- return preserveLiveToolProtocolMessage(liveToolProtocolSource.message);
36184
- }
36185
- if (findCurrentTurnToolProtocolSourceIndex(message, content, sourceMessages) >= 0) {
36176
+ if (findLiveToolSourceInCurrentTurn(message, content, sourceMessages) >= 0) {
36186
36177
  return null;
36187
36178
  }
36188
36179
  if (isToolResultRole(message.role) || hasKernelToolCallBlock(message.content)) {
@@ -36210,7 +36201,7 @@ function sanitizeProviderReplayMessages(result, sourceMessages) {
36210
36201
  let liveSourceCursor = sourceMessages ? findLastUserMessageIndex(sourceMessages) + 1 : void 0;
36211
36202
  const messages = result.messages.flatMap((message) => {
36212
36203
  const content = normalizeKernelContent(message.content);
36213
- const liveToolProtocolSource = findLiveToolProtocolSourceMessage(
36204
+ const liveToolProtocolSource = consumeLiveToolAtCursor(
36214
36205
  message,
36215
36206
  content,
36216
36207
  sourceMessages,
@@ -36220,7 +36211,7 @@ function sanitizeProviderReplayMessages(result, sourceMessages) {
36220
36211
  liveSourceCursor = liveToolProtocolSource.index + 1;
36221
36212
  return [preserveLiveToolProtocolMessage(liveToolProtocolSource.message)];
36222
36213
  }
36223
- const sanitized = sanitizeProviderReplayMessage(message, sourceMessages, liveSourceCursor);
36214
+ const sanitized = sanitizeProviderReplayMessage(message, sourceMessages);
36224
36215
  if (!sanitized) return [];
36225
36216
  return [sanitized];
36226
36217
  });
@@ -36528,7 +36519,7 @@ function normalizeAssembleResult(result, sourceMessages) {
36528
36519
  } else {
36529
36520
  isRealTranscript = message.role === "user" || message.role === "assistant";
36530
36521
  }
36531
- const liveToolProtocolSource = findLiveToolProtocolSourceMessage(
36522
+ const liveToolProtocolSource = consumeLiveToolAtCursor(
36532
36523
  message,
36533
36524
  content,
36534
36525
  sourceMessages,
@@ -36537,7 +36528,7 @@ function normalizeAssembleResult(result, sourceMessages) {
36537
36528
  if (liveToolProtocolSource) {
36538
36529
  messages.push(preserveLiveToolProtocolMessage(liveToolProtocolSource.message));
36539
36530
  liveSourceCursor = liveToolProtocolSource.index + 1;
36540
- } else if (findCurrentTurnToolProtocolSourceIndex(message, content, sourceMessages) >= 0) {
36531
+ } else if (findLiveToolSourceInCurrentTurn(message, content, sourceMessages) >= 0) {
36541
36532
  continue;
36542
36533
  } else if (isRealTranscript && !historicalToolSource && isProviderReplayRole(message.role)) {
36543
36534
  if (isHistoricalToolDerivedAssistantReply(message, content, sourceMessages)) {
@@ -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.8.11",
5
+ "version": "1.8.12",
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.8.11",
3
+ "version": "1.8.12",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",