@hazeljs/agent 0.2.0-alpha.1

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 (166) hide show
  1. package/IMPLEMENTATION_SUMMARY.md +400 -0
  2. package/LICENSE +192 -0
  3. package/PERSISTENCE.md +201 -0
  4. package/PRISMA_INTEGRATION.md +499 -0
  5. package/PRODUCTION_READINESS.md +264 -0
  6. package/QUICKSTART.md +135 -0
  7. package/README.md +541 -0
  8. package/STATE_VS_MEMORY.md +243 -0
  9. package/benchmarks/performance.benchmark.ts +157 -0
  10. package/coverage/clover.xml +1508 -0
  11. package/coverage/lcov-report/base.css +224 -0
  12. package/coverage/lcov-report/block-navigation.js +87 -0
  13. package/coverage/lcov-report/favicon.png +0 -0
  14. package/coverage/lcov-report/index.html +296 -0
  15. package/coverage/lcov-report/prettify.css +1 -0
  16. package/coverage/lcov-report/prettify.js +2 -0
  17. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  18. package/coverage/lcov-report/sorter.js +210 -0
  19. package/coverage/lcov.info +2722 -0
  20. package/dist/agent.module.d.ts +57 -0
  21. package/dist/agent.module.d.ts.map +1 -0
  22. package/dist/agent.module.js +99 -0
  23. package/dist/agent.module.js.map +1 -0
  24. package/dist/context/agent.context.d.ts +27 -0
  25. package/dist/context/agent.context.d.ts.map +1 -0
  26. package/dist/context/agent.context.js +98 -0
  27. package/dist/context/agent.context.js.map +1 -0
  28. package/dist/decorators/agent.decorator.d.ts +21 -0
  29. package/dist/decorators/agent.decorator.d.ts.map +1 -0
  30. package/dist/decorators/agent.decorator.js +38 -0
  31. package/dist/decorators/agent.decorator.js.map +1 -0
  32. package/dist/decorators/delegate.decorator.d.ts +66 -0
  33. package/dist/decorators/delegate.decorator.d.ts.map +1 -0
  34. package/dist/decorators/delegate.decorator.js +108 -0
  35. package/dist/decorators/delegate.decorator.js.map +1 -0
  36. package/dist/decorators/tool.decorator.d.ts +23 -0
  37. package/dist/decorators/tool.decorator.d.ts.map +1 -0
  38. package/dist/decorators/tool.decorator.js +61 -0
  39. package/dist/decorators/tool.decorator.js.map +1 -0
  40. package/dist/events/event.emitter.d.ts +45 -0
  41. package/dist/events/event.emitter.d.ts.map +1 -0
  42. package/dist/events/event.emitter.js +96 -0
  43. package/dist/events/event.emitter.js.map +1 -0
  44. package/dist/executor/agent.executor.d.ts +58 -0
  45. package/dist/executor/agent.executor.d.ts.map +1 -0
  46. package/dist/executor/agent.executor.js +312 -0
  47. package/dist/executor/agent.executor.js.map +1 -0
  48. package/dist/executor/tool.executor.d.ts +55 -0
  49. package/dist/executor/tool.executor.d.ts.map +1 -0
  50. package/dist/executor/tool.executor.js +266 -0
  51. package/dist/executor/tool.executor.js.map +1 -0
  52. package/dist/graph/agent-graph.d.ts +131 -0
  53. package/dist/graph/agent-graph.d.ts.map +1 -0
  54. package/dist/graph/agent-graph.js +462 -0
  55. package/dist/graph/agent-graph.js.map +1 -0
  56. package/dist/graph/agent-graph.types.d.ts +210 -0
  57. package/dist/graph/agent-graph.types.d.ts.map +1 -0
  58. package/dist/graph/agent-graph.types.js +12 -0
  59. package/dist/graph/agent-graph.types.js.map +1 -0
  60. package/dist/index.d.ts +34 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +51 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/prompts/agent-system.prompt.d.ts +10 -0
  65. package/dist/prompts/agent-system.prompt.d.ts.map +1 -0
  66. package/dist/prompts/agent-system.prompt.js +18 -0
  67. package/dist/prompts/agent-system.prompt.js.map +1 -0
  68. package/dist/prompts/index.d.ts +4 -0
  69. package/dist/prompts/index.d.ts.map +1 -0
  70. package/dist/prompts/index.js +20 -0
  71. package/dist/prompts/index.js.map +1 -0
  72. package/dist/prompts/supervisor-routing.prompt.d.ts +9 -0
  73. package/dist/prompts/supervisor-routing.prompt.d.ts.map +1 -0
  74. package/dist/prompts/supervisor-routing.prompt.js +22 -0
  75. package/dist/prompts/supervisor-routing.prompt.js.map +1 -0
  76. package/dist/prompts/supervisor-system.prompt.d.ts +9 -0
  77. package/dist/prompts/supervisor-system.prompt.d.ts.map +1 -0
  78. package/dist/prompts/supervisor-system.prompt.js +21 -0
  79. package/dist/prompts/supervisor-system.prompt.js.map +1 -0
  80. package/dist/registry/agent.registry.d.ts +49 -0
  81. package/dist/registry/agent.registry.d.ts.map +1 -0
  82. package/dist/registry/agent.registry.js +90 -0
  83. package/dist/registry/agent.registry.js.map +1 -0
  84. package/dist/registry/tool.registry.d.ts +54 -0
  85. package/dist/registry/tool.registry.d.ts.map +1 -0
  86. package/dist/registry/tool.registry.js +153 -0
  87. package/dist/registry/tool.registry.js.map +1 -0
  88. package/dist/runtime/agent.runtime.d.ts +218 -0
  89. package/dist/runtime/agent.runtime.d.ts.map +1 -0
  90. package/dist/runtime/agent.runtime.extensions.d.ts +49 -0
  91. package/dist/runtime/agent.runtime.extensions.d.ts.map +1 -0
  92. package/dist/runtime/agent.runtime.extensions.js +93 -0
  93. package/dist/runtime/agent.runtime.extensions.js.map +1 -0
  94. package/dist/runtime/agent.runtime.js +448 -0
  95. package/dist/runtime/agent.runtime.js.map +1 -0
  96. package/dist/state/agent-state.interface.d.ts +63 -0
  97. package/dist/state/agent-state.interface.d.ts.map +1 -0
  98. package/dist/state/agent-state.interface.js +7 -0
  99. package/dist/state/agent-state.interface.js.map +1 -0
  100. package/dist/state/agent.state.d.ts +67 -0
  101. package/dist/state/agent.state.d.ts.map +1 -0
  102. package/dist/state/agent.state.js +172 -0
  103. package/dist/state/agent.state.js.map +1 -0
  104. package/dist/state/database-state.manager.d.ts +63 -0
  105. package/dist/state/database-state.manager.d.ts.map +1 -0
  106. package/dist/state/database-state.manager.js +282 -0
  107. package/dist/state/database-state.manager.js.map +1 -0
  108. package/dist/state/redis-state.manager.d.ts +81 -0
  109. package/dist/state/redis-state.manager.d.ts.map +1 -0
  110. package/dist/state/redis-state.manager.js +253 -0
  111. package/dist/state/redis-state.manager.js.map +1 -0
  112. package/dist/supervisor/supervisor.d.ts +81 -0
  113. package/dist/supervisor/supervisor.d.ts.map +1 -0
  114. package/dist/supervisor/supervisor.js +220 -0
  115. package/dist/supervisor/supervisor.js.map +1 -0
  116. package/dist/types/agent.types.d.ts +166 -0
  117. package/dist/types/agent.types.d.ts.map +1 -0
  118. package/dist/types/agent.types.js +32 -0
  119. package/dist/types/agent.types.js.map +1 -0
  120. package/dist/types/event.types.d.ts +198 -0
  121. package/dist/types/event.types.d.ts.map +1 -0
  122. package/dist/types/event.types.js +46 -0
  123. package/dist/types/event.types.js.map +1 -0
  124. package/dist/types/llm.types.d.ts +66 -0
  125. package/dist/types/llm.types.d.ts.map +1 -0
  126. package/dist/types/llm.types.js +7 -0
  127. package/dist/types/llm.types.js.map +1 -0
  128. package/dist/types/rag.types.d.ts +40 -0
  129. package/dist/types/rag.types.d.ts.map +1 -0
  130. package/dist/types/rag.types.js +7 -0
  131. package/dist/types/rag.types.js.map +1 -0
  132. package/dist/types/tool.types.d.ts +118 -0
  133. package/dist/types/tool.types.d.ts.map +1 -0
  134. package/dist/types/tool.types.js +19 -0
  135. package/dist/types/tool.types.js.map +1 -0
  136. package/dist/utils/circuit-breaker.d.ts +9 -0
  137. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  138. package/dist/utils/circuit-breaker.js +16 -0
  139. package/dist/utils/circuit-breaker.js.map +1 -0
  140. package/dist/utils/health-check.d.ts +71 -0
  141. package/dist/utils/health-check.d.ts.map +1 -0
  142. package/dist/utils/health-check.js +156 -0
  143. package/dist/utils/health-check.js.map +1 -0
  144. package/dist/utils/logger.d.ts +53 -0
  145. package/dist/utils/logger.d.ts.map +1 -0
  146. package/dist/utils/logger.js +133 -0
  147. package/dist/utils/logger.js.map +1 -0
  148. package/dist/utils/metrics.d.ts +90 -0
  149. package/dist/utils/metrics.d.ts.map +1 -0
  150. package/dist/utils/metrics.js +186 -0
  151. package/dist/utils/metrics.js.map +1 -0
  152. package/dist/utils/rate-limiter.d.ts +44 -0
  153. package/dist/utils/rate-limiter.d.ts.map +1 -0
  154. package/dist/utils/rate-limiter.js +82 -0
  155. package/dist/utils/rate-limiter.js.map +1 -0
  156. package/dist/utils/retry.d.ts +42 -0
  157. package/dist/utils/retry.d.ts.map +1 -0
  158. package/dist/utils/retry.js +103 -0
  159. package/dist/utils/retry.js.map +1 -0
  160. package/jest.config.js +30 -0
  161. package/logs/combined.log +1 -0
  162. package/logs/error.log +0 -0
  163. package/package.json +74 -0
  164. package/prisma-schema.example.prisma +76 -0
  165. package/tests/setup.ts +17 -0
  166. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Agent Event Emitter
