graphai 0.3.1 → 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 (79) hide show
  1. package/README.md +30 -11
  2. package/lib/experimental_agents/array_agents/index.d.ts +1 -3
  3. package/lib/experimental_agents/array_agents/index.js +15 -7
  4. package/lib/experimental_agents/array_agents/vanilla.d.ts +4 -0
  5. package/lib/experimental_agents/array_agents/vanilla.js +12 -0
  6. package/lib/experimental_agents/data_agents/copy_agent.d.ts +2 -0
  7. package/lib/experimental_agents/data_agents/copy_agent.js +2 -0
  8. package/lib/experimental_agents/data_agents/data_object_merge_template_agent.d.ts +43 -0
  9. package/lib/experimental_agents/data_agents/data_object_merge_template_agent.js +22 -0
  10. package/lib/experimental_agents/data_agents/data_sum_template_agent.js +15 -0
  11. package/lib/experimental_agents/data_agents/index.d.ts +3 -4
  12. package/lib/experimental_agents/data_agents/index.js +21 -9
  13. package/lib/experimental_agents/data_agents/packages.d.ts +2 -1
  14. package/lib/experimental_agents/data_agents/packages.js +3 -1
  15. package/lib/experimental_agents/data_agents/property_filter_agent.d.ts +109 -8
  16. package/lib/experimental_agents/data_agents/property_filter_agent.js +60 -9
  17. package/lib/experimental_agents/data_agents/total_agent.d.ts +13 -0
  18. package/lib/experimental_agents/data_agents/total_agent.js +29 -0
  19. package/lib/experimental_agents/data_agents/vanilla.d.ts +5 -0
  20. package/lib/experimental_agents/data_agents/vanilla.js +14 -0
  21. package/lib/experimental_agents/graph_agents/index.d.ts +1 -2
  22. package/lib/experimental_agents/graph_agents/index.js +15 -5
  23. package/lib/experimental_agents/graph_agents/map_agent.js +2 -2
  24. package/lib/experimental_agents/graph_agents/nested_agent.js +9 -12
  25. package/lib/experimental_agents/graph_agents/vanilla.d.ts +3 -0
  26. package/lib/experimental_agents/graph_agents/vanilla.js +10 -0
  27. package/lib/experimental_agents/index.d.ts +10 -3
  28. package/lib/experimental_agents/index.js +17 -5
  29. package/lib/experimental_agents/llm_agents/groq_stream_agent.d.ts +42 -0
  30. package/lib/experimental_agents/llm_agents/groq_stream_agent.js +84 -0
  31. package/lib/experimental_agents/llm_agents/index.d.ts +5 -2
  32. package/lib/experimental_agents/llm_agents/index.js +11 -15
  33. package/lib/experimental_agents/llm_agents/openai_agent.d.ts +1 -0
  34. package/lib/experimental_agents/llm_agents/openai_agent.js +1 -0
  35. package/lib/experimental_agents/llm_agents/packages.d.ts +3 -1
  36. package/lib/experimental_agents/llm_agents/packages.js +5 -1
  37. package/lib/experimental_agents/matrix_agents/dot_product_agent.js +11 -0
  38. package/lib/experimental_agents/matrix_agents/index.d.ts +1 -2
  39. package/lib/experimental_agents/matrix_agents/index.js +15 -5
  40. package/lib/experimental_agents/matrix_agents/sort_by_values_agent.d.ts +13 -1
  41. package/lib/experimental_agents/matrix_agents/sort_by_values_agent.js +20 -1
  42. package/lib/experimental_agents/matrix_agents/vanilla.d.ts +3 -0
  43. package/lib/experimental_agents/matrix_agents/vanilla.js +10 -0
  44. package/lib/experimental_agents/service_agents/fetch_agent.js +1 -1
  45. package/lib/experimental_agents/service_agents/index.d.ts +3 -2
  46. package/lib/experimental_agents/service_agents/index.js +8 -5
  47. package/lib/experimental_agents/service_agents/packages.d.ts +2 -1
  48. package/lib/experimental_agents/service_agents/packages.js +3 -1
  49. package/lib/experimental_agents/service_agents/wikipedia.d.ts +1 -0
  50. package/lib/experimental_agents/service_agents/wikipedia.js +1 -0
  51. package/lib/experimental_agents/sleeper_agents/index.d.ts +3 -2
  52. package/lib/experimental_agents/sleeper_agents/index.js +7 -4
  53. package/lib/experimental_agents/string_agents/index.d.ts +1 -2
  54. package/lib/experimental_agents/string_agents/index.js +15 -5
  55. package/lib/experimental_agents/string_agents/vanilla.d.ts +3 -0
  56. package/lib/experimental_agents/string_agents/vanilla.js +10 -0
  57. package/lib/experimental_agents/test_agents/index.d.ts +1 -7
  58. package/lib/experimental_agents/test_agents/index.js +15 -15
  59. package/lib/experimental_agents/test_agents/vanilla.d.ts +8 -0
  60. package/lib/experimental_agents/test_agents/vanilla.js +20 -0
  61. package/lib/experimental_agents/token_agent.d.ts +11 -1
  62. package/lib/experimental_agents/token_agent.js +30 -1
  63. package/lib/experimental_agents/vanilla.d.ts +6 -6
  64. package/lib/experimental_agents/vanilla.js +6 -6
  65. package/lib/graphai.d.ts +5 -5
  66. package/lib/graphai.js +6 -6
  67. package/lib/index.d.ts +1 -1
  68. package/lib/node.js +11 -10
  69. package/lib/task_manager.js +3 -6
  70. package/lib/transaction_log.d.ts +1 -1
  71. package/lib/transaction_log.js +2 -1
  72. package/lib/type.d.ts +4 -2
  73. package/lib/utils/test_agents.d.ts +2 -2
  74. package/lib/utils/test_agents.js +2 -2
  75. package/lib/utils/test_utils.d.ts +28 -0
  76. package/lib/utils/test_utils.js +26 -3
  77. package/package.json +10 -11
  78. package/lib/experimental_agents/packages.d.ts +0 -13
  79. package/lib/experimental_agents/packages.js +0 -35
