@hazeljs/agent 0.2.0-beta.60 → 0.2.0-beta.64
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 +364 -256
- package/coverage/clover.xml +722 -406
- package/coverage/lcov-report/index.html +81 -36
- package/coverage/lcov.info +1188 -629
- package/dist/decorators/delegate.decorator.d.ts +66 -0
- package/dist/decorators/delegate.decorator.d.ts.map +1 -0
- package/dist/decorators/delegate.decorator.js +108 -0
- package/dist/decorators/delegate.decorator.js.map +1 -0
- package/dist/executor/agent.executor.d.ts +1 -0
- package/dist/executor/agent.executor.d.ts.map +1 -1
- package/dist/executor/agent.executor.js +14 -5
- package/dist/executor/agent.executor.js.map +1 -1
- package/dist/graph/agent-graph.d.ts +131 -0
- package/dist/graph/agent-graph.d.ts.map +1 -0
- package/dist/graph/agent-graph.js +462 -0
- package/dist/graph/agent-graph.js.map +1 -0
- package/dist/graph/agent-graph.types.d.ts +210 -0
- package/dist/graph/agent-graph.types.d.ts.map +1 -0
- package/dist/graph/agent-graph.types.js +12 -0
- package/dist/graph/agent-graph.types.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/prompts/agent-system.prompt.d.ts +10 -0
- package/dist/prompts/agent-system.prompt.d.ts.map +1 -0
- package/dist/prompts/agent-system.prompt.js +18 -0
- package/dist/prompts/agent-system.prompt.js.map +1 -0
- package/dist/prompts/index.d.ts +4 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +20 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/supervisor-routing.prompt.d.ts +9 -0
- package/dist/prompts/supervisor-routing.prompt.d.ts.map +1 -0
- package/dist/prompts/supervisor-routing.prompt.js +22 -0
- package/dist/prompts/supervisor-routing.prompt.js.map +1 -0
- package/dist/prompts/supervisor-system.prompt.d.ts +9 -0
- package/dist/prompts/supervisor-system.prompt.d.ts.map +1 -0
- package/dist/prompts/supervisor-system.prompt.js +21 -0
- package/dist/prompts/supervisor-system.prompt.js.map +1 -0
- package/dist/runtime/agent.runtime.d.ts +63 -1
- package/dist/runtime/agent.runtime.d.ts.map +1 -1
- package/dist/runtime/agent.runtime.js +102 -1
- package/dist/runtime/agent.runtime.js.map +1 -1
- package/dist/supervisor/supervisor.d.ts +81 -0
- package/dist/supervisor/supervisor.d.ts.map +1 -0
- package/dist/supervisor/supervisor.js +220 -0
- package/dist/supervisor/supervisor.js.map +1 -0
- package/dist/types/event.types.d.ts +76 -1
- package/dist/types/event.types.d.ts.map +1 -1
- package/dist/types/event.types.js +16 -0
- package/dist/types/event.types.js.map +1 -1
- package/logs/combined.log +1 -1
- package/package.json +6 -5
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @Delegate Decorator
|
|
3
|
+
*
|
|
4
|
+
* Marks a method on an agent class as a delegation point to another agent.
|
|
5
|
+
* The method body is replaced at runtime by `AgentRuntime.registerAgentInstance()`,
|
|
6
|
+
* which patches it with an actual call to `runtime.execute(targetAgent, input)`.
|
|
7
|
+
*
|
|
8
|
+
* This lets the LLM naturally "call" other agents as if they were tools —
|
|
9
|
+
* the agent-to-agent communication is completely transparent to the LLM.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* @Agent({
|
|
14
|
+
* name: 'orchestrator',
|
|
15
|
+
* description: 'Orchestrates research and writing tasks',
|
|
16
|
+
* })
|
|
17
|
+
* class OrchestratorAgent {
|
|
18
|
+
* // The LLM can call this as a tool; it internally runs ResearchAgent
|
|
19
|
+
* @Delegate({
|
|
20
|
+
* agent: 'ResearchAgent',
|
|
21
|
+
* description: 'Research a topic in depth and return key findings',
|
|
22
|
+
* inputField: 'query',
|
|
23
|
+
* })
|
|
24
|
+
* async researchTopic(query: string): Promise<string> {
|
|
25
|
+
* return ''; // body is replaced at runtime
|
|
26
|
+
* }
|
|
27
|
+
*
|
|
28
|
+
* // The LLM can call this as a tool; it internally runs WriterAgent
|
|
29
|
+
* @Delegate({
|
|
30
|
+
* agent: 'WriterAgent',
|
|
31
|
+
* description: 'Write a professional article based on provided research',
|
|
32
|
+
* inputField: 'content',
|
|
33
|
+
* })
|
|
34
|
+
* async writeArticle(content: string): Promise<string> {
|
|
35
|
+
* return ''; // body is replaced at runtime
|
|
36
|
+
* }
|
|
37
|
+
* }
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* Note: @Delegate implicitly registers the method as a @Tool.
|
|
41
|
+
* You do NOT need to add @Tool separately.
|
|
42
|
+
*/
|
|
43
|
+
import 'reflect-metadata';
|
|
44
|
+
import { DelegateConfig } from '../graph/agent-graph.types';
|
|
45
|
+
/**
|
|
46
|
+
* Decorate a method to delegate its execution to another agent.
|
|
47
|
+
*
|
|
48
|
+
* When `AgentRuntime.registerAgentInstance()` is called, it patches each
|
|
49
|
+
* `@Delegate` method on the instance to actually call
|
|
50
|
+
* `runtime.execute(config.agent, input)` where `input` is extracted from the
|
|
51
|
+
* tool call arguments using `config.inputField` (default: `'input'`).
|
|
52
|
+
*/
|
|
53
|
+
export declare function Delegate(config: DelegateConfig): MethodDecorator;
|
|
54
|
+
/**
|
|
55
|
+
* Retrieve the `@Delegate` config from a method.
|
|
56
|
+
*/
|
|
57
|
+
export declare function getDelegateMetadata(target: object, propertyKey: string): DelegateConfig | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Get the names of all `@Delegate`-decorated methods on a class.
|
|
60
|
+
*/
|
|
61
|
+
export declare function getDelegatedMethods(agentClass: new (...args: unknown[]) => unknown): string[];
|
|
62
|
+
/**
|
|
63
|
+
* Check if a method has the `@Delegate` decorator.
|
|
64
|
+
*/
|
|
65
|
+
export declare function isDelegate(target: object, propertyKey: string): boolean;
|
|
66
|
+
//# sourceMappingURL=delegate.decorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegate.decorator.d.ts","sourceRoot":"","sources":["../../src/decorators/delegate.decorator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EACL,cAAc,EAGf,MAAM,4BAA4B,CAAC;AAGpC;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,CAkChE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,cAAc,GAAG,SAAS,CAE5B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,MAAM,EAAE,CAE7F;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAEvE"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @Delegate Decorator
|
|
4
|
+
*
|
|
5
|
+
* Marks a method on an agent class as a delegation point to another agent.
|
|
6
|
+
* The method body is replaced at runtime by `AgentRuntime.registerAgentInstance()`,
|
|
7
|
+
* which patches it with an actual call to `runtime.execute(targetAgent, input)`.
|
|
8
|
+
*
|
|
9
|
+
* This lets the LLM naturally "call" other agents as if they were tools —
|
|
10
|
+
* the agent-to-agent communication is completely transparent to the LLM.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* @Agent({
|
|
15
|
+
* name: 'orchestrator',
|
|
16
|
+
* description: 'Orchestrates research and writing tasks',
|
|
17
|
+
* })
|
|
18
|
+
* class OrchestratorAgent {
|
|
19
|
+
* // The LLM can call this as a tool; it internally runs ResearchAgent
|
|
20
|
+
* @Delegate({
|
|
21
|
+
* agent: 'ResearchAgent',
|
|
22
|
+
* description: 'Research a topic in depth and return key findings',
|
|
23
|
+
* inputField: 'query',
|
|
24
|
+
* })
|
|
25
|
+
* async researchTopic(query: string): Promise<string> {
|
|
26
|
+
* return ''; // body is replaced at runtime
|
|
27
|
+
* }
|
|
28
|
+
*
|
|
29
|
+
* // The LLM can call this as a tool; it internally runs WriterAgent
|
|
30
|
+
* @Delegate({
|
|
31
|
+
* agent: 'WriterAgent',
|
|
32
|
+
* description: 'Write a professional article based on provided research',
|
|
33
|
+
* inputField: 'content',
|
|
34
|
+
* })
|
|
35
|
+
* async writeArticle(content: string): Promise<string> {
|
|
36
|
+
* return ''; // body is replaced at runtime
|
|
37
|
+
* }
|
|
38
|
+
* }
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* Note: @Delegate implicitly registers the method as a @Tool.
|
|
42
|
+
* You do NOT need to add @Tool separately.
|
|
43
|
+
*/
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.Delegate = Delegate;
|
|
46
|
+
exports.getDelegateMetadata = getDelegateMetadata;
|
|
47
|
+
exports.getDelegatedMethods = getDelegatedMethods;
|
|
48
|
+
exports.isDelegate = isDelegate;
|
|
49
|
+
require("reflect-metadata");
|
|
50
|
+
const agent_graph_types_1 = require("../graph/agent-graph.types");
|
|
51
|
+
const tool_decorator_1 = require("./tool.decorator");
|
|
52
|
+
/**
|
|
53
|
+
* Decorate a method to delegate its execution to another agent.
|
|
54
|
+
*
|
|
55
|
+
* When `AgentRuntime.registerAgentInstance()` is called, it patches each
|
|
56
|
+
* `@Delegate` method on the instance to actually call
|
|
57
|
+
* `runtime.execute(config.agent, input)` where `input` is extracted from the
|
|
58
|
+
* tool call arguments using `config.inputField` (default: `'input'`).
|
|
59
|
+
*/
|
|
60
|
+
function Delegate(config) {
|
|
61
|
+
return (target, propertyKey, descriptor) => {
|
|
62
|
+
const methodName = String(propertyKey);
|
|
63
|
+
// Store delegate-specific metadata
|
|
64
|
+
Reflect.defineMetadata(agent_graph_types_1.DELEGATE_METADATA_KEY, config, target, propertyKey);
|
|
65
|
+
// Track all delegated methods on the class for fast lookup
|
|
66
|
+
const existing = Reflect.getMetadata(agent_graph_types_1.DELEGATES_LIST_KEY, target.constructor) ?? [];
|
|
67
|
+
if (!existing.includes(methodName)) {
|
|
68
|
+
existing.push(methodName);
|
|
69
|
+
Reflect.defineMetadata(agent_graph_types_1.DELEGATES_LIST_KEY, existing, target.constructor);
|
|
70
|
+
}
|
|
71
|
+
// Also register as a @Tool so the LLM sees it in the tool list.
|
|
72
|
+
// The parameter list mirrors how the LLM will call it.
|
|
73
|
+
const inputField = config.inputField ?? 'input';
|
|
74
|
+
const toolDecorator = (0, tool_decorator_1.Tool)({
|
|
75
|
+
name: config.agent,
|
|
76
|
+
description: config.description,
|
|
77
|
+
parameters: [
|
|
78
|
+
{
|
|
79
|
+
name: inputField,
|
|
80
|
+
type: 'string',
|
|
81
|
+
description: `Input for ${config.agent}`,
|
|
82
|
+
required: true,
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
});
|
|
86
|
+
toolDecorator(target, propertyKey, descriptor);
|
|
87
|
+
return descriptor;
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Retrieve the `@Delegate` config from a method.
|
|
92
|
+
*/
|
|
93
|
+
function getDelegateMetadata(target, propertyKey) {
|
|
94
|
+
return Reflect.getMetadata(agent_graph_types_1.DELEGATE_METADATA_KEY, target, propertyKey);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get the names of all `@Delegate`-decorated methods on a class.
|
|
98
|
+
*/
|
|
99
|
+
function getDelegatedMethods(agentClass) {
|
|
100
|
+
return Reflect.getMetadata(agent_graph_types_1.DELEGATES_LIST_KEY, agentClass) ?? [];
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Check if a method has the `@Delegate` decorator.
|
|
104
|
+
*/
|
|
105
|
+
function isDelegate(target, propertyKey) {
|
|
106
|
+
return Reflect.hasMetadata(agent_graph_types_1.DELEGATE_METADATA_KEY, target, propertyKey);
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=delegate.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegate.decorator.js","sourceRoot":"","sources":["../../src/decorators/delegate.decorator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;;AAkBH,4BAkCC;AAKD,kDAKC;AAKD,kDAEC;AAKD,gCAEC;AA1ED,4BAA0B;AAC1B,kEAIoC;AACpC,qDAAwC;AAExC;;;;;;;GAOG;AACH,SAAgB,QAAQ,CAAC,MAAsB;IAC7C,OAAO,CAAC,MAAc,EAAE,WAA4B,EAAE,UAA8B,EAAE,EAAE;QACtF,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAEvC,mCAAmC;QACnC,OAAO,CAAC,cAAc,CAAC,yCAAqB,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAE3E,2DAA2D;QAC3D,MAAM,QAAQ,GAAa,OAAO,CAAC,WAAW,CAAC,sCAAkB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC7F,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1B,OAAO,CAAC,cAAc,CAAC,sCAAkB,EAAE,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3E,CAAC;QAED,gEAAgE;QAChE,uDAAuD;QACvD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,OAAO,CAAC;QAChD,MAAM,aAAa,GAAG,IAAA,qBAAI,EAAC;YACzB,IAAI,EAAE,MAAM,CAAC,KAAK;YAClB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,UAAU,EAAE;gBACV;oBACE,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,aAAa,MAAM,CAAC,KAAK,EAAE;oBACxC,QAAQ,EAAE,IAAI;iBACf;aACF;SACF,CAAC,CAAC;QAEH,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAE/C,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CACjC,MAAc,EACd,WAAmB;IAEnB,OAAO,OAAO,CAAC,WAAW,CAAC,yCAAqB,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,UAA+C;IACjF,OAAO,OAAO,CAAC,WAAW,CAAC,sCAAkB,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,MAAc,EAAE,WAAmB;IAC5D,OAAO,OAAO,CAAC,WAAW,CAAC,yCAAqB,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -9,6 +9,7 @@ import { ToolExecutor } from './tool.executor';
|
|
|
9
9
|
import { ToolRegistry } from '../registry/tool.registry';
|
|
10
10
|
import { AgentEventType } from '../types/event.types';
|
|
11
11
|
import { LLMProvider } from '../types/llm.types';
|
|
12
|
+
import '../prompts/agent-system.prompt';
|
|
12
13
|
/**
|
|
13
14
|
* Agent Executor
|
|
14
15
|
* Implements the core agent execution loop
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.executor.d.ts","sourceRoot":"","sources":["../../src/executor/agent.executor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,YAAY,EAMZ,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;GAGG;AACH,qBAAa,aAAa;IAEtB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,YAAY,CAAC;gBALb,YAAY,EAAE,kBAAkB,EAChC,cAAc,EAAE,mBAAmB,EACnC,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,WAAW,CAAC,EAAE,WAAW,YAAA,EACzB,YAAY,CAAC,GAAE,CAAC,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,aAAA;IAG3F;;OAEG;YACW,MAAM;IAIpB;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,GAAE,MAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA+F1F;;OAEG;YACW,WAAW;IAoFzB;;OAEG;YACW,gBAAgB;IA2C9B;;OAEG;YACW,WAAW;IA0CzB;;OAEG;IACH,OAAO,CAAC,WAAW;
|
|
1
|
+
{"version":3,"file":"agent.executor.d.ts","sourceRoot":"","sources":["../../src/executor/agent.executor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,YAAY,EAMZ,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,gCAAgC,CAAC;AAGxC;;;GAGG;AACH,qBAAa,aAAa;IAEtB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,YAAY,CAAC;gBALb,YAAY,EAAE,kBAAkB,EAChC,cAAc,EAAE,mBAAmB,EACnC,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,WAAW,CAAC,EAAE,WAAW,YAAA,EACzB,YAAY,CAAC,GAAE,CAAC,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,aAAA;IAG3F;;OAEG;YACW,MAAM;IAIpB;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,GAAE,MAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA+F1F;;OAEG;YACW,WAAW;IAoFzB;;OAEG;YACW,gBAAgB;IA2C9B;;OAEG;YACW,WAAW;IA0CzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAmCnB;;OAEG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAmBhF;;OAEG;IACH,OAAO,CAAC,SAAS;CAKlB"}
|
|
@@ -8,6 +8,9 @@ exports.AgentExecutor = void 0;
|
|
|
8
8
|
const crypto_1 = require("crypto");
|
|
9
9
|
const agent_types_1 = require("../types/agent.types");
|
|
10
10
|
const event_types_1 = require("../types/event.types");
|
|
11
|
+
const prompts_1 = require("@hazeljs/prompts");
|
|
12
|
+
require("../prompts/agent-system.prompt");
|
|
13
|
+
const agent_system_prompt_1 = require("../prompts/agent-system.prompt");
|
|
11
14
|
/**
|
|
12
15
|
* Agent Executor
|
|
13
16
|
* Implements the core agent execution loop
|
|
@@ -256,12 +259,18 @@ class AgentExecutor {
|
|
|
256
259
|
* Build prompt for LLM
|
|
257
260
|
*/
|
|
258
261
|
buildPrompt(context) {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
+
const basePrompt = context.metadata?.systemPrompt || 'You are a helpful AI agent.';
|
|
263
|
+
const description = context.metadata?.agentDescription || '';
|
|
264
|
+
const ragContext = context.ragContext && context.ragContext.length > 0 ? context.ragContext.join('\n\n') : '';
|
|
265
|
+
let systemPrompt;
|
|
266
|
+
if (description || ragContext) {
|
|
267
|
+
systemPrompt = prompts_1.PromptRegistry.get(agent_system_prompt_1.AGENT_SYSTEM_KEY)
|
|
268
|
+
.render({ systemPrompt: basePrompt, description, ragContext })
|
|
269
|
+
.replace(/\n\nAgent description: \n/, '\n')
|
|
270
|
+
.replace(/\n\nRelevant context:\n$/, '');
|
|
262
271
|
}
|
|
263
|
-
|
|
264
|
-
systemPrompt
|
|
272
|
+
else {
|
|
273
|
+
systemPrompt = basePrompt;
|
|
265
274
|
}
|
|
266
275
|
const messages = context.memory.conversationHistory.map((msg) => ({
|
|
267
276
|
role: msg.role,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.executor.js","sourceRoot":"","sources":["../../src/executor/agent.executor.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,mCAAoC;AACpC,sDAQ8B;AAK9B,sDAAsD;
|
|
1
|
+
{"version":3,"file":"agent.executor.js","sourceRoot":"","sources":["../../src/executor/agent.executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentGraph — Multi-Agent Orchestration Graph
|
|
3
|
+
*
|
|
4
|
+
* Provides a LangGraph-inspired DAG runtime for orchestrating multiple agents.
|
|
5
|
+
* Supports sequential pipelines, conditional routing, and parallel fan-out/fan-in.
|
|
6
|
+
*
|
|
7
|
+
* @example Sequential pipeline
|
|
8
|
+
* ```ts
|
|
9
|
+
* const graph = runtime.createGraph('pipeline')
|
|
10
|
+
* .addNode('researcher', { type: 'agent', agentName: 'ResearchAgent' })
|
|
11
|
+
* .addNode('writer', { type: 'agent', agentName: 'WriterAgent' })
|
|
12
|
+
* .addEdge('researcher', 'writer')
|
|
13
|
+
* .addEdge('writer', END)
|
|
14
|
+
* .setEntryPoint('researcher')
|
|
15
|
+
* .compile();
|
|
16
|
+
*
|
|
17
|
+
* const result = await graph.execute('Write a blog about LLMs');
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @example Conditional routing
|
|
21
|
+
* ```ts
|
|
22
|
+
* const graph = runtime.createGraph('router')
|
|
23
|
+
* .addNode('classifier', { type: 'agent', agentName: 'ClassifierAgent' })
|
|
24
|
+
* .addNode('coder', { type: 'agent', agentName: 'CoderAgent' })
|
|
25
|
+
* .addNode('writer', { type: 'agent', agentName: 'WriterAgent' })
|
|
26
|
+
* .setEntryPoint('classifier')
|
|
27
|
+
* .addConditionalEdge('classifier', state => state.data.type === 'code' ? 'coder' : 'writer')
|
|
28
|
+
* .addEdge('coder', END)
|
|
29
|
+
* .addEdge('writer', END)
|
|
30
|
+
* .compile();
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @example Parallel fan-out / fan-in
|
|
34
|
+
* ```ts
|
|
35
|
+
* const graph = runtime.createGraph('parallel')
|
|
36
|
+
* .addNode('splitter', { type: 'function', fn: splitTask })
|
|
37
|
+
* .addNode('parallel-1', { type: 'parallel', branches: ['agent-a', 'agent-b'] })
|
|
38
|
+
* .addNode('agent-a', { type: 'agent', agentName: 'AgentA' })
|
|
39
|
+
* .addNode('agent-b', { type: 'agent', agentName: 'AgentB' })
|
|
40
|
+
* .addNode('combiner', { type: 'function', fn: combineResults })
|
|
41
|
+
* .addEdge('splitter', 'parallel-1')
|
|
42
|
+
* .addEdge('parallel-1', 'combiner')
|
|
43
|
+
* .addEdge('combiner', END)
|
|
44
|
+
* .setEntryPoint('splitter')
|
|
45
|
+
* .compile();
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
import { GraphNode, GraphNodeConfig, GraphEdge, RouterFunction, GraphExecutionOptions, GraphExecutionResult, GraphStreamChunk } from './agent-graph.types';
|
|
49
|
+
import { AgentExecutionResult } from '../types/agent.types';
|
|
50
|
+
interface RuntimeLike {
|
|
51
|
+
execute(agentName: string, input: string, options?: Record<string, unknown>): Promise<AgentExecutionResult>;
|
|
52
|
+
getAgentMetadata(agentName: string): {
|
|
53
|
+
description?: string;
|
|
54
|
+
} | undefined;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Fluent builder for constructing a multi-agent graph.
|
|
58
|
+
* Call `.compile()` to get an executable `CompiledGraph`.
|
|
59
|
+
*/
|
|
60
|
+
export declare class AgentGraph {
|
|
61
|
+
private readonly graphId;
|
|
62
|
+
private readonly runtime;
|
|
63
|
+
private readonly nodes;
|
|
64
|
+
private readonly edges;
|
|
65
|
+
private entryPoint?;
|
|
66
|
+
constructor(graphId: string, runtime: RuntimeLike);
|
|
67
|
+
/**
|
|
68
|
+
* Add a node to the graph.
|
|
69
|
+
*
|
|
70
|
+
* Node types:
|
|
71
|
+
* - `'agent'` — runs a named agent via AgentRuntime
|
|
72
|
+
* - `'function'` — runs an arbitrary async function
|
|
73
|
+
* - `'parallel'` — fans-out to multiple child nodes concurrently
|
|
74
|
+
*/
|
|
75
|
+
addNode(id: string, config: GraphNodeConfig): this;
|
|
76
|
+
/**
|
|
77
|
+
* Add an unconditional directed edge from `from` → `to`.
|
|
78
|
+
* Use `END` as the target to terminate the graph.
|
|
79
|
+
*/
|
|
80
|
+
addEdge(from: string, to: string): this;
|
|
81
|
+
/**
|
|
82
|
+
* Add a conditional edge from `from`.
|
|
83
|
+
* The `routerFn` inspects the current `GraphState` and returns the ID of
|
|
84
|
+
* the next node (or `END` to stop).
|
|
85
|
+
*
|
|
86
|
+
* @param routeMap Optional mapping of routerFn return values to node IDs,
|
|
87
|
+
* so you can use short keys like `'code'` → `'CoderNode'`.
|
|
88
|
+
*/
|
|
89
|
+
addConditionalEdge(from: string, routerFn: RouterFunction, routeMap?: Record<string, string>): this;
|
|
90
|
+
/** Set the node where graph execution begins */
|
|
91
|
+
setEntryPoint(nodeId: string): this;
|
|
92
|
+
/**
|
|
93
|
+
* Validate the graph and return an executable `CompiledGraph`.
|
|
94
|
+
* Throws if the graph is malformed (missing entry point, dangling edges, etc.)
|
|
95
|
+
*/
|
|
96
|
+
compile(): CompiledGraph;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Executable graph produced by `AgentGraph.compile()`.
|
|
100
|
+
*/
|
|
101
|
+
export declare class CompiledGraph {
|
|
102
|
+
private readonly graphId;
|
|
103
|
+
private readonly nodes;
|
|
104
|
+
private readonly edges;
|
|
105
|
+
private readonly entryPoint;
|
|
106
|
+
private readonly runtime;
|
|
107
|
+
constructor(graphId: string, nodes: Map<string, GraphNode>, edges: GraphEdge[], entryPoint: string, runtime: RuntimeLike);
|
|
108
|
+
/**
|
|
109
|
+
* Execute the graph synchronously (collects all results before returning).
|
|
110
|
+
*/
|
|
111
|
+
execute(input: string, options?: GraphExecutionOptions): Promise<GraphExecutionResult>;
|
|
112
|
+
/**
|
|
113
|
+
* Execute the graph and yield a `GraphStreamChunk` after each node completes.
|
|
114
|
+
* Useful for streaming progress updates to the client in real-time.
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```ts
|
|
118
|
+
* for await (const chunk of graph.stream('Research LLMs')) {
|
|
119
|
+
* console.log(`[${chunk.nodeId}]`, chunk.chunk);
|
|
120
|
+
* }
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
stream(input: string, options?: GraphExecutionOptions): AsyncGenerator<GraphStreamChunk>;
|
|
124
|
+
private executeNode;
|
|
125
|
+
private executeParallelBranches;
|
|
126
|
+
private defaultMerge;
|
|
127
|
+
private resolveNextNode;
|
|
128
|
+
private applyPatch;
|
|
129
|
+
}
|
|
130
|
+
export {};
|
|
131
|
+
//# sourceMappingURL=agent-graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-graph.d.ts","sourceRoot":"","sources":["../../src/graph/agent-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAGH,OAAO,EAGL,SAAS,EACT,eAAe,EACf,SAAS,EACT,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EAEpB,gBAAgB,EAGjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAI5D,UAAU,WAAW;IACnB,OAAO,CACL,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACjC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAC3E;AAMD;;;GAGG;AACH,qBAAa,UAAU;IAMnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAC3D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,UAAU,CAAC,CAAS;gBAGT,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW;IAUvC;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI;IAelD;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAKvC;;;;;;;OAOG;IACH,kBAAkB,CAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,cAAc,EACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,IAAI;IAYP,gDAAgD;IAChD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IASnC;;;OAGG;IACH,OAAO,IAAI,aAAa;CAyCzB;AAMD;;GAEG;AACH,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAJP,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAC7B,KAAK,EAAE,SAAS,EAAE,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW;IAOvC;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAmGhG;;;;;;;;;;OAUG;IACI,MAAM,CACX,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,qBAA0B,GAClC,cAAc,CAAC,gBAAgB,CAAC;YA+ErB,WAAW;YAyEX,uBAAuB;IAqBrC,OAAO,CAAC,YAAY;IAmCpB,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,UAAU;CAUnB"}
|