@hazeljs/agent 0.2.0-beta.60 → 0.2.0-beta.61

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 (34) hide show
  1. package/coverage/clover.xml +589 -315
  2. package/coverage/lcov-report/index.html +59 -29
  3. package/coverage/lcov.info +987 -497
  4. package/dist/decorators/delegate.decorator.d.ts +66 -0
  5. package/dist/decorators/delegate.decorator.d.ts.map +1 -0
  6. package/dist/decorators/delegate.decorator.js +108 -0
  7. package/dist/decorators/delegate.decorator.js.map +1 -0
  8. package/dist/graph/agent-graph.d.ts +131 -0
  9. package/dist/graph/agent-graph.d.ts.map +1 -0
  10. package/dist/graph/agent-graph.js +462 -0
  11. package/dist/graph/agent-graph.js.map +1 -0
  12. package/dist/graph/agent-graph.types.d.ts +210 -0
  13. package/dist/graph/agent-graph.types.d.ts.map +1 -0
  14. package/dist/graph/agent-graph.types.js +12 -0
  15. package/dist/graph/agent-graph.types.js.map +1 -0
  16. package/dist/index.d.ts +4 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +5 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/runtime/agent.runtime.d.ts +63 -1
  21. package/dist/runtime/agent.runtime.d.ts.map +1 -1
  22. package/dist/runtime/agent.runtime.js +102 -1
  23. package/dist/runtime/agent.runtime.js.map +1 -1
  24. package/dist/supervisor/supervisor.d.ts +79 -0
  25. package/dist/supervisor/supervisor.d.ts.map +1 -0
  26. package/dist/supervisor/supervisor.js +227 -0
  27. package/dist/supervisor/supervisor.js.map +1 -0
  28. package/dist/types/event.types.d.ts +76 -1
  29. package/dist/types/event.types.d.ts.map +1 -1
  30. package/dist/types/event.types.js +16 -0
  31. package/dist/types/event.types.js.map +1 -1
  32. package/logs/combined.log +1 -1
  33. package/package.json +5 -5
  34. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ /**
3
+ * SupervisorAgent — Orchestrate a team of worker agents via an LLM router
4
+ *
5
+ * The supervisor uses an LLM to:
6
+ * 1. Decompose an incoming task into subtasks
7
+ * 2. Route each subtask to the most appropriate worker agent
8
+ * 3. Accumulate results and decide when the task is complete
9
+ *
10
+ * This implements the "Supervisor ↔ Workers" multi-agent pattern:
11
+ *
12
+ * ```
13
+ * User Task
14
+ * │
15
+ * Supervisor ←───────────────────────┐
16
+ * │ │
17
+ * ┌───▼────────────────┐ Worker result
18
+ * │ Route to worker? │ │
19
+ * └───────────┬────────┘ │
20
+ * │ │
21
+ * ┌──────▼──────┐ │
22
+ * │ WorkerAgent │───────────────┘
23
+ * └─────────────┘
24
+ * ```
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * const supervisor = runtime.createSupervisor({
29
+ * name: 'project-manager',
30
+ * workers: ['ResearchAgent', 'CoderAgent', 'WriterAgent'],
31
+ * maxRounds: 6,
32
+ * });
33
+ *
34
+ * const result = await supervisor.run('Build a REST API for a todo app');
35
+ * console.log(result.response);
36
+ * ```
37
+ */
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.SupervisorAgent = void 0;
40
+ /**
41
+ * A supervisor that routes tasks to worker agents using an LLM.
42
+ * Obtain one via `AgentRuntime.createSupervisor(config)`.
43
+ */
44
+ class SupervisorAgent {
45
+ constructor(config, llmProvider, runtime) {
46
+ this.config = config;
47
+ this.llmProvider = llmProvider;
48
+ this.runtime = runtime;
49
+ this.name = config.name;
50
+ this.workers = config.workers;
51
+ this.maxRounds = config.maxRounds ?? 10;
52
+ this.temperature = config.temperature ?? 0;
53
+ this.model = config.model;
54
+ // Collect worker descriptions for the system prompt
55
+ const workerInfos = this.workers.map((w) => ({
56
+ name: w,
57
+ description: runtime.getAgentMetadata(w)?.description ?? `Worker agent: ${w}`,
58
+ }));
59
+ this.systemPrompt = config.systemPrompt
60
+ ? `${config.systemPrompt}\n\n${this.buildWorkerList(workerInfos)}`
61
+ : this.buildDefaultSystemPrompt(workerInfos);
62
+ }
63
+ // ---------------------------------------------------------------------------
64
+ // Public API
65
+ // ---------------------------------------------------------------------------
66
+ /**
67
+ * Run the supervisor on a given task.
68
+ * The supervisor will iteratively route subtasks to workers until either:
69
+ * - The LLM decides the task is complete and emits a final response, or
70
+ * - `maxRounds` is reached (returns the accumulated context as the response).
71
+ */
72
+ async run(task, options = {}) {
73
+ const startTime = Date.now();
74
+ const rounds = [];
75
+ // Conversation context the supervisor maintains across rounds
76
+ const conversationContext = [`Task: ${task}`];
77
+ try {
78
+ for (let round = 1; round <= this.maxRounds; round++) {
79
+ const roundStart = Date.now();
80
+ // Ask the LLM supervisor to decide what to do next
81
+ const decision = await this.makeRoutingDecision(task, conversationContext);
82
+ if (decision.action === 'finish') {
83
+ const response = decision.response ?? conversationContext.join('\n\n');
84
+ rounds.push({
85
+ round,
86
+ decision,
87
+ duration: Date.now() - roundStart,
88
+ });
89
+ return {
90
+ response,
91
+ rounds,
92
+ totalDuration: Date.now() - startTime,
93
+ completedAt: new Date(),
94
+ success: true,
95
+ };
96
+ }
97
+ // Delegate to a worker agent
98
+ if (decision.action === 'delegate' && decision.worker && decision.subtask) {
99
+ if (!this.workers.includes(decision.worker)) {
100
+ throw new Error(`Supervisor "${this.name}" tried to route to unknown worker "${decision.worker}". ` +
101
+ `Available workers: ${this.workers.join(', ')}`);
102
+ }
103
+ const workerResult = await this.runtime.execute(decision.worker, decision.subtask, {
104
+ sessionId: options.sessionId,
105
+ userId: options.userId,
106
+ });
107
+ // Add the worker result to the conversation context
108
+ conversationContext.push(`Round ${round} — Worker: ${decision.worker}\n` +
109
+ `Subtask: ${decision.subtask}\n` +
110
+ `Result: ${workerResult.response ?? '(no response)'}`);
111
+ rounds.push({
112
+ round,
113
+ decision,
114
+ workerResult,
115
+ duration: Date.now() - roundStart,
116
+ });
117
+ continue;
118
+ }
119
+ // Unexpected decision shape — treat as finish
120
+ rounds.push({ round, decision, duration: Date.now() - roundStart });
121
+ break;
122
+ }
123
+ // maxRounds reached without a 'finish' decision
124
+ const finalResponse = conversationContext.length > 1
125
+ ? `Supervisor reached maximum rounds (${this.maxRounds}).\n\n` +
126
+ conversationContext.slice(1).join('\n\n')
127
+ : `Supervisor reached maximum rounds without producing a response.`;
128
+ return {
129
+ response: finalResponse,
130
+ rounds,
131
+ totalDuration: Date.now() - startTime,
132
+ completedAt: new Date(),
133
+ success: true,
134
+ };
135
+ }
136
+ catch (error) {
137
+ return {
138
+ response: '',
139
+ rounds,
140
+ totalDuration: Date.now() - startTime,
141
+ completedAt: new Date(),
142
+ success: false,
143
+ error: error,
144
+ };
145
+ }
146
+ }
147
+ // ---------------------------------------------------------------------------
148
+ // Private: LLM routing
149
+ // ---------------------------------------------------------------------------
150
+ async makeRoutingDecision(originalTask, context) {
151
+ const contextSummary = context.length > 1 ? '\n\nWork completed so far:\n' + context.slice(1).join('\n\n') : '';
152
+ const userMessage = `Original task: ${originalTask}${contextSummary}\n\n` +
153
+ `Decide the next action. Respond with ONLY a JSON object (no markdown):
154
+ {
155
+ "action": "delegate" | "finish",
156
+ "worker": "<worker name>", // required when action === "delegate"
157
+ "subtask": "<instructions>", // required when action === "delegate"
158
+ "response": "<final answer>", // required when action === "finish"
159
+ "thought": "<your reasoning>" // optional
160
+ }`;
161
+ try {
162
+ const llmResponse = await this.llmProvider.chat({
163
+ messages: [
164
+ { role: 'system', content: this.systemPrompt },
165
+ { role: 'user', content: userMessage },
166
+ ],
167
+ temperature: this.temperature,
168
+ ...(this.model ? { model: this.model } : {}),
169
+ });
170
+ return this.parseDecision(llmResponse.content);
171
+ }
172
+ catch {
173
+ // On LLM error, default to finishing with accumulated context
174
+ return {
175
+ action: 'finish',
176
+ response: context.slice(1).join('\n\n') || 'Unable to complete task due to LLM error.',
177
+ thought: 'LLM call failed, returning accumulated context.',
178
+ };
179
+ }
180
+ }
181
+ parseDecision(raw) {
182
+ // Strip markdown code fences if present
183
+ const cleaned = raw
184
+ .replace(/^```(?:json)?\s*/i, '')
185
+ .replace(/\s*```$/i, '')
186
+ .trim();
187
+ try {
188
+ const parsed = JSON.parse(cleaned);
189
+ if (parsed.action !== 'delegate' && parsed.action !== 'finish') {
190
+ return { action: 'finish', response: cleaned };
191
+ }
192
+ return parsed;
193
+ }
194
+ catch {
195
+ // If the LLM returned plain text, treat it as a final answer
196
+ return { action: 'finish', response: raw };
197
+ }
198
+ }
199
+ // ---------------------------------------------------------------------------
200
+ // Private: prompt builders
201
+ // ---------------------------------------------------------------------------
202
+ buildDefaultSystemPrompt(workers) {
203
+ return (`You are "${this.name}", a supervisor agent responsible for orchestrating a team of ` +
204
+ `specialized worker agents to complete complex tasks.\n\n` +
205
+ `Your responsibilities:\n` +
206
+ `1. Break down the user's task into subtasks\n` +
207
+ `2. Delegate each subtask to the most appropriate worker\n` +
208
+ `3. Review worker results and decide what to do next\n` +
209
+ `4. When all subtasks are done, synthesize a final response\n\n` +
210
+ this.buildWorkerList(workers));
211
+ }
212
+ buildWorkerList(workers) {
213
+ const lines = workers.map((w) => ` • ${w.name}: ${w.description}`);
214
+ return `Available workers:\n${lines.join('\n')}`;
215
+ }
216
+ // ---------------------------------------------------------------------------
217
+ // Introspection
218
+ // ---------------------------------------------------------------------------
219
+ get supervisorName() {
220
+ return this.name;
221
+ }
222
+ get workerNames() {
223
+ return [...this.workers];
224
+ }
225
+ }
226
+ exports.SupervisorAgent = SupervisorAgent;
227
+ //# sourceMappingURL=supervisor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../../src/supervisor/supervisor.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,20 @@ export declare enum AgentEventType {
21
21
  USER_INPUT_REQUESTED = "agent.input.requested",