@@ -1,2 +1 @@
1
- export { stringSplitterAgent } from "../../experimental_agents/string_agents/string_splitter_agent";
2
- export { stringTemplateAgent } from "../../experimental_agents/string_agents/string_template_agent";
1
+ export * from "./vanilla";
@@ -1,7 +1,17 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.stringTemplateAgent = exports.stringSplitterAgent = void 0;
4
- var string_splitter_agent_1 = require("../../experimental_agents/string_agents/string_splitter_agent");
5
- Object.defineProperty(exports, "stringSplitterAgent", { enumerable: true, get: function () { return string_splitter_agent_1.stringSplitterAgent; } });
6
- var string_template_agent_1 = require("../../experimental_agents/string_agents/string_template_agent");
7
- Object.defineProperty(exports, "stringTemplateAgent", { enumerable: true, get: function () { return string_template_agent_1.stringTemplateAgent; } });
17
+ __exportStar(require("./vanilla"), exports);
@@ -0,0 +1,3 @@
1
+ import stringSplitterAgent from "../../experimental_agents/string_agents/string_splitter_agent";
2
+ import stringTemplateAgent from "../../experimental_agents/string_agents/string_template_agent";
3
+ export { stringSplitterAgent, stringTemplateAgent };
@@ -0,0 +1,10 @@
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.stringTemplateAgent = exports.stringSplitterAgent = void 0;
7
+ const string_splitter_agent_1 = __importDefault(require("../../experimental_agents/string_agents/string_splitter_agent"));
8
+ exports.stringSplitterAgent = string_splitter_agent_1.default;
9
+ const string_template_agent_1 = __importDefault(require("../../experimental_agents/string_agents/string_template_agent"));
10
+ exports.stringTemplateAgent = string_template_agent_1.default;
@@ -1,7 +1 @@
1
- export { bypassAgent } from "../../experimental_agents/test_agents/bypass_agent";
2
- export { echoAgent } from "../../experimental_agents/test_agents/echo_agent";
3
- export { copyMessageAgent } from "../../experimental_agents/test_agents/copy_message_agent";
4
- export { mergeNodeIdAgent } from "../../experimental_agents/test_agents/merge_node_id_agent";
5
- export { countingAgent } from "../../experimental_agents/test_agents/counting_agent";
6
- export { copy2ArrayAgent } from "../../experimental_agents/test_agents/copy2array_agent";
7
- export { streamMockAgent } from "../../experimental_agents/test_agents/stream_mock_agent";
1
+ export * from "./vanilla";
@@ -1,17 +1,17 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.streamMockAgent = exports.copy2ArrayAgent = exports.countingAgent = exports.mergeNodeIdAgent = exports.copyMessageAgent = exports.echoAgent = exports.bypassAgent = void 0;
4
- var bypass_agent_1 = require("../../experimental_agents/test_agents/bypass_agent");
5
- Object.defineProperty(exports, "bypassAgent", { enumerable: true, get: function () { return bypass_agent_1.bypassAgent; } });
6
- var echo_agent_1 = require("../../experimental_agents/test_agents/echo_agent");
7
- Object.defineProperty(exports, "echoAgent", { enumerable: true, get: function () { return echo_agent_1.echoAgent; } });
8
- var copy_message_agent_1 = require("../../experimental_agents/test_agents/copy_message_agent");
9
- Object.defineProperty(exports, "copyMessageAgent", { enumerable: true, get: function () { return copy_message_agent_1.copyMessageAgent; } });
10
- var merge_node_id_agent_1 = require("../../experimental_agents/test_agents/merge_node_id_agent");
11
- Object.defineProperty(exports, "mergeNodeIdAgent", { enumerable: true, get: function () { return merge_node_id_agent_1.mergeNodeIdAgent; } });
12
- var counting_agent_1 = require("../../experimental_agents/test_agents/counting_agent");
13
- Object.defineProperty(exports, "countingAgent", { enumerable: true, get: function () { return counting_agent_1.countingAgent; } });
14
- var copy2array_agent_1 = require("../../experimental_agents/test_agents/copy2array_agent");
15
- Object.defineProperty(exports, "copy2ArrayAgent", { enumerable: true, get: function () { return copy2array_agent_1.copy2ArrayAgent; } });
16
- var stream_mock_agent_1 = require("../../experimental_agents/test_agents/stream_mock_agent");
17
- Object.defineProperty(exports, "streamMockAgent", { enumerable: true, get: function () { return stream_mock_agent_1.streamMockAgent; } });
17
+ __exportStar(require("./vanilla"), exports);
@@ -0,0 +1,8 @@
1
+ import echoAgent from "../../experimental_agents/test_agents/echo_agent";
2
+ import bypassAgent from "../../experimental_agents/test_agents/bypass_agent";
3
+ import countingAgent from "../../experimental_agents/test_agents/counting_agent";
4
+ import copyMessageAgent from "../../experimental_agents/test_agents/copy_message_agent";
5
+ import copy2ArrayAgent from "../../experimental_agents/test_agents/copy2array_agent";
6
+ import mergeNodeIdAgent from "../../experimental_agents/test_agents/merge_node_id_agent";
7
+ import streamMockAgent from "../../experimental_agents/test_agents/stream_mock_agent";
8
+ export { echoAgent, bypassAgent, countingAgent, copyMessageAgent, copy2ArrayAgent, mergeNodeIdAgent, streamMockAgent };
@@ -0,0 +1,20 @@
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.streamMockAgent = exports.mergeNodeIdAgent = exports.copy2ArrayAgent = exports.copyMessageAgent = exports.countingAgent = exports.bypassAgent = exports.echoAgent = void 0;
7
+ const echo_agent_1 = __importDefault(require("../../experimental_agents/test_agents/echo_agent"));
8
+ exports.echoAgent = echo_agent_1.default;
9
+ const bypass_agent_1 = __importDefault(require("../../experimental_agents/test_agents/bypass_agent"));
10
+ exports.bypassAgent = bypass_agent_1.default;
11
+ const counting_agent_1 = __importDefault(require("../../experimental_agents/test_agents/counting_agent"));
12
+ exports.countingAgent = counting_agent_1.default;
13
+ const copy_message_agent_1 = __importDefault(require("../../experimental_agents/test_agents/copy_message_agent"));
14
+ exports.copyMessageAgent = copy_message_agent_1.default;
15
+ const copy2array_agent_1 = __importDefault(require("../../experimental_agents/test_agents/copy2array_agent"));
16
+ exports.copy2ArrayAgent = copy2array_agent_1.default;
17
+ const merge_node_id_agent_1 = __importDefault(require("../../experimental_agents/test_agents/merge_node_id_agent"));
18
+ exports.mergeNodeIdAgent = merge_node_id_agent_1.default;
19
+ const stream_mock_agent_1 = __importDefault(require("../../experimental_agents/test_agents/stream_mock_agent"));
20
+ exports.streamMockAgent = stream_mock_agent_1.default;
@@ -16,7 +16,17 @@ declare const tokenBoundStringsAgentInfo: {
16
16
  }, {
17
17
  content: string;
18
18
  }, string[]>;
