@ai.ntellect/core 0.1.83 → 0.1.85

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/test.js CHANGED
@@ -3,13 +3,41 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getRssNews = exports.getChainsTVL = void 0;
6
+ exports.getRssNews = exports.getChainsTVL = exports.fetchMarkPrice = void 0;
7
+ const ccxt_1 = __importDefault(require("ccxt"));
7
8
  const rss_parser_1 = __importDefault(require("rss-parser"));
8
9
  const zod_1 = require("zod");
9
10
  const agent_1 = require("./agent");
10
11
  const orchestrator_1 = require("./llm/orchestrator");
11
12
  const cache_1 = require("./memory/cache");
12
13
  const persistent_1 = require("./memory/persistent");
14
+ exports.fetchMarkPrice = {
15
+ name: "fetch-mark-price",
16
+ description: "Fetches mark price for the market",
17
+ parameters: zod_1.z.object({
18
+ symbol: zod_1.z
19
+ .string()
20
+ .describe("Unified symbol of the market to fetch the ticker for (default: BTC/USDT)"),
21
+ params: zod_1.z.object({
22
+ subType: zod_1.z
23
+ .string()
24
+ .describe("Type of funding rate: 'linear' or 'inverse'"),
25
+ }),
26
+ }),
27
+ execute: async ({ symbol, params }) => {
28
+ try {
29
+ const binance = new ccxt_1.default.binance({});
30
+ // Fetch mark price from the Binance API
31
+ const markPrice = await binance.fetchMarkPrice(symbol, params);
32
+ console.log("Mark price fetched:", markPrice);
33
+ return markPrice;
34
+ }
35
+ catch (error) {
36
+ console.error("Error fetching mark price:", error);
37
+ throw error;
38
+ }
39
+ },
40
+ };
13
41
  exports.getChainsTVL = {
14
42
  name: "get_chains_tvl",
15
43
  description: "Get current TVL (Total Value Locked) of all chains from DeFiLlama",
@@ -53,7 +81,11 @@ exports.getChainsTVL = {
53
81
  }
54
82
  },
55
83
  };
56
- const RSS_FEEDS = ["https://www.investing.com/rss/news_301.rss"];
84
+ const RSS_FEEDS = [
85
+ "https://www.investing.com/rss/news_301.rss",
86
+ "https://cointelegraph.com/rss/category/analysis",
87
+ "https://cointelegraph.com/rss/category/top-10-cryptocurrencies",
88
+ ];
57
89
  const parser = new rss_parser_1.default();
58
90
  function stripHtmlTags(content) {
59
91
  if (!content)
@@ -109,7 +141,7 @@ exports.getRssNews = {
109
141
  host: "http://localhost:7700",
110
142
  apiKey: "aSampleMasterKey",
111
143
  });
