@hazeljs/agent 1.0.0 → 1.0.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 (88) hide show
  1. package/PERSISTENCE.md +36 -0
  2. package/PRODUCTION_READINESS.md +31 -0
  3. package/QUICKSTART.md +20 -0
  4. package/dist/agent.module.d.ts +23 -0
  5. package/dist/agent.module.d.ts.map +1 -1
  6. package/dist/agent.module.js +44 -1
  7. package/dist/agent.module.js.map +1 -1
  8. package/dist/approval/approval-store.interface.d.ts +18 -0
  9. package/dist/approval/approval-store.interface.d.ts.map +1 -0
  10. package/dist/approval/approval-store.interface.js +6 -0
  11. package/dist/approval/approval-store.interface.js.map +1 -0
  12. package/dist/approval/create-approval-store.d.ts +8 -0
  13. package/dist/approval/create-approval-store.d.ts.map +1 -0
  14. package/dist/approval/create-approval-store.js +15 -0
  15. package/dist/approval/create-approval-store.js.map +1 -0
  16. package/dist/approval/in-memory-approval.store.d.ts +22 -0
  17. package/dist/approval/in-memory-approval.store.d.ts.map +1 -0
  18. package/dist/approval/in-memory-approval.store.js +64 -0
  19. package/dist/approval/in-memory-approval.store.js.map +1 -0
  20. package/dist/approval/redis-approval.store.d.ts +34 -0
  21. package/dist/approval/redis-approval.store.d.ts.map +1 -0
  22. package/dist/approval/redis-approval.store.js +122 -0
  23. package/dist/approval/redis-approval.store.js.map +1 -0
  24. package/dist/context/agent.context.d.ts +1 -1
  25. package/dist/context/agent.context.d.ts.map +1 -1
  26. package/dist/context/agent.context.js +4 -2
  27. package/dist/context/agent.context.js.map +1 -1
  28. package/dist/events/event.emitter.d.ts +5 -0
  29. package/dist/events/event.emitter.d.ts.map +1 -1
  30. package/dist/events/event.emitter.js +12 -3
  31. package/dist/events/event.emitter.js.map +1 -1
  32. package/dist/executor/agent.executor.d.ts +9 -1
  33. package/dist/executor/agent.executor.d.ts.map +1 -1
  34. package/dist/executor/agent.executor.js +23 -3
  35. package/dist/executor/agent.executor.js.map +1 -1
  36. package/dist/executor/tool.executor.d.ts +15 -31
  37. package/dist/executor/tool.executor.d.ts.map +1 -1
  38. package/dist/executor/tool.executor.js +56 -78
  39. package/dist/executor/tool.executor.js.map +1 -1
  40. package/dist/index.d.ts +7 -0
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +7 -0
  43. package/dist/index.js.map +1 -1
  44. package/dist/runtime/agent.runtime.d.ts +11 -0
  45. package/dist/runtime/agent.runtime.d.ts.map +1 -1
  46. package/dist/runtime/agent.runtime.js +42 -9
  47. package/dist/runtime/agent.runtime.js.map +1 -1
  48. package/dist/state/create-state-manager.d.ts +30 -0
  49. package/dist/state/create-state-manager.d.ts.map +1 -0
  50. package/dist/state/create-state-manager.js +134 -0
  51. package/dist/state/create-state-manager.js.map +1 -0
  52. package/dist/state/database-state.manager.d.ts +2 -3
  53. package/dist/state/database-state.manager.d.ts.map +1 -1
  54. package/dist/state/database-state.manager.js.map +1 -1
  55. package/dist/state/redis-client.types.d.ts +38 -0
  56. package/dist/state/redis-client.types.d.ts.map +1 -0
  57. package/dist/state/redis-client.types.js +3 -0
  58. package/dist/state/redis-client.types.js.map +1 -0
  59. package/dist/state/redis-state.manager.d.ts +2 -3
  60. package/dist/state/redis-state.manager.d.ts.map +1 -1
  61. package/dist/state/redis-state.manager.js +1 -1
  62. package/dist/state/redis-state.manager.js.map +1 -1
  63. package/dist/testing/mocks/hazeljs-eval.d.ts +7 -0
  64. package/dist/testing/mocks/hazeljs-eval.d.ts.map +1 -0
  65. package/dist/testing/mocks/hazeljs-eval.js +19 -0
  66. package/dist/testing/mocks/hazeljs-eval.js.map +1 -0
  67. package/dist/types/event.types.d.ts +1 -0
  68. package/dist/types/event.types.d.ts.map +1 -1
  69. package/dist/types/event.types.js +1 -0
  70. package/dist/types/event.types.js.map +1 -1
  71. package/dist/types/observability.types.d.ts +13 -0
  72. package/dist/types/observability.types.d.ts.map +1 -0
  73. package/dist/types/observability.types.js +6 -0
  74. package/dist/types/observability.types.js.map +1 -0
  75. package/dist/utils/agent-tracing.d.ts +10 -0
  76. package/dist/utils/agent-tracing.d.ts.map +1 -0
  77. package/dist/utils/agent-tracing.js +114 -0
  78. package/dist/utils/agent-tracing.js.map +1 -0
  79. package/dist/utils/rate-limiter.d.ts +6 -30
  80. package/dist/utils/rate-limiter.d.ts.map +1 -1
  81. package/dist/utils/rate-limiter.js +21 -58
  82. package/dist/utils/rate-limiter.js.map +1 -1
  83. package/dist/utils/retry.d.ts +3 -21
  84. package/dist/utils/retry.d.ts.map +1 -1
  85. package/dist/utils/retry.js +37 -69
  86. package/dist/utils/retry.js.map +1 -1
  87. package/package.json +23 -13
  88. package/tsconfig.jest.json +15 -0
