@elizaos/app-core 2.0.0-alpha.202 → 2.0.0-alpha.203

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.
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKN,aAAa,EACb,MAAM,EACN,KAAK,EACN,MAAM,eAAe,CAAC;AAyCvB,KAAK,iBAAiB,GAClB,MAAM,GACN,YAAY,GACZ,eAAe,GACf,cAAc,GACd,cAAc,GACd,cAAc,GACd,aAAa,CAAC;AAuBlB,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAkjDF,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,MAAM,EAAE,MAAM,EACd,QAAQ,SAA2B,GAClC,OAAO,CAAC,eAAe,CAAC,CA6J1B;AAigCD,eAAO,MAAM,cAAc,EAAE,MAAM,GAAG;IACpC,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAgnC1C,CAAC"}
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKN,aAAa,EACb,MAAM,EACN,KAAK,EACN,MAAM,eAAe,CAAC;AAyCvB,KAAK,iBAAiB,GAClB,MAAM,GACN,YAAY,GACZ,eAAe,GACf,cAAc,GACd,cAAc,GACd,cAAc,GACd,aAAa,CAAC;AAuBlB,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAkjDF,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,MAAM,EAAE,MAAM,EACd,QAAQ,SAA2B,GAClC,OAAO,CAAC,eAAe,CAAC,CA6J1B;AA2gCD,eAAO,MAAM,cAAc,EAAE,MAAM,GAAG;IACpC,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAmqC1C,CAAC"}
@@ -1961,6 +1961,13 @@ async function groundCalendarSearchMatchesWithLlm(runtime, state, intent, querie
1961
1961
  return null;
1962
1962
  }
1963
1963
  }
1964
+ function buildCalendarGroundingCandidates(events) {
1965
+ return events.slice(0, 24).map((event, index) => ({
1966
+ event,
1967
+ score: Math.max(1, 24 - index),
1968
+ matchedQueries: [],
1969
+ }));
1970
+ }
1964
1971
  function eventStartMs(event) {
1965
1972
  return Date.parse(event.startAt);
1966
1973
  }
@@ -2140,6 +2147,7 @@ export const calendarAction = {
2140
2147
  const rawParams = options?.parameters;
2141
2148
  const params = rawParams ?? {};
2142
2149
  const intent = resolveCalendarIntentInput(params.intent, message);
2150
+ const currentMessageText = messageText(message).trim();
2143
2151
  const details = normalizeCalendarDetails(params.details);
2144
2152
  const planningTimeZone = resolveCalendarTimeZone(details);
2145
2153
  const llmPlan = await extractCalendarPlanWithLlm(runtime, message, state, intent, planningTimeZone);
@@ -2708,23 +2716,44 @@ export const calendarAction = {
2708
2716
  });
