@ai.ntellect/core 0.1.83 → 0.1.85

Sign up to get free protection for your applications and to get access to all the features.
package/agent/index.ts CHANGED
@@ -8,9 +8,12 @@ import {
8
8
  AgentEvent,
9
9
  MemoryScope,
10
10
  MemoryType,
11
+ QueueResult,
12
+ TransformedQueueItem,
11
13
  User,
12
14
  } from "../types";
13
15
  import { QueueItemTransformer } from "../utils/queue-item-transformer";
16
+ import { ResultSanitizer } from "../utils/sanitize-results";
14
17
  import { ActionHandler } from "./handlers/ActionHandler";
15
18
 
16
19
  export class Agent {
@@ -24,6 +27,7 @@ export class Agent {
24
27
  private readonly stream: boolean;
25
28
  private readonly maxEvaluatorIteration: number;
26
29
  private evaluatorIteration = 0;
30
+ private accumulatedResults: QueueResult[] = [];
27
31
 
28
32
  constructor({
29
33
  user,
@@ -47,6 +51,7 @@ export class Agent {
47
51
  this.stream = stream;
48
52
  this.maxEvaluatorIteration = maxEvaluatorIteration;
49
53
  this.actionHandler = new ActionHandler();
54
+ this.accumulatedResults = [];
50
55
  }
51
56
 
52
57
  async process(
@@ -54,7 +59,9 @@ export class Agent {
54
59
  contextualizedPrompt: string,
55
60
  events: AgentEvent
56
61
  ): Promise<any> {
57
- let actions: ActionSchema[] = [];
62
+ let actions: ActionSchema[] | TransformedQueueItem[] | undefined =
63
+ undefined;
64
+ let isSimilar: boolean = false;
58
65
 
59
66
  if (this.cacheMemory) {
60
67
  const similarActions = await this.cacheMemory.findSimilarQueries(prompt, {
@@ -63,27 +70,29 @@ export class Agent {
63
70
  userId: this.user.id,
64
71
  scope: MemoryScope.GLOBAL,
65
72
  });
73
+
66
74
  if (similarActions.length > 0) {
67
- actions = similarActions[0].data;
68
- console.log("Similar actions found for query: ", prompt);
69
- console.dir(actions, { depth: null });
75
+ actions = QueueItemTransformer.transformActionsToQueueItems(
76
+ similarActions[0].data
77
+ );
78
+ isSimilar = true;
70
79
  }
71
80
  }
72
81
 
73
- if (!actions.length) {
74
- console.log("No similar actions found for query: ", prompt);
75
- console.log("Requesting orchestrator for actions");
82
+ if (!actions?.length && !isSimilar) {
83
+ console.log("No similar actions found in cache for query: ", prompt);
84
+ console.log("Requesting orchestrator for actions..");
76
85
  const request = await this.orchestrator.process(contextualizedPrompt);
77
86
  events.onMessage?.(request);
78
87
  actions = request.actions;
79
88
  }
80
89
 
81
- return actions.length > 0
90
+ return actions && actions.length > 0
82
91
  ? this.handleActions(
83
92
  {
84
93
  initialPrompt: prompt,
85
94
  contextualizedPrompt: contextualizedPrompt,
86
- actions: actions,
95
+ actions: actions as ActionSchema[],
87
96
  },
88
97
  events
89
98
  )
@@ -116,62 +125,80 @@ export class Agent {
116
125
  }
117
126
  );
118
127
 
128
+ this.accumulatedResults = [
129
+ ...this.accumulatedResults,
130
+ ...actionsResult.data,
131
+ ];
132
+
119
133
  if (this.evaluatorIteration >= this.maxEvaluatorIteration) {
120
- return this.handleActionResults({ ...actionsResult, initialPrompt });
134
+ return this.handleActionResults({
135
+ data: this.accumulatedResults,
136
+ initialPrompt,
137
+ });
121
138
  }
122
139
 
123
140
  const evaluator = new Evaluator(
124
141
  this.orchestrator.tools,
125
142
  this.persistentMemory
126
143
  );
144
+ console.log("Accumulated results:");
145
+ console.dir(this.accumulatedResults, { depth: null });
127
146
 
147
+ const sanitizedResults = ResultSanitizer.sanitize(this.accumulatedResults);
128
148
  const evaluation = await evaluator.process(
129
149
  initialPrompt,
130
150
  contextualizedPrompt,
131
- JSON.stringify(actionsResult.data)
151
+ sanitizedResults
132
152
  );
133
153
 
134
154
  events.onMessage?.(evaluation);
135
155
 
136
- await this.cacheMemory?.createMemory({
137
- content: initialPrompt,
138
- data: actions,
139
- scope: MemoryScope.GLOBAL,
140
- type: MemoryType.ACTION,
141
- });
142
-
143
- if (evaluation.nextActions.length > 0) {
156
+ if (evaluation.isNextActionNeeded) {
144
157
  this.evaluatorIteration++;
145
158
  return this.handleActions(
146
159
  {
147
160
  initialPrompt: contextualizedPrompt,
148
161
  contextualizedPrompt: initialPrompt,
149
- actions: evaluation.nextActions,
162
+ actions: evaluation.nextActionsNeeded,
150
163
  },
151
164
  events
152
165
  );
153
166
  }
154
167
 
155
- if (!this.actionHandler.hasNonPrepareActions(actionsResult.data)) {
168
+ if (!this.actionHandler.hasNonPrepareActions(this.accumulatedResults)) {
156
169
  return {
157
- data: actionsResult.data,
170
+ data: this.accumulatedResults,
158
171
  initialPrompt,
159
172
  };
160
173
  }
161
174
 
162
- return this.handleActionResults({ ...actionsResult, initialPrompt });
175
+ return this.handleActionResults({
176
+ data: this.accumulatedResults,
177
+ initialPrompt,
178
+ });
163
179
  }
164
180
 
165
181
  private async handleActionResults(actionsResult: {
166
- data: any;
182
+ data: QueueResult[];
167
183
  initialPrompt: string;
168
184
  }) {
169
185
  const synthesizer = new Synthesizer();
186
+ const sanitizedResults = ResultSanitizer.sanitize(this.accumulatedResults);
170
187
  const summaryData = JSON.stringify({
171
- result: actionsResult.data,
188
+ result: sanitizedResults,
172
189
  initialPrompt: actionsResult.initialPrompt,
173
190
  });
174
191
 
192
+ this.accumulatedResults = [];
193
+ this.evaluatorIteration = 0;
194
+
195
+ await this.cacheMemory?.createMemory({
196
+ content: actionsResult.initialPrompt,
197
+ data: actionsResult.data,
198
+ scope: MemoryScope.GLOBAL,
199
+ type: MemoryType.ACTION,
200
+ });
201
+
175
202
  return this.stream
176
203
  ? (await synthesizer.streamProcess(summaryData)).toDataStreamResponse()
177
204
  : await synthesizer.process(summaryData);
@@ -13,6 +13,7 @@ export declare class Agent {
13
13
  private readonly stream;
14
14
  private readonly maxEvaluatorIteration;
15
15
  private evaluatorIteration;
16
+ private accumulatedResults;
16
17
  constructor({ user, orchestrator, persistentMemory, cacheMemory, stream, maxEvaluatorIteration, }: {
17
18
  user: User;
18
19
  orchestrator: Orchestrator;
@@ -5,12 +5,14 @@ const evaluator_1 = require("../llm/evaluator");
5
5
  const synthesizer_1 = require("../llm/synthesizer");
6
6
  const types_1 = require("../types");
7
7
  const queue_item_transformer_1 = require("../utils/queue-item-transformer");
8
+ const sanitize_results_1 = require("../utils/sanitize-results");
8
9
  const ActionHandler_1 = require("./handlers/ActionHandler");
9
10
  class Agent {
10
11
  constructor({ user, orchestrator, persistentMemory, cacheMemory, stream, maxEvaluatorIteration = 1, }) {
11
12
  this.SIMILARITY_THRESHOLD = 95;
12
13
  this.MAX_RESULTS = 1;
13
14
  this.evaluatorIteration = 0;
15
+ this.accumulatedResults = [];
14
16
  this.user = user;
15
17
  this.orchestrator = orchestrator;
16
18
  this.cacheMemory = cacheMemory;
@@ -18,9 +20,11 @@ class Agent {
18
20
  this.stream = stream;
19
21
  this.maxEvaluatorIteration = maxEvaluatorIteration;
20
22
  this.actionHandler = new ActionHandler_1.ActionHandler();
23
+ this.accumulatedResults = [];
21
24
  }
22
25
  async process(prompt, contextualizedPrompt, events) {
23
- let actions = [];
26
+ let actions = undefined;
27
+ let isSimilar = false;
24
28
  if (this.cacheMemory) {
25
29
  const similarActions = await this.cacheMemory.findSimilarQueries(prompt, {
26
30
  similarityThreshold: this.SIMILARITY_THRESHOLD,
@@ -29,19 +33,18 @@ class Agent {
29
33
  scope: types_1.MemoryScope.GLOBAL,
30
34
  });
31
35
  if (similarActions.length > 0) {
32
- actions = similarActions[0].data;
33
- console.log("Similar actions found for query: ", prompt);
34
- console.dir(actions, { depth: null });
36
+ actions = queue_item_transformer_1.QueueItemTransformer.transformActionsToQueueItems(similarActions[0].data);
37
+ isSimilar = true;
35
38
  }
36
39
  }
37
- if (!actions.length) {
38
- console.log("No similar actions found for query: ", prompt);
39
- console.log("Requesting orchestrator for actions");
40
+ if (!actions?.length && !isSimilar) {
41
+ console.log("No similar actions found in cache for query: ", prompt);
42
+ console.log("Requesting orchestrator for actions..");
40
43
  const request = await this.orchestrator.process(contextualizedPrompt);
41
44
  events.onMessage?.(request);
42
45
  actions = request.actions;
43
46
  }
44
- return actions.length > 0
47
+ return actions && actions.length > 0
45
48
  ? this.handleActions({
46
49
  initialPrompt: prompt,
47
50
  contextualizedPrompt: contextualizedPrompt,
@@ -58,40 +61,56 @@ class Agent {
58
61
  onQueueComplete: events.onQueueComplete,
59
62
  onConfirmationRequired: events.onConfirmationRequired,
60
63
  });
64
+ this.accumulatedResults = [
65
+ ...this.accumulatedResults,
66
+ ...actionsResult.data,
67
+ ];
61
68
  if (this.evaluatorIteration >= this.maxEvaluatorIteration) {
62
- return this.handleActionResults({ ...actionsResult, initialPrompt });
69
+ return this.handleActionResults({
70
+ data: this.accumulatedResults,
71
+ initialPrompt,
72
+ });
63
73
  }
64
74
  const evaluator = new evaluator_1.Evaluator(this.orchestrator.tools, this.persistentMemory);
65
- const evaluation = await evaluator.process(initialPrompt, contextualizedPrompt, JSON.stringify(actionsResult.data));
75
+ console.log("Accumulated results:");
76
+ console.dir(this.accumulatedResults, { depth: null });
77
+ const sanitizedResults = sanitize_results_1.ResultSanitizer.sanitize(this.accumulatedResults);
78
+ const evaluation = await evaluator.process(initialPrompt, contextualizedPrompt, sanitizedResults);
66
79
  events.onMessage?.(evaluation);
67
- await this.cacheMemory?.createMemory({
68
- content: initialPrompt,
69
- data: actions,
70
- scope: types_1.MemoryScope.GLOBAL,
71
- type: types_1.MemoryType.ACTION,
72
- });
73
- if (evaluation.nextActions.length > 0) {
80
+ if (evaluation.isNextActionNeeded) {
74
81
  this.evaluatorIteration++;
75
82
  return this.handleActions({
76
83
  initialPrompt: contextualizedPrompt,
77
84
  contextualizedPrompt: initialPrompt,
78
- actions: evaluation.nextActions,
85
+ actions: evaluation.nextActionsNeeded,
79
86
  }, events);
80
87
  }
81
- if (!this.actionHandler.hasNonPrepareActions(actionsResult.data)) {
88
+ if (!this.actionHandler.hasNonPrepareActions(this.accumulatedResults)) {
82
89
  return {
83
- data: actionsResult.data,
90
+ data: this.accumulatedResults,
84
91
  initialPrompt,
85
92
  };
86
93
  }
87
- return this.handleActionResults({ ...actionsResult, initialPrompt });
94
+ return this.handleActionResults({
95
+ data: this.accumulatedResults,
96
+ initialPrompt,
97
+ });
88
98
  }
89
99
  async handleActionResults(actionsResult) {
90
100
  const synthesizer = new synthesizer_1.Synthesizer();
101
+ const sanitizedResults = sanitize_results_1.ResultSanitizer.sanitize(this.accumulatedResults);
91
102
  const summaryData = JSON.stringify({
92
- result: actionsResult.data,
103
+ result: sanitizedResults,
93
104
  initialPrompt: actionsResult.initialPrompt,
94
105
  });
106
+ this.accumulatedResults = [];
107
+ this.evaluatorIteration = 0;
108
+ await this.cacheMemory?.createMemory({
109
+ content: actionsResult.initialPrompt,
110
+ data: actionsResult.data,
111
+ scope: types_1.MemoryScope.GLOBAL,
112
+ type: types_1.MemoryType.ACTION,
113
+ });
95
114
  return this.stream
96
115
  ? (await synthesizer.streamProcess(summaryData)).toDataStreamResponse()
97
116
  : await synthesizer.process(summaryData);
@@ -9,7 +9,7 @@ exports.evaluatorContext = {
9
9
  "Verify if all required actions were executed successfully",
10
10
  "Check if the results match the initial goal",
11
11
  "Identify any missing or incomplete information",
12
- "Examples of relavant information: link symbol to token address, name to wallet, etc.",
12
+ "Extra and relevant information they don't have be stored in the memory: link symbol to token address, name to wallet, etc.",
13
13
  ],
14
14
  warnings: [
15
15
  "NEVER modify the results directly",
@@ -31,10 +31,8 @@ exports.evaluatorContext = {
31
31
  1. Success status with explanation (no action needed)
32
32
  2. Next actions needed (if any)
33
33
  3. Why you are doing the next actions or why you are not doing them
34
- 4. Extract relevant information to remember. No need to remember specific numbers.
35
- 5. If there are no important results, let importantToRemembers be empty. No need to say something like "No relevant information found".
36
- 6. For each facts, generate a hypothetical query to search in the persistent memory.
37
- 7. For each facts, generate a memoryType (You have 3 memory types: episodic, semantic, procedural)
34
+ 4. Extract relevant information to remember
35
+ 5. For each facts, generate a memoryType (3 memory types: episodic, semantic, procedural)
38
36
  `;
39
37
  },
40
38
  };
@@ -17,35 +17,31 @@ class Evaluator {
17
17
  const response = await (0, ai_1.generateObject)({
18
18
  model: this.model,
19
19
  schema: zod_1.z.object({
20
- nextActions: zod_1.z.array(zod_1.z.object({
21
- name: zod_1.z.string(),
22
- parameters: zod_1.z.object({
23
- name: zod_1.z.string(),
24
- value: zod_1.z.string(),
25
- }),
26
- })),
27
- why: zod_1.z.string(),
28
- isImportantToRemember: zod_1.z.boolean(),
29
- importantToRemembers: zod_1.z.array(zod_1.z.object({
20
+ isRemindNeeded: zod_1.z.boolean(),
21
+ extraInformationsToRemember: zod_1.z.array(zod_1.z.object({
30
22
  memoryType: zod_1.z.string(),
31
- hypotheticalQuery: zod_1.z.string(),
32
- result: zod_1.z.string(),
23
+ content: zod_1.z.string(),
24
+ data: zod_1.z.string(),
33
25
  })),
26
+ response: zod_1.z.string(),
27
+ isNextActionNeeded: zod_1.z.boolean(),
28
+ nextActionsNeeded: types_1.ActionSchema,
29
+ why: zod_1.z.string(),
34
30
  }),
35
31
  prompt: prompt,
36
32
  system: context_1.evaluatorContext.compose(goal, results, this.tools),
37
33
  });
38
34
  const validatedResponse = {
39
35
  ...response.object,
40
- nextActions: response.object.nextActions.map((action) => ({
36
+ nextActions: response.object.nextActionsNeeded.map((action) => ({
41
37
  ...action,
42
38
  parameters: action.parameters || {},
43
39
  })),
44
40
  };
45
- if (validatedResponse.isImportantToRemember) {
46
- for (const item of validatedResponse.importantToRemembers) {
41
+ if (validatedResponse.isRemindNeeded) {
42
+ for (const item of validatedResponse.extraInformationsToRemember) {
47
43
  // Check if the item is already in the memory
48
- const memories = await this.memory.searchSimilarQueries(item.hypotheticalQuery, {
44
+ const memories = await this.memory.searchSimilarQueries(item.content, {
49
45
  similarityThreshold: 95,
50
46
  });
51
47
  if (memories.length > 0) {
@@ -56,14 +52,14 @@ class Evaluator {
56
52
  }
57
53
  if (memories.length === 0) {
58
54
  console.log("Adding to memory", {
59
- query: item.hypotheticalQuery,
60
- data: item.result,
55
+ query: item.content,
56
+ data: item.data,
61
57
  });
62
- await this.memory.storeMemory({
58
+ await this.memory.createMemory({
63
59
  id: crypto.randomUUID(),
64
60
  purpose: item.memoryType,
65
- query: item.hypotheticalQuery,
66
- data: item.result,
61
+ query: item.content,
62
+ data: item.data,
67
63
  scope: types_1.MemoryScope.GLOBAL,
68
64
  createdAt: new Date(),
69
65
  });
@@ -79,20 +75,20 @@ class Evaluator {
79
75
  console.log("Evaluator error");
80
76
  console.dir(error.value, { depth: null });
81
77
  console.error(error.message);
82
- if (error.value.importantToRemembers.length > 0) {
83
- for (const item of error.value.importantToRemembers) {
78
+ if (error.value.extraInformationsToRemember.length > 0) {
79
+ for (const item of error.value.extraInformationsToRemember) {
84
80
  // Check if the item is already in the memory
85
- const memories = await this.memory.searchSimilarQueries(item.hypotheticalQuery);
81
+ const memories = await this.memory.searchSimilarQueries(item.content);
86
82
  if (memories.length === 0) {
87
83
  console.log("Adding to memory", {
88
- query: item.hypotheticalQuery,
89
- data: item.result,
84
+ query: item.content,
85
+ data: item.data,
90
86
  });
91
- await this.memory.storeMemory({
87
+ await this.memory.createMemory({
92
88
  id: crypto.randomUUID(),
93
89
  purpose: "importantToRemember",
94
- query: item.hypotheticalQuery,
95
- data: item.result,
90
+ query: item.content,
91
+ data: item.data,
96
92
  scope: types_1.MemoryScope.USER,
97
93
  createdAt: new Date(),
98
94
  });
@@ -4,6 +4,7 @@ exports.Orchestrator = void 0;
4
4
  const openai_1 = require("@ai-sdk/openai");
5
5
  const ai_1 = require("ai");
6
6
  const zod_1 = require("zod");
7
+ const types_1 = require("../../types");
7
8
  const context_1 = require("./context");
8
9
  class Orchestrator {
9
10
  constructor(tools, memory) {
@@ -18,23 +19,25 @@ class Orchestrator {
18
19
  query: zod_1.z.string(),
19
20
  }),
20
21
  execute: async ({ query }) => {
21
- const memories = await this.memory.searchSimilarQueries(query);
22
+ const memories = await this.memory.searchSimilarQueries(query, {
23
+ similarityThreshold: 95,
24
+ });
22
25
  return memories;
23
26
  },
24
27
  },
25
28
  {
26
29
  name: "save_memory",
27
- description: "Save a query in the internal knowledge base",
30
+ description: "Save relevant information in the internal knowledge base",
28
31
  parameters: zod_1.z.object({
29
32
  query: zod_1.z.string(),
30
- purpose: zod_1.z.string(),
33
+ memoryType: zod_1.z.string(),
31
34
  data: zod_1.z.any(),
32
- scope: zod_1.z.enum(["GLOBAL", "USER"]),
33
- userId: zod_1.z.string().optional(),
35
+ scope: zod_1.z.string().default("GLOBAL").describe("GLOBAL or USER"),
36
+ userId: zod_1.z.string(),
34
37
  whyStored: zod_1.z.string(),
35
38
  }),
36
39
  execute: async ({ query, purpose, data, scope, userId, }) => {
37
- const memories = await this.memory.storeMemory({
40
+ const memories = await this.memory.createMemory({
38
41
  query,
39
42
  purpose,
40
43
  data,
@@ -53,13 +56,7 @@ class Orchestrator {
53
56
  const response = await (0, ai_1.generateObject)({
54
57
  model: this.model,
55
58
  schema: zod_1.z.object({
56
- actions: zod_1.z.array(zod_1.z.object({
57
- name: zod_1.z.string(),
58
- parameters: zod_1.z.array(zod_1.z.object({
59
- name: zod_1.z.string(),
60
- value: zod_1.z.string(),
61
- })),
62
- })),
59
+ actions: types_1.ActionSchema,
63
60
  answer: zod_1.z.string(),
64
61
  }),
65
62
  prompt: prompt,
@@ -5,11 +5,7 @@ export declare class Synthesizer implements BaseLLM {
5
5
  process(prompt: string, onFinish?: (event: any) => void): Promise<{
6
6
  actions: {
7
7
  name: string;
8
- relevantResult: string;
9
- explain: {
10
- how: string;
11
- why: string;
12
- };
8
+ reasoning: string;
13
9
  }[];
14
10
  response: string;
15
11
  } | StreamTextResult<Record<string, any>>>;
@@ -16,11 +16,7 @@ class Synthesizer {
16
16
  schema: zod_1.z.object({
17
17
  actions: zod_1.z.array(zod_1.z.object({
18
18
  name: zod_1.z.string(),
19
- relevantResult: zod_1.z.string(),
20
- explain: zod_1.z.object({
21
- how: zod_1.z.string(),
22
- why: zod_1.z.string(),
23
- }),
19
+ reasoning: zod_1.z.string(),
24
20
  })),
25
21
  response: zod_1.z.string(),
26
22
  }),
@@ -17,6 +17,6 @@ export declare class CacheMemory {
17
17
  }[]>;
18
18
  getAllMemories(scope?: MemoryScope, userId?: string): Promise<CacheMemoryType[]>;
19
19
  private getMemoriesFromKeys;
20
- createMemory(input: CreateMemoryInput): Promise<string | undefined>;
20
+ createMemory(input: CreateMemoryInput): Promise<CacheMemoryType | undefined>;
21
21
  private createSingleMemory;
22
22
  }
@@ -4,7 +4,6 @@ exports.CacheMemory = void 0;
4
4
  const openai_1 = require("@ai-sdk/openai");
5
5
  const ai_1 = require("ai");
6
6
  const redis_1 = require("redis");
7
- const zod_1 = require("zod");
8
7
  const types_1 = require("../types");
9
8
  class CacheMemory {
10
9
  constructor(options = {}) {
@@ -60,13 +59,10 @@ class CacheMemory {
60
59
  .map((memory) => {
61
60
  const similarity = (0, ai_1.cosineSimilarity)(embedding, memory.embedding);
62
61
  const similarityPercentage = (similarity + 1) * 50; // Conversion en pourcentage
63
- console.log(`\n📊 Query "${memory.query}":
64
- - Similarity: ${similarityPercentage.toFixed(2)}%`);
65
62
  return {
66
63
  data: memory.data,
67
64
  query: memory.query,
68
65
  similarityPercentage,
69
- // Optionnel : ajouter des métadonnées utiles
70
66
  memoryId: memory.id,
71
67
  };
72
68
  })
@@ -84,7 +80,6 @@ class CacheMemory {
84
80
  else {
85
81
  console.log("No matches found");
86
82
  }
87
- console.dir({ results });
88
83
  return results;
89
84
  }
90
85
  async getAllMemories(scope, userId) {
@@ -129,22 +124,7 @@ class CacheMemory {
129
124
  return;
130
125
  }
131
126
  console.log("No similar memory found");
132
- // Générer les variations via GPT-4
133
- console.log("Generating variations...");
134
- const variations = await (0, ai_1.generateObject)({
135
- model: (0, openai_1.openai)("gpt-4"),
136
- schema: zod_1.z.object({
137
- request: zod_1.z.string().describe("The request to be performed"),
138
- queries: zod_1.z.array(zod_1.z.object({ text: zod_1.z.string() })),
139
- }),
140
- prompt: `For this input: "${input.content}"
141
- Generate similar way to ask the same question.
142
- Action results: ${JSON.stringify(input.data)}
143
- - Keep variations natural and human-like
144
- - Add 3-5 variations`,
145
- });
146
- console.log("Variations generated:", variations.object.queries);
147
- await this.createSingleMemory({
127
+ const memory = await this.createSingleMemory({
148
128
  id: crypto.randomUUID(),
149
129
  content: input.content,
150
130
  type: input.type,
@@ -152,20 +132,7 @@ class CacheMemory {
152
132
  userId: input.userId,
153
133
  scope: input.scope,
154
134
  });
155
- const variationPromises = variations.object.queries.map(async (variation) => {
156
- if (variation.text !== input.content) {
157
- await this.createSingleMemory({
158
- id: crypto.randomUUID(),
159
- content: variation.text,
160
- type: input.type,
161
- data: input.data,
162
- userId: input.userId,
163
- scope: input.scope,
164
- });
165
- }
166
- });
167
- await Promise.all(variationPromises);
168
- return variations.object.request;
135
+ return memory;
169
136
  }
170
137
  async createSingleMemory(params) {
171
138
  console.log("Creating new cache memory...", params.content);
@@ -41,7 +41,7 @@ export declare class PersistentMemory {
41
41
  /**
42
42
  * Store a memory in the database
43
43
  */
44
- storeMemory(memory: Memory): Promise<unknown>;
44
+ createMemory(memory: Memory): Promise<unknown>;
45
45
  /**
46
46
  * Find best matching memories
47
47
  */
@@ -101,7 +101,7 @@ class PersistentMemory {
101
101
  /**
102
102
  * Store a memory in the database
103
103
  */
104
- async storeMemory(memory) {
104
+ async createMemory(memory) {
105
105
  const indexName = this._getIndexName(memory.scope, memory.userId);
106
106
  await this._getOrCreateIndex(indexName);
107
107
  const chunks = await this.processContent(memory.query);
@@ -114,7 +114,7 @@ class PersistentMemory {
114
114
  method: "POST",
115
115
  body: JSON.stringify([document]),
116
116
  });
117
- console.log("Stored memory response:", response);
117
+ console.log("Stored persistent memory response:", response);
118
118
  return response;
119
119
  }
120
120
  /**
@@ -182,7 +182,7 @@ class PersistentMemory {
182
182
  .sort((a, b) => b.similarityPercentage - a.similarityPercentage);
183
183
  // Log results
184
184
  if (results.length > 0) {
185
- console.log("\n✨ Similar queries found:");
185
+ console.log("\n✨ Similar queries found in persistent memory:");
186
186
  results.forEach((match) => {
187
187
  console.log(`- ${match.query} : ${match.similarityPercentage.toFixed(2)}% (${match.purpose})`);
188
188
  console.log(` Matching content: "${match.chunk}"`);
package/dist/test.d.ts CHANGED
@@ -1,4 +1,32 @@
1
1
  import { z } from "zod";
2
+ export declare const fetchMarkPrice: {
3
+ name: string;
4
+ description: string;
5
+ parameters: z.ZodObject<{
6
+ symbol: z.ZodString;
7
+ params: z.ZodObject<{
8
+ subType: z.ZodString;
9
+ }, "strip", z.ZodTypeAny, {
10
+ subType: string;
11
+ }, {
12
+ subType: string;
13
+ }>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ symbol: string;
16
+ params: {
17
+ subType: string;
18
+ };
19
+ }, {
20
+ symbol: string;
21
+ params: {
22
+ subType: string;
23
+ };
24
+ }>;
25
+ execute: ({ symbol, params }: {
26
+ symbol: string;
27
+ params: any;
28
+ }) => Promise<import("ccxt").Ticker>;
29
+ };
2
30
  export declare const getChainsTVL: {
3
31
  name: string;
4
32
  description: string;