@ai.ntellect/core 0.5.0 → 0.6.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 (131) hide show
  1. package/.mocharc.json +1 -1
  2. package/README.md +311 -272
  3. package/dist/graph/controller.js +63 -0
  4. package/dist/graph/engine.js +563 -0
  5. package/dist/index.js +6 -6
  6. package/dist/memory/adapters/meilisearch/index.js +249 -0
  7. package/dist/memory/adapters/redis/index.js +96 -0
  8. package/dist/memory/index.js +9 -0
  9. package/dist/services/agenda.js +115 -0
  10. package/dist/services/embedding.js +40 -0
  11. package/dist/services/queue.js +99 -103
  12. package/dist/test/graph/controller.test.js +170 -0
  13. package/dist/test/graph/engine.test.js +465 -0
  14. package/dist/test/memory/adapters/meilisearch.test.js +250 -0
  15. package/dist/test/memory/adapters/redis.test.js +143 -0
  16. package/dist/test/memory/base.test.js +209 -0
  17. package/dist/test/services/agenda.test.js +230 -0
  18. package/dist/test/services/queue.test.js +258 -0
  19. package/dist/types/index.js +2 -0
  20. package/dist/utils/generate-object.js +32 -11
  21. package/dist/utils/inject-actions.js +2 -2
  22. package/dist/utils/queue-item-transformer.js +2 -2
  23. package/dist/utils/state-manager.js +20 -0
  24. package/graph/controller.ts +60 -0
  25. package/{services/workflow.ts → graph/engine.ts} +331 -113
  26. package/index.ts +7 -7
  27. package/interfaces/index.ts +119 -0
  28. package/memory/adapters/meilisearch/index.ts +286 -0
  29. package/memory/adapters/redis/index.ts +103 -0
  30. package/memory/index.ts +22 -0
  31. package/package.json +7 -2
  32. package/services/agenda.ts +48 -43
  33. package/services/embedding.ts +26 -0
  34. package/services/queue.ts +2 -29
  35. package/test/.env.test +4 -0
  36. package/test/graph/controller.test.ts +186 -0
  37. package/test/graph/engine.test.ts +563 -0
  38. package/test/memory/adapters/meilisearch.test.ts +297 -0
  39. package/test/memory/adapters/redis.test.ts +160 -0
  40. package/test/memory/base.test.ts +229 -0
  41. package/test/services/agenda.test.ts +280 -0
  42. package/test/services/queue.test.ts +286 -44
  43. package/tsconfig.json +10 -10
  44. package/types/index.ts +270 -0
  45. package/utils/generate-object.js +111 -0
  46. package/utils/header-builder.js +34 -0
  47. package/utils/inject-actions.js +16 -0
  48. package/utils/queue-item-transformer.js +24 -0
  49. package/utils/queue-item-transformer.ts +8 -11
  50. package/utils/sanitize-results.js +60 -0
  51. package/utils/schema-generator.js +46 -0
  52. package/utils/state-manager.js +20 -0
  53. package/utils/state-manager.ts +17 -12
  54. package/.nvmrc +0 -1
  55. package/README.FR.md +0 -916
  56. package/agent/index.ts +0 -151
  57. package/agent/workflow/conditions.ts +0 -16
  58. package/agent/workflow/handlers/interpreter.handler.ts +0 -48
  59. package/agent/workflow/handlers/memory.handler.ts +0 -106
  60. package/agent/workflow/handlers/orchestrator.handler.ts +0 -23
  61. package/agent/workflow/handlers/queue.handler.ts +0 -34
  62. package/agent/workflow/handlers/scheduler.handler.ts +0 -61
  63. package/agent/workflow/index.ts +0 -62
  64. package/dist/agent/index.d.ts +0 -38
  65. package/dist/agent/index.js +0 -143
  66. package/dist/agent/tools/get-rss.d.ts +0 -16
  67. package/dist/agent/tools/get-rss.js +0 -62
  68. package/dist/bull.d.ts +0 -1
  69. package/dist/bull.js +0 -9
  70. package/dist/examples/index.d.ts +0 -2
  71. package/dist/examples/index.js +0 -89
  72. package/dist/index.d.ts +0 -7
  73. package/dist/llm/interpreter/context.d.ts +0 -15
  74. package/dist/llm/interpreter/context.js +0 -89
  75. package/dist/llm/interpreter/index.d.ts +0 -21
  76. package/dist/llm/interpreter/index.js +0 -87
  77. package/dist/llm/memory-manager/context.d.ts +0 -2
  78. package/dist/llm/memory-manager/context.js +0 -22
  79. package/dist/llm/memory-manager/index.d.ts +0 -17
  80. package/dist/llm/memory-manager/index.js +0 -107
  81. package/dist/llm/orchestrator/context.d.ts +0 -2
  82. package/dist/llm/orchestrator/context.js +0 -23
  83. package/dist/llm/orchestrator/index.d.ts +0 -44
  84. package/dist/llm/orchestrator/index.js +0 -139
  85. package/dist/llm/orchestrator/types.d.ts +0 -12
  86. package/dist/memory/cache.d.ts +0 -22
  87. package/dist/memory/cache.js +0 -165
  88. package/dist/memory/persistent.d.ts +0 -57
  89. package/dist/memory/persistent.js +0 -189
  90. package/dist/services/queue.d.ts +0 -13
  91. package/dist/services/redis-cache.d.ts +0 -37
  92. package/dist/services/redis-cache.js +0 -93
  93. package/dist/services/scheduler.d.ts +0 -40
  94. package/dist/services/scheduler.js +0 -99
  95. package/dist/services/telegram-monitor.d.ts +0 -0
  96. package/dist/services/telegram-monitor.js +0 -118
  97. package/dist/t.d.ts +0 -46
  98. package/dist/t.js +0 -102
  99. package/dist/test.d.ts +0 -0
  100. package/dist/test.js +0 -438
  101. package/dist/types.d.ts +0 -258
  102. package/dist/types.js +0 -22
  103. package/dist/utils/generate-object.d.ts +0 -12
  104. package/dist/utils/header-builder.d.ts +0 -11
  105. package/dist/utils/inject-actions.d.ts +0 -2
  106. package/dist/utils/queue-item-transformer.d.ts +0 -7
  107. package/dist/utils/sanitize-results.d.ts +0 -17
  108. package/dist/utils/schema-generator.d.ts +0 -16
  109. package/examples/actions/get-rss.ts +0 -71
  110. package/examples/index.ts +0 -98
  111. package/index.html +0 -42
  112. package/llm/dynamic-condition/example.ts +0 -36
  113. package/llm/dynamic-condition/index.ts +0 -108
  114. package/llm/interpreter/context.ts +0 -94
  115. package/llm/interpreter/index.ts +0 -140
  116. package/llm/memory-manager/context.ts +0 -19
  117. package/llm/memory-manager/index.ts +0 -115
  118. package/llm/orchestrator/context.ts +0 -19
  119. package/llm/orchestrator/index.ts +0 -192
  120. package/llm/orchestrator/types.ts +0 -14
  121. package/memory/cache.ts +0 -221
  122. package/memory/persistent.ts +0 -265
  123. package/script.js +0 -167
  124. package/services/cache.ts +0 -298
  125. package/services/telegram-monitor.ts +0 -138
  126. package/t.py +0 -79
  127. package/t.ts +0 -25
  128. package/test/llm/orchestrator.test.ts +0 -47
  129. package/test/llm/synthesizer.test.ts +0 -31
  130. package/types.ts +0 -367
  131. /package/dist/{llm/orchestrator/types.js → interfaces/index.js} +0 -0