2709
2717
  if (subaction === "search_events") {
2710
2718
  let queriesForSearch = searchQueries;
2719
+ const recentConversation = (await collectRecentConversationTexts({
2720
+ runtime,
2721
+ message,
2722
+ state,
2723
+ limit: 8,
2724
+ })).join("\n");
2711
2725
  if (queriesForSearch.length === 0) {
2712
- const recentConversation = (await collectRecentConversationTexts({
2713
- runtime,
2714
- message,
2715
- state,
2716
- limit: 8,
2717
- })).join("\n");
2718
2726
  queriesForSearch = await recoverCalendarSearchQueriesWithLlm({
2719
2727
  runtime,
2720
- currentMessage: messageText(message).trim(),
2728
+ currentMessage: currentMessageText,
2721
2729
  intent,
2722
2730
  recentConversation,
2723
2731
  });
2724
2732
  if (queriesForSearch.length === 0) {
2733
+ const groundedFromFeed = await groundCalendarSearchMatchesWithLlm(runtime, state, intent, [], buildCalendarGroundingCandidates(feed.events));
2734
+ if (groundedFromFeed && groundedFromFeed.length > 0) {
2735
+ const groundedIdSet = new Set(groundedFromFeed);
2736
+ const filteredEvents = feed.events.filter((event) => groundedIdSet.has(event.id));
2737
+ const fallback = formatCalendarSearchResults(filteredEvents, currentMessageText || intent || "your request", label);
2738
+ return respond({
2739
+ success: true,
2740
+ text: await renderReply("search_results", fallback, {
2741
+ query: currentMessageText || intent,
2742
+ queries: [],
2743
+ events: filteredEvents,
2744
+ label,
2745
+ }),
2746
+ data: toActionData({
2747
+ ...feed,
2748
+ query: currentMessageText || intent,
2749
+ queries: [],
2750
+ events: filteredEvents,
2751
+ }),
2752
+ });
2753
+ }
2725
2754
  const recoveredReadPlan = await disambiguateCalendarReadPlanWithLlm({
2726
2755
  runtime,
2727
- currentMessage: messageText(message).trim(),
2756
+ currentMessage: currentMessageText,
2728
2757
  intent,
2729
2758
  recentConversation,
2730
2759
  candidateSubaction: "search_events",
@@ -2799,6 +2828,15 @@ export const calendarAction = {
2799
2828
  .map((candidate) => candidate.event);
2800
2829
  }
2801
2830
  }
2831
+ if (filteredEvents.length === 0 && feed.events.length > 0) {
2832
+ const groundedIds = await groundCalendarSearchMatchesWithLlm(runtime, state, intent, queriesForSearch, rankedEvents.length > 0
2833
+ ? rankedEvents.slice(0, 12)
2834
+ : buildCalendarGroundingCandidates(feed.events));
2835
+ if (groundedIds && groundedIds.length > 0) {
2836
+ const groundedIdSet = new Set(groundedIds);
2837
+ filteredEvents = feed.events.filter((event) => groundedIdSet.has(event.id));
2838
+ }
2839
+ }
2802
2840
  const fallback = formatCalendarSearchResults(filteredEvents, query, label);
2803
2841
  return respond({
2804
2842
  success: true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elizaos/app-core",
3
- "version": "2.0.0-alpha.202",
3
+ "version": "2.0.0-alpha.203",
4
4
  "description": "Shared application core for elizaOS white-label agent apps.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -477,7 +477,7 @@
477
477
  "@capacitor/keyboard": "8.0.3",
478
478
  "@capacitor/preferences": "^8.0.1",
479
479
  "@clack/prompts": "^1.0.0",
480
- "@elizaos/agent": "^2.0.0-alpha.202",
480
+ "@elizaos/agent": "^2.0.0-alpha.203",
481
481
  "@elizaos/app-companion": "^0.0.0",
482
482
  "@elizaos/app-elizamaker": "^0.0.0",
483
483
  "@elizaos/app-lifeops": "^0.0.0",
@@ -486,9 +486,9 @@
486
486
  "@elizaos/app-task-coordinator": "^0.0.0",
487
487
  "@elizaos/app-training": "^0.0.1",
488
488
  "@elizaos/app-vincent": "^0.0.0",
489
- "@elizaos/core": "^2.0.0-alpha.202",
490
- "@elizaos/shared": "^2.0.0-alpha.202",
491
- "@elizaos/ui": "^2.0.0-alpha.202",
489
+ "@elizaos/core": "^2.0.0-alpha.203",
490
+ "@elizaos/shared": "^2.0.0-alpha.203",
491
+ "@elizaos/ui": "^2.0.0-alpha.203",
492
492
  "@radix-ui/react-checkbox": "^1.3.3",
493
493
  "@radix-ui/react-dialog": "^1.1.15",
494
494
  "@radix-ui/react-dropdown-menu": "^2.1.16",
@@ -1 +1 @@
1
- {"version":3,"file":"chat-augmentation.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/chat-augmentation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,WAAW,EAGhB,mBAAmB,EACnB,KAAK,KAAK,EACV,KAAK,IAAI,EACV,MAAM,eAAe,CAAC;AAwBvB,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAC/C,iBAAiB,CAAC,EAAE,MAAM,GACzB,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAexC;AAMD,wBAAgB,eAAe,CAC7B,GAAG,EAAE,OAAO,EACZ,QAAQ,SAAsB,GAC7B,MAAM,CAIR;AA4ED,wBAAsB,gCAAgC,CACpD,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAwDjB;AAED,wBAAsB,yCAAyC,CAC7D,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,GAC9C,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAejD;AAED,wBAAsB,oCAAoC,CACxD,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,GAC9C,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CA6FjD;AAMD,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAoBD,eAAO,MAAM,+BAA+B,wCACL,CAAC;AAExC,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAyBjE;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,sBAAuB,SAAQ,KAAK;IACnD,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,mBAAmB,EAAE,GAAG,SAAS,GACxC;IACD,kFAAkF;IAClF,WAAW,EAAE,sBAAsB,EAAE,GAAG,SAAS,CAAC;IAClD,sEAAsE;IACtE,kBAAkB,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;CACzC,CAoBA;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/B,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,GAAG,SAAS,GAC/C,MAAM,GAAG,IAAI,CAQf;AAED,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAE5D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,MAAM,EAAE,mBAAmB,EAAE,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,IAAI,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GAAG;IAAE,WAAW,EAAE,aAAa,CAAC;IAAC,cAAc,EAAE,aAAa,CAAA;CAAE,CAgDhE"}
1
+ {"version":3,"file":"chat-augmentation.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/chat-augmentation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,WAAW,EAGhB,mBAAmB,EACnB,KAAK,KAAK,EAIV,KAAK,IAAI,EACV,MAAM,eAAe,CAAC;AAwBvB,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAC/C,iBAAiB,CAAC,EAAE,MAAM,GACzB,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAexC;AAMD,wBAAgB,eAAe,CAC7B,GAAG,EAAE,OAAO,EACZ,QAAQ,SAAsB,GAC7B,MAAM,CAIR;AA6ED,wBAAsB,gCAAgC,CACpD,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAwDjB;AAED,wBAAsB,yCAAyC,CAC7D,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,GAC9C,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAejD;AAED,wBAAsB,oCAAoC,CACxD,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,GAC9C,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAqLjD;AAMD,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAoBD,eAAO,MAAM,+BAA+B,wCACL,CAAC;AAExC,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAyBjE;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,sBAAuB,SAAQ,KAAK;IACnD,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,mBAAmB,EAAE,GAAG,SAAS,GACxC;IACD,kFAAkF;IAClF,WAAW,EAAE,sBAAsB,EAAE,GAAG,SAAS,CAAC;IAClD,sEAAsE;IACtE,kBAAkB,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;CACzC,CAoBA;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/B,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,GAAG,SAAS,GAC/C,MAAM,GAAG,IAAI,CAQf;AAED,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAE5D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,MAAM,EAAE,mBAAmB,EAAE,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,IAAI,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GAAG;IAAE,WAAW,EAAE,aAAa,CAAC;IAAC,cAAc,EAAE,aAAa,CAAA;CAAE,CAgDhE"}
@@ -5,7 +5,7 @@
5
5
  * knowledge context, wallet context, image attachments, and user message building.
6
6
  */
7
7
  import crypto from "node:crypto";
8
- import { ContentType, createMessageMemory, } from "@elizaos/core";
8
+ import { ContentType, createMessageMemory, ModelType, parseJSONObjectFromText, parseKeyValueXml, } from "@elizaos/core";
9
9
  import { normalizeCharacterLanguage } from "@elizaos/shared/onboarding-presets";
10
10
  import { detectRuntimeModel, resolveProviderFromModel } from "./agent-model.js";
11
11
  import { isCloudProvisionedContainer } from "./cloud-provisioning.js";
@@ -61,6 +61,7 @@ const MAX_EXPOSED_PLUGIN_NAMES = 12;
61
61
  const CHAT_KNOWLEDGE_THRESHOLD = 0.2;
62
62
  const CHAT_KNOWLEDGE_LIMIT = 4;
63
63
  const CHAT_KNOWLEDGE_SNIPPET_MAX_CHARS = 700;
64
+ const CHAT_KNOWLEDGE_RECOVERY_QUERY_LIMIT = 3;
64
65
  function formatActivePluginList(runtime) {
65
66
  const pluginNames = Array.isArray(runtime.plugins)
66
67
  ? runtime.plugins
@@ -193,20 +194,89 @@ export async function maybeAugmentChatMessageWithKnowledge(runtime, message) {
193
194
  },
194
195
  createdAt: Date.now(),
195
196
  };
196
- const loadMatches = async (scopeRoomId) => knowledge.service.getKnowledge(searchMessage, { roomId: scopeRoomId });
197
- let matches = await loadMatches(roomId);
198
- if (matches.length === 0 && roomId !== agentId) {
199
- matches = await loadMatches(agentId);
200
- }
201
- const relevantMatches = matches
202
- .filter((match) => {
197
+ const loadMatches = async (scopeRoomId, queryText) => knowledge.service.getKnowledge({
198
+ ...searchMessage,
199
+ content: {
200
+ ...searchMessage.content,
201
+ text: queryText,
202
+ },
203
+ }, { roomId: scopeRoomId });
204
+ const loadMatchesAcrossScopes = async (queryText) => {
205
+ let matches = await loadMatches(roomId, queryText);
206
+ if (matches.length === 0 && roomId !== agentId) {
207
+ matches = await loadMatches(agentId, queryText);
208
+ }
209
+ return matches;
210
+ };
211
+ const selectRelevantMatches = (matches) => matches.filter((match) => {
203
212
  const text = match.content?.text?.trim();
204
213
  return (typeof text === "string" &&
205
214
  text.length > 0 &&
206
215
  (match.similarity ?? 0) >= CHAT_KNOWLEDGE_THRESHOLD);
207
- })
216
+ });
217
+ const recoverKnowledgeSearchQueriesWithLlm = async () => {
218
+ const prompt = [
219
+ "Extract up to 3 short semantic-search queries for retrieving knowledge that answers the user's request.",
220
+ "Return only JSON with this shape:",
221
+ ' {"queries":["query one","query two"]}',
222
+ "",
223
+ "Rules:",
224
+ "- Preserve named entities, topics, codewords, and filenames when present.",
225
+ "- Remove meta instructions about reply format, such as 'answer with only the codeword'.",
226
+ "- If the user refers to 'the uploaded file' or a prior document without naming it, focus the queries on the fact being requested, not the phrase 'uploaded file'.",
227
+ "- Keep each query short and retrieval-oriented.",
228
+ "",
229
+ "Examples:",
230
+ ' "what is the qa codeword from the uploaded file? answer with only the codeword" -> {"queries":["qa codeword","codeword"]}',
231
+ ' "what is the deployment codeword? reply with only the codeword" -> {"queries":["deployment codeword","codeword"]}',
232
+ ' "which document mentions denver?" -> {"queries":["denver"]}',
233
+ "",
234
+ `User request: ${JSON.stringify(userPrompt)}`,
235
+ ].join("\n");
236
+ try {
237
+ const result = await runtime.useModel(ModelType.TEXT_LARGE, { prompt });
238
+ const raw = typeof result === "string" ? result : "";
239
+ const parsed = parseKeyValueXml(raw) ??
240
+ parseJSONObjectFromText(raw);
241
+ if (!parsed) {
242
+ return [];
243
+ }
244
+ const rawQueries = Array.isArray(parsed.queries)
245
+ ? parsed.queries
246
+ : typeof parsed.queries === "string"
247
+ ? parsed.queries.split(/\s*\|\|\s*|,|\n/)
248
+ : [];
249
+ return [
250
+ ...new Set(rawQueries
251
+ .filter((value) => typeof value === "string")
252
+ .map((value) => value.trim())
253
+ .filter((value) => value.length > 0)
254
+ .slice(0, CHAT_KNOWLEDGE_RECOVERY_QUERY_LIMIT)),
255
+ ];
256
+ }
257
+ catch (error) {
258
+ runtime.logger?.warn?.({
259
+ src: "api:chat-augmentation",
260
+ error: error instanceof Error ? error.message : String(error),
261
+ }, "Knowledge query recovery model call failed");
262
+ return [];
263
+ }
264
+ };
265
+ let relevantMatches = selectRelevantMatches(await loadMatchesAcrossScopes(userPrompt))
208
266
  .sort((left, right) => (right.similarity ?? 0) - (left.similarity ?? 0))
209
267
  .slice(0, CHAT_KNOWLEDGE_LIMIT);
268
+ if (relevantMatches.length === 0) {
269
+ const recoveredQueries = await recoverKnowledgeSearchQueriesWithLlm();
270
+ for (const query of recoveredQueries) {
271
+ const recoveredMatches = selectRelevantMatches(await loadMatchesAcrossScopes(query))
272
+ .sort((left, right) => (right.similarity ?? 0) - (left.similarity ?? 0))
273
+ .slice(0, CHAT_KNOWLEDGE_LIMIT);
274
+ if (recoveredMatches.length > 0) {
275
+ relevantMatches = recoveredMatches;
276
+ break;
277
+ }
278
+ }
279
+ }
210
280
  if (relevantMatches.length === 0)
211
281
  return message;
212
282
  const contextualKnowledge = relevantMatches
@@ -86,7 +86,7 @@ export declare function buildUserMessages(params: {
86
86
  type ConversationRoomTitleRef = Pick<ConversationMeta, "id" | "title" | "roomId">;
87
87
  export declare function persistConversationRoomTitle(runtime: Pick<AgentRuntime, "getRoom" | "adapter"> | null | undefined, conversation: ConversationRoomTitleRef): Promise<boolean>;
88
88
  export declare function maybeAugmentChatMessageWithWalletContext(runtime: AgentRuntime, message: ReturnType<typeof createMessageMemory>): ReturnType<typeof createMessageMemory>;
89
- export declare function maybeAugmentChatMessageWithKnowledge(_runtime: AgentRuntime, message: ReturnType<typeof createMessageMemory>): Promise<ReturnType<typeof createMessageMemory>>;
89
+ export declare function maybeAugmentChatMessageWithKnowledge(runtime: AgentRuntime, message: ReturnType<typeof createMessageMemory>): Promise<ReturnType<typeof createMessageMemory>>;
90
90
  export declare const WALLET_EXECUTION_INTENT_RE: RegExp;
91
91
  export declare const WALLET_PROGRESS_ONLY_RE: RegExp;
92
92
  export declare function isWalletActionRequiredIntent(prompt: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"server-helpers.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/server-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-helpers.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/server-helpers.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ import { normalizeOnboardingProviderId, resolveDeploymentTargetInConfig, resolve
14
14
  import { getAgentEventService, } from "../runtime/agent-event-service.js";
15
15
  import { isCoreManagerLike, isPluginManagerLike, } from "../services/plugin-manager-types.js";
16
16
  import { isPrivyWalletProvisioningEnabled } from "../services/privy-wallets.js";
17
+ import { maybeAugmentChatMessageWithKnowledge as augmentChatMessageWithKnowledge } from "./chat-augmentation.js";
17
18
  import { extractCompatTextContent } from "./compat-utils.js";
18
19
  import { sendJsonError } from "./http-helpers.js";
19
20
  import { getWalletAddresses } from "./wallet.js";
@@ -473,8 +474,8 @@ export function maybeAugmentChatMessageWithWalletContext(runtime, message) {
473
474
  },
474
475
  };
475
476
  }
476
- export async function maybeAugmentChatMessageWithKnowledge(_runtime, message) {
477
- return message;
477
+ export async function maybeAugmentChatMessageWithKnowledge(runtime, message) {
478
+ return augmentChatMessageWithKnowledge(runtime, message);
478
479
  }
479
480
  // ---------------------------------------------------------------------------
480
481
  // Wallet intent detection & replies