@ai.ntellect/core 0.7.8 → 1.0.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/README.md +158 -81
- package/index.ts +462 -22
- package/package copy.json +21 -0
- package/package.json +9 -44
- package/tsconfig.json +108 -22
- package/types.ts +62 -0
- package/utils/executor.ts +42 -0
- package/.mocharc.json +0 -5
- package/dist/graph/controller.d.ts +0 -31
- package/dist/graph/controller.d.ts.map +0 -1
- package/dist/graph/controller.js +0 -71
- package/dist/graph/controller.js.map +0 -1
- package/dist/graph/event-manager.d.ts +0 -93
- package/dist/graph/event-manager.d.ts.map +0 -1
- package/dist/graph/event-manager.js +0 -296
- package/dist/graph/event-manager.js.map +0 -1
- package/dist/graph/index.d.ts +0 -159
- package/dist/graph/index.d.ts.map +0 -1
- package/dist/graph/index.js +0 -303
- package/dist/graph/index.js.map +0 -1
- package/dist/graph/logger.d.ts +0 -46
- package/dist/graph/logger.d.ts.map +0 -1
- package/dist/graph/logger.js +0 -69
- package/dist/graph/logger.js.map +0 -1
- package/dist/graph/node.d.ts +0 -93
- package/dist/graph/node.d.ts.map +0 -1
- package/dist/graph/node.js +0 -259
- package/dist/graph/node.js.map +0 -1
- package/dist/graph/observer.d.ts +0 -115
- package/dist/graph/observer.d.ts.map +0 -1
- package/dist/graph/observer.js +0 -198
- package/dist/graph/observer.js.map +0 -1
- package/dist/index.d.ts +0 -26
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -42
- package/dist/index.js.map +0 -1
- package/dist/interfaces/index.d.ts +0 -447
- package/dist/interfaces/index.d.ts.map +0 -1
- package/dist/interfaces/index.js +0 -75
- package/dist/interfaces/index.js.map +0 -1
- package/dist/modules/agenda/adapters/node-cron/index.d.ts +0 -17
- package/dist/modules/agenda/adapters/node-cron/index.d.ts.map +0 -1
- package/dist/modules/agenda/adapters/node-cron/index.js +0 -30
- package/dist/modules/agenda/adapters/node-cron/index.js.map +0 -1
- package/dist/modules/agenda/index.d.ts +0 -63
- package/dist/modules/agenda/index.d.ts.map +0 -1
- package/dist/modules/agenda/index.js +0 -141
- package/dist/modules/agenda/index.js.map +0 -1
- package/dist/modules/embedding/adapters/ai/index.d.ts +0 -29
- package/dist/modules/embedding/adapters/ai/index.d.ts.map +0 -1
- package/dist/modules/embedding/adapters/ai/index.js +0 -58
- package/dist/modules/embedding/adapters/ai/index.js.map +0 -1
- package/dist/modules/embedding/index.d.ts +0 -36
- package/dist/modules/embedding/index.d.ts.map +0 -1
- package/dist/modules/embedding/index.js +0 -60
- package/dist/modules/embedding/index.js.map +0 -1
- package/dist/modules/memory/adapters/in-memory/index.d.ts +0 -120
- package/dist/modules/memory/adapters/in-memory/index.d.ts.map +0 -1
- package/dist/modules/memory/adapters/in-memory/index.js +0 -211
- package/dist/modules/memory/adapters/in-memory/index.js.map +0 -1
- package/dist/modules/memory/adapters/meilisearch/index.d.ts +0 -110
- package/dist/modules/memory/adapters/meilisearch/index.d.ts.map +0 -1
- package/dist/modules/memory/adapters/meilisearch/index.js +0 -321
- package/dist/modules/memory/adapters/meilisearch/index.js.map +0 -1
- package/dist/modules/memory/adapters/redis/index.d.ts +0 -82
- package/dist/modules/memory/adapters/redis/index.d.ts.map +0 -1
- package/dist/modules/memory/adapters/redis/index.js +0 -159
- package/dist/modules/memory/adapters/redis/index.js.map +0 -1
- package/dist/modules/memory/index.d.ts +0 -67
- package/dist/modules/memory/index.d.ts.map +0 -1
- package/dist/modules/memory/index.js +0 -104
- package/dist/modules/memory/index.js.map +0 -1
- package/dist/types/index.d.ts +0 -170
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -3
- package/dist/types/index.js.map +0 -1
- package/dist/utils/generate-action-schema.d.ts +0 -5
- package/dist/utils/generate-action-schema.d.ts.map +0 -1
- package/dist/utils/generate-action-schema.js +0 -44
- package/dist/utils/generate-action-schema.js.map +0 -1
- package/dist/utils/header-builder.d.ts +0 -12
- package/dist/utils/header-builder.d.ts.map +0 -1
- package/dist/utils/header-builder.js +0 -35
- package/dist/utils/header-builder.js.map +0 -1
- package/graph/controller.ts +0 -74
- package/graph/event-manager.ts +0 -363
- package/graph/index.ts +0 -395
- package/graph/logger.ts +0 -70
- package/graph/node.ts +0 -327
- package/graph/observer.ts +0 -368
- package/interfaces/index.ts +0 -548
- package/modules/agenda/adapters/node-cron/index.ts +0 -25
- package/modules/agenda/index.ts +0 -146
- package/modules/embedding/adapters/ai/index.ts +0 -42
- package/modules/embedding/index.ts +0 -45
- package/modules/memory/adapters/in-memory/index.ts +0 -207
- package/modules/memory/adapters/meilisearch/index.ts +0 -361
- package/modules/memory/adapters/redis/index.ts +0 -164
- package/modules/memory/index.ts +0 -93
- package/test/graph/controller.test.ts +0 -187
- package/test/graph/event-manager.test.ts +0 -118
- package/test/graph/index.test.ts +0 -684
- package/test/graph/node.test.ts +0 -655
- package/test/graph/observer.test.ts +0 -398
- package/test/modules/agenda/node-cron.test.ts +0 -307
- package/test/modules/memory/adapters/in-memory.test.ts +0 -153
- package/test/modules/memory/adapters/meilisearch.test.ts +0 -287
- package/test/modules/memory/base.test.ts +0 -230
- package/types/index.ts +0 -190
- package/utils/generate-action-schema.ts +0 -46
- package/utils/header-builder.ts +0 -40
package/interfaces/index.ts
DELETED
@@ -1,548 +0,0 @@
|
|
1
|
-
import { Observable } from "rxjs";
|
2
|
-
import { ZodSchema } from "zod";
|
3
|
-
import {
|
4
|
-
BaseMemoryType,
|
5
|
-
CreateMemoryInput,
|
6
|
-
GraphContext,
|
7
|
-
GraphEvent,
|
8
|
-
ScheduledRequest,
|
9
|
-
SchemaType,
|
10
|
-
} from "../types";
|
11
|
-
|
12
|
-
/* ======================== EMBEDDING SERVICE ======================== */
|
13
|
-
|
14
|
-
/**
|
15
|
-
* Interface for an embedding service that processes text into vector representations.
|
16
|
-
*/
|
17
|
-
export interface EmbeddingModule {
|
18
|
-
/**
|
19
|
-
* Generates an embedding for a single text.
|
20
|
-
* @param {string} text - The input text to embed.
|
21
|
-
* @returns {Promise<number[]>} - A vector representation of the text.
|
22
|
-
*/
|
23
|
-
embedText(text: string): Promise<number[]>;
|
24
|
-
|
25
|
-
/**
|
26
|
-
* Generates embeddings for multiple texts at once.
|
27
|
-
* @param {string[]} texts - The array of texts to embed.
|
28
|
-
* @returns {Promise<number[][]>} - A list of vector representations.
|
29
|
-
*/
|
30
|
-
embedMany(texts: string[]): Promise<number[][]>;
|
31
|
-
|
32
|
-
/**
|
33
|
-
* Calculates the similarity between two embeddings.
|
34
|
-
* @param {number[]} embedding1 - First vector.
|
35
|
-
* @param {number[]} embedding2 - Second vector.
|
36
|
-
* @returns {number} - A similarity score between the two vectors.
|
37
|
-
*/
|
38
|
-
calculateSimilarity(embedding1: number[], embedding2: number[]): number;
|
39
|
-
}
|
40
|
-
|
41
|
-
/* ======================== MEMORY SERVICE ======================== */
|
42
|
-
|
43
|
-
/**
|
44
|
-
* Interface for managing memory storage and retrieval.
|
45
|
-
*/
|
46
|
-
export interface BaseMemoryService {
|
47
|
-
/**
|
48
|
-
* Initializes the memory storage connection.
|
49
|
-
* @returns {Promise<void>} - Resolves when initialization is complete.
|
50
|
-
*/
|
51
|
-
initializeConnection(): Promise<void>;
|
52
|
-
|
53
|
-
/**
|
54
|
-
* Stores a new memory entry.
|
55
|
-
* @param {BaseMemoryType} memory - The memory data to store.
|
56
|
-
* @param {number} [ttl] - Optional time-to-live in seconds.
|
57
|
-
* @returns {Promise<void>}
|
58
|
-
*/
|
59
|
-
createMemory(memory: BaseMemoryType, ttl?: number): Promise<void>;
|
60
|
-
|
61
|
-
/**
|
62
|
-
* Retrieves a memory entry by its unique ID.
|
63
|
-
* @param {string} id - The memory entry identifier.
|
64
|
-
* @returns {Promise<BaseMemoryType | null>} - The found memory or null.
|
65
|
-
*/
|
66
|
-
getMemoryById(id: string): Promise<BaseMemoryType | null>;
|
67
|
-
|
68
|
-
/**
|
69
|
-
* Searches for memory entries based on a query and optional constraints.
|
70
|
-
* @param {string} query - The search query.
|
71
|
-
* @param {Object} options - Search options.
|
72
|
-
* @param {string} options.roomId - The room identifier.
|
73
|
-
* @param {number} [options.limit] - Maximum number of results (optional).
|
74
|
-
* @returns {Promise<BaseMemoryType[]>} - A list of matched memory entries.
|
75
|
-
*/
|
76
|
-
getMemoryByIndex(
|
77
|
-
query: string,
|
78
|
-
options: {
|
79
|
-
roomId: string;
|
80
|
-
limit?: number;
|
81
|
-
}
|
82
|
-
): Promise<BaseMemoryType[]>;
|
83
|
-
|
84
|
-
/**
|
85
|
-
* Retrieves all stored memory entries.
|
86
|
-
* @returns {Promise<BaseMemoryType[]>} - A list of all memory entries.
|
87
|
-
*/
|
88
|
-
getAllMemories(): Promise<BaseMemoryType[]>;
|
89
|
-
|
90
|
-
/**
|
91
|
-
* Deletes a memory entry by its unique ID.
|
92
|
-
* @param {string} id - The memory entry identifier.
|
93
|
-
* @returns {Promise<void>}
|
94
|
-
*/
|
95
|
-
clearMemoryById(id: string): Promise<void>;
|
96
|
-
|
97
|
-
/**
|
98
|
-
* Clears all stored memory entries.
|
99
|
-
* @returns {Promise<void>}
|
100
|
-
*/
|
101
|
-
clearAllMemories(): Promise<void>;
|
102
|
-
}
|
103
|
-
|
104
|
-
/**
|
105
|
-
* Extended interface for memory service operations
|
106
|
-
* @interface
|
107
|
-
*/
|
108
|
-
export interface IMemoryService {
|
109
|
-
/**
|
110
|
-
* Initializes the memory service
|
111
|
-
* @returns {Promise<void>}
|
112
|
-
*/
|
113
|
-
init(): Promise<void>;
|
114
|
-
|
115
|
-
/**
|
116
|
-
* Creates a new memory entry with optional embedding
|
117
|
-
* @param {CreateMemoryInput & { embedding?: number[] }} input - Memory data with optional embedding
|
118
|
-
* @returns {Promise<BaseMemoryType | undefined>} Created memory or undefined
|
119
|
-
*/
|
120
|
-
createMemory(
|
121
|
-
input: CreateMemoryInput & { embedding?: number[] }
|
122
|
-
): Promise<BaseMemoryType | undefined>;
|
123
|
-
|
124
|
-
/**
|
125
|
-
* Retrieves a memory by ID and room ID
|
126
|
-
* @param {string} id - Memory identifier
|
127
|
-
* @param {string} roomId - Room identifier
|
128
|
-
* @returns {Promise<BaseMemoryType | null>} Memory entry or null if not found
|
129
|
-
*/
|
130
|
-
getMemoryById(id: string, roomId: string): Promise<BaseMemoryType | null>;
|
131
|
-
|
132
|
-
/**
|
133
|
-
* Searches for memories based on query and options
|
134
|
-
* @param {string} query - Search query
|
135
|
-
* @param {Object} options - Search options
|
136
|
-
* @returns {Promise<BaseMemoryType[]>} Array of matching memories
|
137
|
-
*/
|
138
|
-
getMemoryByIndex(
|
139
|
-
query: string,
|
140
|
-
options: { roomId: string; limit?: number }
|
141
|
-
): Promise<BaseMemoryType[]>;
|
142
|
-
|
143
|
-
/**
|
144
|
-
* Retrieves all memories for a specific room
|
145
|
-
* @param {string} roomId - Room identifier
|
146
|
-
* @returns {Promise<BaseMemoryType[]>} Array of all memories
|
147
|
-
*/
|
148
|
-
getAllMemories(roomId: string): Promise<BaseMemoryType[]>;
|
149
|
-
|
150
|
-
/**
|
151
|
-
* Deletes a specific memory
|
152
|
-
* @param {string} id - Memory identifier
|
153
|
-
* @param {string} roomId - Room identifier
|
154
|
-
* @returns {Promise<void>}
|
155
|
-
*/
|
156
|
-
clearMemoryById(id: string, roomId: string): Promise<void>;
|
157
|
-
|
158
|
-
/**
|
159
|
-
* Clears all memories
|
160
|
-
* @returns {Promise<void>}
|
161
|
-
*/
|
162
|
-
clearAllMemories(): Promise<void>;
|
163
|
-
|
164
|
-
saveJob(id: string, job: any): Promise<void>;
|
165
|
-
saveRequest(id: string, request: any): Promise<void>;
|
166
|
-
getJob(id: string): Promise<any>;
|
167
|
-
getRequest(id: string): Promise<any>;
|
168
|
-
deleteJob(id: string): Promise<void>;
|
169
|
-
deleteRequest(id: string): Promise<void>;
|
170
|
-
getAllRequests(): Promise<any[]>;
|
171
|
-
clear(): Promise<void>;
|
172
|
-
}
|
173
|
-
|
174
|
-
/**
|
175
|
-
* Interface for memory adapter implementations
|
176
|
-
* @interface
|
177
|
-
*/
|
178
|
-
export interface IMemoryAdapter {
|
179
|
-
/**
|
180
|
-
* Initializes the memory adapter for a specific room
|
181
|
-
* @param {string} roomId - Room identifier
|
182
|
-
* @returns {Promise<void>}
|
183
|
-
*/
|
184
|
-
init(roomId?: string): Promise<void>;
|
185
|
-
|
186
|
-
/**
|
187
|
-
* Creates a new memory entry in the adapter
|
188
|
-
* @param {CreateMemoryInput & { embedding?: number[] }} input - Memory data with optional embedding
|
189
|
-
* @returns {Promise<BaseMemoryType | undefined>} Created memory or undefined
|
190
|
-
*/
|
191
|
-
createMemory(
|
192
|
-
input: CreateMemoryInput & { embedding?: number[] }
|
193
|
-
): Promise<BaseMemoryType | undefined>;
|
194
|
-
|
195
|
-
/**
|
196
|
-
* Stores a job in the adapter
|
197
|
-
* @param {string} id - Job identifier
|
198
|
-
* @param {ICronJob} job - Cron job instance
|
199
|
-
* @returns {Promise<void>}
|
200
|
-
*/
|
201
|
-
saveJob?(id: string, job: ICronJob): Promise<void>;
|
202
|
-
|
203
|
-
/**
|
204
|
-
* Stores a scheduled request in the adapter
|
205
|
-
* @param {string} id - Request identifier
|
206
|
-
* @param {ScheduledRequest} request - Scheduled request data
|
207
|
-
* @returns {Promise<void>}
|
208
|
-
*/
|
209
|
-
saveRequest?(id: string, request: ScheduledRequest): Promise<void>;
|
210
|
-
|
211
|
-
/**
|
212
|
-
* Retrieves a job by ID
|
213
|
-
* @param {string} id - Job identifier
|
214
|
-
* @returns {Promise<ICronJob | undefined>}
|
215
|
-
*/
|
216
|
-
getJob?(id: string): Promise<ICronJob | undefined>;
|
217
|
-
|
218
|
-
/**
|
219
|
-
* Retrieves a scheduled request by ID
|
220
|
-
* @param {string} id - Request identifier
|
221
|
-
* @returns {Promise<ScheduledRequest | undefined>}
|
222
|
-
*/
|
223
|
-
getRequest?(id: string): Promise<ScheduledRequest | undefined>;
|
224
|
-
|
225
|
-
/**
|
226
|
-
* Deletes a job by ID
|
227
|
-
* @param {string} id - Job identifier
|
228
|
-
* @returns {Promise<void>}
|
229
|
-
*/
|
230
|
-
deleteJob?(id: string): Promise<void>;
|
231
|
-
|
232
|
-
/**
|
233
|
-
* Deletes a scheduled request by ID
|
234
|
-
* @param {string} id - Request identifier
|
235
|
-
* @returns {Promise<void>}
|
236
|
-
*/
|
237
|
-
deleteRequest?(id: string): Promise<void>;
|
238
|
-
|
239
|
-
/**
|
240
|
-
* Retrieves all scheduled requests
|
241
|
-
* @returns {Promise<ScheduledRequest[]>}
|
242
|
-
*/
|
243
|
-
getAllRequests?(): Promise<ScheduledRequest[]>;
|
244
|
-
|
245
|
-
/**
|
246
|
-
* Retrieves a memory by ID and room ID from the adapter
|
247
|
-
* @param {string} id - Memory identifier
|
248
|
-
* @param {string} roomId - Room identifier
|
249
|
-
* @returns {Promise<BaseMemoryType | null>} Memory entry or null if not found
|
250
|
-
*/
|
251
|
-
getMemoryById(id: string, roomId: string): Promise<BaseMemoryType | null>;
|
252
|
-
|
253
|
-
/**
|
254
|
-
* Searches for memories in the adapter
|
255
|
-
* @param {string} query - Search query
|
256
|
-
* @param {Object} options - Search options
|
257
|
-
* @returns {Promise<BaseMemoryType[]>} Array of matching memories
|
258
|
-
*/
|
259
|
-
getMemoryByIndex(
|
260
|
-
query: string,
|
261
|
-
options: { roomId: string; limit?: number }
|
262
|
-
): Promise<BaseMemoryType[]>;
|
263
|
-
|
264
|
-
/**
|
265
|
-
* Retrieves all memories for a room from the adapter
|
266
|
-
* @param {string} roomId - Room identifier
|
267
|
-
* @returns {Promise<BaseMemoryType[]>} Array of all memories
|
268
|
-
*/
|
269
|
-
getAllMemories(roomId: string): Promise<BaseMemoryType[]>;
|
270
|
-
|
271
|
-
/**
|
272
|
-
* Deletes a specific memory from the adapter
|
273
|
-
* @param {string} id - Memory identifier
|
274
|
-
* @param {string} roomId - Room identifier
|
275
|
-
* @returns {Promise<void>}
|
276
|
-
*/
|
277
|
-
clearMemoryById(id: string, roomId: string): Promise<void>;
|
278
|
-
|
279
|
-
/**
|
280
|
-
* Clears all memories from the adapter
|
281
|
-
* @returns {Promise<void>}
|
282
|
-
*/
|
283
|
-
clearAllMemories(): Promise<void>;
|
284
|
-
|
285
|
-
/**
|
286
|
-
* Clears all jobs and requests
|
287
|
-
* @returns {Promise<void>}
|
288
|
-
*/
|
289
|
-
clear?(): Promise<void>;
|
290
|
-
}
|
291
|
-
|
292
|
-
/**
|
293
|
-
* Abstract base class for memory implementations
|
294
|
-
* @abstract
|
295
|
-
*/
|
296
|
-
export abstract class BaseMemory implements IMemoryService {
|
297
|
-
/**
|
298
|
-
* Creates an instance of BaseMemory
|
299
|
-
* @param {IMemoryAdapter} adapter - Memory adapter implementation
|
300
|
-
*/
|
301
|
-
constructor(protected readonly adapter: IMemoryAdapter) {}
|
302
|
-
|
303
|
-
abstract init(): Promise<void>;
|
304
|
-
abstract createMemory(
|
305
|
-
input: CreateMemoryInput & { embedding?: number[] }
|
306
|
-
): Promise<BaseMemoryType | undefined>;
|
307
|
-
abstract getMemoryById(
|
308
|
-
id: string,
|
309
|
-
roomId: string
|
310
|
-
): Promise<BaseMemoryType | null>;
|
311
|
-
abstract getMemoryByIndex(
|
312
|
-
query: string,
|
313
|
-
options: { roomId: string; limit?: number }
|
314
|
-
): Promise<BaseMemoryType[]>;
|
315
|
-
abstract getAllMemories(roomId: string): Promise<BaseMemoryType[]>;
|
316
|
-
abstract clearMemoryById(id: string, roomId: string): Promise<void>;
|
317
|
-
abstract clearAllMemories(): Promise<void>;
|
318
|
-
|
319
|
-
async saveJob(id: string, job: any): Promise<void> {
|
320
|
-
await this.adapter.saveJob?.(id, job);
|
321
|
-
}
|
322
|
-
|
323
|
-
async saveRequest(id: string, request: any): Promise<void> {
|
324
|
-
await this.adapter.saveRequest?.(id, request);
|
325
|
-
}
|
326
|
-
|
327
|
-
async getJob(id: string): Promise<any> {
|
328
|
-
return this.adapter.getJob?.(id);
|
329
|
-
}
|
330
|
-
|
331
|
-
async getRequest(id: string): Promise<any> {
|
332
|
-
return this.adapter.getRequest?.(id);
|
333
|
-
}
|
334
|
-
|
335
|
-
async deleteJob(id: string): Promise<void> {
|
336
|
-
await this.adapter.deleteJob?.(id);
|
337
|
-
}
|
338
|
-
|
339
|
-
async deleteRequest(id: string): Promise<void> {
|
340
|
-
await this.adapter.deleteRequest?.(id);
|
341
|
-
}
|
342
|
-
|
343
|
-
async getAllRequests(): Promise<any[]> {
|
344
|
-
return this.adapter.getAllRequests?.() || [];
|
345
|
-
}
|
346
|
-
|
347
|
-
async clear(): Promise<void> {
|
348
|
-
await this.adapter.clear?.();
|
349
|
-
}
|
350
|
-
}
|
351
|
-
|
352
|
-
/**
|
353
|
-
* Interface for event emitter functionality
|
354
|
-
* @interface
|
355
|
-
*/
|
356
|
-
export interface IEventEmitter {
|
357
|
-
/**
|
358
|
-
* Emits an event with optional arguments
|
359
|
-
* @param {string} event - Event name
|
360
|
-
* @param {...any[]} args - Event arguments
|
361
|
-
* @returns {boolean} Whether the event had listeners
|
362
|
-
*/
|
363
|
-
emit(event: string, ...args: any[]): boolean;
|
364
|
-
|
365
|
-
/**
|
366
|
-
* Registers an event listener
|
367
|
-
* @param {string} event - Event name
|
368
|
-
* @param {Function} listener - Event handler
|
369
|
-
*/
|
370
|
-
on(event: string, listener: (...args: any[]) => void): void;
|
371
|
-
|
372
|
-
/**
|
373
|
-
* Removes all listeners for an event
|
374
|
-
* @param {string} [event] - Optional event name
|
375
|
-
*/
|
376
|
-
removeAllListeners(event?: string): void;
|
377
|
-
|
378
|
-
/**
|
379
|
-
* Returns raw listeners for an event
|
380
|
-
* @param {string} event - Event name
|
381
|
-
* @returns {Function[]} Array of listener functions
|
382
|
-
*/
|
383
|
-
rawListeners(event: string): Function[];
|
384
|
-
|
385
|
-
/**
|
386
|
-
* Registers an event listener that will be called only once
|
387
|
-
* @param {string} event - Event name
|
388
|
-
* @param {Function} listener - Event handler
|
389
|
-
*/
|
390
|
-
once(event: string, listener: (...args: any[]) => void): void;
|
391
|
-
|
392
|
-
/**
|
393
|
-
* Removes a specific listener for an event
|
394
|
-
* @param {string} event - Event name
|
395
|
-
* @param {Function} listener - Event handler
|
396
|
-
*/
|
397
|
-
removeListener(event: string, listener: (...args: any[]) => void): void;
|
398
|
-
}
|
399
|
-
|
400
|
-
/**
|
401
|
-
* Interface for cron service functionality
|
402
|
-
* @interface
|
403
|
-
*/
|
404
|
-
export interface ICronService {
|
405
|
-
/**
|
406
|
-
* Schedules a job using cron expression
|
407
|
-
* @param {string} expression - Cron expression
|
408
|
-
* @param {Function} callback - Job callback
|
409
|
-
* @returns {ICronJob} Cron job instance
|
410
|
-
*/
|
411
|
-
schedule(expression: string, callback: () => void): ICronJob;
|
412
|
-
}
|
413
|
-
|
414
|
-
/**
|
415
|
-
* Interface for cron job control
|
416
|
-
* @interface
|
417
|
-
*/
|
418
|
-
export interface ICronJob {
|
419
|
-
/**
|
420
|
-
* Starts the cron job
|
421
|
-
*/
|
422
|
-
start(): void;
|
423
|
-
|
424
|
-
/**
|
425
|
-
* Stops the cron job
|
426
|
-
*/
|
427
|
-
stop(): void;
|
428
|
-
}
|
429
|
-
|
430
|
-
/**
|
431
|
-
* Interface for embedding model operations
|
432
|
-
* @interface
|
433
|
-
*/
|
434
|
-
export interface IEmbeddingModel {
|
435
|
-
/**
|
436
|
-
* Embeds a single text
|
437
|
-
* @param {string} text - Text to embed
|
438
|
-
* @returns {Promise<number[]>} Vector embedding
|
439
|
-
*/
|
440
|
-
embed(text: string): Promise<number[]>;
|
441
|
-
|
442
|
-
/**
|
443
|
-
* Embeds multiple texts
|
444
|
-
* @param {string[]} texts - Array of texts to embed
|
445
|
-
* @returns {Promise<number[][]>} Array of vector embeddings
|
446
|
-
*/
|
447
|
-
embedMany(texts: string[]): Promise<number[][]>;
|
448
|
-
}
|
449
|
-
|
450
|
-
/**
|
451
|
-
* Interface for similarity calculations
|
452
|
-
* @interface
|
453
|
-
*/
|
454
|
-
export interface ISimilarityCalculator {
|
455
|
-
/**
|
456
|
-
* Calculates similarity between two embeddings
|
457
|
-
* @param {number[]} embedding1 - First embedding
|
458
|
-
* @param {number[]} embedding2 - Second embedding
|
459
|
-
* @returns {number} Similarity score
|
460
|
-
*/
|
461
|
-
calculate(embedding1: number[], embedding2: number[]): number;
|
462
|
-
}
|
463
|
-
|
464
|
-
/**
|
465
|
-
* Interface for embedding module operations
|
466
|
-
* @interface
|
467
|
-
*/
|
468
|
-
export interface IEmbeddingModule {
|
469
|
-
/**
|
470
|
-
* Embeds a single text
|
471
|
-
* @param {string} text - Text to embed
|
472
|
-
* @returns {Promise<number[]>} Vector embedding
|
473
|
-
*/
|
474
|
-
embedText(text: string): Promise<number[]>;
|
475
|
-
|
476
|
-
/**
|
477
|
-
* Embeds multiple texts
|
478
|
-
* @param {string[]} texts - Array of texts to embed
|
479
|
-
* @returns {Promise<number[][]>} Array of vector embeddings
|
480
|
-
*/
|
481
|
-
embedMany(texts: string[]): Promise<number[][]>;
|
482
|
-
|
483
|
-
/**
|
484
|
-
* Calculates similarity between two embeddings
|
485
|
-
* @param {number[]} embedding1 - First embedding
|
486
|
-
* @param {number[]} embedding2 - Second embedding
|
487
|
-
* @returns {number} Similarity score
|
488
|
-
*/
|
489
|
-
calculateSimilarity(embedding1: number[], embedding2: number[]): number;
|
490
|
-
}
|
491
|
-
|
492
|
-
export interface IJobStorage {
|
493
|
-
saveJob(id: string, job: ICronJob): Promise<void>;
|
494
|
-
saveRequest(id: string, request: ScheduledRequest): Promise<void>;
|
495
|
-
getJob(id: string): Promise<ICronJob | undefined>;
|
496
|
-
getRequest(id: string): Promise<ScheduledRequest | undefined>;
|
497
|
-
deleteJob(id: string): Promise<void>;
|
498
|
-
deleteRequest(id: string): Promise<void>;
|
499
|
-
getAllRequests(): Promise<ScheduledRequest[]>;
|
500
|
-
clear(): Promise<void>;
|
501
|
-
}
|
502
|
-
|
503
|
-
/**
|
504
|
-
* Interface defining the extended functionality of a graph observable
|
505
|
-
* @template T - The Zod schema type that defines the structure of the graph data
|
506
|
-
*/
|
507
|
-
export interface GraphObservable<T extends ZodSchema> extends Observable<any> {
|
508
|
-
/**
|
509
|
-
* Observes the entire graph state
|
510
|
-
*/
|
511
|
-
state(): Observable<GraphContext<T>>;
|
512
|
-
|
513
|
-
/**
|
514
|
-
* Observes a specific node's state
|
515
|
-
* @param nodeName - The name of the node to observe
|
516
|
-
*/
|
517
|
-
node(nodeName: string): Observable<any>;
|
518
|
-
|
519
|
-
/**
|
520
|
-
* Observes multiple nodes' states
|
521
|
-
* @param nodeNames - Array of node names to observe
|
522
|
-
*/
|
523
|
-
nodes(nodeNames: string[]): Observable<any>;
|
524
|
-
|
525
|
-
/**
|
526
|
-
* Observes specific properties of the graph context
|
527
|
-
* @param prop - Property or array of properties to observe
|
528
|
-
*/
|
529
|
-
property(
|
530
|
-
prop: keyof SchemaType<T> | Array<keyof SchemaType<T>>
|
531
|
-
): Observable<any>;
|
532
|
-
|
533
|
-
/**
|
534
|
-
* Observes specific events in the graph
|
535
|
-
* @param eventName - The name of the event to observe
|
536
|
-
*/
|
537
|
-
event(eventName: string): Observable<GraphEvent<T>>;
|
538
|
-
|
539
|
-
/**
|
540
|
-
* Waits for a specific condition to be met
|
541
|
-
* @param observable - The observable to watch
|
542
|
-
* @param predicate - Function that determines when the condition is met
|
543
|
-
*/
|
544
|
-
until(
|
545
|
-
observable: Observable<any>,
|
546
|
-
predicate: (state: any) => boolean
|
547
|
-
): Promise<any>;
|
548
|
-
}
|
@@ -1,25 +0,0 @@
|
|
1
|
-
import cron from "node-cron";
|
2
|
-
import { ICronJob, ICronService } from "../../../../interfaces";
|
3
|
-
|
4
|
-
/**
|
5
|
-
* @module NodeCronAdapter
|
6
|
-
* @description Adapter implementation for node-cron service.
|
7
|
-
* Provides a bridge between the application's scheduling interface and the node-cron library.
|
8
|
-
* @implements {ICronService}
|
9
|
-
*/
|
10
|
-
export class NodeCronAdapter implements ICronService {
|
11
|
-
/**
|
12
|
-
* Schedules a new cron job
|
13
|
-
* @param {string} expression - Cron expression defining the schedule
|
14
|
-
* @param {Function} callback - Function to be executed when the schedule triggers
|
15
|
-
* @returns {ICronJob} Interface for controlling the scheduled job
|
16
|
-
*/
|
17
|
-
schedule(expression: string, callback: () => void): ICronJob {
|
18
|
-
const job = cron.schedule(expression, callback);
|
19
|
-
|
20
|
-
return {
|
21
|
-
start: () => job.start(),
|
22
|
-
stop: () => job.stop(),
|
23
|
-
};
|
24
|
-
}
|
25
|
-
}
|
package/modules/agenda/index.ts
DELETED
@@ -1,146 +0,0 @@
|
|
1
|
-
import { ICronService, IMemoryService } from "../../interfaces";
|
2
|
-
import { ScheduledRequest } from "../../types";
|
3
|
-
|
4
|
-
/**
|
5
|
-
* @module Agenda
|
6
|
-
* @description A module for scheduling and managing cron-based tasks.
|
7
|
-
* Provides functionality for scheduling requests, managing their lifecycle,
|
8
|
-
* and handling recurring and one-time tasks.
|
9
|
-
*/
|
10
|
-
export class Agenda {
|
11
|
-
/**
|
12
|
-
* Creates an instance of Agenda
|
13
|
-
* @param {ICronService} cronService - The cron service implementation
|
14
|
-
* @param {IMemoryService} storage - The storage service for jobs and requests
|
15
|
-
*/
|
16
|
-
constructor(
|
17
|
-
private readonly cronService: ICronService,
|
18
|
-
private readonly storage: IMemoryService
|
19
|
-
) {}
|
20
|
-
|
21
|
-
/**
|
22
|
-
* Schedule a new request to be processed later
|
23
|
-
* @param {Object} request - The request configuration
|
24
|
-
* @param {string} request.originalRequest - The original request to be executed
|
25
|
-
* @param {string} request.cronExpression - The cron expression for scheduling
|
26
|
-
* @param {Object} [callbacks] - Optional callback functions
|
27
|
-
* @param {Function} [callbacks.onScheduled] - Called when request is scheduled
|
28
|
-
* @param {Function} [callbacks.onExecuted] - Called when request is executed
|
29
|
-
* @returns {Promise<string>} The ID of the scheduled request
|
30
|
-
*/
|
31
|
-
async scheduleRequest(
|
32
|
-
request: {
|
33
|
-
originalRequest: string;
|
34
|
-
cronExpression: string;
|
35
|
-
},
|
36
|
-
callbacks?: {
|
37
|
-
onScheduled?: (id: string) => void;
|
38
|
-
onExecuted?: (id: string, originalRequest: string) => void;
|
39
|
-
}
|
40
|
-
): Promise<string> {
|
41
|
-
const id = crypto.randomUUID();
|
42
|
-
|
43
|
-
const scheduledRequest: ScheduledRequest = {
|
44
|
-
id,
|
45
|
-
originalRequest: request.originalRequest,
|
46
|
-
cronExpression: request.cronExpression,
|
47
|
-
isRecurring: false,
|
48
|
-
createdAt: new Date(),
|
49
|
-
};
|
50
|
-
|
51
|
-
// Create cron job using the injected service
|
52
|
-
const cronJob = this.cronService.schedule(
|
53
|
-
request.cronExpression,
|
54
|
-
async () => {
|
55
|
-
console.log(`🔄 Executing scheduled request: ${id}`);
|
56
|
-
|
57
|
-
if (callbacks?.onExecuted) {
|
58
|
-
callbacks.onExecuted(id, scheduledRequest.originalRequest);
|
59
|
-
}
|
60
|
-
|
61
|
-
console.log(`✅ Scheduled request executed successfully: ${id}`);
|
62
|
-
|
63
|
-
// Auto-stop for non-recurring tasks
|
64
|
-
if (!scheduledRequest.isRecurring) {
|
65
|
-
await this.cancelScheduledRequest(id);
|
66
|
-
}
|
67
|
-
}
|
68
|
-
);
|
69
|
-
|
70
|
-
// Start job in non-running mode
|
71
|
-
cronJob.stop();
|
72
|
-
|
73
|
-
// Store request and job using storage service
|
74
|
-
await this.storage.saveRequest(id, scheduledRequest);
|
75
|
-
await this.storage.saveJob(id, cronJob);
|
76
|
-
|
77
|
-
if (callbacks?.onScheduled) callbacks.onScheduled(id);
|
78
|
-
|
79
|
-
// Start the job after storing
|
80
|
-
cronJob.start();
|
81
|
-
|
82
|
-
return id;
|
83
|
-
}
|
84
|
-
|
85
|
-
/**
|
86
|
-
* Cancels a scheduled request by its ID
|
87
|
-
* @param {string} requestId - The ID of the request to cancel
|
88
|
-
* @returns {Promise<boolean>} True if the request was found and cancelled, false otherwise
|
89
|
-
*/
|
90
|
-
async cancelScheduledRequest(requestId: string): Promise<boolean> {
|
91
|
-
const cronJob = await this.storage.getJob(requestId);
|
92
|
-
if (cronJob) {
|
93
|
-
try {
|
94
|
-
cronJob.stop();
|
95
|
-
await this.storage.deleteJob(requestId);
|
96
|
-
await this.storage.deleteRequest(requestId);
|
97
|
-
return true;
|
98
|
-
} catch (error) {
|
99
|
-
console.error(`Failed to stop cron job ${requestId}:`, error);
|
100
|
-
return false;
|
101
|
-
}
|
102
|
-
}
|
103
|
-
return false;
|
104
|
-
}
|
105
|
-
|
106
|
-
/**
|
107
|
-
* Retrieves all scheduled requests
|
108
|
-
* @returns {Promise<ScheduledRequest[]>} Array of all scheduled requests
|
109
|
-
*/
|
110
|
-
async getScheduledRequests(): Promise<ScheduledRequest[]> {
|
111
|
-
return this.storage.getAllRequests();
|
112
|
-
}
|
113
|
-
|
114
|
-
/**
|
115
|
-
* Stops all scheduled jobs
|
116
|
-
* @returns {Promise<void>}
|
117
|
-
*/
|
118
|
-
async stopAll(): Promise<void> {
|
119
|
-
const requests = await this.getScheduledRequests();
|
120
|
-
|
121
|
-
for (const request of requests) {
|
122
|
-
await this.cancelScheduledRequest(request.id);
|
123
|
-
}
|
124
|
-
|
125
|
-
await this.storage.clear();
|
126
|
-
}
|
127
|
-
|
128
|
-
/**
|
129
|
-
* Stops the agenda service
|
130
|
-
* @returns {Promise<void>}
|
131
|
-
*/
|
132
|
-
public async stop(): Promise<void> {
|
133
|
-
await this.stopAll();
|
134
|
-
await new Promise((resolve) => setTimeout(resolve, 100));
|
135
|
-
}
|
136
|
-
|
137
|
-
/**
|
138
|
-
* Cancels requests matching the query
|
139
|
-
* @param {Object} query - Query to match requests against
|
140
|
-
* @returns {Promise<void>}
|
141
|
-
*/
|
142
|
-
public async cancel(query: {}): Promise<void> {
|
143
|
-
await this.stopAll();
|
144
|
-
await new Promise((resolve) => setTimeout(resolve, 100));
|
145
|
-
}
|
146
|
-
}
|