22
22
  USER_INPUT_RECEIVED = "agent.input.received",
23
23
  MEMORY_UPDATED = "agent.memory.updated",
24
- RAG_QUERY_EXECUTED = "agent.rag.executed"
24
+ RAG_QUERY_EXECUTED = "agent.rag.executed",
25
+ GRAPH_STARTED = "graph.started",
26
+ GRAPH_COMPLETED = "graph.completed",
27
+ GRAPH_FAILED = "graph.failed",
28
+ GRAPH_NODE_STARTED = "graph.node.started",
29
+ GRAPH_NODE_COMPLETED = "graph.node.completed",
30
+ GRAPH_NODE_FAILED = "graph.node.failed",
31
+ GRAPH_PARALLEL_STARTED = "graph.parallel.started",
32
+ GRAPH_PARALLEL_COMPLETED = "graph.parallel.completed",
33
+ SUPERVISOR_ROUND_STARTED = "supervisor.round.started",
34
+ SUPERVISOR_DELEGATED = "supervisor.delegated",
35
+ SUPERVISOR_FINISHED = "supervisor.finished",
36
+ DELEGATE_STARTED = "agent.delegate.started",
37
+ DELEGATE_COMPLETED = "agent.delegate.completed"
25
38
  }
26
39
  /**
27
40
  * Base event interface
@@ -120,4 +133,66 @@ export interface RAGQueryEventData {
120
133
  topK: number;
121
134
  duration: number;
122
135
  }
136
+ export interface GraphStartedEventData {
137
+ graphId: string;
138
+ executionId: string;
139
+ input: string;
140
+ }
141
+ export interface GraphCompletedEventData {
142
+ graphId: string;
143
+ executionId: string;
144
+ response?: string;
145
+ stepCount: number;
146
+ duration: number;
147
+ }
148
+ export interface GraphFailedEventData {
149
+ graphId: string;
150
+ executionId: string;
151
+ error: Error;
152
+ stepCount: number;
153
+ duration: number;
154
+ }
155
+ export interface GraphNodeEventData {
156
+ graphId: string;
157
+ executionId: string;
158
+ nodeId: string;
159
+ nodeType: string;
160
+ input?: string;
161
+ output?: string;
162
+ duration?: number;
163
+ error?: string;
164
+ }
165
+ export interface GraphParallelEventData {
166
+ graphId: string;
167
+ executionId: string;
168
+ nodeId: string;
169
+ branches: string[];
170
+ duration?: number;
171
+ }
172
+ export interface SupervisorRoundEventData {
173
+ supervisorName: string;
174
+ round: number;
175
+ worker?: string;
176
+ subtask?: string;
177
+ }
178
+ export interface SupervisorDelegatedEventData {
179
+ supervisorName: string;
180
+ round: number;
181
+ worker: string;
182
+ subtask: string;
183
+ result?: string;
184
+ }
185
+ export interface SupervisorFinishedEventData {
186
+ supervisorName: string;
187
+ rounds: number;
188
+ response: string;
189
+ duration: number;
190
+ }
191
+ export interface DelegateEventData {
192
+ fromAgent: string;
193
+ toAgent: string;
194
+ input: string;
195
+ response?: string;
196
+ duration?: number;
197
+ }
123
198
  //# sourceMappingURL=event.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"event.types.d.ts","sourceRoot":"","sources":["../../src/types/event.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,oBAAY,cAAc;IACxB,iBAAiB,4BAA4B;IAC7C,mBAAmB,8BAA8B;IACjD,gBAAgB,2BAA2B;IAC3C,YAAY,uBAAuB;IACnC,cAAc,yBAAyB;IACvC,WAAW,sBAAsB;IACjC,aAAa,wBAAwB;IACrC,sBAAsB,2BAA2B;IACjD,wBAAwB,6BAA6B;IACrD,qBAAqB,0BAA0B;IAC/C,uBAAuB,4BAA4B;IACnD,qBAAqB,0BAA0B;IAC/C,oBAAoB,yBAAyB;IAC7C,oBAAoB,0BAA0B;IAC9C,mBAAmB,yBAAyB;IAC5C,cAAc,yBAAyB;IACvC,kBAAkB,uBAAuB;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,OAAO;IACrC,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"event.types.d.ts","sourceRoot":"","sources":["../../src/types/event.types.ts"],"names":[],"mappings":"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"}
@@ -26,5 +26,21 @@ var AgentEventType;
26
26
  AgentEventType["USER_INPUT_RECEIVED"] = "agent.input.received";
27
27
  AgentEventType["MEMORY_UPDATED"] = "agent.memory.updated";
28
28
  AgentEventType["RAG_QUERY_EXECUTED"] = "agent.rag.executed";
29
+ // Graph orchestration events
30
+ AgentEventType["GRAPH_STARTED"] = "graph.started";
31
+ AgentEventType["GRAPH_COMPLETED"] = "graph.completed";
32
+ AgentEventType["GRAPH_FAILED"] = "graph.failed";
33
+ AgentEventType["GRAPH_NODE_STARTED"] = "graph.node.started";
34
+ AgentEventType["GRAPH_NODE_COMPLETED"] = "graph.node.completed";
35
+ AgentEventType["GRAPH_NODE_FAILED"] = "graph.node.failed";
36
+ AgentEventType["GRAPH_PARALLEL_STARTED"] = "graph.parallel.started";
37
+ AgentEventType["GRAPH_PARALLEL_COMPLETED"] = "graph.parallel.completed";
38
+ // Supervisor events
39
+ AgentEventType["SUPERVISOR_ROUND_STARTED"] = "supervisor.round.started";
40
+ AgentEventType["SUPERVISOR_DELEGATED"] = "supervisor.delegated";
41
+ AgentEventType["SUPERVISOR_FINISHED"] = "supervisor.finished";
42
+ // Agent delegation events (agent-as-tool)
43
+ AgentEventType["DELEGATE_STARTED"] = "agent.delegate.started";
44
+ AgentEventType["DELEGATE_COMPLETED"] = "agent.delegate.completed";
29
45
  })(AgentEventType || (exports.AgentEventType = AgentEventType = {}));
30
46
  //# sourceMappingURL=event.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event.types.js","sourceRoot":"","sources":["../../src/types/event.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH;;GAEG;AACH,IAAY,cAkBX;AAlBD,WAAY,cAAc;IACxB,+DAA6C,CAAA;IAC7C,mEAAiD,CAAA;IACjD,6DAA2C,CAAA;IAC3C,qDAAmC,CAAA;IACnC,yDAAuC,CAAA;IACvC,mDAAiC,CAAA;IACjC,uDAAqC,CAAA;IACrC,mEAAiD,CAAA;IACjD,uEAAqD,CAAA;IACrD,iEAA+C,CAAA;IAC/C,qEAAmD,CAAA;IACnD,iEAA+C,CAAA;IAC/C,+DAA6C,CAAA;IAC7C,gEAA8C,CAAA;IAC9C,8DAA4C,CAAA;IAC5C,yDAAuC,CAAA;IACvC,2DAAyC,CAAA;AAC3C,CAAC,EAlBW,cAAc,8BAAd,cAAc,QAkBzB"}
1
+ {"version":3,"file":"event.types.js","sourceRoot":"","sources":["../../src/types/event.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH;;GAEG;AACH,IAAY,cAqCX;AArCD,WAAY,cAAc;IACxB,+DAA6C,CAAA;IAC7C,mEAAiD,CAAA;IACjD,6DAA2C,CAAA;IAC3C,qDAAmC,CAAA;IACnC,yDAAuC,CAAA;IACvC,mDAAiC,CAAA;IACjC,uDAAqC,CAAA;IACrC,mEAAiD,CAAA;IACjD,uEAAqD,CAAA;IACrD,iEAA+C,CAAA;IAC/C,qEAAmD,CAAA;IACnD,iEAA+C,CAAA;IAC/C,+DAA6C,CAAA;IAC7C,gEAA8C,CAAA;IAC9C,8DAA4C,CAAA;IAC5C,yDAAuC,CAAA;IACvC,2DAAyC,CAAA;IAEzC,6BAA6B;IAC7B,iDAA+B,CAAA;IAC/B,qDAAmC,CAAA;IACnC,+CAA6B,CAAA;IAC7B,2DAAyC,CAAA;IACzC,+DAA6C,CAAA;IAC7C,yDAAuC,CAAA;IACvC,mEAAiD,CAAA;IACjD,uEAAqD,CAAA;IAErD,oBAAoB;IACpB,uEAAqD,CAAA;IACrD,+DAA6C,CAAA;IAC7C,6DAA2C,CAAA;IAE3C,0CAA0C;IAC1C,6DAA2C,CAAA;IAC3C,iEAA+C,CAAA;AACjD,CAAC,EArCW,cAAc,8BAAd,cAAc,QAqCzB"}
package/logs/combined.log CHANGED
@@ -1 +1 @@
1
- 2026-03-05 13:36:30 [INFO] Application started | {"service":"hazeljs","version":"0.1.0","environment":"test"}
1
+ 2026-03-05 18:39:34 [INFO] Application started | {"service":"hazeljs","version":"0.1.0","environment":"test"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hazeljs/agent",
3
- "version": "0.2.0-beta.60",
3
+ "version": "0.2.0-beta.61",
4
4
  "description": "AI-native Agent Runtime for HazelJS - stateful, long-running agents with tools, memory, and human-in-the-loop",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -30,9 +30,9 @@
30
30
  "directory": "packages/agent"
31
31
  },
32
32
  "dependencies": {
33
- "@hazeljs/core": "^0.2.0-beta.60",
34
- "@hazeljs/rag": "^0.2.0-beta.60",
35
- "@hazeljs/resilience": "^0.2.0-beta.60",
33
+ "@hazeljs/core": "^0.2.0-beta.61",
34
+ "@hazeljs/rag": "^0.2.0-beta.61",
35
+ "@hazeljs/resilience": "^0.2.0-beta.61",
36
36
  "reflect-metadata": "^0.2.1"
37
37
  },
38
38
  "devDependencies": {
@@ -66,5 +66,5 @@
66
66
  "url": "https://github.com/hazeljs/hazel-js/issues"
67
67
  },
68
68
  "homepage": "https://hazeljs.com",
69
- "gitHead": "8cd6f3cf5b77aba504ec10691324937130feb2c3"
69
+ "gitHead": "2205447dd2f88f83a7748b0ffdee0417be0f3970"
70
70
  }