19
- samples: never[];
19
+ samples: {
20
+ inputs: string[][];
21
+ params: {
22
+ limit: number;
23
+ };
24
+ result: {
25
+ content: string;
26
+ tokenCount: number;
27
+ endIndex: number;
28
+ };
29
+ }[];
20
30
  description: string;
21
31
  category: never[];
22
32
  author: string;
@@ -35,7 +35,36 @@ const tokenBoundStringsAgentInfo = {
35
35
  name: "tokenBoundStringsAgent",
36
36
  agent: exports.tokenBoundStringsAgent,
37
37
  mock: exports.tokenBoundStringsAgent,
38
- samples: [],
38
+ samples: [
39
+ {
40
+ inputs: [
41
+ [
42
+ "Here's to the crazy ones. The misfits. The rebels. The troublemakers.",
43
+ "The round pegs in the square holes. The ones who see things differently.",
44
+ "They're not fond of rules. And they have no respect for the status quo.",
45
+ "You can quote them, disagree with them, glorify or vilify them.",
46
+ "About the only thing you can't do is ignore them.",
47
+ "Because they change things.",
48
+ "They push the human race forward.",
49
+ "And while some may see them as the crazy ones, we see genius.",
50
+ "Because the people who are crazy enough to think they can change the world, are the ones who do.",
51
+ ],
52
+ ],
53
+ params: {
54
+ limit: 80,
55
+ },
56
+ result: {
57
+ content: "Here's to the crazy ones. The misfits. The rebels. The troublemakers.\n" +
58
+ "The round pegs in the square holes. The ones who see things differently.\n" +
59
+ "They're not fond of rules. And they have no respect for the status quo.\n" +
60
+ "You can quote them, disagree with them, glorify or vilify them.\n" +
61
+ "About the only thing you can't do is ignore them.\n" +
62
+ "Because they change things.",
63
+ tokenCount: 79,
64
+ endIndex: 6,
65
+ },
66
+ },
67
+ ],
39
68
  description: "token bound Agent",
40
69
  category: [],
41
70
  author: "Receptron team",
@@ -1,8 +1,8 @@
1
- export * from "./string_agents";
2
- export * from "./array_agents";
3
- export * from "./matrix_agents";
4
- export * from "./test_agents";
5
- export * from "./graph_agents";
1
+ export * from "./string_agents/vanilla";
2
+ export * from "./array_agents/vanilla";
3
+ export * from "./matrix_agents/vanilla";
4
+ export * from "./test_agents/vanilla";
5
+ export * from "./graph_agents/vanilla";
6
+ export * from "./data_agents/vanilla";
6
7
  export * from "./function_agent";
7
8
  export * from "./embedding_agent";
8
- export * from "./data_agents";
@@ -16,11 +16,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  };
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  // Please refrain from adding agents that require npm. Those should be added to the index.ts.
19
- __exportStar(require("./string_agents"), exports);
20
- __exportStar(require("./array_agents"), exports);
21
- __exportStar(require("./matrix_agents"), exports);
22
- __exportStar(require("./test_agents"), exports);
23
- __exportStar(require("./graph_agents"), exports);
19
+ __exportStar(require("./string_agents/vanilla"), exports);
20
+ __exportStar(require("./array_agents/vanilla"), exports);
21
+ __exportStar(require("./matrix_agents/vanilla"), exports);
22
+ __exportStar(require("./test_agents/vanilla"), exports);
23
+ __exportStar(require("./graph_agents/vanilla"), exports);
24
+ __exportStar(require("./data_agents/vanilla"), exports);
24
25
  __exportStar(require("./function_agent"), exports);
