@deepagents/context 4.2.1 → 4.3.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 +7 -7
- package/dist/browser.d.ts +2 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +29 -26
- package/dist/browser.js.map +4 -4
- package/dist/index.d.ts +1 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4263 -4249
- package/dist/index.js.map +4 -4
- package/dist/lib/agent.d.ts +13 -7
- package/dist/lib/agent.d.ts.map +1 -1
- package/dist/lib/engine.d.ts +1 -1
- package/dist/lib/engine.d.ts.map +1 -1
- package/dist/lib/fragments/message/user.d.ts +2 -213
- package/dist/lib/fragments/message/user.d.ts.map +1 -1
- package/dist/lib/fragments/reminders/index.d.ts +3 -0
- package/dist/lib/fragments/reminders/index.d.ts.map +1 -0
- package/dist/lib/{save/reminder-eval.d.ts → fragments/reminders/src/evaluate.d.ts} +2 -2
- package/dist/lib/fragments/reminders/src/evaluate.d.ts.map +1 -0
- package/dist/lib/fragments/reminders/src/index.d.ts +5 -0
- package/dist/lib/fragments/reminders/src/index.d.ts.map +1 -0
- package/dist/lib/fragments/reminders/src/predicates/classifier.d.ts.map +1 -0
- package/dist/lib/fragments/reminders/{combinators.d.ts → src/predicates/combinators.d.ts} +1 -1
- package/dist/lib/fragments/reminders/src/predicates/combinators.d.ts.map +1 -0
- package/dist/lib/fragments/reminders/{content-predicates.d.ts → src/predicates/content.d.ts} +2 -2
- package/dist/lib/fragments/reminders/src/predicates/content.d.ts.map +1 -0
- package/dist/lib/fragments/reminders/src/predicates/index.d.ts +9 -0
- package/dist/lib/fragments/reminders/src/predicates/index.d.ts.map +1 -0
- package/dist/lib/fragments/reminders/{message-predicates.d.ts → src/predicates/message.d.ts} +3 -7
- package/dist/lib/fragments/reminders/src/predicates/message.d.ts.map +1 -0
- package/dist/lib/fragments/reminders/{once.d.ts → src/predicates/once.d.ts} +1 -1
- package/dist/lib/fragments/reminders/src/predicates/once.d.ts.map +1 -0
- package/dist/lib/fragments/reminders/{tool-predicates.d.ts → src/predicates/tool.d.ts} +2 -3
- package/dist/lib/fragments/reminders/src/predicates/tool.d.ts.map +1 -0
- package/dist/lib/fragments/reminders/{turn-predicates.d.ts → src/predicates/turn.d.ts} +2 -2
- package/dist/lib/fragments/reminders/src/predicates/turn.d.ts.map +1 -0
- package/dist/lib/fragments/reminders/src/predicates/usage.d.ts +3 -0
- package/dist/lib/fragments/reminders/src/predicates/usage.d.ts.map +1 -0
- package/dist/lib/fragments/reminders/src/reminders.d.ts +114 -0
- package/dist/lib/fragments/reminders/src/reminders.d.ts.map +1 -0
- package/dist/lib/fragments/reminders/src/types.d.ts +114 -0
- package/dist/lib/fragments/reminders/src/types.d.ts.map +1 -0
- package/dist/lib/fragments/reminders/temporal/elapsed.d.ts +1 -1
- package/dist/lib/fragments/reminders/temporal/elapsed.d.ts.map +1 -1
- package/dist/lib/fragments/reminders/temporal/predicates.d.ts +1 -1
- package/dist/lib/fragments/reminders/temporal/predicates.d.ts.map +1 -1
- package/dist/lib/fragments/reminders/temporal/reminder.d.ts.map +1 -1
- package/dist/lib/skills/skill-reminder.d.ts +1 -1
- package/dist/lib/skills/skill-reminder.d.ts.map +1 -1
- package/dist/lib/title.d.ts.map +1 -1
- package/dist/spec/test/global-setup.d.ts +4 -0
- package/dist/spec/test/global-setup.d.ts.map +1 -0
- package/dist/spec/test/helpers/sqlite-container.d.ts +19 -0
- package/dist/spec/test/helpers/sqlite-container.d.ts.map +1 -0
- package/package.json +2 -2
- package/dist/lib/fragments/reminders/classifier.d.ts.map +0 -1
- package/dist/lib/fragments/reminders/combinators.d.ts.map +0 -1
- package/dist/lib/fragments/reminders/content-predicates.d.ts.map +0 -1
- package/dist/lib/fragments/reminders/message-predicates.d.ts.map +0 -1
- package/dist/lib/fragments/reminders/once.d.ts.map +0 -1
- package/dist/lib/fragments/reminders/tool-predicates.d.ts.map +0 -1
- package/dist/lib/fragments/reminders/turn-predicates.d.ts.map +0 -1
- package/dist/lib/fragments/reminders/usage-predicates.d.ts +0 -3
- package/dist/lib/fragments/reminders/usage-predicates.d.ts.map +0 -1
- package/dist/lib/save/reminder-eval.d.ts.map +0 -1
- /package/dist/lib/fragments/reminders/{classifier.d.ts → src/predicates/classifier.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -300,15 +300,16 @@ const ranges = getReminderRanges(message.metadata).filter(
|
|
|
300
300
|
(range) => range.partIndex === partIndex,
|
|
301
301
|
);
|
|
302
302
|
const visibleText = stripTextByRanges(message.parts[partIndex].text, ranges);
|
|
303
|
+
const firedOnceIds = getReminderOnceIds(message);
|
|
303
304
|
const messageWithoutReminders = stripReminders(message);
|
|
304
305
|
```
|
|
305
306
|
|
|
306
307
|
- `getReminderRanges(metadata)` returns `metadata.reminders` as offset ranges (or `[]` when missing).
|
|
308
|
+
- `getReminderOnceIds(message)` returns durable `once(id)` latch ids stored on a user message.
|
|
307
309
|
|
|
308
310
|
Conditional reminders are registered on the engine, not inside `user(...)`.
|
|
309
311
|
They can react to turn cadence, classifier matches, tool activity, assistant
|
|
310
|
-
history, token usage, idle time, live tool output, and mid-loop
|
|
311
|
-
boundaries:
|
|
312
|
+
history, token usage, idle time, live tool output, and mid-loop steer points:
|
|
312
313
|
|
|
313
314
|
For `target: 'tool-output'`, gate on `ctx.executingTool` to inspect the live
|
|
314
315
|
tool call being wrapped. Assistant-history predicates such as `toolCalled(...)`
|
|
@@ -317,10 +318,10 @@ only describe already persisted calls.
|
|
|
317
318
|
```ts
|
|
318
319
|
import {
|
|
319
320
|
anyToolCalled,
|
|
321
|
+
elapsedExceeds,
|
|
320
322
|
everyOfLastN,
|
|
321
323
|
not,
|
|
322
324
|
reminder,
|
|
323
|
-
streamStepsExceed,
|
|
324
325
|
toolCalled,
|
|
325
326
|
usageExceeds,
|
|
326
327
|
user,
|
|
@@ -337,8 +338,8 @@ engine.set(
|
|
|
337
338
|
reminder('Pause and summarize if the thread is getting expensive', {
|
|
338
339
|
when: usageExceeds(20_000),
|
|
339
340
|
}),
|
|
340
|
-
reminder('Checkpoint before
|
|
341
|
-
when:
|
|
341
|
+
reminder('Checkpoint before a long-running streamed turn continues', {
|
|
342
|
+
when: elapsedExceeds(40 * 60_000),
|
|
342
343
|
target: 'steer',
|
|
343
344
|
}),
|
|
344
345
|
reminder('If no tools were needed for three turns, keep the answer brief', {
|
|
@@ -350,8 +351,7 @@ engine.set(
|
|
|
350
351
|
|
|
351
352
|
Other exported helpers include `toolCallCount(...)`,
|
|
352
353
|
`lastAssistantLength(...)`, `withinLastN(...)`, `everyOfLastN(...)`, and
|
|
353
|
-
`elapsedExceeds(...)`.
|
|
354
|
-
`streamToolCallsExceed(...)`, and `streamUsageExceeds(...)`. See the
|
|
354
|
+
`elapsedExceeds(...)`. See the
|
|
355
355
|
[Predicates](https://januarylabs.github.io/deepagents/docs/context/predicates)
|
|
356
356
|
page for the full catalog.
|
|
357
357
|
|
package/dist/browser.d.ts
CHANGED
|
@@ -10,6 +10,8 @@ export * from './lib/estimate.ts';
|
|
|
10
10
|
export * from './lib/fragments.ts';
|
|
11
11
|
export * from './lib/fragments/domain.ts';
|
|
12
12
|
export * from './lib/fragments/message/user.ts';
|
|
13
|
+
export * from './lib/fragments/reminders/src/reminders.ts';
|
|
14
|
+
export type { BaseWhenCtx, ConditionalReminder, CountSpec, ReminderContext, ReminderFragment, ReminderOptions, ReminderRange, ReminderResolution, ReminderTarget, ReminderText, SyncReminderText, SyntheticSteerMetadata, UserReminderMetadata, WhenContext, WhenPredicate, } from './lib/fragments/reminders/src/types.ts';
|
|
13
15
|
export * from './lib/fragments/user.ts';
|
|
14
16
|
export * from './lib/guardrail.ts';
|
|
15
17
|
export * from './lib/models.generated.ts';
|
package/dist/browser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,sBAAsB,CAAC;AACrC,cAAc,qCAAqC,CAAC;AACpD,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,sCAAsC,CAAC;AACrD,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,sBAAsB,CAAC;AACrC,cAAc,qCAAqC,CAAC;AACpD,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,4CAA4C,CAAC;AAC3D,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,WAAW,EACX,aAAa,GACd,MAAM,wCAAwC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,sCAAsC,CAAC;AACrD,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC"}
|
package/dist/browser.js
CHANGED
|
@@ -912,8 +912,32 @@ async function estimate(modelId, renderer, ...fragments) {
|
|
|
912
912
|
}
|
|
913
913
|
|
|
914
914
|
// packages/context/src/lib/fragments/message/user.ts
|
|
915
|
+
import { generateId as generateId2 } from "ai";
|
|
916
|
+
function user(content) {
|
|
917
|
+
const message2 = typeof content === "string" ? {
|
|
918
|
+
id: generateId2(),
|
|
919
|
+
role: "user",
|
|
920
|
+
parts: [{ type: "text", text: content }]
|
|
921
|
+
} : { ...content, role: "user", parts: [...content.parts] };
|
|
922
|
+
return {
|
|
923
|
+
id: message2.id,
|
|
924
|
+
name: "user",
|
|
925
|
+
type: "message",
|
|
926
|
+
persist: true,
|
|
927
|
+
codec: {
|
|
928
|
+
decode() {
|
|
929
|
+
return message2;
|
|
930
|
+
},
|
|
931
|
+
encode() {
|
|
932
|
+
return message2;
|
|
933
|
+
}
|
|
934
|
+
}
|
|
935
|
+
};
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
// packages/context/src/lib/fragments/reminders/src/reminders.ts
|
|
915
939
|
import {
|
|
916
|
-
generateId as
|
|
940
|
+
generateId as generateId3,
|
|
917
941
|
isStaticToolUIPart
|
|
918
942
|
} from "ai";
|
|
919
943
|
|
|
@@ -1802,7 +1826,7 @@ function extractPlainText(message2) {
|
|
|
1802
1826
|
return getTextParts(message2).join(" ");
|
|
1803
1827
|
}
|
|
1804
1828
|
|
|
1805
|
-
// packages/context/src/lib/fragments/
|
|
1829
|
+
// packages/context/src/lib/fragments/reminders/src/reminders.ts
|
|
1806
1830
|
function isConditionalReminder(fragment2) {
|
|
1807
1831
|
return fragment2.name === "reminder" && !!fragment2.metadata?.reminder;
|
|
1808
1832
|
}
|
|
@@ -1953,7 +1977,7 @@ function applyInlineReminder(message2, value) {
|
|
|
1953
1977
|
const updatedText = `${textPart.text}${reminderText}`;
|
|
1954
1978
|
message2.parts[partIndex] = { ...textPart, text: updatedText };
|
|
1955
1979
|
return {
|
|
1956
|
-
id:
|
|
1980
|
+
id: generateId3(),
|
|
1957
1981
|
text: value,
|
|
1958
1982
|
target: "user",
|
|
1959
1983
|
partIndex,
|
|
@@ -1968,7 +1992,7 @@ function applyPartReminder(message2, value) {
|
|
|
1968
1992
|
message2.parts.push(part);
|
|
1969
1993
|
const partIndex = message2.parts.length - 1;
|
|
1970
1994
|
return {
|
|
1971
|
-
id:
|
|
1995
|
+
id: generateId3(),
|
|
1972
1996
|
text: value,
|
|
1973
1997
|
target: "user",
|
|
1974
1998
|
partIndex,
|
|
@@ -2071,27 +2095,6 @@ function reminder(textOrFragment, options) {
|
|
|
2071
2095
|
}
|
|
2072
2096
|
};
|
|
2073
2097
|
}
|
|
2074
|
-
function user(content) {
|
|
2075
|
-
const message2 = typeof content === "string" ? {
|
|
2076
|
-
id: generateId2(),
|
|
2077
|
-
role: "user",
|
|
2078
|
-
parts: [{ type: "text", text: content }]
|
|
2079
|
-
} : { ...content, role: "user", parts: [...content.parts] };
|
|
2080
|
-
return {
|
|
2081
|
-
id: message2.id,
|
|
2082
|
-
name: "user",
|
|
2083
|
-
type: "message",
|
|
2084
|
-
persist: true,
|
|
2085
|
-
codec: {
|
|
2086
|
-
decode() {
|
|
2087
|
-
return message2;
|
|
2088
|
-
},
|
|
2089
|
-
encode() {
|
|
2090
|
-
return message2;
|
|
2091
|
-
}
|
|
2092
|
-
}
|
|
2093
|
-
};
|
|
2094
|
-
}
|
|
2095
2098
|
function applyUserRemindersToMessage(message2, reminders) {
|
|
2096
2099
|
if (reminders.length === 0) return;
|
|
2097
2100
|
const plainText = extractPlainText(message2);
|
|
@@ -2106,7 +2109,7 @@ function synthesizeSteerUserMessage(text, firedAt, onceIds = []) {
|
|
|
2106
2109
|
const texts = Array.isArray(text) ? text : [text];
|
|
2107
2110
|
for (const value of texts) assertReminderText(value);
|
|
2108
2111
|
return {
|
|
2109
|
-
id:
|
|
2112
|
+
id: generateId3(),
|
|
2110
2113
|
role: "user",
|
|
2111
2114
|
parts: texts.map((value) => ({
|
|
2112
2115
|
type: "text",
|