@ai.ntellect/core 0.2.3 → 0.2.5

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/agent/index.ts CHANGED
@@ -3,14 +3,7 @@ import { Orchestrator } from "../llm/orchestrator";
3
3
  import { Synthesizer } from "../llm/synthesizer";
4
4
  import { CacheMemory } from "../memory/cache";
5
5
  import { PersistentMemory } from "../memory/persistent";
6
- import {
7
- ActionSchema,
8
- AgentEvent,
9
- MemoryScope,
10
- MemoryType,
11
- QueueResult,
12
- User,
13
- } from "../types";
6
+ import { ActionSchema, AgentEvent, QueueResult, User } from "../types";
14
7
  import { QueueItemTransformer } from "../utils/queue-item-transformer";
15
8
  import { ActionHandler } from "./handlers/ActionHandler";
16
9
 
@@ -126,8 +119,6 @@ export class Agent {
126
119
  this.orchestrator.tools,
127
120
  this.persistentMemory
128
121
  );
129
- console.log("Accumulated results:");
130
- console.dir(this.accumulatedResults, { depth: null });
131
122
 
132
123
  // const sanitizedResults = ResultSanitizer.sanitize(this.accumulatedResults);
133
124
  const evaluation = await evaluator.process(
@@ -160,28 +151,16 @@ export class Agent {
160
151
  }) {
161
152
  const synthesizer = new Synthesizer();
162
153
 
163
- for (const action of actionsResult.data) {
164
- if (!action.error) {
165
- await this.cacheMemory?.createMemory({
166
- content: actionsResult.initialPrompt,
167
- data: action.result,
168
- scope: MemoryScope.GLOBAL,
169
- type: MemoryType.ACTION,
170
- });
171
- }
172
- }
173
-
174
- const accumulatedResults = this.accumulatedResults;
175
154
  return this.stream
176
155
  ? (
177
156
  await synthesizer.streamProcess(
178
157
  actionsResult.initialPrompt,
179
- accumulatedResults
158
+ this.formatResults(actionsResult.data)
180
159
  )
181
160
  ).toDataStreamResponse()
182
161
  : await synthesizer.process(
183
162
  actionsResult.initialPrompt,
184
- accumulatedResults
163
+ this.formatResults(actionsResult.data)
185
164
  );
186
165
  }
187
166
 
@@ -191,4 +170,14 @@ export class Agent {
191
170
 
192
171
  return predefinedActions;
193
172
  }
173
+
174
+ private formatResults(results: QueueResult[]): QueueResult[] {
175
+ return results.map((result) => ({
176
+ ...result,
177
+ result:
178
+ typeof result.result === "object"
179
+ ? JSON.stringify(result.result)
180
+ : result.result,
181
+ }));
182
+ }
194
183
  }
@@ -23,4 +23,5 @@ export declare class Agent {
23
23
  private handleActions;
24
24
  private handleActionResults;
25
25
  private transformActions;
26
+ private formatResults;
26
27
  }
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Agent = void 0;
4
4
  const evaluator_1 = require("../llm/evaluator");
5
5
  const synthesizer_1 = require("../llm/synthesizer");
6
- const types_1 = require("../types");
7
6
  const queue_item_transformer_1 = require("../utils/queue-item-transformer");
8
7
  const ActionHandler_1 = require("./handlers/ActionHandler");
9
8
  class Agent {
@@ -58,8 +57,6 @@ class Agent {
58
57
  });
59
58
  }
60
59
  const evaluator = new evaluator_1.Evaluator(this.orchestrator.tools, this.persistentMemory);
61
- console.log("Accumulated results:");
62
- console.dir(this.accumulatedResults, { depth: null });
63
60
  // const sanitizedResults = ResultSanitizer.sanitize(this.accumulatedResults);
64
61
  const evaluation = await evaluator.process(initialPrompt, this.accumulatedResults);
65
62
  events.onMessage?.(evaluation);
@@ -77,24 +74,21 @@ class Agent {
77
74
  }
