@hazeljs/agent 0.2.0-beta.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 (117) hide show
  1. package/IMPLEMENTATION_SUMMARY.md +400 -0
  2. package/PERSISTENCE.md +201 -0
  3. package/PRISMA_INTEGRATION.md +499 -0
  4. package/PRODUCTION_READINESS.md +264 -0
  5. package/QUICKSTART.md +135 -0
  6. package/README.md +427 -0
  7. package/STATE_VS_MEMORY.md +243 -0
  8. package/dist/agent.module.d.ts +42 -0
  9. package/dist/agent.module.d.ts.map +1 -0
  10. package/dist/agent.module.js +90 -0
  11. package/dist/agent.module.js.map +1 -0
  12. package/dist/context/agent.context.d.ts +27 -0
  13. package/dist/context/agent.context.d.ts.map +1 -0
  14. package/dist/context/agent.context.js +98 -0
  15. package/dist/context/agent.context.js.map +1 -0
  16. package/dist/decorators/agent.decorator.d.ts +21 -0
  17. package/dist/decorators/agent.decorator.d.ts.map +1 -0
  18. package/dist/decorators/agent.decorator.js +38 -0
  19. package/dist/decorators/agent.decorator.js.map +1 -0
  20. package/dist/decorators/tool.decorator.d.ts +23 -0
  21. package/dist/decorators/tool.decorator.d.ts.map +1 -0
  22. package/dist/decorators/tool.decorator.js +61 -0
  23. package/dist/decorators/tool.decorator.js.map +1 -0
  24. package/dist/events/event.emitter.d.ts +45 -0
  25. package/dist/events/event.emitter.d.ts.map +1 -0
  26. package/dist/events/event.emitter.js +96 -0
  27. package/dist/events/event.emitter.js.map +1 -0
  28. package/dist/executor/agent.executor.d.ts +57 -0
  29. package/dist/executor/agent.executor.d.ts.map +1 -0
  30. package/dist/executor/agent.executor.js +303 -0
  31. package/dist/executor/agent.executor.js.map +1 -0
  32. package/dist/executor/tool.executor.d.ts +53 -0
  33. package/dist/executor/tool.executor.d.ts.map +1 -0
  34. package/dist/executor/tool.executor.js +234 -0
  35. package/dist/executor/tool.executor.js.map +1 -0
  36. package/dist/index.d.ts +30 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +46 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/registry/agent.registry.d.ts +49 -0
  41. package/dist/registry/agent.registry.d.ts.map +1 -0
  42. package/dist/registry/agent.registry.js +90 -0
  43. package/dist/registry/agent.registry.js.map +1 -0
  44. package/dist/registry/tool.registry.d.ts +54 -0
  45. package/dist/registry/tool.registry.d.ts.map +1 -0
  46. package/dist/registry/tool.registry.js +153 -0
  47. package/dist/registry/tool.registry.js.map +1 -0
  48. package/dist/runtime/agent.runtime.d.ts +155 -0
  49. package/dist/runtime/agent.runtime.d.ts.map +1 -0
  50. package/dist/runtime/agent.runtime.extensions.d.ts +49 -0
  51. package/dist/runtime/agent.runtime.extensions.d.ts.map +1 -0
  52. package/dist/runtime/agent.runtime.extensions.js +93 -0
  53. package/dist/runtime/agent.runtime.extensions.js.map +1 -0
  54. package/dist/runtime/agent.runtime.js +347 -0
  55. package/dist/runtime/agent.runtime.js.map +1 -0
  56. package/dist/state/agent-state.interface.d.ts +63 -0
  57. package/dist/state/agent-state.interface.d.ts.map +1 -0
  58. package/dist/state/agent-state.interface.js +7 -0
  59. package/dist/state/agent-state.interface.js.map +1 -0
  60. package/dist/state/agent.state.d.ts +67 -0
  61. package/dist/state/agent.state.d.ts.map +1 -0
  62. package/dist/state/agent.state.js +172 -0
  63. package/dist/state/agent.state.js.map +1 -0
  64. package/dist/state/database-state.manager.d.ts +63 -0
  65. package/dist/state/database-state.manager.d.ts.map +1 -0
  66. package/dist/state/database-state.manager.js +282 -0
  67. package/dist/state/database-state.manager.js.map +1 -0
  68. package/dist/state/redis-state.manager.d.ts +81 -0
  69. package/dist/state/redis-state.manager.d.ts.map +1 -0
  70. package/dist/state/redis-state.manager.js +253 -0
  71. package/dist/state/redis-state.manager.js.map +1 -0
  72. package/dist/types/agent.types.d.ts +151 -0
  73. package/dist/types/agent.types.d.ts.map +1 -0
  74. package/dist/types/agent.types.js +32 -0
  75. package/dist/types/agent.types.js.map +1 -0
  76. package/dist/types/event.types.d.ts +123 -0
  77. package/dist/types/event.types.d.ts.map +1 -0
  78. package/dist/types/event.types.js +30 -0
  79. package/dist/types/event.types.js.map +1 -0
  80. package/dist/types/llm.types.d.ts +66 -0
  81. package/dist/types/llm.types.d.ts.map +1 -0
  82. package/dist/types/llm.types.js +7 -0
  83. package/dist/types/llm.types.js.map +1 -0
  84. package/dist/types/rag.types.d.ts +40 -0
  85. package/dist/types/rag.types.d.ts.map +1 -0
  86. package/dist/types/rag.types.js +7 -0
  87. package/dist/types/rag.types.js.map +1 -0
  88. package/dist/types/tool.types.d.ts +118 -0
  89. package/dist/types/tool.types.d.ts.map +1 -0
  90. package/dist/types/tool.types.js +19 -0
  91. package/dist/types/tool.types.js.map +1 -0
  92. package/dist/utils/circuit-breaker.d.ts +69 -0
  93. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  94. package/dist/utils/circuit-breaker.js +156 -0
  95. package/dist/utils/circuit-breaker.js.map +1 -0
  96. package/dist/utils/health-check.d.ts +71 -0
  97. package/dist/utils/health-check.d.ts.map +1 -0
  98. package/dist/utils/health-check.js +156 -0
  99. package/dist/utils/health-check.js.map +1 -0
  100. package/dist/utils/logger.d.ts +53 -0
  101. package/dist/utils/logger.d.ts.map +1 -0
  102. package/dist/utils/logger.js +133 -0
  103. package/dist/utils/logger.js.map +1 -0
  104. package/dist/utils/metrics.d.ts +90 -0
  105. package/dist/utils/metrics.d.ts.map +1 -0
  106. package/dist/utils/metrics.js +186 -0
  107. package/dist/utils/metrics.js.map +1 -0
  108. package/dist/utils/rate-limiter.d.ts +44 -0
  109. package/dist/utils/rate-limiter.d.ts.map +1 -0
  110. package/dist/utils/rate-limiter.js +82 -0
  111. package/dist/utils/rate-limiter.js.map +1 -0
  112. package/dist/utils/retry.d.ts +42 -0
  113. package/dist/utils/retry.d.ts.map +1 -0
  114. package/dist/utils/retry.js +103 -0
  115. package/dist/utils/retry.js.map +1 -0
  116. package/package.json +58 -0
  117. package/prisma-schema.example.prisma +76 -0
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ /**
3
+ * Agent State Management
4
+ * Manages agent execution state and persistence
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.AgentStateManager = void 0;
8
+ const agent_types_1 = require("../types/agent.types");
9
+ const crypto_1 = require("crypto");
10
+ /**
11
+ * Agent State Manager
12
+ * In-memory implementation - default state manager
13
+ * Handles state transitions and persistence
14
+ */
15
+ class AgentStateManager {
16
+ constructor() {
17
+ this.contexts = new Map();
18
+ }
19
+ /**
20
+ * Create a new agent execution context
21
+ */
22
+ createContext(agentId, sessionId, input, userId, metadata) {
23
+ const executionId = (0, crypto_1.randomUUID)();
24
+ const now = new Date();
25
+ const context = {
26
+ executionId,
27
+ agentId,
28
+ sessionId,
29
+ userId,
30
+ input,
31
+ state: agent_types_1.AgentState.IDLE,
32
+ steps: [],
33
+ memory: {
34
+ conversationHistory: [],
35
+ workingMemory: {},
36
+ facts: [],
37
+ entities: [],
38
+ },
39
+ metadata: metadata || {},
40
+ createdAt: now,
41
+ updatedAt: now,
42
+ };
43
+ this.contexts.set(executionId, context);
44
+ return context;
45
+ }
46
+ /**
47
+ * Get execution context
48
+ */
49
+ getContext(executionId) {
50
+ return this.contexts.get(executionId);
51
+ }
52
+ /**
53
+ * Update agent state
54
+ */
55
+ updateState(executionId, newState) {
56
+ const context = this.contexts.get(executionId);
57
+ if (!context) {
58
+ throw new Error(`Execution context ${executionId} not found`);
59
+ }
60
+ context.state = newState;
61
+ context.updatedAt = new Date();
62
+ }
63
+ /**
64
+ * Add a step to the execution
65
+ */
66
+ addStep(executionId, step) {
67
+ const context = this.contexts.get(executionId);
68
+ if (!context) {
69
+ throw new Error(`Execution context ${executionId} not found`);
70
+ }
71
+ context.steps.push(step);
72
+ context.updatedAt = new Date();
73
+ }
74
+ /**
75
+ * Update the last step
76
+ */
77
+ updateLastStep(executionId, updates) {
78
+ const context = this.contexts.get(executionId);
79
+ if (!context) {
80
+ throw new Error(`Execution context ${executionId} not found`);
81
+ }
82
+ if (context.steps.length === 0) {
83
+ throw new Error('No steps to update');
84
+ }
85
+ const lastStep = context.steps[context.steps.length - 1];
86
+ Object.assign(lastStep, updates);
87
+ context.updatedAt = new Date();
88
+ }
89
+ /**
90
+ * Add message to conversation history
91
+ */
92
+ addMessage(executionId, role, content) {
93
+ const context = this.contexts.get(executionId);
94
+ if (!context) {
95
+ throw new Error(`Execution context ${executionId} not found`);
96
+ }
97
+ context.memory.conversationHistory.push({
98
+ role,
99
+ content,
100
+ timestamp: new Date(),
101
+ });
102
+ context.updatedAt = new Date();
103
+ }
104
+ /**
105
+ * Set working memory value
106
+ */
107
+ setWorkingMemory(executionId, key, value) {
108
+ const context = this.contexts.get(executionId);
109
+ if (!context) {
110
+ throw new Error(`Execution context ${executionId} not found`);
111
+ }
112
+ context.memory.workingMemory[key] = value;
113
+ context.updatedAt = new Date();
114
+ }
115
+ /**
116
+ * Get working memory value
117
+ */
118
+ getWorkingMemory(executionId, key) {
119
+ const context = this.contexts.get(executionId);
120
+ if (!context) {
121
+ throw new Error(`Execution context ${executionId} not found`);
122
+ }
123
+ return context.memory.workingMemory[key];
124
+ }
125
+ /**
126
+ * Add RAG context
127
+ */
128
+ addRAGContext(executionId, contexts) {
129
+ const context = this.contexts.get(executionId);
130
+ if (!context) {
131
+ throw new Error(`Execution context ${executionId} not found`);
132
+ }
133
+ context.ragContext = contexts;
134
+ context.updatedAt = new Date();
135
+ }
136
+ /**
137
+ * Check if execution can continue
138
+ */
139
+ canContinue(executionId, maxSteps) {
140
+ const context = this.contexts.get(executionId);
141
+ if (!context) {
142
+ return false;
143
+ }
144
+ if (context.state === agent_types_1.AgentState.COMPLETED || context.state === agent_types_1.AgentState.FAILED) {
145
+ return false;
146
+ }
147
+ if (context.steps.length >= maxSteps) {
148
+ return false;
149
+ }
150
+ return true;
151
+ }
152
+ /**
153
+ * Delete execution context
154
+ */
155
+ deleteContext(executionId) {
156
+ this.contexts.delete(executionId);
157
+ }
158
+ /**
159
+ * Clear all contexts
160
+ */
161
+ clear() {
162
+ this.contexts.clear();
163
+ }
164
+ /**
165
+ * Get all contexts for a session
166
+ */
167
+ getSessionContexts(sessionId) {
168
+ return Array.from(this.contexts.values()).filter((ctx) => ctx.sessionId === sessionId);
169
+ }
170
+ }
171
+ exports.AgentStateManager = AgentStateManager;
172
+ //# sourceMappingURL=agent.state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.state.js","sourceRoot":"","sources":["../../src/state/agent.state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Database State Manager
3
+ * Prisma-backed persistence for agent execution state
4
+ * Provides durable, queryable state management with full audit trail
5
+ */
6
+ import { AgentContext, AgentState, AgentStep } from '../types/agent.types';
7
+ import { IAgentStateManager } from './agent-state.interface';
8
+ type PrismaClient = any;
9
+ export interface DatabaseStateManagerConfig {
10
+ /**
11
+ * Prisma client instance
12
+ */
13
+ client: PrismaClient;
14
+ /**
15
+ * Whether to enable soft deletes (keep deleted contexts for audit)
16
+ * @default true
17
+ */
18
+ softDelete?: boolean;
19
+ /**
20
+ * Whether to automatically archive completed contexts
21
+ * @default false
22
+ */
23
+ autoArchive?: boolean;
24
+ /**
25
+ * Archive threshold in days (contexts older than this are archived)
26
+ * @default 30
27
+ */
28
+ archiveThresholdDays?: number;
29
+ }
30
+ /**
31
+ * Database-backed state manager for agent execution state
32
+ * Provides durable persistence with full query capabilities and audit trail
33
+ */
34
+ export declare class DatabaseStateManager implements IAgentStateManager {
35
+ private client;
36
+ private softDelete;
37
+ private autoArchive;
38
+ private archiveThresholdDays;
39
+ constructor(config: DatabaseStateManagerConfig);
40
+ /**
41
+ * Convert database record to AgentContext
42
+ */
43
+ private toContext;
44
+ /**
45
+ * Convert AgentContext to database record
46
+ */
47
+ private toRecord;
48
+ createContext(agentId: string, sessionId: string, input: string, userId?: string, metadata?: Record<string, unknown>): Promise<AgentContext>;
49
+ getContext(executionId: string): Promise<AgentContext | undefined>;
50
+ updateState(executionId: string, newState: AgentState): Promise<void>;
51
+ addStep(executionId: string, step: AgentStep): Promise<void>;
52
+ updateLastStep(executionId: string, updates: Partial<AgentStep>): Promise<void>;
53
+ addMessage(executionId: string, role: 'user' | 'assistant' | 'system' | 'tool', content: string): Promise<void>;
54
+ setWorkingMemory(executionId: string, key: string, value: unknown): Promise<void>;
55
+ getWorkingMemory(executionId: string, key: string): Promise<unknown>;
56
+ addRAGContext(executionId: string, contexts: string[]): Promise<void>;
57
+ canContinue(executionId: string, maxSteps: number): Promise<boolean>;
58
+ deleteContext(executionId: string): Promise<void>;
59
+ clear(): Promise<void>;
60
+ getSessionContexts(sessionId: string): Promise<AgentContext[]>;
61
+ }
62
+ export {};
63
+ //# sourceMappingURL=database-state.manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-state.manager.d.ts","sourceRoot":"","sources":["../../src/state/database-state.manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAK7D,KAAK,YAAY,GAAG,GAAG,CAAC;AA8CxB,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,MAAM,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,kBAAkB;IAC7D,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,oBAAoB,CAAS;gBAEzB,MAAM,EAAE,0BAA0B;IAU9C;;OAEG;IACH,OAAO,CAAC,SAAS;IAuCjB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAoBV,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,YAAY,CAAC;IAgClB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAYlE,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB5D,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB/E,UAAU,CACd,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,EAC9C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAsBV,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBjF,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASpE,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrE,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBpE,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAejD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAarE"}
@@ -0,0 +1,282 @@
1
+ "use strict";
2
+ /**
3
+ * Database State Manager
4
+ * Prisma-backed persistence for agent execution state
5
+ * Provides durable, queryable state management with full audit trail
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.DatabaseStateManager = void 0;
9
+ const agent_types_1 = require("../types/agent.types");
10
+ const crypto_1 = require("crypto");
11
+ /**
12
+ * Database-backed state manager for agent execution state
13
+ * Provides durable persistence with full query capabilities and audit trail
14
+ */
15
+ class DatabaseStateManager {
16
+ constructor(config) {
17
+ if (!config.client) {
18
+ throw new Error('Prisma client is required');
19
+ }
20
+ this.client = config.client;
21
+ this.softDelete = config.softDelete !== false;
22
+ this.autoArchive = config.autoArchive || false;
23
+ this.archiveThresholdDays = config.archiveThresholdDays || 30;
24
+ }
25
+ /**
26
+ * Convert database record to AgentContext
27
+ */
28
+ toContext(record) {
29
+ return {
30
+ executionId: record.executionId,
31
+ agentId: record.agentId,
32
+ sessionId: record.sessionId,
33
+ userId: record.userId || undefined,
34
+ input: record.input,
35
+ state: record.state,
36
+ steps: (record.steps || []).map((step) => ({
37
+ id: step.id,
38
+ agentId: step.agentId,
39
+ executionId: step.executionId,
40
+ stepNumber: step.stepNumber,
41
+ state: step.state,
42
+ action: step.action,
43
+ result: step.result,
44
+ error: step.error,
45
+ timestamp: new Date(step.timestamp),
46
+ duration: step.duration,
47
+ })),
48
+ memory: {
49
+ conversationHistory: (record.conversationHistory || []).map((msg) => ({
50
+ role: msg.role,
51
+ content: msg.content,
52
+ timestamp: new Date(msg.timestamp),
53
+ })),
54
+ workingMemory: record.workingMemory || {},
55
+ facts: record.facts || [],
56
+ entities: record.entities || [],
57
+ },
58
+ ragContext: record.ragContext || undefined,
59
+ metadata: record.metadata || {},
60
+ createdAt: new Date(record.createdAt),
61
+ updatedAt: new Date(record.updatedAt),
62
+ };
63
+ }
64
+ /**
65
+ * Convert AgentContext to database record
66
+ */
67
+ toRecord(context) {
68
+ return {
69
+ executionId: context.executionId,
70
+ agentId: context.agentId,
71
+ sessionId: context.sessionId,
72
+ userId: context.userId || null,
73
+ input: context.input,
74
+ state: context.state,
75
+ steps: context.steps,
76
+ conversationHistory: context.memory.conversationHistory,
77
+ workingMemory: context.memory.workingMemory,
78
+ facts: context.memory.facts,
79
+ entities: context.memory.entities,
80
+ ragContext: context.ragContext || null,
81
+ metadata: context.metadata,
82
+ createdAt: context.createdAt,
83
+ updatedAt: context.updatedAt,
84
+ };
85
+ }
86
+ async createContext(agentId, sessionId, input, userId, metadata) {
87
+ const executionId = (0, crypto_1.randomUUID)();
88
+ const now = new Date();
89
+ const context = {
90
+ executionId,
91
+ agentId,
92
+ sessionId,
93
+ userId,
94
+ input,
95
+ state: agent_types_1.AgentState.IDLE,
96
+ steps: [],
97
+ memory: {
98
+ conversationHistory: [],
99
+ workingMemory: {},
100
+ facts: [],
101
+ entities: [],
102
+ },
103
+ metadata: metadata || {},
104
+ createdAt: now,
105
+ updatedAt: now,
106
+ };
107
+ const record = this.toRecord(context);
108
+ await this.client.agentContext.create({
109
+ data: record,
110
+ });
111
+ return context;
112
+ }
113
+ async getContext(executionId) {
114
+ const record = await this.client.agentContext.findUnique({
115
+ where: { executionId },
116
+ });
117
+ if (!record) {
118
+ return undefined;
119
+ }
120
+ return this.toContext(record);
121
+ }
122
+ async updateState(executionId, newState) {
123
+ const context = await this.getContext(executionId);
124
+ if (!context) {
125
+ throw new Error(`Execution context ${executionId} not found`);
126
+ }
127
+ context.state = newState;
128
+ context.updatedAt = new Date();
129
+ await this.client.agentContext.update({
130
+ where: { executionId },
131
+ data: {
132
+ state: newState,
133
+ updatedAt: context.updatedAt,
134
+ },
135
+ });
136
+ }
137
+ async addStep(executionId, step) {
138
+ const context = await this.getContext(executionId);
139
+ if (!context) {
140
+ throw new Error(`Execution context ${executionId} not found`);
141
+ }
142
+ context.steps.push(step);
143
+ context.updatedAt = new Date();
144
+ await this.client.agentContext.update({
145
+ where: { executionId },
146
+ data: {
147
+ steps: context.steps,
148
+ updatedAt: context.updatedAt,
149
+ },
150
+ });
151
+ }
152
+ async updateLastStep(executionId, updates) {
153
+ const context = await this.getContext(executionId);
154
+ if (!context) {
155
+ throw new Error(`Execution context ${executionId} not found`);
156
+ }
157
+ if (context.steps.length === 0) {
158
+ throw new Error('No steps to update');
159
+ }
160
+ const lastStep = context.steps[context.steps.length - 1];
161
+ Object.assign(lastStep, updates);
162
+ context.updatedAt = new Date();
163
+ await this.client.agentContext.update({
164
+ where: { executionId },
165
+ data: {
166
+ steps: context.steps,
167
+ updatedAt: context.updatedAt,
168
+ },
169
+ });
170
+ }
171
+ async addMessage(executionId, role, content) {
172
+ const context = await this.getContext(executionId);
173
+ if (!context) {
174
+ throw new Error(`Execution context ${executionId} not found`);
175
+ }
176
+ context.memory.conversationHistory.push({
177
+ role,
178
+ content,
179
+ timestamp: new Date(),
180
+ });
181
+ context.updatedAt = new Date();
182
+ await this.client.agentContext.update({
183
+ where: { executionId },
184
+ data: {
185
+ conversationHistory: context.memory.conversationHistory,
186
+ updatedAt: context.updatedAt,
187
+ },
188
+ });
189
+ }
190
+ async setWorkingMemory(executionId, key, value) {
191
+ const context = await this.getContext(executionId);
192
+ if (!context) {
193
+ throw new Error(`Execution context ${executionId} not found`);
194
+ }
195
+ context.memory.workingMemory[key] = value;
196
+ context.updatedAt = new Date();
197
+ await this.client.agentContext.update({
198
+ where: { executionId },
199
+ data: {
200
+ workingMemory: context.memory.workingMemory,
201
+ updatedAt: context.updatedAt,
202
+ },
203
+ });
204
+ }
205
+ async getWorkingMemory(executionId, key) {
206
+ const context = await this.getContext(executionId);
207
+ if (!context) {
208
+ throw new Error(`Execution context ${executionId} not found`);
209
+ }
210
+ return context.memory.workingMemory[key];
211
+ }
212
+ async addRAGContext(executionId, contexts) {
213
+ const context = await this.getContext(executionId);
214
+ if (!context) {
215
+ throw new Error(`Execution context ${executionId} not found`);
216
+ }
217
+ context.ragContext = contexts;
218
+ context.updatedAt = new Date();
219
+ await this.client.agentContext.update({
220
+ where: { executionId },
221
+ data: {
222
+ ragContext: contexts,
223
+ updatedAt: context.updatedAt,
224
+ },
225
+ });
226
+ }
227
+ async canContinue(executionId, maxSteps) {
228
+ const context = await this.getContext(executionId);
229
+ if (!context) {
230
+ return false;
231
+ }
232
+ if (context.state === agent_types_1.AgentState.COMPLETED || context.state === agent_types_1.AgentState.FAILED) {
233
+ return false;
234
+ }
235
+ if (context.steps.length >= maxSteps) {
236
+ return false;
237
+ }
238
+ return true;
239
+ }
240
+ async deleteContext(executionId) {
241
+ if (this.softDelete) {
242
+ await this.client.agentContext.update({
243
+ where: { executionId },
244
+ data: {
245
+ deletedAt: new Date(),
246
+ },
247
+ });
248
+ }
249
+ else {
250
+ await this.client.agentContext.delete({
251
+ where: { executionId },
252
+ });
253
+ }
254
+ }
255
+ async clear() {
256
+ if (this.softDelete) {
257
+ await this.client.agentContext.updateMany({
258
+ where: { deletedAt: null },
259
+ data: {
260
+ deletedAt: new Date(),
261
+ },
262
+ });
263
+ }
264
+ else {
265
+ await this.client.agentContext.deleteMany({});
266
+ }
267
+ }
268
+ async getSessionContexts(sessionId) {
269
+ const records = await this.client.agentContext.findMany({
270
+ where: {
271
+ sessionId,
272
+ deletedAt: this.softDelete ? null : undefined,
273
+ },
274
+ orderBy: {
275
+ createdAt: 'desc',
276
+ },
277
+ });
278
+ return records.map((record) => this.toContext(record));
279
+ }
280
+ }
281
+ exports.DatabaseStateManager = DatabaseStateManager;
282
+ //# sourceMappingURL=database-state.manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-state.manager.js","sourceRoot":"","sources":["../../src/state/database-state.manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Redis State Manager
3
+ * Redis-backed persistence for agent execution state
4
+ * Provides fast, distributed state management with TTL support
5
+ */
6
+ import { AgentContext, AgentState, AgentStep } from '../types/agent.types';
7
+ import { IAgentStateManager } from './agent-state.interface';
8
+ type RedisClient = any;
9
+ export interface RedisStateManagerConfig {
10
+ /**
11
+ * Redis client instance
12
+ */
13
+ client: RedisClient;
14
+ /**
15
+ * Key prefix for all agent state keys
16
+ * @default "agent:state:"
17
+ */
18
+ keyPrefix?: string;
19
+ /**
20
+ * Default TTL for execution contexts in seconds
21
+ * @default 3600 (1 hour)
22
+ */
23
+ defaultTTL?: number;
24
+ /**
25
+ * TTL for completed contexts in seconds
26
+ * @default 86400 (24 hours)
27
+ */
28
+ completedTTL?: number;
29
+ /**
30
+ * TTL for failed contexts in seconds
31
+ * @default 604800 (7 days)
32
+ */
33
+ failedTTL?: number;
34
+ }
35
+ /**
36
+ * Redis-backed state manager for agent execution state
37
+ * Provides fast, distributed state management with automatic expiration
38
+ */
39
+ export declare class RedisStateManager implements IAgentStateManager {
40
+ private client;
41
+ private keyPrefix;
42
+ private defaultTTL;
43
+ private completedTTL;
44
+ private failedTTL;
45
+ constructor(config: RedisStateManagerConfig);
46
+ /**
47
+ * Get the Redis key for an execution context
48
+ */
49
+ private getKey;
50
+ /**
51
+ * Get the Redis key for session contexts
52
+ */
53
+ private getSessionKey;
54
+ /**
55
+ * Serialize context to JSON
56
+ */
57
+ private serialize;
58
+ /**
59
+ * Deserialize context from JSON
60
+ */
61
+ private deserialize;
62
+ /**
63
+ * Get TTL based on state
64
+ */
65
+ private getTTL;
66
+ createContext(agentId: string, sessionId: string, input: string, userId?: string, metadata?: Record<string, unknown>): Promise<AgentContext>;
67
+ getContext(executionId: string): Promise<AgentContext | undefined>;
68
+ updateState(executionId: string, newState: AgentState): Promise<void>;
69
+ addStep(executionId: string, step: AgentStep): Promise<void>;
70
+ updateLastStep(executionId: string, updates: Partial<AgentStep>): Promise<void>;
71
+ addMessage(executionId: string, role: 'user' | 'assistant' | 'system' | 'tool', content: string): Promise<void>;
72
+ setWorkingMemory(executionId: string, key: string, value: unknown): Promise<void>;
73
+ getWorkingMemory(executionId: string, key: string): Promise<unknown>;
74
+ addRAGContext(executionId: string, contexts: string[]): Promise<void>;
75
+ canContinue(executionId: string, maxSteps: number): Promise<boolean>;
76
+ deleteContext(executionId: string): Promise<void>;
77
+ clear(): Promise<void>;
78
+ getSessionContexts(sessionId: string): Promise<AgentContext[]>;
79
+ }
80
+ export {};
81
+ //# sourceMappingURL=redis-state.manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-state.manager.d.ts","sourceRoot":"","sources":["../../src/state/redis-state.manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAK7D,KAAK,WAAW,GAAG,GAAG,CAAC;AAEvB,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,MAAM,EAAE,WAAW,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,kBAAkB;IAC1D,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,uBAAuB;IAW3C;;OAEG;IACH,OAAO,CAAC,MAAM;IAId;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,OAAO,CAAC,SAAS;IASjB;;OAEG;IACH,OAAO,CAAC,WAAW;IAsBnB;;OAEG;IACH,OAAO,CAAC,MAAM;IAUR,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,YAAY,CAAC;IAqClB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAWlE,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB5D,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB/E,UAAU,CACd,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,EAC9C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAoBV,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBjF,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASpE,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrE,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBpE,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAStB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAcrE"}