package/PERSISTENCE.md CHANGED
@@ -26,6 +26,42 @@ The `@hazeljs/agent` package supports multiple persistence backends for agent ex
26
26
  - **Pros**: Durable, queryable, full audit trail
27
27
  - **Cons**: Slower than Redis, requires database setup
28
28
 
29
+ ## Environment-driven setup (v1.0+)
30
+
31
+ Use `createStateManagerFromEnv()` or `AgentModule.forRootAsync()` to pick Redis automatically from `REDIS_URL`:
32
+
33
+ ```typescript
34
+ import { AgentModule } from '@hazeljs/agent';
35
+
36
+ // Async bootstrap (connects Redis from REDIS_URL)
37
+ await AgentModule.forRootAsync({
38
+ stateBackend: process.env.AGENT_STATE_BACKEND as 'memory' | 'redis' | 'database',
39
+ redis: { url: process.env.REDIS_URL },
40
+ });
41
+
42
+ // Or sync when you already have a connected client
43
+ AgentModule.forRoot({
44
+ redis: { client: redisClient },
45
+ useRedisApprovals: true,
46
+ });
47
+ ```
48
+
49
+ Environment variables:
50
+
51
+ | Variable | Values | Default |
52
+ | --------------------- | ----------------------------- | --------------------------------------------- |
53
+ | `AGENT_STATE_BACKEND` | `memory`, `redis`, `database` | `memory` (or `redis` when `REDIS_URL` is set) |
54
+ | `REDIS_URL` | Redis connection URL | — |
55
+
56
+ Factory helpers:
57
+
58
+ ```typescript
59
+ import { createStateManager, createStateManagerFromEnv } from '@hazeljs/agent';
60
+
61
+ const syncManager = createStateManager({ backend: 'redis', redisClient });
62
+ const asyncManager = await createStateManagerFromEnv({ redisUrl: process.env.REDIS_URL });
63
+ ```
64
+
29
65
  ## Usage
30
66
 
31
67
  ### In-Memory (Default)
@@ -203,6 +203,37 @@ npm run test:watch
203
203
  npm run build