@@ -1,16 +0,0 @@
1
- import { z } from "zod";
2
- export declare const getRssNews: {
3
- name: string;
4
- description: string;
5
- parameters: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
6
- execute: () => Promise<{
7
- status: string;
8
- items: {
9
- title: any;
10
- content: string;
11
- link: any;
12
- date: any;
13
- source: any;
14
- }[];
15
- }>;
16
- };
@@ -1,62 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getRssNews = void 0;
7
- const rss_parser_1 = __importDefault(require("rss-parser"));
8
- const zod_1 = require("zod");
9
- const RSS_FEEDS = [
10
- "https://www.investing.com/rss/news_301.rss",
11
- "https://cointelegraph.com/rss/category/analysis",
12
- "https://cointelegraph.com/rss/category/top-10-cryptocurrencies",
13
- ];
14
- const parser = new rss_parser_1.default();
15
- function stripHtmlTags(content) {
16
- if (!content)
17
- return "";
18
- return content
19
- .replace(/<[^>]*>/g, "")
20
- .replace(/\n/g, "")
21
- .replace(" ", "");
22
- }
23
- exports.getRssNews = {
24
- name: "get-news-rss",
25
- description: "Get latest news about on website",
26
- parameters: zod_1.z.object({}),
27
- execute: async () => {
28
- const itemsPerSource = 5;
29
- try {
30
- const feedPromises = RSS_FEEDS.map((url) => parser.parseURL(url));
31
- const results = await Promise.allSettled(feedPromises);
32
- const successfulFeeds = results
33
- .filter((result) => {
34
- return (result.status === "fulfilled" && result.value?.items?.length > 0);
35
- })
36
- .map((result) => result.value);
37
- const allItems = successfulFeeds
38
- .flatMap((feed) => feed.items.slice(0, itemsPerSource))
39
- .sort((a, b) => {
40
- const dateA = a.pubDate ? new Date(a.pubDate).getTime() : 0;
41
- const dateB = b.pubDate ? new Date(b.pubDate).getTime() : 0;
42
- return dateB - dateA;
43
- })
44
- .slice(0, 5)
45
- .map((item) => ({
46
- title: item.title,
47
- content: stripHtmlTags(item.content),
48
- link: item.link,
49
- date: item.pubDate,
50
- source: item.creator || new URL(item.link).hostname,
51
- }));
52
- const result = {
53
- status: "success",
54
- items: allItems,
55
- };
56
- return result;
57
- }
58
- catch (error) {
59
- throw error;
60
- }
61
- },
62
- };
package/dist/bull.d.ts DELETED
@@ -1 +0,0 @@
1
- export {};
package/dist/bull.js DELETED
@@ -1,9 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const node_cron_1 = __importDefault(require("node-cron"));
7
- node_cron_1.default.schedule("* * * * *", () => {
8
- console.log("running a task every minute");
9
- });
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
@@ -1,89 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const deepseek_1 = require("@ai-sdk/deepseek");
8
- const dotenv_1 = require("dotenv");
9
- const readline_1 = __importDefault(require("readline"));
10
- const agent_1 = require("../agent");
11
- const get_rss_1 = require("../agent/tools/get-rss");
12
- const interpreter_1 = require("../llm/interpreter");
13
- const context_1 = require("../llm/interpreter/context");
14
- (0, dotenv_1.configDotenv)();
15
- // Initialiser l'agent une fois pour toute la session
16
- const initializeAgent = () => {
17
- const model = (0, deepseek_1.deepseek)("deepseek-reasoner");
18
- const securityInterpreter = new interpreter_1.Interpreter({
19
- name: "security",
20
- model,
21
- character: context_1.securityInterpreterCharacter,
22
- });
23
- const marketInterpreter = new interpreter_1.Interpreter({
24
- name: "market",
25
- model,
26
- character: context_1.marketInterpreterCharacter,
27
- });
28
- const generalInterpreter = new interpreter_1.Interpreter({
29
- name: "general",
30
- model,
31
- character: context_1.generalInterpreterCharacter,
32
- });
33
- const agent = new agent_1.Agent({
34
- cache: {
35
- host: process.env.REDIS_HOST || "localhost",
36
- port: Number(process.env.REDIS_PORT) || 6379,
37
- },
38
- orchestrator: {
39
- model,
40
- tools: [get_rss_1.getRssNews],
41
- },
42
- interpreters: [securityInterpreter, marketInterpreter, generalInterpreter],
43
- memoryManager: {
44
- model,
45
- },
46
- maxIterations: 3,
47
- });
48
- return agent;
49
- };
50
- // Fonction pour lancer une session interactive
51
- const startChatSession = async () => {
52
- console.log("Bienvenue dans votre session de chat avec l'agent !");
53
- console.log("Tapez 'exit' pour quitter.\n");
54
- const agent = initializeAgent();
55
- const rl = readline_1.default.createInterface({
56
- input: process.stdin,
57
- output: process.stdout,
58
- prompt: "Vous > ",
59
- });
60
- let state = {
61
- currentContext: "",
62
- previousActions: [],
63
- };
64
- rl.prompt();
65
- rl.on("line", async (line) => {
66
- const input = line.trim();
67
- if (input.toLowerCase() === "exit") {
68
- console.log("Fin de la session. À bientôt !");
69
- rl.close();
70
- return;
71
- }
72
- state.currentContext = input;
73
- console.log("Agent en réflexion...");
74
- try {
75
- const result = await agent.process(state);
76
- console.log(`Agent > ${result}\n`);
77
- }
78
- catch (error) {
79
- console.error("Erreur avec l'agent :", error);
80
- }
81
- rl.prompt();
82
- });
83
- rl.on("close", () => {
84
- console.log("Session terminée.");
85
- process.exit(0);
86
- });
87
- };
88
- // Lancer la session de chat
89
- startChatSession();
package/dist/index.d.ts DELETED
@@ -1,7 +0,0 @@
1
- export * from "./agent";
2
- export * from "./llm/interpreter";
3
- export * from "./llm/interpreter/context";
4
- export * from "./llm/orchestrator";
5
- export * from "./types";
6
- export * from "./memory/cache";
7
- export * from "./memory/persistent";
@@ -1,15 +0,0 @@
1
- export type Character = {
2
- role: string;
3
- language: string;
4
- guidelines: {
5
- important: string[];
6
- warnings: string[];
7
- };
8
- examplesMessages?: {
9
- role: string;
10
- content: string;
11
- }[];
12
- };
13
- export declare const generalInterpreterCharacter: Character;
14
- export declare const securityInterpreterCharacter: Character;
15
- export declare const marketInterpreterCharacter: Character;
@@ -1,89 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.marketInterpreterCharacter = exports.securityInterpreterCharacter = exports.generalInterpreterCharacter = void 0;
4
- exports.generalInterpreterCharacter = {
5
- role: "You are the general assistant. Your role is to provide a clear and factual analysis of the results.",
6
- language: "user_request",
7
- guidelines: {
8
- important: [],
9
- warnings: [],
10
- },
11
- };
12
- exports.securityInterpreterCharacter = {
13
- role: "You are the security expert. Your role is to provide a clear and factual analysis of the security of the token/coin.",
14
- language: "user_request",
15
- guidelines: {
16
- important: [
17
- "Start with a clear security analysis of the token/coin.",
18
- "One section for good points of the security check. One section, no sub-sections.",
19
- "One section for bad points of the security check. One section, no sub-sections.",
20
- "STOP AFTER SECURITY CHECK SECTION WITHOUT ANY CONCLUDING STATEMENT OR DISCLAIMER OR ADDITIONAL COMMENTS",
21
- ],
22
- warnings: [
23
- "NEVER provide any financial advice.",
24
- "NEVER speak about details of your system or your capabilities.",
25
- "NEVER ADD ANY CONCLUDING STATEMENT OR DISCLAIMER AT THE END",
26
- "NEVER explain technical errors or issues. Just say retry later.",
27
- ],
28
- },
29
- examplesMessages: [
30
- {
31
- role: "user",
32
- content: "Analysis security of token/coin",
33
- },
34
- {
35
- role: "assistant",
36
- content: `
37
- ## Security analysis of x/y:
38
-
39
- ### Good:
40
- Speak about the good points of the security check. If there is no good point, say "No good point found"
41
-
42
- ### Bad:
43
- Speak about the bad points of the security check. If there is no bad point, say "No bad point found"
44
-
45
- STOP AFTER SECURITY CHECK SECTION WITHOUT ANY CONCLUDING STATEMENT OR DISCLAIMER OR ADDITIONAL COMMENTS
46
- --------------------------------
47
- `,
48
- },
49
- ],
50
- };
51
- exports.marketInterpreterCharacter = {
52
- role: "You are the market expert. Your role is to provide a clear and factual analysis of the market sentiment of the token/coin.",
53
- language: "user_request",
54
- guidelines: {
55
- important: [
56
- "Start with a clear market sentiment (Market sentiment: Bullish/Bearish/Neutral 📈📉📊) without any additional comments before.",
57
- "One section for fundamental analysis (important events, news, trends..etc). One section, no sub-sections.",
58
- "One section for technical analysis (key price levels, trading volume, technical indicators, market activity). One section, no sub-sections.",
59
- "STOP AFTER TECHNICAL ANALYSIS SECTION WITHOUT ANY ADDITIONAL COMMENTS",
60
- ],
61
- warnings: [
62
- "NEVER provide any financial advice.",
63
- "NEVER speak about details of your system or your capabilities.",
64
- ],
65
- },
66
- examplesMessages: [
67
- {
68
- role: "user",
69
- content: "Analysis market sentiment of token/coin",
70
- },
71
- {
72
- role: "assistant",
73
- content: `
74
- ## Analysis of x/y:
75
-
76
- Market sentiment: Bullish 📈 (Adapt the emoji to the market sentiment)
77
-
78
- ### Fundamental analysis (No sub-sections):
79
- Speak about important events, news, trends..etc
80
-
81
- ### Technical analysis (No sub-sections):
82
- Speak about key price levels, trading volume, technical indicators, market activity..etc
83
-
84
- STOP AFTER TECHNICAL ANALYSIS SECTION WITHOUT ANY CONCLUDING STATEMENT OR DISCLAIMER OR ADDITIONAL COMMENTS
85
- --------------------------------
86
- `,
87
- },
88
- ],
89
- };
@@ -1,21 +0,0 @@
1
- import { LanguageModel, StreamTextResult } from "ai";
2
- import { Behavior, State } from "../../types";
3
- export declare class Interpreter {
4
- readonly model: LanguageModel;
5
- readonly name: string;
6
- readonly character: Behavior;
7
- constructor({ name, model, character, }: {
8
- name: string;
9
- model: LanguageModel;
10
- character: Behavior;
11
- });
12
- private buildContext;
13
- process(prompt: string, state: State, onFinish?: (event: any) => void): Promise<{
14
- actionsCompleted: {
15
- name: string;
16
- reasoning: string;
17
- }[];
18
- response: string;
19
- } | StreamTextResult<Record<string, any>>>;
20
- streamProcess(prompt: string, state: State, onFinish?: (event: any) => void): Promise<any>;
21
- }
@@ -1,87 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Interpreter = void 0;
4
- const ai_1 = require("ai");
5
- const zod_1 = require("zod");
6
- const generate_object_1 = require("../../utils/generate-object");
7
- const header_builder_1 = require("../../utils/header-builder");
8
- const interpreterSchema = zod_1.z.object({
9
- requestLanguage: zod_1.z
10
- .string()
11
- .describe("The language of the user's request (fr, en, es, etc.)"),
12
- actionsCompleted: zod_1.z
13
- .array(zod_1.z.object({
14
- name: zod_1.z.string(),
15
- reasoning: zod_1.z.string(),
16
- }))
17
- .describe("The actions done and why."),
18
- response: zod_1.z.string().describe("The response to the user's request."),
19
- });
20
- class Interpreter {
21
- constructor({ name, model, character, }) {
22
- this.name = name;
23
- this.model = model;
24
- this.character = character;
25
- }
26
- buildContext(state) {
27
- const { userRequest, results } = state;
28
- const { role, language, guidelines } = this.character;
29
- const { important, warnings, steps } = guidelines;
30
- const context = header_builder_1.LLMHeaderBuilder.create();
31
- if (role) {
32
- context.addHeader("ROLE", role);
33
- }
34
- if (language) {
35
- context.addHeader("LANGUAGE", language);
36
- }
37
- if (important.length > 0) {
38
- context.addHeader("IMPORTANT", important);
39
- }
40
- if (warnings.length > 0) {
41
- context.addHeader("NEVER", warnings);
42
- }
43
- context.addHeader("CURRENT_RESULTS", results);
44
- return context;
45
- }
46
- async process(prompt, state, onFinish) {
47
- try {
48
- console.log("\n🎨 Starting interpretation process");
49
- console.log("Prompt:", prompt);
50
- console.log("Results to interpret:", JSON.stringify(state, null, 2));
51
- const context = this.buildContext(state);
52
- console.log("Context:", context.toString());
53
- const result = await (0, generate_object_1.generateObject)({
54
- model: this.model,
55
- prompt,
56
- system: context.toString(),
57
- temperature: 1.3,
58
- schema: interpreterSchema,
59
- });
60
- if (onFinish)
61
- onFinish(result.object);
62
- return result.object;
63
- }
64
- catch (error) {
65
- console.error("Error parsing schema:", error);
66
- throw error;
67
- }
68
- }
69
- async streamProcess(prompt, state, onFinish) {
70
- console.log("\n🎨 Starting streaming interpretation");
71
- console.log("Prompt:", prompt);
72
- const context = this.buildContext(state);
73
- const result = await (0, ai_1.streamText)({
74
- model: this.model,
75
- onFinish: (event) => {
76
- console.log("\n✅ Streaming interpretation completed");
77
- if (onFinish)
78
- onFinish(event);
79
- },
80
- prompt,
81
- system: context.toString(),
82
- temperature: 1.3,
83
- });
84
- return result;
85
- }
86
- }
87
- exports.Interpreter = Interpreter;
@@ -1,2 +0,0 @@
1
- import { Character } from "../interpreter/context";
2
- export declare const memoryManagerInstructions: Character;
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.memoryManagerInstructions = void 0;
4
- exports.memoryManagerInstructions = {
5
- role: "You are the memory curator. Your role is to extract and format memories from interactions.",
6
- language: "user_request",
7
- guidelines: {
8
- important: [
9
- "Generate memories based on the user request",
10
- "Generate query for requested data as the user could ask for it later",
11
- "Should be short-term memories only if it's ephemeral but relevant and reusable",
12
- "Only store as long-term: User information, User preferences, Important facts that don't change often, Historical milestones",
13
- "Make memory data concise and clear",
14
- "Set appropriate TTL based on data volatility",
15
- ],
16
- warnings: [
17
- "Never store data that is not provided by the results",
18
- "Never store data that is not relevant to the user request",
19
- ],
20
- },
21
- examplesMessages: [],
22
- };
@@ -1,17 +0,0 @@
1
- import { LanguageModelV1 } from "ai";
2
- import { CacheMemory } from "../../memory/cache";
3
- import { PersistentMemory } from "../../memory/persistent";
4
- import { State } from "../orchestrator/types";
5
- export declare class MemoryManager {
6
- private readonly model;
7
- private readonly memory?;
8
- constructor(config: {
9
- model: LanguageModelV1;
10
- memory?: {
11
- cache?: CacheMemory;
12
- persistent?: PersistentMemory;
13
- };
14
- });
15
- buildContext(state: State): string;
16
- process(state: State, result: string): Promise<void>;
17
- }
@@ -1,107 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MemoryManager = void 0;
4
- const zod_1 = require("zod");
5
- const types_1 = require("../../types");
6
- const generate_object_1 = require("../../utils/generate-object");
7
- const header_builder_1 = require("../../utils/header-builder");
8
- const context_1 = require("./context");
9
- class MemoryManager {
10
- constructor(config) {
11
- this.model = config.model;
12
- this.memory = config.memory;
13
- }
14
- buildContext(state) {
15
- const context = header_builder_1.LLMHeaderBuilder.create()
16
- .addHeader("ROLE", context_1.memoryManagerInstructions.role)
17
- .addHeader("LANGUAGE", context_1.memoryManagerInstructions.language)
18
- .addHeader("IMPORTANT", context_1.memoryManagerInstructions.guidelines.important)
19
- .addHeader("WARNINGS", context_1.memoryManagerInstructions.guidelines.warnings)
20
- .addHeader("CURRENT_CONTEXT", state.currentContext)
21
- .addHeader("RESULTS", JSON.stringify(state.results));
22
- return context.toString();
23
- }
24
- async process(state, result) {
25
- const context = this.buildContext(state);
26
- const memories = await (0, generate_object_1.generateObject)({
27
- model: this.model,
28
- schema: zod_1.z.object({
29
- memories: zod_1.z.array(zod_1.z.object({
30
- data: zod_1.z.string(),
31
- type: zod_1.z.enum(["short-term", "long-term"]),
32
- category: zod_1.z.enum([
33
- "user_information",
34
- "user_preference",
35
- "task",
36
- "current_goal",
37
- "news",
38
- "fact",
39
- "other",
40
- ]),
41
- queryForData: zod_1.z.string(),
42
- tags: zod_1.z.array(zod_1.z.string()),
43
- ttl: zod_1.z.number(),
44
- })),
45
- }),
46
- prompt: state.currentContext,
47
- system: context.toString(),
48
- temperature: 1,
49
- });
50
- console.log("Memories:", memories.object.memories);
51
- if (!this.memory) {
52
- return;
53
- }
54
- // Store memories after all processing is complete
55
- await Promise.all([
56
- // Store short-term memories in cache
57
- ...memories.object.memories
58
- .filter((m) => m.type === "short-term")
59
- .map(async (memoryItem) => {
60
- if (!this.memory?.cache) {
61
- return;
62
- }
63
- const existingCacheMemories = await this.memory.cache.findSimilarActions(memoryItem.data, {
64
- similarityThreshold: 85,
65
- maxResults: 3,
66
- scope: types_1.MemoryScope.GLOBAL,
67
- });
68
- if (existingCacheMemories.length > 0) {
69
- console.log("⚠️ Similar memory already exists in cache:", memoryItem.data);
70
- return;
71
- }
72
- await this.memory.cache.createMemory({
73
- query: memoryItem.queryForMemory,
74
- data: memoryItem.data,
75
- ttl: memoryItem.ttl, // Use TTL from LLM
76
- });
77
- console.log("✅ Memory stored in cache:", memoryItem.data);
78
- }),
79
- // Store long-term memories in persistent storage
80
- ...memories.object.memories
81
- .filter((m) => m.type === "long-term")
82
- .map(async (memoryItem) => {
83
- if (!this.memory?.persistent) {
84
- return;
85
- }
86
- const existingPersistentMemories = await this.memory.persistent.findRelevantDocuments(memoryItem.data, {
87
- similarityThreshold: 85,
88
- });
89
- if (existingPersistentMemories.length > 0) {
90
- console.log("⚠️ Similar memory already exists in persistent storage:", memoryItem.data);
91
- return;
92
- }
93
- await this.memory.persistent.createMemory({
94
- query: memoryItem.queryForMemory,
95
- data: memoryItem.data,
96
- category: memoryItem.category,
97
- tags: memoryItem.tags,
98
- roomId: "global",
99
- createdAt: new Date(),
100
- id: crypto.randomUUID(),
101
- });
102
- console.log("✅ Memory stored in persistent storage:", memoryItem);
103
- }),
104
- ]);
105
- }
106
- }
107
- exports.MemoryManager = MemoryManager;
@@ -1,2 +0,0 @@
1
- import { Character } from "../interpreter/context";
2
- export declare const orchestratorInstructions: Character;
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.orchestratorInstructions = void 0;
4
- exports.orchestratorInstructions = {
5
- role: "You are the orchestrator. Your role is to evaluate the current state and determine next actions.",
6
- language: "user_request",
7
- guidelines: {
8
- important: [
9
- "Continue executing actions until ALL necessary goals are achieved",
10
- "You can schedule actions in cron expression to be executed later (if needed)",
11
- "Only stop when you have a complete picture of the goal",
12
- "Social responses can be partial while gathering more data",
13
- "Set shouldContinue to false if no more actions are needed",
14
- "Once all actions are completed, choose the right interpreter to interpret the results",
15
- ],
16
- warnings: [
17
- "Never use a tool if it's not related to the user request",
18
- "Never schedule actions that are not related to the user request",
19
- "Never repeat the same action if it's not required to achieve the goal",
20
- "Never repeat scheduled actions if not required to achieve the goal",
21
- ],
22
- },
23
- };
@@ -1,44 +0,0 @@
1
- import { LanguageModelV1 } from "ai";
2
- import { CacheMemory } from "../../memory/cache";
3
- import { PersistentMemory } from "../../memory/persistent";
4
- import { CacheConfig } from "../../services/redis-cache";
5
- import { ActionSchema, QueueCallbacks } from "../../types";
6
- import { Interpreter } from "../interpreter";
7
- import { State } from "./types";
8
- export declare class AgentRuntime {
9
- private readonly model;
10
- private readonly tools;
11
- private readonly interpreters;
12
- private readonly queueManager;
13
- private readonly scheduler;
14
- private readonly cache;
15
- private memory?;
16
- constructor(model: LanguageModelV1, tools: ActionSchema[], interpreters: Interpreter[], redisConfig: CacheConfig, memory?: {
17
- persistent?: PersistentMemory;
18
- cache?: CacheMemory;
19
- }, callbacks?: QueueCallbacks);
20
- private buildContext;
21
- process(state: State): Promise<{
22
- shouldContinue: boolean;
23
- actions: Array<{
24
- name: string;
25
- parameters: Array<{
26
- name: string;
27
- value: any;
28
- }>;
29
- scheduler?: {
30
- isScheduled: boolean;
31
- scheduledAtInC?: string;
32
- interval?: string;
33
- reason?: string;
34
- };
35
- }>;
36
- socialResponse?: {
37
- shouldRespond: boolean;
38
- response?: string;
39
- isPartialResponse?: boolean;
40
- };
41
- interpreter?: string;
42
- results?: string;
43
- }>;
44
- }