@deepagents/context 0.33.0 → 0.34.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/dist/browser.js +12 -5
- package/dist/browser.js.map +4 -4
- package/dist/index.js +54 -32
- package/dist/index.js.map +4 -4
- package/dist/lib/engine.d.ts +3 -20
- package/dist/lib/engine.d.ts.map +1 -1
- package/dist/lib/fragments/message/user.d.ts +14 -2
- package/dist/lib/fragments/message/user.d.ts.map +1 -1
- package/dist/lib/text.d.ts +4 -0
- package/dist/lib/text.d.ts.map +1 -0
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -591,7 +591,18 @@ async function estimate(modelId, renderer, ...fragments) {
|
|
|
591
591
|
}
|
|
592
592
|
|
|
593
593
|
// packages/context/src/lib/fragments/message/user.ts
|
|
594
|
-
import { generateId as generateId3
|
|
594
|
+
import { generateId as generateId3 } from "ai";
|
|
595
|
+
|
|
596
|
+
// packages/context/src/lib/text.ts
|
|
597
|
+
import { isTextUIPart } from "ai";
|
|
598
|
+
function getTextParts(message2) {
|
|
599
|
+
return message2.parts.filter(isTextUIPart).map((part) => part.text);
|
|
600
|
+
}
|
|
601
|
+
function extractPlainText(message2) {
|
|
602
|
+
return getTextParts(message2).join(" ");
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
// packages/context/src/lib/fragments/message/user.ts
|
|
595
606
|
function everyNTurns(n) {
|
|
596
607
|
return ({ turn }) => turn % n === 0;
|
|
597
608
|
}
|
|
@@ -762,9 +773,6 @@ function stripReminders(message2) {
|
|
|
762
773
|
}
|
|
763
774
|
return nextMessage;
|
|
764
775
|
}
|
|
765
|
-
function extractPlainText(message2) {
|
|
766
|
-
return message2.parts.filter(isTextUIPart).map((part) => part.text).join(" ");
|
|
767
|
-
}
|
|
768
776
|
function isRecord(value) {
|
|
769
777
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
770
778
|
}
|
|
@@ -1814,6 +1822,9 @@ var ContextStore = class {
|
|
|
1814
1822
|
function estimateMessageContent(data) {
|
|
1815
1823
|
return typeof data === "string" ? data : JSON.stringify(data);
|
|
1816
1824
|
}
|
|
1825
|
+
function isLanguageModelUsage(value) {
|
|
1826
|
+
return typeof value === "object" && value !== null && "totalTokens" in value;
|
|
1827
|
+
}
|
|
1817
1828
|
var ContextEngine = class {
|
|
1818
1829
|
/** Non-message fragments (role, hints, etc.) - not persisted in graph */
|
|
1819
1830
|
#fragments = [];
|
|
@@ -1949,17 +1960,7 @@ var ContextEngine = class {
|
|
|
1949
1960
|
* Returns null if the chat hasn't been initialized yet.
|
|
1950
1961
|
*/
|
|
1951
1962
|
get chat() {
|
|
1952
|
-
|
|
1953
|
-
return null;
|
|
1954
|
-
}
|
|
1955
|
-
return {
|
|
1956
|
-
id: this.#chatData.id,
|
|
1957
|
-
userId: this.#chatData.userId,
|
|
1958
|
-
createdAt: this.#chatData.createdAt,
|
|
1959
|
-
updatedAt: this.#chatData.updatedAt,
|
|
1960
|
-
title: this.#chatData.title,
|
|
1961
|
-
metadata: this.#chatData.metadata
|
|
1962
|
-
};
|
|
1963
|
+
return this.#chatData;
|
|
1963
1964
|
}
|
|
1964
1965
|
/**
|
|
1965
1966
|
* Count user turns in the conversation and return the previous saved user message context.
|
|
@@ -1968,13 +1969,19 @@ var ContextEngine = class {
|
|
|
1968
1969
|
async #getChainContext() {
|
|
1969
1970
|
await this.#ensureInitialized();
|
|
1970
1971
|
let turn = 0;
|
|
1972
|
+
let messageCount = 0;
|
|
1971
1973
|
let lastMessageAt;
|
|
1972
1974
|
let lastMessage;
|
|
1975
|
+
let lastAssistantMessage2;
|
|
1973
1976
|
if (this.#branch?.headMessageId) {
|
|
1974
1977
|
const chain = await this.#store.getMessageChain(
|
|
1975
1978
|
this.#branch.headMessageId
|
|
1976
1979
|
);
|
|
1977
1980
|
for (const msg of chain) {
|
|
1981
|
+
messageCount++;
|
|
1982
|
+
if (msg.name === "assistant") {
|
|
1983
|
+
lastAssistantMessage2 = msg.data;
|
|
1984
|
+
}
|
|
1978
1985
|
if (msg.name !== "user") {
|
|
1979
1986
|
continue;
|
|
1980
1987
|
}
|
|
@@ -1984,9 +1991,16 @@ var ContextEngine = class {
|
|
|
1984
1991
|
}
|
|
1985
1992
|
}
|
|
1986
1993
|
for (const fragment2 of this.#pendingMessages) {
|
|
1994
|
+
messageCount++;
|
|
1987
1995
|
if (fragment2.name === "user") turn++;
|
|
1988
1996
|
}
|
|
1989
|
-
return {
|
|
1997
|
+
return {
|
|
1998
|
+
turn,
|
|
1999
|
+
messageCount,
|
|
2000
|
+
lastMessageAt,
|
|
2001
|
+
lastMessage,
|
|
2002
|
+
lastAssistantMessage: lastAssistantMessage2
|
|
2003
|
+
};
|
|
1990
2004
|
}
|
|
1991
2005
|
async getTurnCount() {
|
|
1992
2006
|
const { turn } = await this.#getChainContext();
|
|
@@ -2116,25 +2130,34 @@ var ContextEngine = class {
|
|
|
2116
2130
|
if (lastUserIndex >= 0) {
|
|
2117
2131
|
const lastUserFragment = this.#pendingMessages[lastUserIndex];
|
|
2118
2132
|
if (lastUserFragment.codec) {
|
|
2119
|
-
const {
|
|
2133
|
+
const {
|
|
2134
|
+
turn,
|
|
2135
|
+
messageCount,
|
|
2136
|
+
lastMessageAt,
|
|
2137
|
+
lastMessage,
|
|
2138
|
+
lastAssistantMessage: lastAssistantMessage2
|
|
2139
|
+
} = await this.#getChainContext();
|
|
2120
2140
|
const original = lastUserFragment.codec.encode();
|
|
2121
2141
|
const plainText = extractPlainText(original);
|
|
2122
|
-
const
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2142
|
+
const rawUsage = this.#chatData?.metadata?.usage;
|
|
2143
|
+
const usage = isLanguageModelUsage(rawUsage) ? rawUsage : void 0;
|
|
2144
|
+
const elapsed = lastMessageAt !== void 0 ? Date.now() - lastMessageAt : void 0;
|
|
2145
|
+
const whenCtx = {
|
|
2146
|
+
turn,
|
|
2147
|
+
content: plainText,
|
|
2148
|
+
lastMessageAt,
|
|
2149
|
+
lastMessage,
|
|
2150
|
+
chat: this.#chatData,
|
|
2151
|
+
usage,
|
|
2152
|
+
branch: this.#branchName,
|
|
2153
|
+
elapsed,
|
|
2154
|
+
messageCount,
|
|
2155
|
+
lastAssistantMessage: lastAssistantMessage2
|
|
2156
|
+
};
|
|
2157
|
+
const firedReminders = conditionalReminders.map(getConditionalReminder).filter((config) => config.when(whenCtx));
|
|
2130
2158
|
if (firedReminders.length > 0) {
|
|
2131
2159
|
const reminders = firedReminders.flatMap((rem) => {
|
|
2132
|
-
const resolved = resolveReminder(rem,
|
|
2133
|
-
content: plainText,
|
|
2134
|
-
turn,
|
|
2135
|
-
lastMessageAt,
|
|
2136
|
-
lastMessage
|
|
2137
|
-
});
|
|
2160
|
+
const resolved = resolveReminder(rem, whenCtx);
|
|
2138
2161
|
if (!resolved) {
|
|
2139
2162
|
return [];
|
|
2140
2163
|
}
|
|
@@ -7959,7 +7982,6 @@ export {
|
|
|
7959
7982
|
everyNTurns,
|
|
7960
7983
|
example,
|
|
7961
7984
|
explain,
|
|
7962
|
-
extractPlainText,
|
|
7963
7985
|
fail,
|
|
7964
7986
|
firstN,
|
|
7965
7987
|
fragment,
|