78
75
  async handleActionResults(actionsResult) {
79
76
  const synthesizer = new synthesizer_1.Synthesizer();
80
- for (const action of actionsResult.data) {
81
- if (!action.error) {
82
- await this.cacheMemory?.createMemory({
83
- content: actionsResult.initialPrompt,
84
- data: action.result,
85
- scope: types_1.MemoryScope.GLOBAL,
86
- type: types_1.MemoryType.ACTION,
87
- });
88
- }
89
- }
90
- const accumulatedResults = this.accumulatedResults;
91
77
  return this.stream
92
- ? (await synthesizer.streamProcess(actionsResult.initialPrompt, accumulatedResults)).toDataStreamResponse()
93
- : await synthesizer.process(actionsResult.initialPrompt, accumulatedResults);
78
+ ? (await synthesizer.streamProcess(actionsResult.initialPrompt, this.formatResults(actionsResult.data))).toDataStreamResponse()
79
+ : await synthesizer.process(actionsResult.initialPrompt, this.formatResults(actionsResult.data));
94
80
  }
95
81
  transformActions(actions) {
96
82
  let predefinedActions = queue_item_transformer_1.QueueItemTransformer.transformActionsToQueueItems(actions) || [];
97
83
  return predefinedActions;
98
84
  }
85
+ formatResults(results) {
86
+ return results.map((result) => ({
87
+ ...result,
88
+ result: typeof result.result === "object"
89
+ ? JSON.stringify(result.result)
90
+ : result.result,
91
+ }));
92
+ }
99
93
  }
100
94
  exports.Agent = Agent;
@@ -7,9 +7,9 @@ export declare const synthesizerContext: {
7
7
  warnings: string[];
8
8
  steps: string[];
9
9
  };
10
- examplesMessages: {
11
- role: string;
12
- content: string;
13
- }[];
14
10
  };
11
+ examplesMessages: {
12
+ role: string;
13
+ content: string;
14
+ }[];
15
15
  };
@@ -25,47 +25,47 @@ exports.synthesizerContext = {
25
25
  "Respond in the same language as the user request.",
26
26
  ],
27
27
  },
