@ai.ntellect/core 0.3.3 → 0.4.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.
Files changed (85) hide show
  1. package/.nvmrc +1 -0
  2. package/README.FR.md +201 -261
  3. package/README.md +208 -260
  4. package/agent/index.ts +199 -216
  5. package/agent/tools/get-rss.ts +64 -0
  6. package/bull.ts +5 -0
  7. package/dist/agent/index.d.ts +29 -26
  8. package/dist/agent/index.js +123 -112
  9. package/dist/agent/tools/get-rss.d.ts +16 -0
  10. package/dist/agent/tools/get-rss.js +62 -0
  11. package/dist/bull.d.ts +1 -0
  12. package/dist/bull.js +9 -0
  13. package/dist/examples/index.d.ts +2 -0
  14. package/dist/examples/index.js +89 -0
  15. package/dist/llm/interpreter/context.d.ts +5 -22
  16. package/dist/llm/interpreter/context.js +8 -9
  17. package/dist/llm/interpreter/index.d.ts +9 -5
  18. package/dist/llm/interpreter/index.js +55 -48
  19. package/dist/llm/memory-manager/context.d.ts +2 -0
  20. package/dist/llm/memory-manager/context.js +22 -0
  21. package/dist/llm/memory-manager/index.d.ts +17 -0
  22. package/dist/llm/memory-manager/index.js +107 -0
  23. package/dist/llm/orchestrator/context.d.ts +2 -10
  24. package/dist/llm/orchestrator/context.js +19 -14
  25. package/dist/llm/orchestrator/index.d.ts +36 -21
  26. package/dist/llm/orchestrator/index.js +122 -88
  27. package/dist/llm/orchestrator/types.d.ts +12 -0
  28. package/dist/llm/orchestrator/types.js +2 -0
  29. package/dist/memory/cache.d.ts +6 -5
  30. package/dist/memory/cache.js +31 -21
  31. package/dist/memory/persistent.d.ts +5 -3
  32. package/dist/memory/persistent.js +89 -73
  33. package/dist/services/redis-cache.d.ts +37 -0
  34. package/dist/services/redis-cache.js +93 -0
  35. package/dist/services/scheduler.d.ts +39 -16
  36. package/dist/services/scheduler.js +81 -103
  37. package/dist/services/telegram-monitor.d.ts +0 -15
  38. package/dist/services/telegram-monitor.js +117 -101
  39. package/dist/test.js +106 -172
  40. package/dist/types.d.ts +38 -7
  41. package/dist/utils/generate-object.d.ts +12 -0
  42. package/dist/utils/generate-object.js +90 -0
  43. package/dist/utils/header-builder.d.ts +11 -0
  44. package/dist/utils/header-builder.js +34 -0
  45. package/dist/utils/inject-actions.js +2 -2
  46. package/dist/utils/queue-item-transformer.d.ts +2 -2
  47. package/dist/utils/schema-generator.d.ts +16 -0
  48. package/dist/utils/schema-generator.js +46 -0
  49. package/examples/index.ts +103 -0
  50. package/llm/interpreter/context.ts +20 -8
  51. package/llm/interpreter/index.ts +81 -54
  52. package/llm/memory-manager/context.ts +21 -0
  53. package/llm/memory-manager/index.ts +163 -0
  54. package/llm/orchestrator/context.ts +20 -13
  55. package/llm/orchestrator/index.ts +210 -130
  56. package/llm/orchestrator/types.ts +14 -0
  57. package/memory/cache.ts +37 -31
  58. package/memory/persistent.ts +121 -99
  59. package/package.json +11 -2
  60. package/services/redis-cache.ts +128 -0
  61. package/services/scheduler.ts +102 -141
  62. package/services/telegram-monitor.ts +138 -138
  63. package/t.py +79 -0
  64. package/t.spec +38 -0
  65. package/types.ts +40 -7
  66. package/utils/generate-object.ts +105 -0
  67. package/utils/header-builder.ts +40 -0
  68. package/utils/inject-actions.ts +4 -6
  69. package/utils/queue-item-transformer.ts +2 -1
  70. package/utils/schema-generator.ts +73 -0
  71. package/agent/handlers/ActionHandler.ts +0 -48
  72. package/agent/handlers/ConfirmationHandler.ts +0 -37
  73. package/agent/handlers/EventHandler.ts +0 -35
  74. package/dist/agent/handlers/ActionHandler.d.ts +0 -8
  75. package/dist/agent/handlers/ActionHandler.js +0 -36
  76. package/dist/agent/handlers/ConfirmationHandler.d.ts +0 -7
  77. package/dist/agent/handlers/ConfirmationHandler.js +0 -31
  78. package/dist/agent/handlers/EventHandler.d.ts +0 -10
  79. package/dist/agent/handlers/EventHandler.js +0 -34
  80. package/dist/llm/evaluator/context.d.ts +0 -10
  81. package/dist/llm/evaluator/context.js +0 -24
  82. package/dist/llm/evaluator/index.d.ts +0 -16
  83. package/dist/llm/evaluator/index.js +0 -150
  84. package/llm/evaluator/context.ts +0 -21
  85. package/llm/evaluator/index.ts +0 -193
