@deepagents/context 0.20.0 → 0.22.0

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/README.md CHANGED
@@ -150,10 +150,12 @@ const ranges = getReminderRanges(message.metadata).filter(
150
150
  (range) => range.partIndex === partIndex,
151
151
  );
152
152
  const visibleText = stripTextByRanges(message.parts[partIndex].text, ranges);
153
+ const messageWithoutReminders = stripReminders(message);
153
154
  ```
154
155
 
155
156
  - `getReminderRanges(metadata)` returns `metadata.reminders` as offset ranges (or `[]` when missing).
156
157
  - `stripTextByRanges(text, ranges)` removes offset spans from text and returns the remaining visible content.
158
+ - `stripReminders(message)` strips inline/part reminders from a `UIMessage` and removes `metadata.reminders`.
157
159
  - Reminder ranges are local to a message part, so filter by `partIndex` before stripping a specific part's text.
158
160
 
159
161
  ## Renderers
package/dist/browser.js CHANGED
@@ -404,6 +404,43 @@ function stripTextByRanges(text, ranges) {
404
404
  output += text.slice(cursor);
405
405
  return output.trimEnd();
406
406
  }
407
+ function stripReminders(message2) {
408
+ const reminderRanges = getReminderRanges(
409
+ isRecord(message2.metadata) ? message2.metadata : void 0
410
+ );
411
+ const rangesByPartIndex = /* @__PURE__ */ new Map();
412
+ for (const range of reminderRanges) {
413
+ const partRanges = rangesByPartIndex.get(range.partIndex) ?? [];
414
+ partRanges.push({ start: range.start, end: range.end });
415
+ rangesByPartIndex.set(range.partIndex, partRanges);
416
+ }
417
+ const strippedParts = message2.parts.flatMap((part, partIndex) => {
418
+ const clonedPart = { ...part };
419
+ const ranges = rangesByPartIndex.get(partIndex);
420
+ if (clonedPart.type !== "text" || ranges === void 0) {
421
+ return [clonedPart];
422
+ }
423
+ const strippedText = stripTextByRanges(clonedPart.text, ranges);
424
+ if (strippedText.length === 0) {
425
+ return [];
426
+ }
427
+ return [{ ...clonedPart, text: strippedText }];
428
+ });
429
+ const nextMessage = {
430
+ ...message2,
431
+ parts: strippedParts
432
+ };
433
+ if (isRecord(message2.metadata)) {
434
+ const metadata = { ...message2.metadata };
435
+ delete metadata.reminders;
436
+ if (Object.keys(metadata).length > 0) {
437
+ nextMessage.metadata = metadata;
438
+ } else {
439
+ delete nextMessage.metadata;
440
+ }
441
+ }
442
+ return nextMessage;
443
+ }
407
444
  function isRecord(value) {
408
445
  return typeof value === "object" && value !== null && !Array.isArray(value);
409
446
  }
@@ -1652,6 +1689,7 @@ export {
1652
1689
  runGuardrailChain,
1653
1690
  soul,
1654
1691
  stop,
1692
+ stripReminders,
1655
1693
  stripTextByRanges,
1656
1694
  styleGuide,
1657
1695
  term,