28
- examplesMessages: [
29
- {
30
- role: "user",
31
- content: "Analysis security of token/coin",
32
- },
33
- {
34
- role: "assistant",
35
- content: `
36
- ## Security analysis of x/y:
37
-
38
- ### Good:
39
- Speak about the good points of the security check. If there is no good point, say "No good point found"
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"
40
41
 
41
- ### Bad:
42
- Speak about the bad points of the security check. If there is no bad point, say "No bad point found"
42
+ ### Bad:
43
+ Speak about the bad points of the security check. If there is no bad point, say "No bad point found"
43
44
 
44
- STOP AFTER SECURITY CHECK SECTION WITHOUT ANY CONCLUDING STATEMENT OR DISCLAIMER OR ADDITIONAL COMMENTS
45
- --------------------------------
46
- `,
47
- },
48
- {
49
- role: "user",
50
- content: "Analysis market sentiment of token/coin",
51
- },
52
- {
53
- role: "assistant",
54
- content: `
55
- ## Analysis of x/y:
45
+ STOP AFTER SECURITY CHECK SECTION WITHOUT ANY CONCLUDING STATEMENT OR DISCLAIMER OR ADDITIONAL COMMENTS
46
+ --------------------------------
47
+ `,
48
+ },
49
+ {
50
+ role: "user",
51
+ content: "Analysis market sentiment of token/coin",
52
+ },
53
+ {
54
+ role: "assistant",
55
+ content: `
56
+ ## Analysis of x/y:
56
57
 
57
- Market sentiment: Bullish šŸ“ˆ (Adapt the emoji to the market sentiment)
58
+ Market sentiment: Bullish šŸ“ˆ (Adapt the emoji to the market sentiment)
58
59
 
59
- ### Fundamental analysis (No sub-sections):
60
- Speak about important events, news, trends..etc
60
+ ### Fundamental analysis (No sub-sections):
61
+ Speak about important events, news, trends..etc
61
62
 
62
- ### Technical analysis (No sub-sections):
63
- Speak about key price levels, trading volume, technical indicators, market activity..etc
63
+ ### Technical analysis (No sub-sections):
64
+ Speak about key price levels, trading volume, technical indicators, market activity..etc
64
65
 
65
- STOP AFTER TECHNICAL ANALYSIS SECTION WITHOUT ANY CONCLUDING STATEMENT OR DISCLAIMER OR ADDITIONAL COMMENTS
66
- --------------------------------
67
- `,
68
- },
69
- ],
70
- },
66
+ STOP AFTER TECHNICAL ANALYSIS SECTION WITHOUT ANY CONCLUDING STATEMENT OR DISCLAIMER OR ADDITIONAL COMMENTS
67
+ --------------------------------
68
+ `,
69
+ },
70
+ ],
71
71
  };
@@ -22,47 +22,47 @@ export const synthesizerContext = {
22
22
  "Respond in the same language as the user request.",
23
23
  ],
24
24
  },
25
- examplesMessages: [
26
- {
27
- role: "user",
28
- content: "Analysis security of token/coin",
29
- },
30
- {
31
- role: "assistant",
32
- content: `
33
- ## Security analysis of x/y:
34
-
35
- ### Good:
36
- Speak about the good points of the security check. If there is no good point, say "No good point found"
25
+ },
26
+ examplesMessages: [
27
+ {
28
+ role: "user",
29
+ content: "Analysis security of token/coin",
30
+ },
31
+ {
32
+ role: "assistant",
33
+ content: `
34
+ ## Security analysis of x/y:
35
+
36
+ ### Good:
37
+ Speak about the good points of the security check. If there is no good point, say "No good point found"
37
38
 
38
- ### Bad:
39
- Speak about the bad points of the security check. If there is no bad point, say "No bad point found"
39
+ ### Bad:
40
+ Speak about the bad points of the security check. If there is no bad point, say "No bad point found"
40
41
 
41
- STOP AFTER SECURITY CHECK SECTION WITHOUT ANY CONCLUDING STATEMENT OR DISCLAIMER OR ADDITIONAL COMMENTS
42
- --------------------------------
43
- `,
44
- },
45
- {
46
- role: "user",
47
- content: "Analysis market sentiment of token/coin",
48
- },
49
- {
50
- role: "assistant",
51
- content: `
52
- ## Analysis of x/y:
42
+ STOP AFTER SECURITY CHECK SECTION WITHOUT ANY CONCLUDING STATEMENT OR DISCLAIMER OR ADDITIONAL COMMENTS
43
+ --------------------------------
44
+ `,
45
+ },
46
+ {
47
+ role: "user",
48
+ content: "Analysis market sentiment of token/coin",
49
+ },
50
+ {
51
+ role: "assistant",
52
+ content: `
53
+ ## Analysis of x/y:
53
54
 
54
- Market sentiment: Bullish šŸ“ˆ (Adapt the emoji to the market sentiment)
55
+ Market sentiment: Bullish šŸ“ˆ (Adapt the emoji to the market sentiment)
55
56
 
56
- ### Fundamental analysis (No sub-sections):
57
- Speak about important events, news, trends..etc
57
+ ### Fundamental analysis (No sub-sections):
58
+ Speak about important events, news, trends..etc
58
59
 
59
- ### Technical analysis (No sub-sections):
60
- Speak about key price levels, trading volume, technical indicators, market activity..etc
60
+ ### Technical analysis (No sub-sections):
61
+ Speak about key price levels, trading volume, technical indicators, market activity..etc
61
62
 
62
- STOP AFTER TECHNICAL ANALYSIS SECTION WITHOUT ANY CONCLUDING STATEMENT OR DISCLAIMER OR ADDITIONAL COMMENTS
63
- --------------------------------
64
- `,
65
- },
66
- ],
67
- },
63
+ STOP AFTER TECHNICAL ANALYSIS SECTION WITHOUT ANY CONCLUDING STATEMENT OR DISCLAIMER OR ADDITIONAL COMMENTS
64
+ --------------------------------
65
+ `,
66
+ },
67
+ ],
68
68
  };
@@ -47,6 +47,7 @@ export class Synthesizer {
47
47
  console.log("\nšŸŽØ Starting synthesis process");
48
48
  console.log("Prompt:", prompt);
49
49
  console.log("Results to synthesize:", JSON.stringify(results, null, 2));
50
+
50
51
  const context = this.composeContext({
51
52
  behavior: synthesizerContext.behavior,
52
53
  userRequest: prompt,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai.ntellect/core",
3
- "version": "0.2.3",
3
+ "version": "0.2.5",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {