@deepagents/context 0.29.0 → 0.29.1

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/browser.js CHANGED
@@ -922,6 +922,12 @@ function or(...predicates) {
922
922
  function not(predicate) {
923
923
  return (turn) => !predicate(turn);
924
924
  }
925
+ function isConditionalReminder(fragment2) {
926
+ return fragment2.name === "reminder" && !!fragment2.metadata?.reminder;
927
+ }
928
+ function getConditionalReminder(fragment2) {
929
+ return fragment2.metadata.reminder;
930
+ }
925
931
  var SYSTEM_REMINDER_OPEN_TAG = "<system-reminder>";
926
932
  var SYSTEM_REMINDER_CLOSE_TAG = "</system-reminder>";
927
933
  function getReminderRanges(metadata) {
@@ -1056,54 +1062,61 @@ function applyPartReminder(message2, value) {
1056
1062
  mode: "part"
1057
1063
  };
1058
1064
  }
1059
- function hasSchedule(reminder2) {
1060
- return reminder2.when !== void 0;
1065
+ function resolveReminderText(item, ctx) {
1066
+ return typeof item.text === "function" ? item.text(ctx) : item.text;
1067
+ }
1068
+ function applyReminderToMessage(message2, item, ctx) {
1069
+ const resolvedText = resolveReminderText(item, ctx);
1070
+ if (resolvedText.trim().length === 0) {
1071
+ return null;
1072
+ }
1073
+ return item.asPart ? applyPartReminder(message2, resolvedText) : applyInlineReminder(message2, resolvedText);
1061
1074
  }
1062
- function shouldIncludeReminder(reminder2, turn) {
1063
- if (reminder2.when && !reminder2.when(turn)) return false;
1064
- return true;
1075
+ function mergeReminderMetadata(message2, addedReminders) {
1076
+ if (addedReminders.length === 0) return;
1077
+ const metadata = isRecord(message2.metadata) ? { ...message2.metadata } : {};
1078
+ const existing = Array.isArray(metadata.reminders) ? metadata.reminders : [];
1079
+ metadata.reminders = [...existing, ...addedReminders];
1080
+ message2.metadata = metadata;
1065
1081
  }
1066
1082
  function reminder(text, options) {
1067
1083
  if (typeof text === "string") {
1068
1084
  assertReminderText(text);
1069
1085
  }
1086
+ if (options && "when" in options && options.when) {
1087
+ return {
1088
+ name: "reminder",
1089
+ metadata: {
1090
+ reminder: {
1091
+ text,
1092
+ when: options.when,
1093
+ asPart: options.asPart ?? false
1094
+ }
1095
+ }
1096
+ };
1097
+ }
1070
1098
  return {
1071
1099
  text,
1072
- asPart: options?.asPart ?? false,
1073
- ...options?.when !== void 0 && { when: options.when }
1100
+ asPart: options?.asPart ?? false
1074
1101
  };
1075
1102
  }
1076
- function resolveReminderText(item, ctx) {
1077
- return typeof item.text === "function" ? item.text(ctx) : item.text;
1078
- }
1079
1103
  function user(content, ...reminders) {
1080
1104
  const message2 = typeof content === "string" ? {
1081
1105
  id: generateId2(),
1082
1106
  role: "user",
1083
1107
  parts: [{ type: "text", text: content }]
1084
1108
  } : { ...content, role: "user", parts: [...content.parts] };
1085
- const immediateReminders = reminders.filter((r) => !hasSchedule(r));
1086
- const scheduledReminders = reminders.filter((r) => hasSchedule(r));
1087
- if (immediateReminders.length > 0) {
1088
- const addedReminders = [];
1109
+ if (reminders.length > 0) {
1089
1110
  const plainText = extractPlainText(message2);
1090
- for (const item of immediateReminders) {
1091
- const resolvedText = resolveReminderText(item, { content: plainText });
1092
- if (resolvedText.trim().length === 0) {
1093
- continue;
1094
- }
1095
- addedReminders.push(
1096
- item.asPart ? applyPartReminder(message2, resolvedText) : applyInlineReminder(message2, resolvedText)
1097
- );
1098
- }
1099
- if (addedReminders.length > 0) {
1100
- const metadata = isRecord(message2.metadata) ? { ...message2.metadata } : {};
1101
- const existingReminders = Array.isArray(metadata.reminders) ? metadata.reminders : [];
1102
- metadata.reminders = [...existingReminders, ...addedReminders];
1103
- message2.metadata = metadata;
1111
+ const addedReminders = [];
1112
+ for (const item of reminders) {
1113
+ const meta = applyReminderToMessage(message2, item, {
1114
+ content: plainText
1115
+ });
1116
+ if (meta) addedReminders.push(meta);
1104
1117
  }
1118
+ mergeReminderMetadata(message2, addedReminders);
1105
1119
  }
1106
- const fragmentMetadata = scheduledReminders.length > 0 ? { scheduledReminders } : void 0;
1107
1120
  return {
1108
1121
  id: message2.id,
1109
1122
  name: "user",
@@ -1116,8 +1129,7 @@ function user(content, ...reminders) {
1116
1129
  encode() {
1117
1130
  return message2;
1118
1131
  }
1119
- },
1120
- metadata: fragmentMetadata
1132
+ }
1121
1133
  };
1122
1134
  }
1123
1135
 
@@ -2189,6 +2201,7 @@ export {
2189
2201
  and,
2190
2202
  applyInlineReminder,
2191
2203
  applyPartReminder,
2204
+ applyReminderToMessage,
2192
2205
  assistant,
2193
2206
  assistantText,
2194
2207
  clarification,
@@ -2202,19 +2215,21 @@ export {
2202
2215
  firstN,
2203
2216
  fragment,
2204
2217
  fromFragment,
2218
+ getConditionalReminder,
2205
2219
  getFragmentData,
2206
2220
  getModelsRegistry,
2207
2221
  getReminderRanges,
2208
2222
  glossary,
2209
2223
  guardrail,
2210
- hasSchedule,
2211
2224
  hint,
2212
2225
  identity,
2226
+ isConditionalReminder,
2213
2227
  isFragment,
2214
2228
  isFragmentObject,
2215
2229
  isLazyFragment,
2216
2230
  isMessageFragment,
2217
2231
  lastAssistantMessage,
2232
+ mergeReminderMetadata,
2218
2233
  message,
2219
2234
  not,
2220
2235
  once,
@@ -2231,7 +2246,6 @@ export {
2231
2246
  resolveReminderText,
2232
2247
  role,
2233
2248
  runGuardrailChain,
2234
- shouldIncludeReminder,
2235
2249
  soul,
2236
2250
  stop,
2237
2251
  stripReminders,