25
26
  __exportStar(require("./embedding_agent"), exports);
26
- __exportStar(require("./data_agents"), exports);
package/lib/graphai.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { AgentFunction, AgentFunctionDictonary, GraphData } from "./type";
2
- import { AgentFunctionDictonary, AgentFilterInfo, GraphData, DataSource, ResultDataDictonary, ResultData, DefaultResultData } from "./type";
1
+ export { AgentFunction, GraphData, AgentFunctionInfoDictonary } from "./type";
2
+ import { AgentFunctionInfoDictonary, AgentFilterInfo, GraphData, DataSource, ResultDataDictonary, ResultData, DefaultResultData } from "./type";
3
3
  import { TransactionLog } from "./transaction_log";
4
4
  import { ComputedNode, StaticNode } from "./node";
5
5
  import { TaskManager } from "./task_manager";
@@ -10,7 +10,7 @@ export declare class GraphAI {
10
10
  private readonly data;
11
11
  private readonly loop?;
12
12
  private readonly logs;
13
- readonly callbackDictonary: AgentFunctionDictonary;
13
+ readonly agentFunctionInfoDictionary: AgentFunctionInfoDictonary;
14
14
  readonly taskManager: TaskManager;
15
15
  readonly agentFilters: AgentFilterInfo[];
16
16
  readonly retryLimit?: number;
@@ -22,11 +22,11 @@ export declare class GraphAI {
22
22
  private createNodes;
23
23
  private getValueFromResults;
24
24
  private initializeNodes;
25
- constructor(data: GraphData, callbackDictonary: AgentFunctionDictonary, options?: {
25
+ constructor(data: GraphData, agentFunctionInfoDictionary: AgentFunctionInfoDictonary, options?: {
26
26
  agentFilters?: AgentFilterInfo[] | undefined;
27
27
  taskManager?: TaskManager | undefined;
28
28
  });
29
- getCallback(agentId?: string): import("./type").AgentFunction<any, any, any>;
29
+ getAgentFunctionInfo(agentId?: string): import("./type").AgentFunctionInfo;
30
30
  asString(): string;
31
31
  results<T = DefaultResultData>(all: boolean): ResultDataDictonary<T>;
32
32
  errors(): Record<string, Error>;
package/lib/graphai.js CHANGED
@@ -63,7 +63,7 @@ class GraphAI {
63
63
  }
64
64
  });
65
65
  }
66
- constructor(data, callbackDictonary, options = { taskManager: undefined, agentFilters: [] }) {
66
+ constructor(data, agentFunctionInfoDictionary, options = { taskManager: undefined, agentFilters: [] }) {
67
67
  this.logs = [];
68
68
  this.onLogCallback = (__log, __isUpdate) => { };
69
69
  this.repeatCount = 0;
@@ -77,7 +77,7 @@ class GraphAI {
77
77
  this.retryLimit = data.retry; // optional
78
78
  this.graphId = URL.createObjectURL(new Blob()).slice(-36);
79
79
  this.data = data;
80
- this.callbackDictonary = callbackDictonary;
80
+ this.agentFunctionInfoDictionary = agentFunctionInfoDictionary;
81
81
  this.taskManager = options.taskManager ?? new task_manager_1.TaskManager(data.concurrency ?? defaultConcurrency);
82
82
  this.agentFilters = options.agentFilters ?? [];
83
83
  this.loop = data.loop;
@@ -85,13 +85,13 @@ class GraphAI {
85
85
  this.onComplete = () => {
86
86
  console.error("-- SOMETHING IS WRONG: onComplete is called without run()");
87
87
  };
88
- (0, validator_1.validateGraphData)(data, Object.keys(callbackDictonary));
88
+ (0, validator_1.validateGraphData)(data, Object.keys(agentFunctionInfoDictionary));
89
89
  this.nodes = this.createNodes(data);
90
90
  this.initializeNodes();
91
91
  }
92
- getCallback(agentId) {
93
- if (agentId && this.callbackDictonary[agentId]) {
94
- return this.callbackDictonary[agentId];
92
+ getAgentFunctionInfo(agentId) {
93
+ if (agentId && this.agentFunctionInfoDictionary[agentId]) {
94
+ return this.agentFunctionInfoDictionary[agentId];
95
95
  }
96
96
  throw new Error("No agent: " + agentId);
97
97
  }
package/lib/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  import { GraphAI } from "./graphai";
2
2
  export { GraphAI };
3
- export { AgentFunction, AgentFunctionDictonary, GraphData, ResultDataDictonary, ResultData, NodeState } from "./type";
3
+ export { AgentFunction, AgentFunctionInfoDictonary, GraphData, ResultDataDictonary, ResultData, NodeState } from "./type";
4
4
  export type { TransactionLog } from "./transaction_log";
package/lib/node.js CHANGED
@@ -71,7 +71,7 @@ class ComputedNode extends Node {
71
71
  }
72
72
  return tmp;
73
73
  }, {});
74
- this.log.initForComputedNode(this);
74
+ this.log.initForComputedNode(this, graph);
75
75
  }
76
76
  getAgentId() {
77
77
  return this.agentId ?? "__custom__function"; // only for display purpose in the log.
@@ -167,20 +167,20 @@ class ComputedNode extends Node {
167
167
  }
168
168
  return !agentFilter.agentIds && !agentFilter.nodeIds;
169
169
  }
170
- agentFilterHandler(context, agent) {
170
+ agentFilterHandler(context, agentFunction) {
171
171
  let index = 0;
172
- const next = (context) => {
172
+ const next = (innerContext) => {
173
173
  const agentFilter = this.graph.agentFilters[index++];
174
174
  if (agentFilter) {
175
175
  if (this.shouldApplyAgentFilter(agentFilter)) {
176
176
  if (agentFilter.filterParams) {
177
- context.filterParams = { ...agentFilter.filterParams, ...context.filterParams };
177
+ innerContext.filterParams = { ...agentFilter.filterParams, ...innerContext.filterParams };
178
178
  }
179
- return agentFilter.agent(context, next);
179
+ return agentFilter.agent(innerContext, next);
180
180
  }
181
- return next(context);
181
+ return next(innerContext);
182
182
  }
183
- return agent(context);
183
+ return agentFunction(innerContext);
184
184
  };
185
185
  return next(context);
186
186
  }
@@ -201,7 +201,7 @@ class ComputedNode extends Node {
201
201
  }, this.timeout);
202
202
  }
203
203
  try {
204
- const callback = this.agentFunction ?? this.graph.getCallback(this.agentId);
204
+ const agentFunction = this.agentFunction ?? this.graph.getAgentFunctionInfo(this.agentId).agent;
205
205
  const localLog = [];
206
206
  const params = Object.keys(this.dynamicParams).reduce((tmp, key) => {
207
207
  const [result] = this.graph.resultsOf([this.dynamicParams[key]]);
@@ -218,6 +218,7 @@ class ComputedNode extends Node {
218
218
  verbose: this.graph.verbose,
219
219
  },
220
220
  filterParams: this.filterParams,
221
+ agentFilters: this.graph.agentFilters,
221
222
  log: localLog,
222
223
  };
223
224
  // NOTE: We use the existence of graph object in the agent-specific params to determine
@@ -226,9 +227,9 @@ class ComputedNode extends Node {
226
227
  this.graph.taskManager.prepareForNesting();
227
228
  context.taskManager = this.graph.taskManager;
228
229
  context.graphData = this.nestedGraph;
229
- context.agents = this.graph.callbackDictonary;
230
+ context.agents = this.graph.agentFunctionInfoDictionary;
230
231
  }
231
- const result = await this.agentFilterHandler(context, callback);
232
+ const result = await this.agentFilterHandler(context, agentFunction);
232
233
  if (this.nestedGraph) {
233
234
  this.graph.taskManager.restoreAfterNesting();
234
235
  }
@@ -58,12 +58,9 @@ class TaskManager {
58
58
  this.concurrency--;
59
59
  }
60
60
  getStatus(verbose = false) {
61
- const nodes = verbose
62
- ? {
63
- runningNodes: Array.from(this.runningNodes).map((node) => node.nodeId),
64
- queuedNodes: this.taskQueue.map((task) => task.node.nodeId),
65
- }
66
- : {};
61
+ const runningNodes = Array.from(this.runningNodes).map((node) => node.nodeId);
62
+ const queuedNodes = this.taskQueue.map((task) => task.node.nodeId);
63
+ const nodes = verbose ? { runningNodes, queuedNodes } : {};
67
64
  return {
68
65
  concurrency: this.concurrency,
69
66
  queue: this.taskQueue.length,
@@ -19,7 +19,7 @@ export declare class TransactionLog {
19
19
  repeatCount?: number;
20
20
  log?: TransactionLog[];
21
21
  constructor(nodeId: string);
22
- initForComputedNode(node: ComputedNode): void;
22
+ initForComputedNode(node: ComputedNode, graph: GraphAI): void;
23
23
  onInjected(node: StaticNode, graph: GraphAI, injectFrom?: string): void;
24
24
  onComplete(node: ComputedNode, graph: GraphAI, localLog: TransactionLog[]): void;
25
25
  beforeExecute(node: ComputedNode, graph: GraphAI, transactionId: number, inputs: ResultData[]): void;
@@ -7,9 +7,10 @@ class TransactionLog {
7
7
  this.nodeId = nodeId;
8
8
  this.state = type_1.NodeState.Waiting;
9
9
  }
10
- initForComputedNode(node) {
10
+ initForComputedNode(node, graph) {
11
11
  this.agentId = node.getAgentId();
12
12
  this.params = node.params;
13
+ graph.appendLog(this);
13
14
  }
14
15
  onInjected(node, graph, injectFrom) {
15
16
  const isUpdating = "endTime" in this;
package/lib/type.d.ts CHANGED
@@ -64,9 +64,10 @@ export type AgentFunctionContext<ParamsType = DefaultParamsType, InputDataType =
64
64
  agentId?: string;
65
65
  };
66
66
  graphData?: GraphData | string;
67
- agents?: AgentFunctionDictonary;
67
+ agents?: AgentFunctionInfoDictonary;
68
68
  taskManager?: TaskManager;
69
69
  filterParams: AgentFilterParams;
70
+ agentFilters?: AgentFilterInfo[];
70
71
  log?: TransactionLog[];
71
72
  };
72
73
  export type AgentFunction<ParamsType = DefaultParamsType, ResultType = DefaultResultData, InputDataType = DefaultInputData> = (context: AgentFunctionContext<ParamsType, InputDataType>) => Promise<ResultData<ResultType>>;
@@ -78,7 +79,6 @@ export type AgentFilterInfo = {
78
79
  nodeIds?: string[];
79
80
  filterParams?: AgentFilterParams;
80
81
  };
81
- export type AgentFunctionDictonary = Record<string, AgentFunction<any, any, any>>;
82
82
  export type AgentFunctionInfo = {
83
83
  name: string;
84
84
  agent: AgentFunction<any, any, any>;
@@ -88,9 +88,11 @@ export type AgentFunctionInfo = {
88
88
  params: DefaultParamsType;
89
89
  result: any;
90
90
  }[];
91
+ skipTest?: boolean;
91
92
  description: string;
92
93
  category: string[];
93
94
  author: string;
94
95
  repository: string;
95
96
  license: string;
96
97
  };
98
+ export type AgentFunctionInfoDictonary = Record<string, AgentFunctionInfo>;
@@ -1,2 +1,2 @@
1
- import { AgentFunctionDictonary } from "../graphai";
2
- export declare const defaultTestAgents: AgentFunctionDictonary;
1
+ import { AgentFunctionInfoDictonary } from "../graphai";
2
+ export declare const defaultTestAgents: AgentFunctionInfoDictonary;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.defaultTestAgents = void 0;
4
4
  const experimental_agents_1 = require("../experimental_agents");
5
- const openai_agent_1 = require("../experimental_agents/llm_agents/openai_agent");
5
+ // import openAIMockAgent from "../experimental_agents/llm_agents/openai_agent";
6
6
  exports.defaultTestAgents = {
7
7
  bypassAgent: experimental_agents_1.bypassAgent,
8
8
  echoAgent: experimental_agents_1.echoAgent,
@@ -20,5 +20,5 @@ exports.defaultTestAgents = {
20
20
  popAgent: experimental_agents_1.popAgent,
21
21
  shiftAgent: experimental_agents_1.shiftAgent,
22
22
  streamMockAgent: experimental_agents_1.streamMockAgent,
23
- openAIMockAgent: openai_agent_1.openAIMockAgent,
23
+ // openAIMockAgent,
24
24
  };
@@ -10,5 +10,33 @@ export declare const defaultTestContext: {
10
10
  agents: {};
11
11
  log: never[];
12
12
  };
13
+ export declare const defaultAgentInfo: {
14
+ name: string;
15
+ samples: {
16
+ inputs: never[];
17
+ params: {};
18
+ result: {};
19
+ }[];
20
+ description: string;
21
+ category: never[];
22
+ author: string;
23
+ repository: string;
24
+ license: string;
25
+ };
26
+ export declare const getAgentInfo: (agent: AgentFunction<any, any, any>) => {
27
+ name: string;
28
+ samples: {
29
+ inputs: never[];
30
+ params: {};
31
+ result: {};
32
+ }[];
33
+ description: string;
34
+ category: never[];
35
+ author: string;
36
+ repository: string;
37
+ license: string;
38
+ agent: AgentFunction<any, any, any>;
39
+ mock: AgentFunction<any, any, any>;
40
+ };
13
41
  export declare const agentTestRunner: (agentInfo: AgentFunctionInfo) => Promise<void>;
14
42
  export declare const agentFilterRunnerBuilder: (__agentFilters: AgentFilterInfo[]) => (context: AgentFunctionContext, agent: AgentFunction) => Promise<ResultData>;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.agentFilterRunnerBuilder = exports.agentTestRunner = exports.defaultTestContext = void 0;
6
+ exports.agentFilterRunnerBuilder = exports.agentTestRunner = exports.getAgentInfo = exports.defaultAgentInfo = exports.defaultTestContext = void 0;
7
7
  const node_assert_1 = __importDefault(require("node:assert"));
8
8
  const node_test_1 = __importDefault(require("node:test"));
9
9
  exports.defaultTestContext = {
@@ -17,10 +17,33 @@ exports.defaultTestContext = {
17
17
  agents: {},
18
18
  log: [],
19
19
  };
20
+ exports.defaultAgentInfo = {
21
+ name: "defaultAgentInfo",
22
+ samples: [
23
+ {
24
+ inputs: [],
25
+ params: {},
26
+ result: {},
27
+ },
28
+ ],
29
+ description: "",
30
+ category: [],
31
+ author: "",
32
+ repository: "",
33
+ license: "",
34
+ };
35
+ const getAgentInfo = (agent) => {
36
+ return {
37
+ agent,
38
+ mock: agent,
39
+ ...exports.defaultAgentInfo,
40
+ };
41
+ };
42
+ exports.getAgentInfo = getAgentInfo;
20
43
  // for agent
21
44
  const agentTestRunner = async (agentInfo) => {
22
- const { agent, samples } = agentInfo;
23
- if (samples.length === 0) {
45
+ const { agent, samples, skipTest } = agentInfo;
46
+ if (samples.length === 0 || skipTest) {
24
47
  console.log(`test ${agentInfo.name}: No test`);
25
48
  }
26
49
  else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphai",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "description": "Asynchronous data flow execution engine for agentic AI apps.",
5
5
  "main": "lib/index.js",
6
6
  "files": [
@@ -8,8 +8,8 @@
8
8
  ],
9
9
  "scripts": {
10
10
  "build": "rm -r lib/* && tsc && tsc-alias",
11
- "eslint": "eslint --fix --ext .ts ./src ./tests ./samples",
12
- "format": "prettier --write '{src,tests,samples}/**/*.ts' .eslintrc.js",
11
+ "eslint": "eslint",
12
+ "format": "prettier --write '{src,tests,samples}/**/*.ts'",
13
13
  "test": "node --test -r tsconfig-paths/register --require ts-node/register ./tests/**/test_*.ts",
14
14
  "http_test": "node --test -r tsconfig-paths/register --require ts-node/register ./tests/**/http_*.ts",
15
15
  "b": "yarn run format && yarn run eslint && yarn run build",
@@ -30,26 +30,25 @@
30
30
  "@inquirer/prompts": "^5.0.0",
31
31
  "@types/cors": "^2.8.17",
32
32
  "@types/express": "^4.17.21",
33
- "@types/node": "^20.8.7",
33
+ "@types/node": "^20.12.11",
34
34
  "@types/xml2js": "^0.4.14",
35
- "@typescript-eslint/eslint-plugin": "^6.8.0",
36
- "@typescript-eslint/parser": "^6.8.0",
37
35
  "arxiv-api-ts": "^1.0.3",
38
36
  "cors": "^2.8.5",
39
37
  "deepmerge": "^4.3.1",
40
38
  "dotenv": "^16.4.5",
41
- "eslint": "^7.32.0 || ^8.2.0",
42
- "eslint-plugin-import": "^2.25.2",
39
+ "eslint": "^9.2.0",
43
40
  "express": "^4.19.2",
41
+ "globals": "^15.2.0",
44
42
  "groq-sdk": "^0.3.3",
45
43
  "openai": "^4.12.4",
46
- "prettier": "^3.0.3",
44
+ "prettier": "^3.2.5",
47
45
  "slashgpt": "^0.0.9",
48
46
  "tiktoken": "^1.0.14",
49
- "ts-node": "^10.9.1",
47
+ "ts-node": "^10.9.2",
50
48
  "tsc-alias": "^1.8.8",
51
49
  "tsconfig-paths": "^4.2.0",
52
- "typescript": "^5.2.2",
50
+ "typescript": "^5.4.5",
51
+ "typescript-eslint": "^7.8.0",
53
52
  "wikipedia": "^2.1.2",
54
53
  "xml2js": "^0.6.2",
55
54
  "yaml": "^2.4.1"
@@ -1,13 +0,0 @@
1
- export * from "./string_agents/packages";
2
- export * from "./sleeper_agents/packages";
3
- export * from "./data_agents/packages";
4
- export * from "./array_agents/packages";
5
- export * from "./matrix_agents/packages";
6
- export * from "./test_agents/packages";
7
- export * from "./graph_agents/packages";
8
- export * from "./llm_agents/packages";
9
- export * from "./service_agents/packages";
10
- import stringEmbeddingsAgent from "./embedding_agent";
11
- import tokenBoundStringsAgent from "./token_agent";
12
- import functionAgentInfo from "./function_agent";
13
- export { stringEmbeddingsAgent, tokenBoundStringsAgent, functionAgentInfo };
@@ -1,35 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- var __importDefault = (this && this.__importDefault) || function (mod) {
17
- return (mod && mod.__esModule) ? mod : { "default": mod };
18
- };
19
- Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.functionAgentInfo = exports.tokenBoundStringsAgent = exports.stringEmbeddingsAgent = void 0;
21
- __exportStar(require("./string_agents/packages"), exports);
22
- __exportStar(require("./sleeper_agents/packages"), exports);
23
- __exportStar(require("./data_agents/packages"), exports);
24
- __exportStar(require("./array_agents/packages"), exports);
25
- __exportStar(require("./matrix_agents/packages"), exports);
26
- __exportStar(require("./test_agents/packages"), exports);
27
- __exportStar(require("./graph_agents/packages"), exports);
28
- __exportStar(require("./llm_agents/packages"), exports);
29
- __exportStar(require("./service_agents/packages"), exports);
30
- const embedding_agent_1 = __importDefault(require("./embedding_agent"));
31
- exports.stringEmbeddingsAgent = embedding_agent_1.default;
32
- const token_agent_1 = __importDefault(require("./token_agent"));
33
- exports.tokenBoundStringsAgent = token_agent_1.default;
34
- const function_agent_1 = __importDefault(require("./function_agent"));
35
- exports.functionAgentInfo = function_agent_1.default;