112
- const orchestrator = new orchestrator_1.Orchestrator([exports.getRssNews, exports.getChainsTVL], memory);
144
+ const orchestrator = new orchestrator_1.Orchestrator([exports.getRssNews, exports.getChainsTVL, exports.fetchMarkPrice], memory);
113
145
  const agent = new agent_1.Agent({
114
146
  user: {
115
147
  id: "1",
@@ -120,7 +152,7 @@ exports.getRssNews = {
120
152
  stream: false,
121
153
  maxEvaluatorIteration: 1,
122
154
  });
123
- const prompt = "fais moi une analyse de xrp";
155
+ const prompt = "analyse le ai16z";
124
156
  const context = prompt;
125
157
  // const save = await cacheMemory.createMemory({
126
158
  // content: prompt,
package/dist/types.d.ts CHANGED
@@ -101,7 +101,7 @@ export interface CacheMemoryOptions {
101
101
  export interface CreateMemoryInput {
102
102
  content: any;
103
103
  type: MemoryType;
104
- data: ActionSchema[];
104
+ data: QueueResult[];
105
105
  userId?: string;
106
106
  scope?: MemoryScope;
107
107
  }
@@ -135,6 +135,31 @@ export interface Memory {
135
135
  createdAt: Date;
136
136
  chunks?: MemoryChunk[];
137
137
  }
138
+ export declare const ActionSchema: z.ZodArray<z.ZodObject<{
139
+ name: z.ZodString;
140
+ parameters: z.ZodArray<z.ZodObject<{
141
+ name: z.ZodString;
142
+ value: z.ZodString;
143
+ }, "strip", z.ZodTypeAny, {
144
+ value: string;
145
+ name: string;
146
+ }, {
147
+ value: string;
148
+ name: string;
149
+ }>, "many">;
150
+ }, "strip", z.ZodTypeAny, {
151
+ name: string;
152
+ parameters: {
153
+ value: string;
154
+ name: string;
155
+ }[];
156
+ }, {
157
+ name: string;
158
+ parameters: {
159
+ value: string;
160
+ name: string;
161
+ }[];
162
+ }>, "many">;
138
163
  export declare enum MemoryType {
139
164
  ACTION = "action",
140
165
  CONVERSATION = "conversation",
package/dist/types.js CHANGED
@@ -1,6 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MemoryScope = exports.MemoryType = void 0;
3
+ exports.MemoryScope = exports.MemoryType = exports.ActionSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.ActionSchema = zod_1.z.array(zod_1.z.object({
6
+ name: zod_1.z.string(),
7
+ parameters: zod_1.z.array(zod_1.z.object({
8
+ name: zod_1.z.string(),
9
+ value: zod_1.z.string(),
10
+ })),
11
+ }));
4
12
  var MemoryType;
5
13
  (function (MemoryType) {
6
14
  MemoryType["ACTION"] = "action";
@@ -1,7 +1,7 @@
1
- import { ActionData, TransformedQueueItem } from "../types";
1
+ import { ActionData, QueueResult, TransformedQueueItem } from "../types";
2
2
  export declare class QueueItemTransformer {
3
3
  static transformActionToQueueItem(action: ActionData): TransformedQueueItem;
4
- static transformFromSimilarActions(similarActions: any[]): TransformedQueueItem[] | undefined;
4
+ static transformFromSimilarActions(similarActions: QueueResult[]): TransformedQueueItem[] | undefined;
5
5
  private static transformParameters;
6
6
  static transformActionsToQueueItems(actions: ActionData[] | undefined): TransformedQueueItem[] | undefined;
7
7
  }
@@ -4,22 +4,21 @@ exports.QueueItemTransformer = void 0;
4
4
  class QueueItemTransformer {
5
5
  static transformActionToQueueItem(action) {
6
6
  return {
7
- name: action.name || '',
8
- parameters: QueueItemTransformer.transformParameters(action.parameters || {})
7
+ name: action.name || "",
8
+ parameters: QueueItemTransformer.transformParameters(action.parameters || {}),
9
9
  };
10
10
  }
11
11
  static transformFromSimilarActions(similarActions) {
12
- const firstMatch = similarActions?.[0]?.data;
13
- return firstMatch?.map((action) => QueueItemTransformer.transformActionToQueueItem(action));
12
+ return similarActions?.map((action) => QueueItemTransformer.transformActionToQueueItem(action));
14
13
  }
15
14
  static transformParameters(parameters) {
16
15
  return Object.entries(parameters).map(([name, value]) => ({
17
16
  name,
18
- value: typeof value === 'object' ? JSON.stringify(value) : String(value)
17
+ value: typeof value === "object" ? JSON.stringify(value) : String(value),
19
18
  }));
20
19
  }
21
20
  static transformActionsToQueueItems(actions) {
22
- return actions?.map(action => this.transformActionToQueueItem(action));
21
+ return actions?.map((action) => this.transformActionToQueueItem(action));
23
22
  }
24
23
  }
25
24
  exports.QueueItemTransformer = QueueItemTransformer;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Utility class to sanitize JSON results for evaluation
3
+ */
4
+ export declare class ResultSanitizer {
5
+ /**
6
+ * Sanitizes JSON results by removing special characters and formatting
7
+ * @param results - The results to sanitize
8
+ * @returns Sanitized string
9
+ */
10
+ static sanitize(results: any): string;
11
+ /**
12
+ * Formats numbers to a consistent format
13
+ * @param value - The number to format
14
+ * @returns Formatted number string
15
+ */
16
+ private static formatNumber;
17
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResultSanitizer = void 0;
4
+ /**
5
+ * Utility class to sanitize JSON results for evaluation
6
+ */
7
+ class ResultSanitizer {
8
+ /**
9
+ * Sanitizes JSON results by removing special characters and formatting
10
+ * @param results - The results to sanitize
11
+ * @returns Sanitized string
12
+ */
13
+ static sanitize(results) {
14
+ if (!results)
15
+ return "";
16
+ try {
17
+ const jsonString = JSON.stringify(results);
18
+ return (jsonString
19
+ // Basic cleanup
20
+ .replace(/\\n/g, " ") // Remove newlines
21
+ .replace(/\s+/g, " ") // Remove extra spaces
22
+ .replace(/\\"/g, '"') // Fix escaped quotes
23
+ .replace(/\\+/g, "") // Remove extra backslashes
24
+ // Remove unnecessary quotes around objects and arrays
25
+ .replace(/"\[/g, "[") // Remove quotes around arrays start
26
+ .replace(/\]"/g, "]") // Remove quotes around arrays end
27
+ .replace(/"{/g, "{") // Remove quotes around objects start
28
+ .replace(/}"/g, "}") // Remove quotes around objects end
29
+ // Clean up numbers and values
30
+ .replace(/"(\d+\.?\d*)"/g, "$1") // Remove quotes around numbers
31
+ .replace(/:\s*"(true|false|null)"/g, ": $1") // Remove quotes around booleans and null
32
+ // Clean up URLs and content
33
+ .replace(/(?<=content":")([^"]+)(?=")/g, (match) => match.trim().replace(/\s+/g, " ") // Clean content spacing
34
+ )
35
+ .replace(/(?<=link":")([^"]+)(?=")/g, (match) => match.replace(/&amp;/g, "&") // Fix URL encodings
36
+ )
37
+ // Final cleanup
38
+ .replace(/,\s*([}\]])/g, "$1") // Remove trailing commas
39
+ .replace(/:\s+/g, ":") // Remove spaces after colons
40
+ .replace(/,\s+/g, ",") // Remove spaces after commas
41
+ .trim()); // Remove leading/trailing whitespace
42
+ }
43
+ catch (error) {
44
+ console.error("Error sanitizing results:", error);
45
+ return String(results);
46
+ }
47
+ }
48
+ /**
49
+ * Formats numbers to a consistent format
50
+ * @param value - The number to format
51
+ * @returns Formatted number string
52
+ */
53
+ static formatNumber(value) {
54
+ return value.toLocaleString("en-US", {
55
+ maximumFractionDigits: 2,
56
+ useGrouping: false,
57
+ });
58
+ }
59
+ }
60
+ exports.ResultSanitizer = ResultSanitizer;
@@ -1,39 +1,43 @@
1
1
  import { ActionSchema } from "../../types";
2
2
  import { injectActions } from "../../utils/inject-actions";
3
-
4
3
  export const evaluatorContext = {
5
4
  role: "You are the evaluator agent. Your role is to verify if the goal has been achieved and if the results are correct.",
6
5
  guidelines: {
7
6
  important: [
8
- "Verify if all required actions were executed successfully",
9
- "Check if the results match the initial goal",
10
- "Identify any missing or incomplete information",
11
- "Examples of relavant information: link symbol to token address, name to wallet, etc.",
7
+ "Verify if all required actions were executed successfully.",
8
+ "Check if the results align with the initial goal.",
9
+ "Identify and extract additional relevant information naturally during the process. Examples:",
10
+ " - Link a token symbol (e.g., 'USDC') to its address (e.g., '0xA0b8...6EB48').",
11
+ " - Associate a wallet address (e.g., '0x1234...abcd') to a user-friendly name (e.g., 'Work Wallet').",
12
+ " - Map a token address (e.g., '0x6B17...71d0F') back to its symbol or name (e.g., 'DAI').",
13
+ "Store these facts in memory with their type (episodic, semantic, or procedural).",
12
14
  ],
13
15
  warnings: [
14
- "NEVER modify the results directly",
15
- "NEVER make assumptions about missing data",
16
- "NEVER repeat the same action if you already did it",
16
+ "NEVER modify the results directly.",
17
+ "NEVER make assumptions about missing data.",
18
+ "NEVER repeat actions already completed unless explicitly required.",
17
19
  ],
18
20
  },
19
21
  compose: (goal: string, results: string, tools: ActionSchema[]) => {
20
22
  return `
21
- ${JSON.stringify(evaluatorContext.guidelines)}
22
-
23
- ACTIONS COMPLETED: ${results}
24
-
25
- Initial Goal: ${goal} (You must use the same language)
26
-
27
- The actions available are: ${injectActions(tools)}
28
-
29
- Evaluate if the goal has been achieved and provide:
30
- 1. Success status with explanation (no action needed)
31
- 2. Next actions needed (if any)
32
- 3. Why you are doing the next actions or why you are not doing them
33
- 4. Extract relevant information to remember. No need to remember specific numbers.
34
- 5. If there are no important results, let importantToRemembers be empty. No need to say something like "No relevant information found".
35
- 6. For each facts, generate a hypothetical query to search in the persistent memory.
36
- 7. For each facts, generate a memoryType (You have 3 memory types: episodic, semantic, procedural)
37
- `;
23
+ You are evaluating if the following goal has been achieved: "${goal}".
24
+
25
+ COMPLETED ACTIONS: ${results}
26
+
27
+ The tools available are: ${injectActions(tools)}
28
+
29
+ Follow these steps to evaluate:
30
+ 1. Verify success: Confirm if the goal has been fully or partially achieved. If partially, describe what's missing.
31
+ 2. Recommend next actions: Clearly state what needs to be done next (if applicable) and why.
32
+ 3. Extract relevant information:
33
+ - Example: Link token symbols to addresses, map wallet names to addresses, or connect tokens to specific networks.
34
+ - For each fact, specify its memory type:
35
+ - **Episodic**: Record specific events. Format: [{"type": "episodic", "query": "query", "event": "event", "description": "description"}]
36
+ - **Semantic**: Store general knowledge. Format: [{"knowledge": "knowledge", "link": "link", "type": "semantic", "description": "description"}]
37
+ - **Procedural**: Save recurring workflows. Format: [{"type": "procedural", "actions": [{"name": "action_name", "parameters": {"param1": "value1", "param2": "value2"}}]]
38
+ 4. Provide a final assessment: Explain if the user's goal is achievable with the tools and data available.
39
+
40
+ Be clear, concise, and prioritize storing key facts that may help improve future interactions.
41
+ `;
38
42
  },
39
43
  };
@@ -20,24 +20,18 @@ export class Evaluator {
20
20
  const response = await generateObject({
21
21
  model: this.model,
22
22
  schema: z.object({
23
- nextActions: z.array(
24
- z.object({
25
- name: z.string(),
26
- parameters: z.object({
27
- name: z.string(),
28
- value: z.string(),
29
- }),
30
- })
31
- ),
32
- why: z.string(),
33
- isImportantToRemember: z.boolean(),
34
- importantToRemembers: z.array(
23
+ isRemindNeeded: z.boolean(),
24
+ extraInformationsToRemember: z.array(
35
25
  z.object({
36
26
  memoryType: z.string(),
37
- hypotheticalQuery: z.string(),
38
- result: z.string(),
27
+ content: z.string(),
28
+ data: z.string(),
39
29
  })
40
30
  ),
31
+ response: z.string(),
32
+ isNextActionNeeded: z.boolean(),
33
+ nextActionsNeeded: ActionSchema,
34
+ why: z.string(),
41
35
  }),
42
36
  prompt: prompt,
43
37
  system: evaluatorContext.compose(goal, results, this.tools),
@@ -45,17 +39,17 @@ export class Evaluator {
45
39
 
46
40
  const validatedResponse = {
47
41
  ...response.object,
48
- nextActions: response.object.nextActions.map((action) => ({
42
+ nextActions: response.object.nextActionsNeeded.map((action) => ({
49
43
  ...action,
50
44
  parameters: action.parameters || {},
51
45
  })),
52
46
  };
53
47
 
54
- if (validatedResponse.isImportantToRemember) {
55
- for (const item of validatedResponse.importantToRemembers) {
48
+ if (validatedResponse.isRemindNeeded) {
49
+ for (const item of validatedResponse.extraInformationsToRemember) {
56
50
  // Check if the item is already in the memory
57
51
  const memories = await this.memory.searchSimilarQueries(
58
- item.hypotheticalQuery,
52
+ item.content,
59
53
  {
60
54
  similarityThreshold: 95,
61
55
  }
@@ -68,14 +62,14 @@ export class Evaluator {
68
62
  }
69
63
  if (memories.length === 0) {
70
64
  console.log("Adding to memory", {
71
- query: item.hypotheticalQuery,
72
- data: item.result,
65
+ query: item.content,
66
+ data: item.data,
73
67
  });
74
- await this.memory.storeMemory({
68
+ await this.memory.createMemory({
75
69
  id: crypto.randomUUID(),
76
70
  purpose: item.memoryType,
77
- query: item.hypotheticalQuery,
78
- data: item.result,
71
+ query: item.content,
72
+ data: item.data,
79
73
  scope: MemoryScope.GLOBAL,
80
74
  createdAt: new Date(),
81
75
  });
@@ -91,22 +85,22 @@ export class Evaluator {
91
85
  console.log("Evaluator error");
92
86
  console.dir(error.value, { depth: null });
93
87
  console.error(error.message);
94
- if (error.value.importantToRemembers.length > 0) {
95
- for (const item of error.value.importantToRemembers) {
88
+ if (error.value.extraInformationsToRemember.length > 0) {
89
+ for (const item of error.value.extraInformationsToRemember) {
96
90
  // Check if the item is already in the memory
97
91
  const memories = await this.memory.searchSimilarQueries(
98
- item.hypotheticalQuery
92
+ item.content
99
93
  );
100
94
  if (memories.length === 0) {
101
95
  console.log("Adding to memory", {
102
- query: item.hypotheticalQuery,
103
- data: item.result,
96
+ query: item.content,
97
+ data: item.data,
104
98
  });
105
- await this.memory.storeMemory({
99
+ await this.memory.createMemory({
106
100
  id: crypto.randomUUID(),
107
101
  purpose: "importantToRemember",
108
- query: item.hypotheticalQuery,
109
- data: item.result,
102
+ query: item.content,
103
+ data: item.data,
110
104
  scope: MemoryScope.USER,
111
105
  createdAt: new Date(),
112
106
  });
@@ -21,19 +21,21 @@ export class Orchestrator implements BaseLLM {
21
21
  query: z.string(),
22
22
  }),
23
23
  execute: async ({ query }: { query: string }) => {
24
- const memories = await this.memory.searchSimilarQueries(query);
24
+ const memories = await this.memory.searchSimilarQueries(query, {
25
+ similarityThreshold: 95,
26
+ });
25
27
  return memories;
26
28
  },
27
29
  },
28
30
  {
29
31
  name: "save_memory",
30
- description: "Save a query in the internal knowledge base",
32
+ description: "Save relevant information in the internal knowledge base",
31
33
  parameters: z.object({
32
34
  query: z.string(),
33
- purpose: z.string(),
35
+ memoryType: z.string(),
34
36
  data: z.any(),
35
- scope: z.enum(["GLOBAL", "USER"]),
36
- userId: z.string().optional(),
37
+ scope: z.string().default("GLOBAL").describe("GLOBAL or USER"),
38
+ userId: z.string(),
37
39
  whyStored: z.string(),
38
40
  }),
39
41
  execute: async ({
@@ -49,7 +51,7 @@ export class Orchestrator implements BaseLLM {
49
51
  scope: MemoryScopeType;
50
52
  userId?: string;
51
53
  }) => {
52
- const memories = await this.memory.storeMemory({
54
+ const memories = await this.memory.createMemory({
53
55
  query,
54
56
  purpose,
55
57
  data,
@@ -69,17 +71,7 @@ export class Orchestrator implements BaseLLM {
69
71
  const response = await generateObject({
70
72
  model: this.model,
71
73
  schema: z.object({
72
- actions: z.array(
73
- z.object({
74
- name: z.string(),
75
- parameters: z.array(
76
- z.object({
77
- name: z.string(),
78
- value: z.string(),
79
- })
80
- ),
81
- })
82
- ),
74
+ actions: ActionSchema,
83
75
  answer: z.string(),
84
76
  }),
85
77
  prompt: prompt,
@@ -14,11 +14,7 @@ export class Synthesizer implements BaseLLM {
14
14
  | {
15
15
  actions: {
16
16
  name: string;
17
- relevantResult: string;
18
- explain: {
19
- how: string;
20
- why: string;
21
- };
17
+ reasoning: string;
22
18
  }[];
23
19
  response: string;
24
20
  }
@@ -31,11 +27,7 @@ export class Synthesizer implements BaseLLM {
31
27
  actions: z.array(
32
28
  z.object({
33
29
  name: z.string(),
34
- relevantResult: z.string(),
35
- explain: z.object({
36
- how: z.string(),
37
- why: z.string(),
38
- }),
30
+ reasoning: z.string(),
39
31
  })
40
32
  ),
41
33
  response: z.string(),
package/memory/cache.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  import { openai } from "@ai-sdk/openai";
2
- import { cosineSimilarity, embed, generateObject } from "ai";
2
+ import { cosineSimilarity, embed } from "ai";
3
3
  import { createClient } from "redis";
4
- import { z } from "zod";
5
4
  import {
6
5
  CacheMemoryOptions,
7
6
  CacheMemoryType,
@@ -86,15 +85,10 @@ export class CacheMemory {
86
85
  .map((memory) => {
87
86
  const similarity = cosineSimilarity(embedding, memory.embedding);
88
87
  const similarityPercentage = (similarity + 1) * 50; // Conversion en pourcentage
89
-
90
- console.log(`\n📊 Query "${memory.query}":
91
- - Similarity: ${similarityPercentage.toFixed(2)}%`);
92
-
93
88
  return {
94
89
  data: memory.data,
95
90
  query: memory.query,
96
91
  similarityPercentage,
97
- // Optionnel : ajouter des métadonnées utiles
98
92
  memoryId: memory.id,
99
93
  };
100
94
  })
@@ -119,7 +113,6 @@ export class CacheMemory {
119
113
  console.log("No matches found");
120
114
  }
121
115
 
122
- console.dir({ results });
123
116
  return results;
124
117
  }
125
118
 
@@ -161,7 +154,7 @@ export class CacheMemory {
161
154
 
162
155
  public async createMemory(
163
156
  input: CreateMemoryInput
164
- ): Promise<string | undefined> {
157
+ ): Promise<CacheMemoryType | undefined> {
165
158
  console.log("Searching for similar memory", input);
166
159
  const existingPattern = await this.findSimilarQueries(input.content, {
167
160
  similarityThreshold: 95,
@@ -182,22 +175,7 @@ export class CacheMemory {
182
175
 
183
176
  console.log("No similar memory found");
184
177
 
185
- // Générer les variations via GPT-4
186
- console.log("Generating variations...");
187
- const variations = await generateObject({
188
- model: openai("gpt-4"),
189
- schema: z.object({
190
- request: z.string().describe("The request to be performed"),
191
- queries: z.array(z.object({ text: z.string() })),
192
- }),
193
- prompt: `For this input: "${input.content}"
194
- Generate similar way to ask the same question.
195
- Action results: ${JSON.stringify(input.data)}
196
- - Keep variations natural and human-like
197
- - Add 3-5 variations`,
198
- });
199
- console.log("Variations generated:", variations.object.queries);
200
- await this.createSingleMemory({
178
+ const memory = await this.createSingleMemory({
201
179
  id: crypto.randomUUID(),
202
180
  content: input.content,
203
181
  type: input.type,
@@ -206,23 +184,7 @@ export class CacheMemory {
206
184
  scope: input.scope,
207
185
  });
208
186
 
209
- const variationPromises = variations.object.queries.map(
210
- async (variation) => {
211
- if (variation.text !== input.content) {
212
- await this.createSingleMemory({
213
- id: crypto.randomUUID(),
214
- content: variation.text,
215
- type: input.type,
216
- data: input.data,
217
- userId: input.userId,
218
- scope: input.scope,
219
- });
220
- }
221
- }
222
- );
223
-
224
- await Promise.all(variationPromises);
225
- return variations.object.request;
187
+ return memory;
226
188
  }
227
189
 
228
190
  private async createSingleMemory(params: {
@@ -159,7 +159,7 @@ export class PersistentMemory {
159
159
  /**
160
160
  * Store a memory in the database
161
161
  */
162
- async storeMemory(memory: Memory) {
162
+ async createMemory(memory: Memory) {
163
163
  const indexName = this._getIndexName(memory.scope, memory.userId);
164
164
  await this._getOrCreateIndex(indexName);
165
165
 
@@ -178,7 +178,7 @@ export class PersistentMemory {
178
178
  body: JSON.stringify([document]),
179
179
  }
180
180
  );
181
- console.log("Stored memory response:", response);
181
+ console.log("Stored persistent memory response:", response);
182
182
  return response;
183
183
  }
184
184
 
@@ -273,7 +273,7 @@ export class PersistentMemory {
273
273
 
274
274
  // Log results
275
275
  if (results.length > 0) {
276
- console.log("\n✨ Similar queries found:");
276
+ console.log("\n✨ Similar queries found in persistent memory:");
277
277
  results.forEach((match) => {
278
278
  console.log(
279
279
  `- ${match.query} : ${match.similarityPercentage.toFixed(2)}% (${
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai.ntellect/core",
3
- "version": "0.1.83",
3
+ "version": "0.1.85",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
package/types.ts CHANGED
@@ -128,7 +128,7 @@ export interface CacheMemoryOptions {
128
128
  export interface CreateMemoryInput {
129
129
  content: any;
130
130
  type: MemoryType;
131
- data: ActionSchema[];
131
+ data: QueueResult[];
132
132
  userId?: string;
133
133
  scope?: MemoryScope;
134
134
  }
@@ -168,6 +168,18 @@ export interface Memory {
168
168
  chunks?: MemoryChunk[];
169
169
  }
170
170
 
171
+ export const ActionSchema = z.array(
172
+ z.object({
173
+ name: z.string(),
174
+ parameters: z.array(
175
+ z.object({
176
+ name: z.string(),
177
+ value: z.string(),
178
+ })
179
+ ),
180
+ })
181
+ );
182
+
171
183
  export enum MemoryType {
172
184
  ACTION = "action",
173
185
  CONVERSATION = "conversation",