204
204
  ```
205
205
 
206
+ ## ✅ v1.0 Production Hardening (2026)
207
+
208
+ ### Durable state & approvals
209
+
210
+ - `createStateManagerFromEnv()` / `createStateManager()` factory helpers
211
+ - `AgentModule.forRoot()` wires Redis when `redis.client` is provided; `forRootAsync()` connects via `REDIS_URL`
212
+ - `IApprovalStore` with `InMemoryApprovalStore` (dev) and `RedisApprovalStore` (multi-instance)
213
+ - Typed `RedisClientLike` / `PrismaClientLike` minimal interfaces for state managers
214
+
215
+ ### Resilience consolidation
216
+
217
+ - Local `retry.ts` and `rate-limiter.ts` delegate to `@hazeljs/resilience`
218
+ - Removed deprecated `src/utils/circuit-breaker.js` shim
219
+ - Circuit breaker integration tests through `AgentRuntime.execute()`
220
+
221
+ ### Observability
222
+
223
+ - Optional peer: `@hazeljs/observability` and `@opentelemetry/api`
224
+ - OTel spans: `agent.execute`, `agent.tool.execute`, `agent.llm`
225
+ - `trackLlmCost()` bridge when observability provider is configured
226
+
227
+ ### Error handling
228
+
229
+ - RAG failures emit `agent.rag.failed` instead of silent empty context
230
+ - `strictEventHandlers` on `AgentEventEmitter` surfaces handler errors in production
231
+ - LLM provider resolution logs error after 500ms timeout if `@hazeljs/ai` is not loaded
232
+
233
+ ### Integration tests
234
+
235
+ - `tests/integration/production-hardening.test.ts` — Redis state, approvals, circuit breaker, RAG errors
236
+
206
237
  ## 🎯 Coverage Goals
207
238
 
208
239
  - **Unit Test Coverage**: 80%+ (configured in jest.config.js)
package/QUICKSTART.md CHANGED
@@ -132,6 +132,26 @@ if (result.state === 'waiting_for_input') {
132
132
  }
133
133
  ```
134
134
 
135
+ ## Production setup
136
+
137
+ For multi-instance deployments, use Redis-backed state and approvals:
138
+
139
+ ```typescript
140
+ import { AgentModule } from '@hazeljs/agent';
141
+ import { createClient } from 'redis';
142
+
143
+ const redisClient = createClient({ url: process.env.REDIS_URL });
144
+ await redisClient.connect();
145
+
146
+ await AgentModule.forRootAsync({
147
+ redis: { client: redisClient },
148
+ useRedisApprovals: true,
149
+ runtime: { strictEventHandlers: process.env.NODE_ENV === 'production' },
150
+ });
151
+ ```
152
+
153
+ See [PERSISTENCE.md](./PERSISTENCE.md) for `AGENT_STATE_BACKEND` and factory helpers.
154
+
135
155
  ## Support
136
156
 