3
+ * Handles event emission and subscription for agent runtime
4
+ */
5
+ import { AgentEvent, AgentEventType } from '../types/event.types';
6
+ type EventHandler<T = unknown> = (event: AgentEvent<T>) => void | Promise<void>;
7
+ /**
8
+ * Agent Event Emitter
9
+ * Pub/sub system for agent runtime events
10
+ */
11
+ export declare class AgentEventEmitter {
12
+ private handlers;
13
+ private wildcardHandlers;
14
+ private logger;
15
+ /**
16
+ * Subscribe to an event type
17
+ */
18
+ on<T = unknown>(type: AgentEventType, handler: EventHandler<T>): void;
19
+ /**
20
+ * Subscribe to all events
21
+ */
22
+ onAny(handler: EventHandler): void;
23
+ /**
24
+ * Unsubscribe from an event type
25
+ */
26
+ off(type: AgentEventType, handler: EventHandler): void;
27
+ /**
28
+ * Unsubscribe from all events
29
+ */
30
+ offAny(handler: EventHandler): void;
31
+ /**
32
+ * Emit an event
33
+ */
34
+ emit<T = unknown>(type: AgentEventType, agentId: string, executionId: string, data: T, metadata?: Record<string, unknown>): Promise<void>;
35
+ /**
36
+ * Clear all handlers
37
+ */
38
+ clear(): void;
39
+ /**
40
+ * Get handler count for an event type
41
+ */
42
+ listenerCount(type: AgentEventType): number;
43
+ }
44
+ export {};
45
+ //# sourceMappingURL=event.emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.emitter.d.ts","sourceRoot":"","sources":["../../src/events/event.emitter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGlE,KAAK,YAAY,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhF;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAqD;IACrE,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,MAAM,CAAwC;IAEtD;;OAEG;IACH,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAOrE;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAIlC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAOtD;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAInC;;OAEG;IACG,IAAI,CAAC,CAAC,GAAG,OAAO,EACpB,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,CAAC,EACP,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC;IAsChB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;CAG5C"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ /**
3
+ * Agent Event Emitter
4
+ * Handles event emission and subscription for agent runtime
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.AgentEventEmitter = void 0;
8
+ const logger_1 = require("../utils/logger");
9
+ /**
10
+ * Agent Event Emitter
11
+ * Pub/sub system for agent runtime events
12
+ */
13
+ class AgentEventEmitter {
14
+ constructor() {
15
+ this.handlers = new Map();
16
+ this.wildcardHandlers = new Set();
17
+ this.logger = new logger_1.Logger({ level: logger_1.LogLevel.WARN });
18
+ }
19
+ /**
20
+ * Subscribe to an event type
21
+ */
22
+ on(type, handler) {
23
+ if (!this.handlers.has(type)) {
24
+ this.handlers.set(type, new Set());
25
+ }
26
+ this.handlers.get(type).add(handler);
27
+ }
28
+ /**
29
+ * Subscribe to all events
30
+ */
31
+ onAny(handler) {
32
+ this.wildcardHandlers.add(handler);
33
+ }
34
+ /**
35
+ * Unsubscribe from an event type
36
+ */
37
+ off(type, handler) {
38
+ const handlers = this.handlers.get(type);
39
+ if (handlers) {
40
+ handlers.delete(handler);
41
+ }
42
+ }
43
+ /**
44
+ * Unsubscribe from all events
45
+ */
46
+ offAny(handler) {
47
+ this.wildcardHandlers.delete(handler);
48
+ }
49
+ /**
50
+ * Emit an event
51
+ */
52
+ async emit(type, agentId, executionId, data, metadata) {
53
+ const event = {
54
+ type,
55
+ agentId,
56
+ executionId,
57
+ timestamp: new Date(),
58
+ data,
59
+ metadata,
60
+ };
61
+ const handlers = this.handlers.get(type);
62
+ if (handlers) {
63
+ for (const handler of handlers) {
64
+ try {
65
+ await handler(event);
66
+ }
67
+ catch (error) {
68
+ this.logger.error(`Error in event handler for ${type}`, error instanceof Error ? error : new Error(String(error)), { executionId });
69
+ }
70
+ }
71
+ }
72
+ for (const handler of this.wildcardHandlers) {
73
+ try {
74
+ await handler(event);
75
+ }
76
+ catch (error) {
77
+ this.logger.error(`Error in wildcard event handler for ${type}`, error instanceof Error ? error : new Error(String(error)), { executionId });
78
+ }
79
+ }
80
+ }
81
+ /**
82
+ * Clear all handlers
83
+ */
84
+ clear() {
85
+ this.handlers.clear();
86
+ this.wildcardHandlers.clear();
87
+ }
88
+ /**
89
+ * Get handler count for an event type
90
+ */
91
+ listenerCount(type) {
92
+ return this.handlers.get(type)?.size || 0;
93
+ }
94
+ }
95
+ exports.AgentEventEmitter = AgentEventEmitter;
96
+ //# sourceMappingURL=event.emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.emitter.js","sourceRoot":"","sources":["../../src/events/event.emitter.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,4CAAmD;AAInD;;;GAGG;AACH,MAAa,iBAAiB;IAA9B;QACU,aAAQ,GAA2C,IAAI,GAAG,EAAE,CAAC;QAC7D,qBAAgB,GAAsB,IAAI,GAAG,EAAE,CAAC;QAChD,WAAM,GAAG,IAAI,eAAM,CAAC,EAAE,KAAK,EAAE,iBAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAiGxD,CAAC;IA/FC;;OAEG;IACH,EAAE,CAAc,IAAoB,EAAE,OAAwB;QAC5D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,OAAuB,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAqB;QACzB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAoB,EAAE,OAAqB;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAqB;QAC1B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CACR,IAAoB,EACpB,OAAe,EACf,WAAmB,EACnB,IAAO,EACP,QAAkC;QAElC,MAAM,KAAK,GAAkB;YAC3B,IAAI;YACJ,OAAO;YACP,WAAW;YACX,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,IAAI;YACJ,QAAQ;SACT,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,8BAA8B,IAAI,EAAE,EACpC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EACzD,EAAE,WAAW,EAAE,CAChB,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,uCAAuC,IAAI,EAAE,EAC7C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EACzD,EAAE,WAAW,EAAE,CAChB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,IAAoB;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;IAC5C,CAAC;CACF;AApGD,8CAoGC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Agent Executor
3
+ * Core execution loop for agents
4
+ */
5
+ import { AgentContext, AgentExecutionResult } from '../types/agent.types';
6
+ import { IAgentStateManager } from '../state/agent-state.interface';
7
+ import { AgentContextBuilder } from '../context/agent.context';
8
+ import { ToolExecutor } from './tool.executor';
9
+ import { ToolRegistry } from '../registry/tool.registry';
10
+ import { AgentEventType } from '../types/event.types';
11
+ import { LLMProvider } from '../types/llm.types';
12
+ import '../prompts/agent-system.prompt';
13
+ /**
14
+ * Agent Executor
15
+ * Implements the core agent execution loop
16
+ */
17
+ export declare class AgentExecutor {
18
+ private stateManager;
19
+ private contextBuilder;
20
+ private toolExecutor;
21
+ private toolRegistry;
22
+ private llmProvider?;
23
+ private eventEmitter?;
24
+ constructor(stateManager: IAgentStateManager, contextBuilder: AgentContextBuilder, toolExecutor: ToolExecutor, toolRegistry: ToolRegistry, llmProvider?: LLMProvider | undefined, eventEmitter?: ((type: AgentEventType, executionId: string, data: unknown) => void) | undefined);
25
+ /**
26
+ * Helper to handle both sync and async state manager calls
27
+ */
28
+ private unwrap;
29
+ /**
30
+ * Execute agent with controlled loop
31
+ */
32
+ execute(context: AgentContext, maxSteps?: number): Promise<AgentExecutionResult>;
33
+ /**
34
+ * Execute a single step
35
+ */
36
+ private executeStep;
37
+ /**
38
+ * Decide next action using LLM
39
+ */
40
+ private decideNextAction;
41
+ /**
42
+ * Execute a tool
43
+ */
44
+ private executeTool;
45
+ /**
46
+ * Build prompt for LLM
47
+ */
48
+ private buildPrompt;
49
+ /**
50
+ * Resume execution after pause
51
+ */
52
+ resume(executionId: string, input?: string): Promise<AgentExecutionResult>;
53
+ /**
54
+ * Emit event
55
+ */
56
+ private emitEvent;
57
+ }
58
+ //# sourceMappingURL=agent.executor.d.ts.map
@@ -0,0 +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,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"}
@@ -0,0 +1,312 @@
1
+ "use strict";
2
+ /**
3
+ * Agent Executor
4
+ * Core execution loop for agents
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.AgentExecutor = void 0;
8
+ const crypto_1 = require("crypto");
9
+ const agent_types_1 = require("../types/agent.types");
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");
14
+ /**
15
+ * Agent Executor
16
+ * Implements the core agent execution loop
17
+ */
18
+ class AgentExecutor {
19
+ constructor(stateManager, contextBuilder, toolExecutor, toolRegistry, llmProvider, eventEmitter) {
20
+ this.stateManager = stateManager;
21
+ this.contextBuilder = contextBuilder;
22
+ this.toolExecutor = toolExecutor;
23
+ this.toolRegistry = toolRegistry;
24
+ this.llmProvider = llmProvider;
25
+ this.eventEmitter = eventEmitter;
26
+ }
27
+ /**
28
+ * Helper to handle both sync and async state manager calls
29
+ */
30
+ async unwrap(value) {
31
+ return value instanceof Promise ? await value : value;
32
+ }
33
+ /**
34
+ * Execute agent with controlled loop
35
+ */
36
+ async execute(context, maxSteps = 10) {
37
+ const startTime = Date.now();
38
+ try {
39
+ this.emitEvent(event_types_1.AgentEventType.EXECUTION_STARTED, context.executionId, {
40
+ input: context.input,
41
+ sessionId: context.sessionId,
42
+ userId: context.userId,
43
+ options: context.metadata,
44
+ });
45
+ await this.unwrap(this.stateManager.updateState(context.executionId, agent_types_1.AgentState.THINKING));
46
+ let stepNumber = 0;
47
+ let finalResponse;
48
+ while (await this.unwrap(this.stateManager.canContinue(context.executionId, maxSteps))) {
49
+ stepNumber++;
50
+ const step = await this.executeStep(context, stepNumber);
51
+ await this.unwrap(this.stateManager.addStep(context.executionId, step));
52
+ if (step.state === agent_types_1.AgentState.COMPLETED) {
53
+ finalResponse = step.action?.response;
54
+ break;
55
+ }
56
+ if (step.state === agent_types_1.AgentState.FAILED) {
57
+ throw step.error || new Error('Step failed without error');
58
+ }
59
+ if (step.state === agent_types_1.AgentState.WAITING_FOR_APPROVAL) {
60
+ await this.unwrap(this.stateManager.updateState(context.executionId, agent_types_1.AgentState.WAITING_FOR_APPROVAL));
61
+ break;
62
+ }
63
+ if (step.state === agent_types_1.AgentState.WAITING_FOR_INPUT) {
64
+ await this.unwrap(this.stateManager.updateState(context.executionId, agent_types_1.AgentState.WAITING_FOR_INPUT));
65
+ break;
66
+ }
67
+ }
68
+ if (stepNumber >= maxSteps) {
69
+ await this.unwrap(this.stateManager.updateState(context.executionId, agent_types_1.AgentState.FAILED));
70
+ throw new Error(`Maximum steps (${maxSteps}) exceeded`);
71
+ }
72
+ await this.unwrap(this.stateManager.updateState(context.executionId, agent_types_1.AgentState.COMPLETED));
73
+ const duration = Date.now() - startTime;
74
+ this.emitEvent(event_types_1.AgentEventType.EXECUTION_COMPLETED, context.executionId, {
75
+ response: finalResponse,
76
+ steps: stepNumber,
77
+ duration,
78
+ });
79
+ return {
80
+ executionId: context.executionId,
81
+ agentId: context.agentId,
82
+ state: agent_types_1.AgentState.COMPLETED,
83
+ response: finalResponse,
84
+ steps: context.steps,
85
+ metadata: context.metadata,
86
+ duration,
87
+ completedAt: new Date(),
88
+ };
89
+ }
90
+ catch (error) {
91
+ await this.unwrap(this.stateManager.updateState(context.executionId, agent_types_1.AgentState.FAILED));
92
+ const duration = Date.now() - startTime;
93
+ this.emitEvent(event_types_1.AgentEventType.EXECUTION_FAILED, context.executionId, {
94
+ error: error,
95
+ step: context.steps.length,
96
+ duration,
97
+ });
98
+ return {
99
+ executionId: context.executionId,
100
+ agentId: context.agentId,
101
+ state: agent_types_1.AgentState.FAILED,
102
+ error: error,
103
+ steps: context.steps,
104
+ metadata: context.metadata,
105
+ duration,
106
+ completedAt: new Date(),
107
+ };
108
+ }
109
+ }
110
+ /**
111
+ * Execute a single step
112
+ */
113
+ async executeStep(context, stepNumber) {
114
+ const stepId = (0, crypto_1.randomUUID)();
115
+ const startTime = Date.now();
116
+ const step = {
117
+ id: stepId,
118
+ agentId: context.agentId,
119
+ executionId: context.executionId,
120
+ stepNumber,
121
+ state: agent_types_1.AgentState.THINKING,
122
+ timestamp: new Date(),
123
+ };
124
+ this.emitEvent(event_types_1.AgentEventType.STEP_STARTED, context.executionId, {
125
+ stepNumber,
126
+ state: step.state,
127
+ });
128
+ try {
129
+ const action = await this.decideNextAction(context);
130
+ step.action = action;
131
+ switch (action.type) {
132
+ case agent_types_1.AgentActionType.USE_TOOL:
133
+ step.state = agent_types_1.AgentState.USING_TOOL;
134
+ step.result = await this.executeTool(context, action);
135
+ break;
136
+ case agent_types_1.AgentActionType.ASK_USER:
137
+ step.state = agent_types_1.AgentState.WAITING_FOR_INPUT;
138
+ this.emitEvent(event_types_1.AgentEventType.USER_INPUT_REQUESTED, context.executionId, {
139
+ question: action.question,
140
+ });
141
+ break;
142
+ case agent_types_1.AgentActionType.RESPOND:
143
+ step.state = agent_types_1.AgentState.COMPLETED;
144
+ step.result = {
145
+ success: true,
146
+ output: action.response,
147
+ };
148
+ break;
149
+ case agent_types_1.AgentActionType.WAIT:
150
+ step.state = agent_types_1.AgentState.WAITING_FOR_APPROVAL;
151
+ break;
152
+ case agent_types_1.AgentActionType.COMPLETE:
153
+ step.state = agent_types_1.AgentState.COMPLETED;
154
+ step.result = {
155
+ success: true,
156
+ output: action.response,
157
+ };
158
+ break;
159
+ default:
160
+ step.state = agent_types_1.AgentState.THINKING;
161
+ }
162
+ step.duration = Date.now() - startTime;
163
+ this.emitEvent(event_types_1.AgentEventType.STEP_COMPLETED, context.executionId, {
164
+ stepNumber,
165
+ state: step.state,
166
+ action,
167
+ result: step.result,
168
+ });
169
+ return step;
170
+ }
171
+ catch (error) {
172
+ step.state = agent_types_1.AgentState.FAILED;
173
+ step.error = error;
174
+ step.duration = Date.now() - startTime;
175
+ this.emitEvent(event_types_1.AgentEventType.STEP_FAILED, context.executionId, {
176
+ stepNumber,
177
+ state: step.state,
178
+ error: error.message,
179
+ });
180
+ return step;
181
+ }
182
+ }
183
+ /**
184
+ * Decide next action using LLM
185
+ */
186
+ async decideNextAction(context) {
187
+ if (!this.llmProvider) {
188
+ return {
189
+ type: agent_types_1.AgentActionType.RESPOND,
190
+ response: 'No LLM provider configured',
191
+ };
192
+ }
193
+ const prompt = this.buildPrompt(context);
194
+ const tools = this.toolRegistry.getToolDefinitionsForLLM(context.agentId);
195
+ try {
196
+ const response = await this.llmProvider.chat({
197
+ messages: [
198
+ { role: 'system', content: prompt.system },
199
+ ...prompt.messages,
200
+ { role: 'user', content: context.input },
201
+ ],
202
+ tools: tools.length > 0 ? tools : undefined,
203
+ });
204
+ if (response.tool_calls && response.tool_calls.length > 0) {
205
+ const toolCall = response.tool_calls[0];
206
+ return {
207
+ type: agent_types_1.AgentActionType.USE_TOOL,
208
+ toolName: toolCall.function.name,
209
+ toolInput: JSON.parse(toolCall.function.arguments),
210
+ thought: response.content,
211
+ };
212
+ }
213
+ return {
214
+ type: agent_types_1.AgentActionType.RESPOND,
215
+ response: response.content,
216
+ };
217
+ }
218
+ catch {
219
+ return {
220
+ type: agent_types_1.AgentActionType.RESPOND,
221
+ response: 'I encountered an error while processing your request.',
222
+ };
223
+ }
224
+ }
225
+ /**
226
+ * Execute a tool
227
+ */
228
+ async executeTool(context, action) {
229
+ if (!action.toolName || !action.toolInput) {
230
+ return {
231
+ success: false,
232
+ error: 'Tool name or input missing',
233
+ };
234
+ }
235
+ const fullToolName = `${context.agentId}.${action.toolName}`;
236
+ const tool = this.toolRegistry.getTool(fullToolName);
237
+ if (!tool) {
238
+ return {
239
+ success: false,
240
+ error: `Tool ${action.toolName} not found`,
241
+ };
242
+ }
243
+ const result = await this.toolExecutor.execute(tool, action.toolInput, context.agentId, context.sessionId, context.userId);
244
+ // Store as assistant message summarizing the tool call + result (OpenAI requires tool
245
+ // messages to follow assistant messages with tool_calls; we avoid that format to keep
246
+ // storage simple and ensure the LLM receives the tool result context)
247
+ const toolSummary = `[Tool: ${action.toolName}]\nInput: ${JSON.stringify(action.toolInput)}\nOutput: ${JSON.stringify(result.output)}`;
248
+ await this.unwrap(this.stateManager.addMessage(context.executionId, 'assistant', toolSummary));
249
+ return {
250
+ success: result.success,
251
+ output: result.output,
252
+ error: result.error?.message,
253
+ metadata: {
254
+ duration: result.duration,
255
+ },
256
+ };
257
+ }
258
+ /**
259
+ * Build prompt for LLM
260
+ */
261
+ buildPrompt(context) {
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$/, '');
271
+ }
272
+ else {
273
+ systemPrompt = basePrompt;
274
+ }
275
+ const messages = context.memory.conversationHistory.map((msg) => ({
276
+ role: msg.role,
277
+ content: msg.content,
278
+ }));
279
+ return {
280
+ system: systemPrompt,
281
+ messages,
282
+ };
283
+ }
284
+ /**
285
+ * Resume execution after pause
286
+ */
287
+ async resume(executionId, input) {
288
+ const contextResult = this.stateManager.getContext(executionId);
289
+ const context = await this.unwrap(contextResult);
290
+ if (!context) {
291
+ throw new Error(`Execution context ${executionId} not found`);
292
+ }
293
+ if (input) {
294
+ await this.unwrap(this.stateManager.addMessage(executionId, 'user', input));
295
+ this.emitEvent(event_types_1.AgentEventType.USER_INPUT_RECEIVED, executionId, {
296
+ response: input,
297
+ });
298
+ }
299
+ await this.unwrap(this.stateManager.updateState(executionId, agent_types_1.AgentState.THINKING));
300
+ return this.execute(context);
301
+ }
302
+ /**
303
+ * Emit event
304
+ */
305
+ emitEvent(type, executionId, data) {
306
+ if (this.eventEmitter) {
307
+ this.eventEmitter(type, executionId, data);
308
+ }
309
+ }
310
+ }
311
+ exports.AgentExecutor = AgentExecutor;
312
+ //# sourceMappingURL=agent.executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.executor.js","sourceRoot":"","sources":["../../src/executor/agent.executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Tool Executor
3
+ * Executes tools with approval workflow and error handling
4
+ */
5
+ import { ToolExecutionResult, ToolApprovalRequest, ToolMetadata } from '../types/tool.types';
6
+ import { AgentEventType } from '../types/event.types';
7
+ import type { IGuardrailsService } from '../types/agent.types';
8
+ /**
9
+ * Tool Executor
10
+ * Handles tool execution with approval and retry logic
11
+ */
12
+ export declare class ToolExecutor {
13
+ private eventEmitter?;
14
+ private guardrailsService?;
15
+ private pendingApprovals;
16
+ private executionContexts;
17
+ constructor(eventEmitter?: ((type: AgentEventType, data: unknown) => void) | undefined, guardrailsService?: IGuardrailsService | undefined);
18
+ /**
19
+ * Execute a tool
20
+ */
21
+ execute(tool: ToolMetadata, input: Record<string, unknown>, agentId: string, sessionId: string, userId?: string): Promise<ToolExecutionResult>;
22
+ /**
23
+ * Execute tool with retry logic
24
+ */
25
+ private executeWithRetry;
26
+ /**
27
+ * Execute tool with timeout
28
+ */
29
+ private executeWithTimeout;
30
+ /**
31
+ * Request approval for tool execution
32
+ */
33
+ private requestApproval;
34
+ /**
35
+ * Approve a tool execution
36
+ */
37
+ approveExecution(requestId: string, approvedBy: string): void;
38
+ /**
39
+ * Reject a tool execution
40
+ */
41
+ rejectExecution(requestId: string): void;
42
+ /**
43
+ * Get pending approval requests
44
+ */
45
+ getPendingApprovals(): ToolApprovalRequest[];
46
+ /**
47
+ * Emit event
48
+ */
49
+ private emitEvent;
50
+ /**
51
+ * Delay helper
52
+ */
53
+ private delay;
54
+ }
55
+ //# sourceMappingURL=tool.executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.executor.d.ts","sourceRoot":"","sources":["../../src/executor/tool.executor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAEL,mBAAmB,EAEnB,mBAAmB,EACnB,YAAY,EACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;;GAGG;AACH,qBAAa,YAAY;IAKrB,OAAO,CAAC,YAAY,CAAC;IACrB,OAAO,CAAC,iBAAiB,CAAC;IAL5B,OAAO,CAAC,gBAAgB,CAA+C;IACvE,OAAO,CAAC,iBAAiB,CAAgD;gBAG/D,YAAY,CAAC,GAAE,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,aAAA,EAC5D,iBAAiB,CAAC,EAAE,kBAAkB,YAAA;IAGhD;;OAEG;IACG,OAAO,CACX,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,mBAAmB,CAAC;IAqH/B;;OAEG;YACW,gBAAgB;IAwB9B;;OAEG;YACW,kBAAkB;IAiChC;;OAEG;YACW,eAAe;IA+D7B;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAS7D;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAOxC;;OAEG;IACH,mBAAmB,IAAI,mBAAmB,EAAE;IAI5C;;OAEG;IACH,OAAO,CAAC,SAAS;IAMjB;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}