@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,57 @@
1
+ /**
2
+ * Agent Module
3
+ * HazelJS module for Agent Runtime
4
+ */
5
+ import { AgentRuntime, AgentRuntimeConfig } from './runtime/agent.runtime';
6
+ import { AgentEventType } from './types/event.types';
7
+ type NewableFunction = new (...args: unknown[]) => unknown;
8
+ /** Token for optional GuardrailsService injection (from @hazeljs/guardrails) */
9
+ export declare const GUARDRAILS_SERVICE_TOKEN = "GuardrailsService";
10
+ /**
11
+ * Agent Module Options
12
+ */
13
+ export interface AgentModuleOptions {
14
+ runtime?: AgentRuntimeConfig;
15
+ agents?: NewableFunction[];
16
+ }
17
+ /**
18
+ * Agent Service
19
+ * Injectable service for agent runtime
20
+ */
21
+ export declare class AgentService {
22
+ private runtime;
23
+ constructor(guardrailsService?: {
24
+ checkInput: (input: string | object, options?: unknown) => {
25
+ allowed: boolean;
26
+ modified?: string | object;
27
+ violations?: string[];
28
+ blockedReason?: string;
29
+ };
30
+ checkOutput: (output: string | object, options?: unknown) => {
31
+ allowed: boolean;
32
+ modified?: string | object;
33
+ violations?: string[];
34
+ blockedReason?: string;
35
+ };
36
+ }, config?: AgentRuntimeConfig);
37
+ getRuntime(): AgentRuntime;
38
+ execute(agentName: string, input: string, options?: Record<string, unknown>): Promise<unknown>;
39
+ resume(executionId: string, input?: string): Promise<unknown>;
40
+ getContext(executionId: string): unknown;
41
+ on(type: AgentEventType, handler: (event: unknown) => void): void;
42
+ getAgents(): unknown[];
43
+ approveToolExecution(requestId: string, approvedBy: string): void;
44
+ rejectToolExecution(requestId: string): void;
45
+ getPendingApprovals(): unknown[];
46
+ }
47
+ /**
48
+ * Agent Module
49
+ * Uses static configuration pattern compatible with HazelJS DI
50
+ */
51
+ export declare class AgentModule {
52
+ private static options;
53
+ static forRoot(options?: AgentModuleOptions): typeof AgentModule;
54
+ static getOptions(): AgentModuleOptions;
55
+ }
56
+ export {};
57
+ //# sourceMappingURL=agent.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.module.d.ts","sourceRoot":"","sources":["../src/agent.module.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,KAAK,eAAe,GAAG,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAE3D,gFAAgF;AAChF,eAAO,MAAM,wBAAwB,sBAAsB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,qBACa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAe;gBAI5B,iBAAiB,CAAC,EAAE;QAClB,UAAU,EAAE,CACV,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,OAAO,CAAC,EAAE,OAAO,KACd;YACH,OAAO,EAAE,OAAO,CAAC;YACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;YAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;YACtB,aAAa,CAAC,EAAE,MAAM,CAAC;SACxB,CAAC;QACF,WAAW,EAAE,CACX,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,OAAO,CAAC,EAAE,OAAO,KACd;YACH,OAAO,EAAE,OAAO,CAAC;YACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;YAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;YACtB,aAAa,CAAC,EAAE,MAAM,CAAC;SACxB,CAAC;KACH,EACD,MAAM,GAAE,kBAAuB;IAkBjC,UAAU,IAAI,YAAY;IAIpB,OAAO,CACX,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,OAAO,CAAC;IAIb,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAInE,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAIxC,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAIjE,SAAS,IAAI,OAAO,EAAE;IAItB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAIjE,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI5C,mBAAmB,IAAI,OAAO,EAAE;CAGjC;AAED;;;GAGG;AACH,qBAIa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,OAAO,CAA0B;IAEhD,MAAM,CAAC,OAAO,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,WAAW;IAKpE,MAAM,CAAC,UAAU,IAAI,kBAAkB;CAGxC"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ /**
3
+ * Agent Module
4
+ * HazelJS module for Agent Runtime
5
+ */
6
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
7
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
8
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
9
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
10
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
11
+ };
12
+ var __metadata = (this && this.__metadata) || function (k, v) {
13
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
14
+ };
15
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
16
+ return function (target, key) { decorator(target, key, paramIndex); }
17
+ };
18
+ var AgentModule_1;
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.AgentModule = exports.AgentService = exports.GUARDRAILS_SERVICE_TOKEN = void 0;
21
+ const core_1 = require("@hazeljs/core");
22
+ const agent_runtime_1 = require("./runtime/agent.runtime");
23
+ /** Token for optional GuardrailsService injection (from @hazeljs/guardrails) */
24
+ exports.GUARDRAILS_SERVICE_TOKEN = 'GuardrailsService';
25
+ /**
26
+ * Agent Service
27
+ * Injectable service for agent runtime
28
+ */
29
+ let AgentService = class AgentService {
30
+ constructor(guardrailsService, config = {}) {
31
+ const moduleOpts = AgentModule.getOptions();
32
+ const runtimeConfig = {
33
+ ...(moduleOpts.runtime || config),
34
+ guardrailsService: guardrailsService ?? moduleOpts.runtime?.guardrailsService ?? config.guardrailsService,
35
+ };
36
+ this.runtime = new agent_runtime_1.AgentRuntime(runtimeConfig);
37
+ // Register agents from module options
38
+ if (moduleOpts.agents) {
39
+ for (const agentClass of moduleOpts.agents) {
40
+ this.runtime.registerAgent(agentClass);
41
+ }
42
+ }
43
+ }
44
+ getRuntime() {
45
+ return this.runtime;
46
+ }
47
+ async execute(agentName, input, options) {
48
+ return this.runtime.execute(agentName, input, options);
49
+ }
50
+ async resume(executionId, input) {
51
+ return this.runtime.resume(executionId, input);
52
+ }
53
+ getContext(executionId) {
54
+ return this.runtime.getContext(executionId);
55
+ }
56
+ on(type, handler) {
57
+ return this.runtime.on(type, handler);
58
+ }
59
+ getAgents() {
60
+ return this.runtime.getAgents();
61
+ }
62
+ approveToolExecution(requestId, approvedBy) {
63
+ return this.runtime.approveToolExecution(requestId, approvedBy);
64
+ }
65
+ rejectToolExecution(requestId) {
66
+ return this.runtime.rejectToolExecution(requestId);
67
+ }
68
+ getPendingApprovals() {
69
+ return this.runtime.getPendingApprovals();
70
+ }
71
+ };
72
+ exports.AgentService = AgentService;
73
+ exports.AgentService = AgentService = __decorate([
74
+ (0, core_1.Service)(),
75
+ __param(0, (0, core_1.Inject)(exports.GUARDRAILS_SERVICE_TOKEN)),
76
+ __metadata("design:paramtypes", [Object, Object])
77
+ ], AgentService);
78
+ /**
79
+ * Agent Module
80
+ * Uses static configuration pattern compatible with HazelJS DI
81
+ */
82
+ let AgentModule = AgentModule_1 = class AgentModule {
83
+ static forRoot(options = {}) {
84
+ AgentModule_1.options = options;
85
+ return AgentModule_1;
86
+ }
87
+ static getOptions() {
88
+ return AgentModule_1.options;
89
+ }
90
+ };
91
+ exports.AgentModule = AgentModule;
92
+ AgentModule.options = {};
93
+ exports.AgentModule = AgentModule = AgentModule_1 = __decorate([
94
+ (0, core_1.HazelModule)({
95
+ providers: [AgentService],
96
+ exports: [AgentService],
97
+ })
98
+ ], AgentModule);
99
+ //# sourceMappingURL=agent.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.module.js","sourceRoot":"","sources":["../src/agent.module.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;AAEH,wCAA6D;AAC7D,2DAA2E;AAK3E,gFAAgF;AACnE,QAAA,wBAAwB,GAAG,mBAAmB,CAAC;AAU5D;;;GAGG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAY;IAGvB,YAEE,iBAmBC,EACD,SAA6B,EAAE;QAE/B,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;QAC5C,MAAM,aAAa,GAAuB;YACxC,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,MAAM,CAAC;YACjC,iBAAiB,EACf,iBAAiB,IAAI,UAAU,CAAC,OAAO,EAAE,iBAAiB,IAAI,MAAM,CAAC,iBAAiB;SACzF,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,4BAAY,CAAC,aAAa,CAAC,CAAC;QAE/C,sCAAsC;QACtC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,MAAM,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBAC3C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,OAAO,CACX,SAAiB,EACjB,KAAa,EACb,OAAiC;QAEjC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,KAAc;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,UAAU,CAAC,WAAmB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,EAAE,CAAC,IAAoB,EAAE,OAAiC;QACxD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC;IAED,oBAAoB,CAAC,SAAiB,EAAE,UAAkB;QACxD,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;IAED,mBAAmB,CAAC,SAAiB;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAC5C,CAAC;CACF,CAAA;AAlFY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,cAAO,GAAE;IAKL,WAAA,IAAA,aAAM,EAAC,gCAAwB,CAAC,CAAA;;GAJxB,YAAY,CAkFxB;AAED;;;GAGG;AAKI,IAAM,WAAW,mBAAjB,MAAM,WAAW;IAGtB,MAAM,CAAC,OAAO,CAAC,UAA8B,EAAE;QAC7C,aAAW,CAAC,OAAO,GAAG,OAAO,CAAC;QAC9B,OAAO,aAAW,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,UAAU;QACf,OAAO,aAAW,CAAC,OAAO,CAAC;IAC7B,CAAC;;AAVU,kCAAW;AACP,mBAAO,GAAuB,EAAE,AAAzB,CAA0B;sBADrC,WAAW;IAJvB,IAAA,kBAAW,EAAC;QACX,SAAS,EAAE,CAAC,YAAY,CAAC;QACzB,OAAO,EAAE,CAAC,YAAY,CAAC;KACxB,CAAC;GACW,WAAW,CAWvB"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Agent Context Builder
3
+ * Builds execution context with memory and RAG integration
4
+ */
5
+ import { AgentContext } from '../types/agent.types';
6
+ import { MemoryManager } from '@hazeljs/rag';
7
+ /**
8
+ * Agent Context Builder
9
+ * Prepares context for agent execution
10
+ */
11
+ export declare class AgentContextBuilder {
12
+ private memoryManager?;
13
+ constructor(memoryManager?: MemoryManager | undefined);
14
+ /**
15
+ * Build context with memory
16
+ */
17
+ buildWithMemory(context: AgentContext, maxHistory?: number): Promise<void>;
18
+ /**
19
+ * Build context with RAG
20
+ */
21
+ buildWithRAG(context: AgentContext, ragService: any, topK?: number): Promise<void>;
22
+ /**
23
+ * Persist context to memory
24
+ */
25
+ persistToMemory(context: AgentContext): Promise<void>;
26
+ }
27
+ //# sourceMappingURL=agent.context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.context.d.ts","sourceRoot":"","sources":["../../src/context/agent.context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAmB,MAAM,cAAc,CAAC;AAE9D;;;GAGG;AACH,qBAAa,mBAAmB;IAClB,OAAO,CAAC,aAAa,CAAC;gBAAd,aAAa,CAAC,EAAE,aAAa,YAAA;IAEjD;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,GAAE,MAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BpF;;OAEG;IACG,YAAY,CAChB,OAAO,EAAE,YAAY,EAErB,UAAU,EAAE,GAAG,EACf,IAAI,GAAE,MAAU,GACf,OAAO,CAAC,IAAI,CAAC;IAchB;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAyC5D"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ /**
3
+ * Agent Context Builder
4
+ * Builds execution context with memory and RAG integration
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.AgentContextBuilder = void 0;
8
+ /**
9
+ * Agent Context Builder
10
+ * Prepares context for agent execution
11
+ */
12
+ class AgentContextBuilder {
13
+ constructor(memoryManager) {
14
+ this.memoryManager = memoryManager;
15
+ }
16
+ /**
17
+ * Build context with memory
18
+ */
19
+ async buildWithMemory(context, maxHistory = 20) {
20
+ if (!this.memoryManager) {
21
+ return;
22
+ }
23
+ const history = await this.memoryManager.getConversationHistory(context.sessionId, maxHistory);
24
+ context.memory.conversationHistory = history.map((msg) => ({
25
+ role: msg.role,
26
+ content: msg.content,
27
+ timestamp: msg.timestamp || new Date(),
28
+ }));
29
+ const entities = await this.memoryManager.getAllEntities(context.sessionId);
30
+ context.memory.entities = entities.map((entity) => ({
31
+ name: entity.name,
32
+ type: entity.type,
33
+ attributes: entity.attributes,
34
+ }));
35
+ const workingMemoryKeys = ['current_task', 'user_preferences', 'session_state'];
36
+ for (const key of workingMemoryKeys) {
37
+ const value = await this.memoryManager.getContext(key, context.sessionId);
38
+ if (value !== null) {
39
+ context.memory.workingMemory[key] = value;
40
+ }
41
+ }
42
+ }
43
+ /**
44
+ * Build context with RAG
45
+ */
46
+ async buildWithRAG(context,
47
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
48
+ ragService, topK = 5) {
49
+ if (!ragService) {
50
+ return;
51
+ }
52
+ try {
53
+ const results = await ragService.search(context.input, { topK });
54
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
+ context.ragContext = results.map((r) => r.content || r.text);
56
+ }
57
+ catch {
58
+ context.ragContext = [];
59
+ }
60
+ }
61
+ /**
62
+ * Persist context to memory
63
+ */
64
+ async persistToMemory(context) {
65
+ if (!this.memoryManager) {
66
+ return;
67
+ }
68
+ for (const msg of context.memory.conversationHistory) {
69
+ await this.memoryManager.addMessage({
70
+ role: msg.role,
71
+ content: msg.content,
72
+ timestamp: msg.timestamp,
73
+ }, context.sessionId, context.userId);
74
+ }
75
+ for (const [key, value] of Object.entries(context.memory.workingMemory)) {
76
+ await this.memoryManager.setContext(key, value, context.sessionId);
77
+ }
78
+ for (const entity of context.memory.entities) {
79
+ const existingEntity = await this.memoryManager.getEntity(entity.name);
80
+ if (existingEntity) {
81
+ await this.memoryManager.updateEntity(entity.name, entity);
82
+ }
83
+ else {
84
+ await this.memoryManager.trackEntity({
85
+ name: entity.name,
86
+ type: entity.type,
87
+ attributes: entity.attributes,
88
+ relationships: [],
89
+ firstSeen: new Date(),
90
+ lastSeen: new Date(),
91
+ mentions: 1,
92
+ }, context.sessionId);
93
+ }
94
+ }
95
+ }
96
+ }
97
+ exports.AgentContextBuilder = AgentContextBuilder;
98
+ //# sourceMappingURL=agent.context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.context.js","sourceRoot":"","sources":["../../src/context/agent.context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @Agent Decorator
3
+ * Marks a class as an Agent with configuration
4
+ */
5
+ import 'reflect-metadata';
6
+ import { AgentConfig, AgentMetadata } from '../types/agent.types';
7
+ type NewableFunction = new (...args: unknown[]) => unknown;
8
+ /**
9
+ * Agent decorator - marks a class as an agent
10
+ */
11
+ export declare function Agent(config: AgentConfig): ClassDecorator;
12
+ /**
13
+ * Get agent metadata from a class
14
+ */
15
+ export declare function getAgentMetadata(target: NewableFunction): AgentMetadata | undefined;
16
+ /**
17
+ * Check if a class is an agent
18
+ */
19
+ export declare function isAgent(target: NewableFunction): boolean;
20
+ export {};
21
+ //# sourceMappingURL=agent.decorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.decorator.d.ts","sourceRoot":"","sources":["../../src/decorators/agent.decorator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAElE,KAAK,eAAe,GAAG,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAI3D;;GAEG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,cAAc,CAWzD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,aAAa,GAAG,SAAS,CAEnF;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAExD"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /**
3
+ * @Agent Decorator
4
+ * Marks a class as an Agent with configuration
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.Agent = Agent;
8
+ exports.getAgentMetadata = getAgentMetadata;
9
+ exports.isAgent = isAgent;
10
+ require("reflect-metadata");
11
+ const AGENT_METADATA_KEY = Symbol('agent');
12
+ /**
13
+ * Agent decorator - marks a class as an agent
14
+ */
15
+ function Agent(config) {
16
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
17
+ return ((target) => {
18
+ const metadata = {
19
+ ...config,
20
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
21
+ target: target,
22
+ };
23
+ Reflect.defineMetadata(AGENT_METADATA_KEY, metadata, target);
24
+ });
25
+ }
26
+ /**
27
+ * Get agent metadata from a class
28
+ */
29
+ function getAgentMetadata(target) {
30
+ return Reflect.getMetadata(AGENT_METADATA_KEY, target);
31
+ }
32
+ /**
33
+ * Check if a class is an agent
34
+ */
35
+ function isAgent(target) {
36
+ return Reflect.hasMetadata(AGENT_METADATA_KEY, target);
37
+ }
38
+ //# sourceMappingURL=agent.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.decorator.js","sourceRoot":"","sources":["../../src/decorators/agent.decorator.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAYH,sBAWC;AAKD,4CAEC;AAKD,0BAEC;AAnCD,4BAA0B;AAK1B,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAE3C;;GAEG;AACH,SAAgB,KAAK,CAAC,MAAmB;IACvC,sEAAsE;IACtE,OAAO,CAAC,CAAC,MAAgB,EAAE,EAAE;QAC3B,MAAM,QAAQ,GAAkB;YAC9B,GAAG,MAAM;YACT,sEAAsE;YACtE,MAAM,EAAE,MAAyB;SAClC,CAAC;QAEF,OAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAmB,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,MAAuB;IACtD,OAAO,OAAO,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAC,MAAuB;IAC7C,OAAO,OAAO,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC"}
@@ -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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @Tool Decorator
3
+ * Marks a method as a tool that can be used by agents
4
+ */
5
+ import 'reflect-metadata';
6
+ import { ToolConfig, ToolMetadata } from '../types/tool.types';
7
+ /**
8
+ * Tool decorator - marks a method as a tool
9
+ */
10
+ export declare function Tool(config?: Partial<ToolConfig>): MethodDecorator;
11
+ /**
12
+ * Get tool metadata from a method
13
+ */
14
+ export declare function getToolMetadata(target: object, propertyKey: string): ToolMetadata | undefined;
15
+ /**
16
+ * Get all tools from an agent class
17
+ */
18
+ export declare function getAgentTools(agentClass: new (...args: unknown[]) => unknown): string[];
19
+ /**
20
+ * Check if a method is a tool
21
+ */
22
+ export declare function isTool(target: object, propertyKey: string): boolean;
23
+ //# sourceMappingURL=tool.decorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.decorator.d.ts","sourceRoot":"","sources":["../../src/decorators/tool.decorator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAK/D;;GAEG;AACH,wBAAgB,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,eAAe,CA6BlE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAE7F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,MAAM,EAAE,CAEvF;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAEnE"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ /**
3
+ * @Tool Decorator
4
+ * Marks a method as a tool that can be used by agents
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.Tool = Tool;
8
+ exports.getToolMetadata = getToolMetadata;
9
+ exports.getAgentTools = getAgentTools;
10
+ exports.isTool = isTool;
11
+ require("reflect-metadata");
12
+ const TOOL_METADATA_KEY = Symbol('tool');
13
+ const TOOLS_LIST_KEY = Symbol('tools');
14
+ /**
15
+ * Tool decorator - marks a method as a tool
16
+ */
17
+ function Tool(config) {
18
+ return (target, propertyKey, descriptor) => {
19
+ const methodName = String(propertyKey);
20
+ const metadata = {
21
+ name: config?.name || methodName,
22
+ description: config?.description || `Tool: ${methodName}`,
23
+ parameters: config?.parameters || [],
24
+ requiresApproval: config?.requiresApproval || false,
25
+ timeout: config?.timeout || 30000,
26
+ retries: config?.retries || 0,
27
+ policy: config?.policy,
28
+ metadata: config?.metadata,
29
+ target,
30
+ propertyKey: methodName,
31
+ method: descriptor.value,
32
+ agentClass: target.constructor,
33
+ };
34
+ Reflect.defineMetadata(TOOL_METADATA_KEY, metadata, target, propertyKey);
35
+ const existingTools = Reflect.getMetadata(TOOLS_LIST_KEY, target.constructor) || [];
36
+ if (!existingTools.includes(methodName)) {
37
+ existingTools.push(methodName);
38
+ Reflect.defineMetadata(TOOLS_LIST_KEY, existingTools, target.constructor);
39
+ }
40
+ return descriptor;
41
+ };
42
+ }
43
+ /**
44
+ * Get tool metadata from a method
45
+ */
46
+ function getToolMetadata(target, propertyKey) {
47
+ return Reflect.getMetadata(TOOL_METADATA_KEY, target, propertyKey);
48
+ }
49
+ /**
50
+ * Get all tools from an agent class
51
+ */
52
+ function getAgentTools(agentClass) {
53
+ return Reflect.getMetadata(TOOLS_LIST_KEY, agentClass) || [];
54
+ }
55
+ /**
56
+ * Check if a method is a tool
57
+ */
58
+ function isTool(target, propertyKey) {
59
+ return Reflect.hasMetadata(TOOL_METADATA_KEY, target, propertyKey);
60
+ }
61
+ //# sourceMappingURL=tool.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.decorator.js","sourceRoot":"","sources":["../../src/decorators/tool.decorator.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAWH,oBA6BC;AAKD,0CAEC;AAKD,sCAEC;AAKD,wBAEC;AA3DD,4BAA0B;AAG1B,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACzC,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAEvC;;GAEG;AACH,SAAgB,IAAI,CAAC,MAA4B;IAC/C,OAAO,CAAC,MAAc,EAAE,WAA4B,EAAE,UAA8B,EAAE,EAAE;QACtF,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAEvC,MAAM,QAAQ,GAAiB;YAC7B,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,UAAU;YAChC,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,SAAS,UAAU,EAAE;YACzD,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,EAAE;YACpC,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,IAAI,KAAK;YACnD,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK;YACjC,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,CAAC;YAC7B,MAAM,EAAE,MAAM,EAAE,MAAM;YACtB,QAAQ,EAAE,MAAM,EAAE,QAAQ;YAC1B,MAAM;YACN,WAAW,EAAE,UAAU;YACvB,MAAM,EAAE,UAAU,CAAC,KAAK;YACxB,UAAU,EAAE,MAAM,CAAC,WAAkD;SACtE,CAAC;QAEF,OAAO,CAAC,cAAc,CAAC,iBAAiB,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAEzE,MAAM,aAAa,GAAa,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC9F,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,MAAc,EAAE,WAAmB;IACjE,OAAO,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,UAA+C;IAC3E,OAAO,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,SAAgB,MAAM,CAAC,MAAc,EAAE,WAAmB;IACxD,OAAO,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACrE,CAAC"}