package/agent/index.ts CHANGED
@@ -1,260 +1,243 @@
1
- import { Evaluator } from "../llm/evaluator";
1
+ import { LanguageModel } from "ai";
2
+ import WebSocket from "ws";
2
3
  import { Interpreter } from "../llm/interpreter";
3
- import { Orchestrator } from "../llm/orchestrator";
4
+ import { MemoryManager } from "../llm/memory-manager";
5
+ import { AgentRuntime } from "../llm/orchestrator";
6
+ import { State } from "../llm/orchestrator/types";
4
7
  import { CacheMemory } from "../memory/cache";
5
8
  import { PersistentMemory } from "../memory/persistent";
6
9
  import { ActionQueueManager } from "../services/queue";
7
- import { ActionScheduler } from "../services/scheduler";
8
- import {
9
- ActionSchema,
10
- AgentEvent,
11
- MemoryScope,
12
- QueueResult,
13
- ScheduledAction,
14
- } from "../types";
10
+ import { CacheConfig, RedisCache } from "../services/redis-cache";
11
+ import { ActionData, ActionSchema, QueueCallbacks } from "../types";
15
12
  import { QueueItemTransformer } from "../utils/queue-item-transformer";
16
- import { ResultSanitizer } from "../utils/sanitize-results";
17
- import { ActionHandler } from "./handlers/ActionHandler";
18
-
19
13
  export class Agent {
20
- private readonly actionHandler: ActionHandler;
21
- private readonly orchestrator: Orchestrator;
22
- private readonly interpreters: Interpreter[];
23
- private readonly memory: {
24
- persistent: PersistentMemory;
25
- cache?: CacheMemory;
14
+ private readonly agent: AgentRuntime;
15
+ private readonly memoryManager: MemoryManager;
16
+ private readonly cache: RedisCache;
17
+
18
+ private webSocketClients: Map<
19
+ string,
20
+ { socket: WebSocket; callback: (data: any) => Promise<void> }
21
+ > = new Map();
22
+ private readonly config: {
23
+ orchestrator: {
24
+ model: LanguageModel;
25
+ tools: ActionSchema[];
26
+ memory?: {
27
+ cache?: CacheMemory;
28
+ persistent?: PersistentMemory;
29
+ };
30
+ };
31
+ interpreters: Interpreter[];
32
+ memoryManager: {
33
+ model: LanguageModel;
34
+ memory?: {
35
+ cache?: CacheMemory;
36
+ persistent?: PersistentMemory;
37
+ };
38
+ };
39
+ maxIterations: number;
26
40
  };
27
- private readonly stream: boolean;
28
- private readonly maxEvaluatorIteration: number;
29
- private evaluatorIteration = 0;
30
- private accumulatedResults: string = "";
31
- private currentInterpreter: Interpreter | undefined;
32
- private readonly scheduler: ActionScheduler;
33
41
 
34
- constructor({
35
- orchestrator,
36
- interpreters,
37
- memory,
38
- stream,
39
- maxEvaluatorIteration = 1,
40
- }: {
41
- orchestrator: Orchestrator;
42
+ constructor(config: {
43
+ cache: CacheConfig;
44
+ orchestrator: {
45
+ model: LanguageModel;
46
+ tools: ActionSchema[];
47
+ memory?: {
48
+ cache?: CacheMemory;
49
+ persistent?: PersistentMemory;
50
+ };
51
+ };
42
52
  interpreters: Interpreter[];
43
- memory: {
44
- persistent: PersistentMemory;
45
- cache?: CacheMemory;
53
+ memoryManager: {
54
+ model: LanguageModel;
55
+ memory?: {
56
+ cache?: CacheMemory;
57
+ persistent?: PersistentMemory;
58
+ };
46
59
  };
47
- stream: boolean;
48
- maxEvaluatorIteration: number;
60
+ callbacks?: QueueCallbacks;
61
+ maxIterations: number;
49
62
  }) {
50
- this.orchestrator = orchestrator;
51
- this.interpreters = interpreters;
52
- this.memory = memory;
53
- this.stream = stream;
54
- this.maxEvaluatorIteration = maxEvaluatorIteration;
55
- this.actionHandler = new ActionHandler();
56
- this.accumulatedResults = "";
57
- this.scheduler = new ActionScheduler(
58
- new ActionQueueManager(this.orchestrator.tools),
59
- this.orchestrator
63
+ this.cache = new RedisCache(config.cache);
64
+ this.config = config;
65
+ this.agent = new AgentRuntime(
66
+ config.orchestrator.model,
67
+ config.orchestrator.tools,
68
+ config.interpreters,
69
+ config.cache,
70
+ config.orchestrator.memory
60
71
  );
72
+ this.memoryManager = new MemoryManager({
73
+ model: config.memoryManager.model,
74
+ memory: {
75
+ cache: config.memoryManager.memory?.cache ?? undefined,
76
+ persistent: config.memoryManager.memory?.persistent ?? undefined,
77
+ },
78
+ });
79
+ this.config.maxIterations = 3;
61
80
  }
62
81
 
63
- async process(prompt: string, events: AgentEvent): Promise<any> {
64
- this.accumulatedResults = "";
65
- this.evaluatorIteration = 0;
66
- console.log("Requesting orchestrator for actions..");
67
- const parsedPrompt = JSON.parse(prompt);
68
- const promptOnly = parsedPrompt.userRequest;
69
- const cacheMemories = await this.memory.cache?.findSimilarActions(
70
- promptOnly,
71
- {
72
- similarityThreshold: 70,
73
- maxResults: 5,
74
- userId: "1",
75
- scope: MemoryScope.GLOBAL,
76
- }
77
- );
78
- console.log("✅ RECENT_ACTIONS: ", cacheMemories);
82
+ public async process(state: State, callbacks?: QueueCallbacks): Promise<any> {
83
+ console.log("🔄 Processing state:");
84
+ console.dir(state, { depth: null });
85
+ let countIterations = 0;
86
+ const response = await this.agent.process(state);
79
87
 
80
- const persistentMemory = await this.memory.persistent.findRelevantDocuments(
81
- prompt,
82
- {
83
- similarityThreshold: 80,
84
- }
85
- );
86
- console.log("✅ PERSISTENT_MEMORY: ", persistentMemory);
87
- const request = await this.orchestrator.process(
88
- prompt,
89
- `## RECENT_ACTIONS: ${JSON.stringify(
90
- cacheMemories
91
- )} ## PERSISTENT_MEMORY: ${JSON.stringify(
92
- persistentMemory
93
- )} ## CURRENT_RESULTS: ${this.accumulatedResults}`
88
+ const unscheduledActions = response.actions.filter(
89
+ (action) => !action.scheduler?.isScheduled
94
90
  );
95
- events.onMessage?.(request);
96
-
97
- return request.actions.length > 0
98
- ? this.handleActions(
99
- {
100
- initialPrompt: prompt,
101
- actions: request.actions,
102
- },
103
- events
104
- )
105
- : undefined;
106
- }
107
-
108
- private async handleActions(
109
- {
110
- initialPrompt,
111
- actions,
112
- }: {
113
- initialPrompt: string;
114
- actions: {
115
- name: string;
116
- type: string;
117
- parameters: {
118
- name: string;
119
- value: any;
120
- }[];
121
- }[];
122
- },
123
- events: AgentEvent
124
- ): Promise<any> {
125
- const queueItems = this.transformActions(actions as any);
126
-
127
- const actionsResult = await this.actionHandler.executeActions(
128
- queueItems,
129
- this.orchestrator.tools,
130
- {
131
- onQueueStart: events.onQueueStart,
132
- onActionStart: events.onActionStart,
133
- onActionComplete: events.onActionComplete,
134
- onQueueComplete: events.onQueueComplete,
135
- onConfirmationRequired: events.onConfirmationRequired,
91
+ // Execute actions if needed
92
+ if (unscheduledActions?.length > 0 && response.shouldContinue) {
93
+ console.log("\n📋 Processing action queue");
94
+ const queueManager = new ActionQueueManager(
95
+ this.config.orchestrator.tools,
96
+ callbacks
97
+ );
98
+ const queueItems = QueueItemTransformer.transformActionsToQueueItems(
99
+ response.actions as ActionData[]
100
+ );
101
+ if (!queueItems) {
102
+ throw new Error("No queue items found");
136
103
  }
137
- );
138
104
 
139
- this.accumulatedResults += this.formatResults(actionsResult.data);
105
+ console.log(
106
+ "📋 Actions to execute:",
107
+ queueItems
108
+ .map((item) => (typeof item === "string" ? item : item.name))
109
+ .join(", ")
110
+ );
140
111
 
141
- const isOnChainAction = actions.some(
142
- (action) => action.type === "on-chain"
143
- );
112
+ queueManager.addToQueue(queueItems);
113
+ console.log("\n⚡ Executing actions...");
114
+ const results = await queueManager.processQueue();
115
+ console.log("✅ Execution results:", results);
144
116
 
145
- if (isOnChainAction) {
146
- return {
147
- data: this.accumulatedResults,
148
- initialPrompt,
117
+ const updatedNextState: State = {
118
+ ...state,
119
+ currentContext: state.currentContext,
120
+ previousActions: [...(state.previousActions || []), ...(results || [])],
149
121
  };
150
- }
151
122
 
152
- if (this.evaluatorIteration >= this.maxEvaluatorIteration) {
153
- return this.interpreterResult({
154
- data: this.accumulatedResults,
155
- initialPrompt,
156
- interpreter: this.currentInterpreter,
157
- });
123
+ console.log("\n🔁 Recursively processing with updated state");
124
+ countIterations++;
125
+ if (countIterations < this.config.maxIterations) {
126
+ return this.process(updatedNextState);
127
+ }
158
128
  }
159
129
 
160
- const evaluator = new Evaluator(
161
- this.orchestrator.tools,
162
- this.memory,
163
- this.interpreters
164
- );
130
+ if (countIterations >= this.config.maxIterations) {
131
+ console.log("Max iterations reached");
132
+ response.shouldContinue = false;
133
+ console.log("Forcing stop");
134
+ }
165
135
 
166
- const evaluation = await evaluator.process(
167
- initialPrompt,
168
- this.accumulatedResults
169
- );
136
+ // Handle final interpretation
137
+ if (
138
+ !response.shouldContinue &&
139
+ state.previousActions?.length &&
140
+ response.interpreter
141
+ ) {
142
+ console.log("\n🏁 Analysis complete - generating final interpretation");
143
+ const interpreter = this.getInterpreter(
144
+ this.config.interpreters,
145
+ response.interpreter
146
+ );
147
+ console.log("🎭 Selected Interpreter:", interpreter?.name);
148
+ console.dir(state, { depth: null });
149
+ const interpretationResult = (await interpreter?.process(
150
+ "Interpret the analysis results",
151
+ {
152
+ ...state,
153
+ results: JSON.stringify(state.previousActions),
154
+ userRequest: state.currentContext,
155
+ }
156
+ )) as { response: string };
170
157
 
171
- this.currentInterpreter = this.getInterpreter(
172
- this.interpreters,
173
- evaluation.interpreter
174
- );
158
+ console.log("\n📊 Final Analysis:", interpretationResult.response);
175
159
 
176
- events.onMessage?.(evaluation);
160
+ const finalState: State = {
161
+ ...state,
162
+ results: interpretationResult.response,
163
+ };
177
164
 
178
- if (evaluation.isNextActionNeeded) {
179
- this.evaluatorIteration++;
180
- return this.handleActions(
181
- {
182
- initialPrompt: initialPrompt,
183
- actions: evaluation.nextActionsNeeded,
184
- },
185
- events
186
- );
165
+ console.log("🔄 Final state:", finalState);
187
166
  }
188
167
 
189
- return this.interpreterResult({
190
- data: this.accumulatedResults,
191
- initialPrompt,
192
- interpreter: this.currentInterpreter,
193
- });
168
+ // Return the final response at the end of the function
169
+ const validatedActions = response.actions.map((action) => ({
170
+ ...action,
171
+ parameters: action.parameters.map((param) => ({
172
+ ...param,
173
+ value: param.value ?? null, // Set a default value if undefined
174
+ })),
175
+ }));
176
+
177
+ const result = {
178
+ ...response,
179
+ actions: validatedActions,
180
+ results: JSON.stringify(state.previousActions),
181
+ };
182
+ if (!result.shouldContinue) {
183
+ await this.memoryManager.process(state, JSON.stringify(result));
184
+ }
185
+ return result;
194
186
  }
195
187
 
196
188
  private getInterpreter(interpreters: Interpreter[], name: string) {
197
- console.log({ interpreters, name });
198
189
  return interpreters.find((interpreter) => interpreter.name === name);
199
190
  }
200
191
 
201
- private async interpreterResult(actionsResult: {
202
- data: string;
203
- initialPrompt: string;
204
- interpreter: Interpreter | undefined;
205
- }) {
206
- const { interpreter, initialPrompt, data } = actionsResult;
207
- if (!interpreter) {
208
- throw new Error("Interpreter not found");
192
+ public addListener(
193
+ id: string,
194
+ url: string,
195
+ subscriptionMessageFactory: () => string,
196
+ callback: (data: any, agentContext: Agent) => Promise<void>
197
+ ): void {
198
+ if (this.webSocketClients.has(id)) {
199
+ console.warn(`WebSocket with ID ${id} already exists.`);
200
+ return;
209
201
  }
210
- console.log("✅ INTERPRETER: ", interpreter.name);
211
- return this.stream
212
- ? (
213
- await interpreter.streamProcess(initialPrompt, {
214
- userRequest: initialPrompt,
215
- results: data,
216
- })
217
- ).toDataStreamResponse()
218
- : await interpreter.process(initialPrompt, {
219
- userRequest: initialPrompt,
220
- results: data,
221
- });
222
- }
223
202
 
224
- private transformActions(actions: ActionSchema[]) {
225
- let predefinedActions =
226
- QueueItemTransformer.transformActionsToQueueItems(actions) || [];
203
+ const socket = new WebSocket(url);
227
204
 
228
- return predefinedActions;
229
- }
205
+ const wrappedCallback = async (data: any) => {
206
+ await callback(data, this);
207
+ };
230
208
 
231
- private formatResults(results: QueueResult[]): string {
232
- const formattedResults = results.map((result) => ({
233
- ...result,
234
- result:
235
- typeof result.result === "object"
236
- ? JSON.stringify(result.result)
237
- : result.result,
238
- }));
239
- const sanitizedResults = ResultSanitizer.sanitize(formattedResults);
240
- return sanitizedResults;
241
- }
209
+ socket.on("open", () => {
210
+ console.log(`🔗 WebSocket connected for ID: ${id}`);
211
+
212
+ // Envoie le message d'abonnement si une factory est fournie
213
+ if (subscriptionMessageFactory) {
214
+ const subscriptionMessage = subscriptionMessageFactory();
215
+ socket.send(subscriptionMessage);
216
+ console.log(
217
+ `📡 Sent subscription message for ID ${id}:`,
218
+ subscriptionMessage
219
+ );
220
+ }
221
+ });
242
222
 
243
- async scheduleAction(
244
- action: ActionSchema,
245
- scheduledTime: Date,
246
- userId: string,
247
- recurrence?: ScheduledAction["recurrence"]
248
- ): Promise<string> {
249
- return this.scheduler.scheduleAction(
250
- action,
251
- scheduledTime,
252
- userId,
253
- recurrence
254
- );
255
- }
223
+ socket.on("message", async (message: string) => {
224
+ console.log(`📨 Message received for WebSocket ID ${id}:`, message);
225
+ try {
226
+ const data = JSON.parse(message);
227
+ await wrappedCallback(data);
228
+ } catch (error) {
229
+ console.error(`❌ Error in callback for WebSocket ID ${id}:`, error);
230
+ }
231
+ });
232
+
233
+ socket.on("error", (error) => {
234
+ console.error(`❌ WebSocket error for ID ${id}:`, error);
235
+ });
236
+
237
+ socket.on("close", () => {
238
+ console.log(`🔌 WebSocket closed for ID: ${id}`);
239
+ });
256
240
 
257
- async cancelScheduledAction(actionId: string): Promise<boolean> {
258
- return this.scheduler.cancelScheduledAction(actionId);
241
+ this.webSocketClients.set(id, { socket, callback: wrappedCallback });
259
242
  }
260
243
  }
@@ -0,0 +1,64 @@
1
+ import Parser from "rss-parser";
2
+ import { z } from "zod";
3
+
4
+ const RSS_FEEDS = [
5
+ "https://www.investing.com/rss/news_301.rss",
6
+ "https://cointelegraph.com/rss/category/analysis",
7
+ "https://cointelegraph.com/rss/category/top-10-cryptocurrencies",
8
+ ];
9
+
10
+ const parser = new Parser();
11
+
12
+ function stripHtmlTags(content: string): string {
13
+ if (!content) return "";
14
+ return content
15
+ .replace(/<[^>]*>/g, "")
16
+ .replace(/\n/g, "")
17
+ .replace(" ", "");
18
+ }
19
+
20
+ export const getRssNews = {
21
+ name: "get-news-rss",
22
+ description: "Get latest news about on website",
23
+ parameters: z.object({}),
24
+ execute: async () => {
25
+ const itemsPerSource = 5;
26
+
27
+ try {
28
+ const feedPromises = RSS_FEEDS.map((url) => parser.parseURL(url));
29
+ const results = await Promise.allSettled(feedPromises);
30
+ const successfulFeeds = results
31
+ .filter(
32
+ (result): result is PromiseFulfilledResult<Parser.Output<any>> => {
33
+ return (
34
+ result.status === "fulfilled" && result.value?.items?.length > 0
35
+ );
36
+ }
37
+ )
38
+ .map((result) => result.value);
39
+ const allItems = successfulFeeds
40
+ .flatMap((feed) => feed.items.slice(0, itemsPerSource))
41
+ .sort((a, b) => {
42
+ const dateA = a.pubDate ? new Date(a.pubDate).getTime() : 0;
43
+ const dateB = b.pubDate ? new Date(b.pubDate).getTime() : 0;
44
+ return dateB - dateA;
45
+ })
46
+ .slice(0, 5)
47
+ .map((item) => ({
48
+ title: item.title,
49
+ content: stripHtmlTags(item.content),
50
+ link: item.link,
51
+ date: item.pubDate,
52
+ source: item.creator || new URL(item.link).hostname,
53
+ }));
54
+
55
+ const result = {
56
+ status: "success",
57
+ items: allItems,
58
+ };
59
+ return result;
60
+ } catch (error: any) {
61
+ throw error;
62
+ }
63
+ },
64
+ };
package/bull.ts ADDED
@@ -0,0 +1,5 @@
1
+ import cron from "node-cron";
2
+
3
+ cron.schedule("* * * * *", () => {
4
+ console.log("running a task every minute");
5
+ });
@@ -1,35 +1,38 @@
1
+ import { LanguageModel } from "ai";
1
2
  import { Interpreter } from "../llm/interpreter";
2
- import { Orchestrator } from "../llm/orchestrator";
3
+ import { State } from "../llm/orchestrator/types";
3
4
  import { CacheMemory } from "../memory/cache";
4
5
  import { PersistentMemory } from "../memory/persistent";
5
- import { ActionSchema, AgentEvent, ScheduledAction } from "../types";
6
+ import { CacheConfig } from "../services/redis-cache";
7
+ import { ActionSchema, QueueCallbacks } from "../types";
6
8
  export declare class Agent {
7
- private readonly actionHandler;
8
- private readonly orchestrator;
9
- private readonly interpreters;
10
- private readonly memory;
11
- private readonly stream;
12
- private readonly maxEvaluatorIteration;
13
- private evaluatorIteration;
14
- private accumulatedResults;
15
- private currentInterpreter;
16
- private readonly scheduler;
17
- constructor({ orchestrator, interpreters, memory, stream, maxEvaluatorIteration, }: {
18
- orchestrator: Orchestrator;
9
+ private readonly agent;
10
+ private readonly memoryManager;
11
+ private readonly cache;
12
+ private webSocketClients;
13
+ private readonly config;
14
+ constructor(config: {
15
+ cache: CacheConfig;
16
+ orchestrator: {
17
+ model: LanguageModel;
18
+ tools: ActionSchema[];
19
+ memory?: {
20
+ cache?: CacheMemory;
21
+ persistent?: PersistentMemory;
22
+ };
23
+ };
19
24
  interpreters: Interpreter[];
20
- memory: {
21
- persistent: PersistentMemory;
22
- cache?: CacheMemory;
25
+ memoryManager: {
26
+ model: LanguageModel;
27
+ memory?: {
28
+ cache?: CacheMemory;
29
+ persistent?: PersistentMemory;
30
+ };
23
31
  };
24
- stream: boolean;
25
- maxEvaluatorIteration: number;
32
+ callbacks?: QueueCallbacks;
33
+ maxIterations: number;
26
34
  });
27
- process(prompt: string, events: AgentEvent): Promise<any>;
28
- private handleActions;
35
+ process(state: State, callbacks?: QueueCallbacks): Promise<any>;
29
36
  private getInterpreter;
30
- private interpreterResult;
31
- private transformActions;
32
- private formatResults;
33
- scheduleAction(action: ActionSchema, scheduledTime: Date, userId: string, recurrence?: ScheduledAction["recurrence"]): Promise<string>;
34
- cancelScheduledAction(actionId: string): Promise<boolean>;
37
+ addListener(id: string, url: string, subscriptionMessageFactory: () => string, callback: (data: any, agentContext: Agent) => Promise<void>): void;
35
38
  }