137
157
  - GitHub Issues: [Report bugs](https://github.com/hazeljs/hazeljs/issues)
@@ -5,6 +5,9 @@ import { SupervisorAgent } from './supervisor/supervisor';
5
5
  import { AgentEventType } from './types/event.types';
6
6
  import type { AgentContext, AgentExecutionResult, AgentStreamChunk } from './types/agent.types';
7
7
  import type { LLMStreamChunk } from './types/llm.types';
8
+ import { type AgentStateBackend, type CreateStateManagerOptions } from './state/create-state-manager';
9
+ import type { RedisClientLike, PrismaClientLike } from './state/redis-client.types';
10
+ import type { ObservabilityProvider } from './types/observability.types';
8
11
  type NewableFunction = new (...args: unknown[]) => unknown;
9
12
  /** Token for optional GuardrailsService injection (from @hazeljs/guardrails) */
10
13
  export declare const GUARDRAILS_SERVICE_TOKEN = "GuardrailsService";
@@ -15,6 +18,21 @@ export interface AgentModuleOptions {
15
18
  runtime?: AgentRuntimeConfig;
16
19
  agents?: NewableFunction[];
17
20
  autoDiscover?: boolean;
21
+ /** Pre-connected Redis client or URL (use forRootAsync when only url is available) */
22
+ redis?: {
23
+ client?: RedisClientLike;
24
+ url?: string;
25
+ };
26
+ /** Prisma client for database-backed state */
27
+ database?: {
28
+ prismaClient?: PrismaClientLike;
29
+ };
30
+ /** Override AGENT_STATE_BACKEND (memory | redis | database) */
31
+ stateBackend?: AgentStateBackend;
32
+ /** Use Redis-backed approval store when redis client is configured */
33
+ useRedisApprovals?: boolean;
34
+ /** Optional observability provider from @hazeljs/observability */
35
+ observabilityProvider?: ObservabilityProvider;
18
36
  }
19
37
  /**
20
38
  * Agent Service
@@ -100,6 +118,11 @@ export declare class AgentService {
100
118
  export declare class AgentModule {
101
119
  private static options;
102
120
  static forRoot(config?: AgentModuleOptions): typeof AgentModule;
121
+ /**
122
+ * Async module setup — connects Redis from REDIS_URL or redis.url before boot.
123
+ */
124
+ static forRootAsync(config?: AgentModuleOptions): Promise<typeof AgentModule>;
125
+ static buildStateManagerOptions(config: AgentModuleOptions): CreateStateManagerOptions;
103
126
  static getOptions(): AgentModuleOptions;
104
127
  /**
105
128
  * Create an LLM provider from AIEnhancedService
@@ -1 +1 @@
1
- {"version":3,"file":"agent.module.d.ts","sourceRoot":"","sources":["../src/agent.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.module.d.ts","sourceRoot":"","sources":["../src/agent.module.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ exports.AgentModule = exports.AgentService = exports.GUARDRAILS_SERVICE_TOKEN =
17
17
  const core_1 = require("@hazeljs/core");
18
18
  const agent_runtime_1 = require("./runtime/agent.runtime");
19
19
  const agent_decorator_1 = require("./decorators/agent.decorator");
20
+ const create_state_manager_1 = require("./state/create-state-manager");
20
21
  /** Token for optional GuardrailsService injection (from @hazeljs/guardrails) */
21
22
  exports.GUARDRAILS_SERVICE_TOKEN = 'GuardrailsService';
22
23
  /**
@@ -32,6 +33,12 @@ let AgentService = AgentService_1 = class AgentService {
32
33
  ...(moduleOpts.runtime || config),
33
34
  guardrailsService: guardrailsService ?? moduleOpts.runtime?.guardrailsService ?? config.guardrailsService,
34
35
  llmProvider: moduleOpts.runtime?.llmProvider ?? config.llmProvider,
36
+ observabilityProvider: moduleOpts.runtime?.observabilityProvider ??
37
+ moduleOpts.observabilityProvider ??
38
+ config.observabilityProvider,
39
+ stateManagerOptions: moduleOpts.runtime?.stateManagerOptions ??
40
+ config.stateManagerOptions ??
41
+ AgentModule.buildStateManagerOptions(moduleOpts),
35
42
  };
36
43
  this.runtime = new agent_runtime_1.AgentRuntime(runtimeConfig);
37
44
  // Defer agent discovery and LLM provider resolution until after all modules are loaded
@@ -55,6 +62,9 @@ let AgentService = AgentService_1 = class AgentService {
55
62
  else if (retryCount < 10) {
56
63
  setTimeout(() => this.resolveLLMProvider(retryCount + 1), 50);
57
64
  }
65
+ else {
66
+ core_1.logger.error('AgentService: LLM provider not available after 500ms. Load @hazeljs/ai or set runtime.llmProvider in AgentModule.forRoot().');
67
+ }
58
68
  }
59
69
  /**
60
70
  * Create an LLM provider adapter from AIEnhancedService
@@ -265,9 +275,42 @@ exports.AgentService = AgentService = AgentService_1 = __decorate([
265
275
  */
266
276
  let AgentModule = AgentModule_1 = class AgentModule {
267
277
  static forRoot(config = {}) {
268
- AgentModule_1.options = config;
278
+ const runtime = { ...(config.runtime ?? {}) };
279
+ if (!runtime.stateManager) {
280
+ try {
281
+ runtime.stateManager = (0, create_state_manager_1.createStateManager)(AgentModule_1.buildStateManagerOptions(config));
282
+ }
283
+ catch {
284
+ // resolveStateManager in AgentRuntime falls back to in-memory
285
+ }
286
+ }
287
+ runtime.stateManagerOptions =
288
+ runtime.stateManagerOptions ?? AgentModule_1.buildStateManagerOptions(config);
289
+ runtime.observabilityProvider = runtime.observabilityProvider ?? config.observabilityProvider;
290
+ AgentModule_1.options = { ...config, runtime };
291
+ return AgentModule_1;
292
+ }
293
+ /**
294
+ * Async module setup — connects Redis from REDIS_URL or redis.url before boot.
295
+ */
296
+ static async forRootAsync(config = {}) {
297
+ const runtime = { ...(config.runtime ?? {}) };
298
+ if (!runtime.stateManager) {
299
+ runtime.stateManager = await (0, create_state_manager_1.createStateManagerFromEnv)(AgentModule_1.buildStateManagerOptions(config));
300
+ }
301
+ runtime.stateManagerOptions = AgentModule_1.buildStateManagerOptions(config);
302
+ runtime.observabilityProvider = runtime.observabilityProvider ?? config.observabilityProvider;
303
+ AgentModule_1.options = { ...config, runtime };
269
304
  return AgentModule_1;
270
305
  }
306
+ static buildStateManagerOptions(config) {
307
+ return {
308
+ backend: config.stateBackend,
309
+ redisClient: config.redis?.client,
310
+ redisUrl: config.redis?.url,
311
+ prismaClient: config.database?.prismaClient,
312
+ };
313
+ }
271
314
  static getOptions() {
272
315
  return AgentModule_1.options;
273
316
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agent.module.js","sourceRoot":"","sources":["../src/agent.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.module.js","sourceRoot":"","sources":["../src/agent.module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Pluggable store for tool approval requests (supports multi-instance deployments).
3
+ */
4
+ import { ToolApprovalRequest } from '../types/tool.types';
5
+ export interface IApprovalStore {
6
+ create(request: ToolApprovalRequest): Promise<void> | void;
7
+ get(requestId: string): Promise<ToolApprovalRequest | undefined> | ToolApprovalRequest | undefined;
8
+ listPending(): Promise<ToolApprovalRequest[]> | ToolApprovalRequest[];
9
+ approve(requestId: string, approvedBy: string): Promise<boolean> | boolean;
10
+ reject(requestId: string): Promise<boolean> | boolean;
11
+ delete(requestId: string): Promise<void> | void;
12
+ }
13
+ export interface ApprovalWaitOptions {
14
+ requestId: string;
15
+ expiresAt: Date;
16
+ pollIntervalMs?: number;
17
+ }
18
+ //# sourceMappingURL=approval-store.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-store.interface.d.ts","sourceRoot":"","sources":["../../src/approval/approval-store.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3D,GAAG,CACD,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,GAAG,mBAAmB,GAAG,SAAS,CAAC;IAC9E,WAAW,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,GAAG,mBAAmB,EAAE,CAAC;IACtE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAC3E,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACtD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Pluggable store for tool approval requests (supports multi-instance deployments).
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=approval-store.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-store.interface.js","sourceRoot":"","sources":["../../src/approval/approval-store.interface.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,8 @@
1
+ import { IApprovalStore } from './approval-store.interface';
2
+ import type { RedisClientLike } from '../state/redis-client.types';
3
+ export interface CreateApprovalStoreOptions {
4
+ redisClient?: RedisClientLike;
5
+ useRedis?: boolean;
6
+ }
7
+ export declare function createApprovalStore(options?: CreateApprovalStoreOptions): IApprovalStore;
8
+ //# sourceMappingURL=create-approval-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-approval-store.d.ts","sourceRoot":"","sources":["../../src/approval/create-approval-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAEnE,MAAM,WAAW,0BAA0B;IACzC,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,0BAA+B,GAAG,cAAc,CAQ5F"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createApprovalStore = createApprovalStore;
4
+ const in_memory_approval_store_1 = require("./in-memory-approval.store");
5
+ const redis_approval_store_1 = require("./redis-approval.store");
6
+ function createApprovalStore(options = {}) {
7
+ if (options.useRedis || options.redisClient) {
8
+ if (!options.redisClient) {
9
+ throw new Error('redisClient is required when useRedis is enabled for approval store.');
10
+ }
11
+ return new redis_approval_store_1.RedisApprovalStore({ client: options.redisClient });
12
+ }
13
+ return new in_memory_approval_store_1.InMemoryApprovalStore();
14
+ }
15
+ //# sourceMappingURL=create-approval-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-approval-store.js","sourceRoot":"","sources":["../../src/approval/create-approval-store.ts"],"names":[],"mappings":";;AAUA,kDAQC;AAjBD,yEAAmE;AACnE,iEAA4D;AAQ5D,SAAgB,mBAAmB,CAAC,UAAsC,EAAE;IAC1E,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,IAAI,yCAAkB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,IAAI,gDAAqB,EAAE,CAAC;AACrC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { ToolApprovalRequest } from '../types/tool.types';
2
+ import { IApprovalStore } from './approval-store.interface';
3
+ /** In-process resolver for a pending approval wait. */
4
+ export interface ApprovalResolver {
5
+ resolve: (approved: boolean) => void;
6
+ timeoutId?: NodeJS.Timeout;
7
+ }
8
+ /**
9
+ * In-memory approval store (default for development and single-instance deployments).
10
+ */
11
+ export declare class InMemoryApprovalStore implements IApprovalStore {
12
+ private readonly requests;
13
+ readonly resolvers: Map<string, ApprovalResolver>;
14
+ create(request: ToolApprovalRequest): void;
15
+ get(requestId: string): ToolApprovalRequest | undefined;
16
+ listPending(): ToolApprovalRequest[];
17
+ approve(requestId: string, approvedBy: string): boolean;
18
+ reject(requestId: string): boolean;
19
+ delete(requestId: string): void;
20
+ registerResolver(requestId: string, resolver: ApprovalResolver): void;
21
+ }
22
+ //# sourceMappingURL=in-memory-approval.store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-approval.store.d.ts","sourceRoot":"","sources":["../../src/approval/in-memory-approval.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,uDAAuD;AACvD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0C;IACnE,QAAQ,CAAC,SAAS,gCAAuC;IAEzD,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAI1C,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIvD,WAAW,IAAI,mBAAmB,EAAE;IAIpC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAgBvD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAelC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAO/B,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI;CAGtE"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InMemoryApprovalStore = void 0;
4
+ /**
5
+ * In-memory approval store (default for development and single-instance deployments).
6
+ */
7
+ class InMemoryApprovalStore {
8
+ constructor() {
9
+ this.requests = new Map();
10
+ this.resolvers = new Map();
11
+ }
12
+ create(request) {
13
+ this.requests.set(request.requestId, request);
14
+ }
15
+ get(requestId) {
16
+ return this.requests.get(requestId);
17
+ }
18
+ listPending() {
19
+ return Array.from(this.requests.values()).filter((r) => r.status === 'pending');
20
+ }
21
+ approve(requestId, approvedBy) {
22
+ const request = this.requests.get(requestId);
23
+ const resolver = this.resolvers.get(requestId);
24
+ if (!request || request.status !== 'pending' || !resolver) {
25
+ return false;
26
+ }
27
+ request.status = 'approved';
28
+ request.approvedBy = approvedBy;
29
+ request.approvedAt = new Date();
30
+ if (resolver.timeoutId)
31
+ clearTimeout(resolver.timeoutId);
32
+ this.resolvers.delete(requestId);
33
+ this.requests.delete(requestId);
34
+ resolver.resolve(true);
35
+ return true;
36
+ }
37
+ reject(requestId) {
38
+ const request = this.requests.get(requestId);
39
+ const resolver = this.resolvers.get(requestId);
40
+ if (!request || request.status !== 'pending' || !resolver) {
41
+ return false;
42
+ }
43
+ request.status = 'rejected';
44
+ request.rejectedAt = new Date();
45
+ if (resolver.timeoutId)
46
+ clearTimeout(resolver.timeoutId);
47
+ this.resolvers.delete(requestId);
48
+ this.requests.delete(requestId);
49
+ resolver.resolve(false);
50
+ return true;
51
+ }
52
+ delete(requestId) {
53
+ const resolver = this.resolvers.get(requestId);
54
+ if (resolver?.timeoutId)
55
+ clearTimeout(resolver.timeoutId);
56
+ this.resolvers.delete(requestId);
57
+ this.requests.delete(requestId);
58
+ }
59
+ registerResolver(requestId, resolver) {
60
+ this.resolvers.set(requestId, resolver);
61
+ }
62
+ }
63
+ exports.InMemoryApprovalStore = InMemoryApprovalStore;
64
+ //# sourceMappingURL=in-memory-approval.store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-approval.store.js","sourceRoot":"","sources":["../../src/approval/in-memory-approval.store.ts"],"names":[],"mappings":";;;AASA;;GAEG;AACH,MAAa,qBAAqB;IAAlC;QACmB,aAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;QAC1D,cAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;IAuD3D,CAAC;IArDC,MAAM,CAAC,OAA4B;QACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,WAAW;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAClF,CAAC;IAED,OAAO,CAAC,SAAiB,EAAE,UAAkB;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;QAC5B,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;QAChC,OAAO,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAChC,IAAI,QAAQ,CAAC,SAAS;YAAE,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;QAC5B,OAAO,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAChC,IAAI,QAAQ,CAAC,SAAS;YAAE,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,QAAQ,EAAE,SAAS;YAAE,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,gBAAgB,CAAC,SAAiB,EAAE,QAA0B;QAC5D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;CACF;AAzDD,sDAyDC"}
@@ -0,0 +1,34 @@
1
+ import { ToolApprovalRequest } from '../types/tool.types';
2
+ import type { RedisClientLike } from '../state/redis-client.types';
3
+ import { IApprovalStore } from './approval-store.interface';
4
+ export interface RedisApprovalStoreConfig {
5
+ client: RedisClientLike;
6
+ keyPrefix?: string;
7
+ defaultTtlSeconds?: number;
8
+ }
9
+ /**
10
+ * Redis-backed approval store for multi-instance deployments.
11
+ * Local resolvers handle in-process waits; Redis holds durable request state.
12
+ */
13
+ export declare class RedisApprovalStore implements IApprovalStore {
14
+ private readonly client;
15
+ private readonly keyPrefix;
16
+ private readonly defaultTtlSeconds;
17
+ private readonly local;
18
+ constructor(config: RedisApprovalStoreConfig);
19
+ private key;
20
+ create(request: ToolApprovalRequest): Promise<void>;
21
+ get(requestId: string): Promise<ToolApprovalRequest | undefined>;
22
+ listPending(): Promise<ToolApprovalRequest[]>;
23
+ approve(requestId: string, approvedBy: string): Promise<boolean>;
24
+ reject(requestId: string): Promise<boolean>;
25
+ delete(requestId: string): Promise<void>;
26
+ /** Register local resolver for waiting execution on this instance. */
27
+ registerResolver(requestId: string, resolver: {
28
+ resolve: (approved: boolean) => void;
29
+ timeoutId?: NodeJS.Timeout;
30
+ }): void;
31
+ /** Poll Redis when approval happens on another instance. */
32
+ waitForResolution(requestId: string, expiresAt: Date, pollIntervalMs?: number): Promise<boolean>;
33
+ }
34
+ //# sourceMappingURL=redis-approval.store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-approval.store.d.ts","sourceRoot":"","sources":["../../src/approval/redis-approval.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+B;gBAEzC,MAAM,EAAE,wBAAwB;IAS5C,OAAO,CAAC,GAAG;IAIL,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnD,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAiBhE,WAAW,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAoB7C,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAchE,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAc3C,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C,sEAAsE;IACtE,gBAAgB,CACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE;QAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC,OAAO,CAAA;KAAE,GAC7E,IAAI;IAIP,4DAA4D;IACtD,iBAAiB,CACrB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,IAAI,EACf,cAAc,SAAM,GACnB,OAAO,CAAC,OAAO,CAAC;CAWpB"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RedisApprovalStore = void 0;
4
+ const in_memory_approval_store_1 = require("./in-memory-approval.store");
5
+ /**
6
+ * Redis-backed approval store for multi-instance deployments.
7
+ * Local resolvers handle in-process waits; Redis holds durable request state.
8
+ */
9
+ class RedisApprovalStore {
10
+ constructor(config) {
11
+ this.local = new in_memory_approval_store_1.InMemoryApprovalStore();
12
+ if (!config.client) {
13
+ throw new Error('Redis client is required for RedisApprovalStore');
14
+ }
15
+ this.client = config.client;
16
+ this.keyPrefix = config.keyPrefix ?? 'agent:approval:';
17
+ this.defaultTtlSeconds = config.defaultTtlSeconds ?? 300;
18
+ }
19
+ key(requestId) {
20
+ return `${this.keyPrefix}${requestId}`;
21
+ }
22
+ async create(request) {
23
+ const expiresAt = request.expiresAt ?? new Date(Date.now() + this.defaultTtlSeconds * 1000);
24
+ const ttl = Math.max(1, Math.ceil((expiresAt.getTime() - Date.now()) / 1000) || this.defaultTtlSeconds);
25
+ await this.client.setEx(this.key(request.requestId), ttl, JSON.stringify(request));
26
+ this.local.create(request);
27
+ }
28
+ async get(requestId) {
29
+ const local = this.local.get(requestId);
30
+ if (local)
31
+ return local;
32
+ const raw = await this.client.get(this.key(requestId));
33
+ if (!raw)
34
+ return undefined;
35
+ try {
36
+ const parsed = JSON.parse(raw);
37
+ parsed.requestedAt = new Date(parsed.requestedAt);
38
+ if (parsed.expiresAt)
39
+ parsed.expiresAt = new Date(parsed.expiresAt);
40
+ if (parsed.approvedAt)
41
+ parsed.approvedAt = new Date(parsed.approvedAt);
42
+ if (parsed.rejectedAt)
43
+ parsed.rejectedAt = new Date(parsed.rejectedAt);
44
+ return parsed;
45
+ }
46
+ catch {
47
+ return undefined;
48
+ }
49
+ }
50
+ async listPending() {
51
+ const keys = await this.client.keys(`${this.keyPrefix}*`);
52
+ const pending = [];
53
+ for (const redisKey of keys) {
54
+ const raw = await this.client.get(redisKey);
55
+ if (!raw)
56
+ continue;
57
+ try {
58
+ const req = JSON.parse(raw);
59
+ if (req.status === 'pending') {
60
+ req.requestedAt = new Date(req.requestedAt);
61
+ if (req.expiresAt)
62
+ req.expiresAt = new Date(req.expiresAt);
63
+ pending.push(req);
64
+ }
65
+ }
66
+ catch {
67
+ // skip corrupt entries
68
+ }
69
+ }
70
+ return pending;
71
+ }
72
+ async approve(requestId, approvedBy) {
73
+ const request = await this.get(requestId);
74
+ if (!request || request.status !== 'pending') {
75
+ return false;
76
+ }
77
+ request.status = 'approved';
78
+ request.approvedBy = approvedBy;
79
+ request.approvedAt = new Date();
80
+ const expiresAt = request.expiresAt ?? new Date(Date.now() + this.defaultTtlSeconds * 1000);
81
+ const ttl = Math.max(1, Math.ceil((expiresAt.getTime() - Date.now()) / 1000));
82
+ await this.client.setEx(this.key(requestId), ttl, JSON.stringify(request));
83
+ return this.local.approve(requestId, approvedBy);
84
+ }
85
+ async reject(requestId) {
86
+ const request = await this.get(requestId);
87
+ if (!request || request.status !== 'pending') {
88
+ return false;
89
+ }
90
+ request.status = 'rejected';
91
+ request.rejectedAt = new Date();
92
+ const rejectExpiresAt = request.expiresAt ?? new Date(Date.now() + this.defaultTtlSeconds * 1000);
93
+ const rejectTtl = Math.max(1, Math.ceil((rejectExpiresAt.getTime() - Date.now()) / 1000));
94
+ await this.client.setEx(this.key(requestId), rejectTtl, JSON.stringify(request));
95
+ return this.local.reject(requestId);
96
+ }
97
+ async delete(requestId) {
98
+ this.local.delete(requestId);
99
+ await this.client.del(this.key(requestId));
100
+ }
101
+ /** Register local resolver for waiting execution on this instance. */
102
+ registerResolver(requestId, resolver) {
103
+ this.local.registerResolver(requestId, resolver);
104
+ }
105
+ /** Poll Redis when approval happens on another instance. */
106
+ async waitForResolution(requestId, expiresAt, pollIntervalMs = 200) {
107
+ const deadline = expiresAt.getTime();
108
+ while (Date.now() < deadline) {
109
+ const req = await this.get(requestId);
110
+ if (!req)
111
+ return false;
112
+ if (req.status === 'approved')
113
+ return true;
114
+ if (req.status === 'rejected' || req.status === 'expired')
115
+ return false;
116
+ await new Promise((r) => setTimeout(r, pollIntervalMs));
117
+ }
118
+ return false;
119
+ }
120
+ }
121
+ exports.RedisApprovalStore = RedisApprovalStore;
122
+ //# sourceMappingURL=redis-approval.store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-approval.store.js","sourceRoot":"","sources":["../../src/approval/redis-approval.store.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ export declare class AgentContextBuilder {
18
18
  /**
19
19
  * Build context with RAG
20
20
  */
21
- buildWithRAG(context: AgentContext, ragService: any, topK?: number): Promise<void>;
21
+ buildWithRAG(context: AgentContext, ragService: any, topK?: number, onError?: (error: Error) => void): Promise<void>;
22
22
  /**
23
23
  * Persist context to memory
24
24
  */