agentdb 1.0.0 → 1.0.2

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 (63) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/README.md +5 -5
  3. package/bin/agentdb.js +296 -65
  4. package/dist/mcp/learning/core/experience-buffer.d.ts +61 -0
  5. package/dist/mcp/learning/core/experience-buffer.d.ts.map +1 -0
  6. package/dist/mcp/learning/core/experience-buffer.js +175 -0
  7. package/dist/mcp/learning/core/experience-buffer.js.map +1 -0
  8. package/dist/mcp/learning/core/experience-buffer.mjs +170 -0
  9. package/dist/mcp/learning/core/experience-recorder.d.ts +40 -0
  10. package/dist/mcp/learning/core/experience-recorder.d.ts.map +1 -0
  11. package/dist/mcp/learning/core/experience-recorder.js +200 -0
  12. package/dist/mcp/learning/core/experience-recorder.js.map +1 -0
  13. package/dist/mcp/learning/core/experience-recorder.mjs +195 -0
  14. package/dist/mcp/learning/core/learning-manager.d.ts +66 -0
  15. package/dist/mcp/learning/core/learning-manager.d.ts.map +1 -0
  16. package/dist/mcp/learning/core/learning-manager.js +252 -0
  17. package/dist/mcp/learning/core/learning-manager.js.map +1 -0
  18. package/dist/mcp/learning/core/learning-manager.mjs +247 -0
  19. package/dist/mcp/learning/core/policy-optimizer.d.ts +53 -0
  20. package/dist/mcp/learning/core/policy-optimizer.d.ts.map +1 -0
  21. package/dist/mcp/learning/core/policy-optimizer.js +251 -0
  22. package/dist/mcp/learning/core/policy-optimizer.js.map +1 -0
  23. package/dist/mcp/learning/core/policy-optimizer.mjs +246 -0
  24. package/dist/mcp/learning/core/reward-estimator.d.ts +44 -0
  25. package/dist/mcp/learning/core/reward-estimator.d.ts.map +1 -0
  26. package/dist/mcp/learning/core/reward-estimator.js +158 -0
  27. package/dist/mcp/learning/core/reward-estimator.js.map +1 -0
  28. package/dist/mcp/learning/core/reward-estimator.mjs +153 -0
  29. package/dist/mcp/learning/core/session-manager.d.ts +63 -0
  30. package/dist/mcp/learning/core/session-manager.d.ts.map +1 -0
  31. package/dist/mcp/learning/core/session-manager.js +202 -0
  32. package/dist/mcp/learning/core/session-manager.js.map +1 -0
  33. package/dist/mcp/learning/core/session-manager.mjs +197 -0
  34. package/dist/mcp/learning/index.d.ts +19 -0
  35. package/dist/mcp/learning/index.d.ts.map +1 -0
  36. package/dist/mcp/learning/index.js +30 -0
  37. package/dist/mcp/learning/index.js.map +1 -0
  38. package/dist/mcp/learning/index.mjs +19 -0
  39. package/dist/mcp/learning/tools/mcp-learning-tools.d.ts +369 -0
  40. package/dist/mcp/learning/tools/mcp-learning-tools.d.ts.map +1 -0
  41. package/dist/mcp/learning/tools/mcp-learning-tools.js +361 -0
  42. package/dist/mcp/learning/tools/mcp-learning-tools.js.map +1 -0
  43. package/dist/mcp/learning/tools/mcp-learning-tools.mjs +356 -0
  44. package/dist/mcp/learning/types/index.d.ts +138 -0
  45. package/dist/mcp/learning/types/index.d.ts.map +1 -0
  46. package/dist/mcp/learning/types/index.js +6 -0
  47. package/dist/mcp/learning/types/index.js.map +1 -0
  48. package/dist/mcp/learning/types/index.mjs +4 -0
  49. package/dist/mcp-server.d.ts +2 -0
  50. package/dist/mcp-server.d.ts.map +1 -1
  51. package/dist/mcp-server.js +72 -4
  52. package/dist/mcp-server.js.map +1 -1
  53. package/dist/mcp-server.mjs +72 -4
  54. package/dist/wasm/sql-wasm-debug.js +6989 -0
  55. package/dist/wasm/sql-wasm-debug.wasm +0 -0
  56. package/dist/wasm/sql-wasm.js +188 -0
  57. package/dist/wasm/sql-wasm.wasm +0 -0
  58. package/dist/wasm-loader.d.ts.map +1 -1
  59. package/dist/wasm-loader.js +5 -2
  60. package/dist/wasm-loader.js.map +1 -1
  61. package/dist/wasm-loader.mjs +5 -2
  62. package/examples/mcp-learning-example.ts +220 -0
  63. package/package.json +26 -5
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ /**
3
+ * SessionManager - Manages learning session lifecycle and state
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SessionManager = void 0;
7
+ class SessionManager {
8
+ constructor(db) {
9
+ this.activeSessions = new Map();
10
+ this.db = db;
11
+ }
12
+ /**
13
+ * Create a new learning session
14
+ */
15
+ async createSession(userId, sessionType, plugin, config = {}) {
16
+ const sessionId = `session_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
17
+ const session = {
18
+ sessionId,
19
+ userId,
20
+ sessionType,
21
+ plugin,
22
+ status: 'active',
23
+ startTime: Date.now(),
24
+ experienceCount: 0,
25
+ config,
26
+ };
27
+ this.activeSessions.set(sessionId, session);
28
+ await this.persistSession(session);
29
+ return session;
30
+ }
31
+ /**
32
+ * Get active session by ID
33
+ */
34
+ getSession(sessionId) {
35
+ return this.activeSessions.get(sessionId);
36
+ }
37
+ /**
38
+ * Get all active sessions for a user
39
+ */
40
+ getUserSessions(userId) {
41
+ return Array.from(this.activeSessions.values()).filter((session) => session.userId === userId && session.status === 'active');
42
+ }
43
+ /**
44
+ * Pause a learning session
45
+ */
46
+ async pauseSession(sessionId) {
47
+ const session = this.activeSessions.get(sessionId);
48
+ if (!session) {
49
+ throw new Error(`Session ${sessionId} not found`);
50
+ }
51
+ session.status = 'paused';
52
+ await this.persistSession(session);
53
+ }
54
+ /**
55
+ * Resume a paused session
56
+ */
57
+ async resumeSession(sessionId) {
58
+ const session = this.activeSessions.get(sessionId);
59
+ if (!session) {
60
+ throw new Error(`Session ${sessionId} not found`);
61
+ }
62
+ if (session.status !== 'paused') {
63
+ throw new Error(`Session ${sessionId} is not paused`);
64
+ }
65
+ session.status = 'active';
66
+ await this.persistSession(session);
67
+ }
68
+ /**
69
+ * End a learning session
70
+ */
71
+ async endSession(sessionId) {
72
+ const session = this.activeSessions.get(sessionId);
73
+ if (!session) {
74
+ throw new Error(`Session ${sessionId} not found`);
75
+ }
76
+ session.status = 'ended';
77
+ session.endTime = Date.now();
78
+ await this.persistSession(session);
79
+ this.activeSessions.delete(sessionId);
80
+ return session;
81
+ }
82
+ /**
83
+ * Update session experience count
84
+ */
85
+ incrementExperienceCount(sessionId) {
86
+ const session = this.activeSessions.get(sessionId);
87
+ if (session) {
88
+ session.experienceCount++;
89
+ }
90
+ }
91
+ /**
92
+ * Update session policy
93
+ */
94
+ async updateSessionPolicy(sessionId, policy) {
95
+ const session = this.activeSessions.get(sessionId);
96
+ if (!session) {
97
+ throw new Error(`Session ${sessionId} not found`);
98
+ }
99
+ session.currentPolicy = policy;
100
+ await this.persistSession(session);
101
+ }
102
+ /**
103
+ * Get session metrics
104
+ */
105
+ getSessionMetrics(sessionId) {
106
+ const session = this.activeSessions.get(sessionId);
107
+ if (!session) {
108
+ throw new Error(`Session ${sessionId} not found`);
109
+ }
110
+ const endTime = session.endTime || Date.now();
111
+ const duration = endTime - session.startTime;
112
+ return {
113
+ duration,
114
+ experienceCount: session.experienceCount,
115
+ status: session.status,
116
+ };
117
+ }
118
+ /**
119
+ * Persist session to vector database
120
+ */
121
+ async persistSession(session) {
122
+ // Create a simple embedding for session metadata
123
+ const sessionText = JSON.stringify({
124
+ userId: session.userId,
125
+ sessionType: session.sessionType,
126
+ plugin: session.plugin,
127
+ });
128
+ const embedding = new Float32Array(768);
129
+ for (let i = 0; i < sessionText.length; i++) {
130
+ const index = sessionText.charCodeAt(i) % 768;
131
+ embedding[index] += 1;
132
+ }
133
+ // Normalize
134
+ const magnitude = Math.sqrt(embedding.reduce((sum, val) => sum + val * val, 0));
135
+ if (magnitude > 0) {
136
+ for (let i = 0; i < embedding.length; i++) {
137
+ embedding[i] /= magnitude;
138
+ }
139
+ }
140
+ await this.db.insert({
141
+ embedding: Array.from(embedding),
142
+ metadata: {
143
+ type: 'learning_session',
144
+ sessionId: session.sessionId,
145
+ userId: session.userId,
146
+ sessionType: session.sessionType,
147
+ plugin: session.plugin,
148
+ status: session.status,
149
+ startTime: session.startTime,
150
+ endTime: session.endTime,
151
+ experienceCount: session.experienceCount,
152
+ config: session.config,
153
+ currentPolicy: session.currentPolicy,
154
+ },
155
+ });
156
+ }
157
+ /**
158
+ * Restore sessions from database
159
+ */
160
+ async restoreSessions(userId) {
161
+ const filter = { type: 'learning_session', status: 'active' };
162
+ if (userId) {
163
+ filter.userId = userId;
164
+ }
165
+ const results = await this.db.search(Array(768).fill(0), 1000);
166
+ const sessions = [];
167
+ for (const result of results) {
168
+ const session = {
169
+ sessionId: result.metadata.sessionId,
170
+ userId: result.metadata.userId,
171
+ sessionType: result.metadata.sessionType,
172
+ plugin: result.metadata.plugin,
173
+ status: result.metadata.status,
174
+ startTime: result.metadata.startTime,
175
+ endTime: result.metadata.endTime,
176
+ experienceCount: result.metadata.experienceCount,
177
+ config: result.metadata.config,
178
+ currentPolicy: result.metadata.currentPolicy,
179
+ };
180
+ this.activeSessions.set(session.sessionId, session);
181
+ sessions.push(session);
182
+ }
183
+ return sessions;
184
+ }
185
+ /**
186
+ * Cleanup old sessions
187
+ */
188
+ async cleanupOldSessions(maxAge = 7 * 24 * 60 * 60 * 1000) {
189
+ const cutoff = Date.now() - maxAge;
190
+ let cleaned = 0;
191
+ for (const [sessionId, session] of this.activeSessions.entries()) {
192
+ const endTime = session.endTime || Date.now();
193
+ if (endTime < cutoff && session.status === 'ended') {
194
+ this.activeSessions.delete(sessionId);
195
+ cleaned++;
196
+ }
197
+ }
198
+ return cleaned;
199
+ }
200
+ }
201
+ exports.SessionManager = SessionManager;
202
+ //# sourceMappingURL=session-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../../../src/mcp/learning/core/session-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,197 @@
1
+ /**
2
+ * SessionManager - Manages learning session lifecycle and state
3
+ */
4
+ export class SessionManager {
5
+ constructor(db) {
6
+ this.activeSessions = new Map();
7
+ this.db = db;
8
+ }
9
+ /**
10
+ * Create a new learning session
11
+ */
12
+ async createSession(userId, sessionType, plugin, config = {}) {
13
+ const sessionId = `session_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
14
+ const session = {
15
+ sessionId,
16
+ userId,
17
+ sessionType,
18
+ plugin,
19
+ status: 'active',
20
+ startTime: Date.now(),
21
+ experienceCount: 0,
22
+ config,
23
+ };
24
+ this.activeSessions.set(sessionId, session);
25
+ await this.persistSession(session);
26
+ return session;
27
+ }
28
+ /**
29
+ * Get active session by ID
30
+ */
31
+ getSession(sessionId) {
32
+ return this.activeSessions.get(sessionId);
33
+ }
34
+ /**
35
+ * Get all active sessions for a user
36
+ */
37
+ getUserSessions(userId) {
38
+ return Array.from(this.activeSessions.values()).filter((session) => session.userId === userId && session.status === 'active');
39
+ }
40
+ /**
41
+ * Pause a learning session
42
+ */
43
+ async pauseSession(sessionId) {
44
+ const session = this.activeSessions.get(sessionId);
45
+ if (!session) {
46
+ throw new Error(`Session ${sessionId} not found`);
47
+ }
48
+ session.status = 'paused';
49
+ await this.persistSession(session);
50
+ }
51
+ /**
52
+ * Resume a paused session
53
+ */
54
+ async resumeSession(sessionId) {
55
+ const session = this.activeSessions.get(sessionId);
56
+ if (!session) {
57
+ throw new Error(`Session ${sessionId} not found`);
58
+ }
59
+ if (session.status !== 'paused') {
60
+ throw new Error(`Session ${sessionId} is not paused`);
61
+ }
62
+ session.status = 'active';
63
+ await this.persistSession(session);
64
+ }
65
+ /**
66
+ * End a learning session
67
+ */
68
+ async endSession(sessionId) {
69
+ const session = this.activeSessions.get(sessionId);
70
+ if (!session) {
71
+ throw new Error(`Session ${sessionId} not found`);
72
+ }
73
+ session.status = 'ended';
74
+ session.endTime = Date.now();
75
+ await this.persistSession(session);
76
+ this.activeSessions.delete(sessionId);
77
+ return session;
78
+ }
79
+ /**
80
+ * Update session experience count
81
+ */
82
+ incrementExperienceCount(sessionId) {
83
+ const session = this.activeSessions.get(sessionId);
84
+ if (session) {
85
+ session.experienceCount++;
86
+ }
87
+ }
88
+ /**
89
+ * Update session policy
90
+ */
91
+ async updateSessionPolicy(sessionId, policy) {
92
+ const session = this.activeSessions.get(sessionId);
93
+ if (!session) {
94
+ throw new Error(`Session ${sessionId} not found`);
95
+ }
96
+ session.currentPolicy = policy;
97
+ await this.persistSession(session);
98
+ }
99
+ /**
100
+ * Get session metrics
101
+ */
102
+ getSessionMetrics(sessionId) {
103
+ const session = this.activeSessions.get(sessionId);
104
+ if (!session) {
105
+ throw new Error(`Session ${sessionId} not found`);
106
+ }
107
+ const endTime = session.endTime || Date.now();
108
+ const duration = endTime - session.startTime;
109
+ return {
110
+ duration,
111
+ experienceCount: session.experienceCount,
112
+ status: session.status,
113
+ };
114
+ }
115
+ /**
116
+ * Persist session to vector database
117
+ */
118
+ async persistSession(session) {
119
+ // Create a simple embedding for session metadata
120
+ const sessionText = JSON.stringify({
121
+ userId: session.userId,
122
+ sessionType: session.sessionType,
123
+ plugin: session.plugin,
124
+ });
125
+ const embedding = new Float32Array(768);
126
+ for (let i = 0; i < sessionText.length; i++) {
127
+ const index = sessionText.charCodeAt(i) % 768;
128
+ embedding[index] += 1;
129
+ }
130
+ // Normalize
131
+ const magnitude = Math.sqrt(embedding.reduce((sum, val) => sum + val * val, 0));
132
+ if (magnitude > 0) {
133
+ for (let i = 0; i < embedding.length; i++) {
134
+ embedding[i] /= magnitude;
135
+ }
136
+ }
137
+ await this.db.insert({
138
+ embedding: Array.from(embedding),
139
+ metadata: {
140
+ type: 'learning_session',
141
+ sessionId: session.sessionId,
142
+ userId: session.userId,
143
+ sessionType: session.sessionType,
144
+ plugin: session.plugin,
145
+ status: session.status,
146
+ startTime: session.startTime,
147
+ endTime: session.endTime,
148
+ experienceCount: session.experienceCount,
149
+ config: session.config,
150
+ currentPolicy: session.currentPolicy,
151
+ },
152
+ });
153
+ }
154
+ /**
155
+ * Restore sessions from database
156
+ */
157
+ async restoreSessions(userId) {
158
+ const filter = { type: 'learning_session', status: 'active' };
159
+ if (userId) {
160
+ filter.userId = userId;
161
+ }
162
+ const results = await this.db.search(Array(768).fill(0), 1000);
163
+ const sessions = [];
164
+ for (const result of results) {
165
+ const session = {
166
+ sessionId: result.metadata.sessionId,
167
+ userId: result.metadata.userId,
168
+ sessionType: result.metadata.sessionType,
169
+ plugin: result.metadata.plugin,
170
+ status: result.metadata.status,
171
+ startTime: result.metadata.startTime,
172
+ endTime: result.metadata.endTime,
173
+ experienceCount: result.metadata.experienceCount,
174
+ config: result.metadata.config,
175
+ currentPolicy: result.metadata.currentPolicy,
176
+ };
177
+ this.activeSessions.set(session.sessionId, session);
178
+ sessions.push(session);
179
+ }
180
+ return sessions;
181
+ }
182
+ /**
183
+ * Cleanup old sessions
184
+ */
185
+ async cleanupOldSessions(maxAge = 7 * 24 * 60 * 60 * 1000) {
186
+ const cutoff = Date.now() - maxAge;
187
+ let cleaned = 0;
188
+ for (const [sessionId, session] of this.activeSessions.entries()) {
189
+ const endTime = session.endTime || Date.now();
190
+ if (endTime < cutoff && session.status === 'ended') {
191
+ this.activeSessions.delete(sessionId);
192
+ cleaned++;
193
+ }
194
+ }
195
+ return cleaned;
196
+ }
197
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * MCP Learning Integration - Main Entry Point
3
+ *
4
+ * Provides reinforcement learning capabilities for MCP tools including:
5
+ * - Experience recording and replay
6
+ * - Multi-dimensional reward calculation
7
+ * - Policy optimization (Q-learning)
8
+ * - Session management
9
+ * - Transfer learning between tasks
10
+ */
11
+ export { LearningManager } from './core/learning-manager.js';
12
+ export { ExperienceRecorder } from './core/experience-recorder.js';
13
+ export { RewardEstimator } from './core/reward-estimator.js';
14
+ export { SessionManager } from './core/session-manager.js';
15
+ export { PolicyOptimizer } from './core/policy-optimizer.js';
16
+ export { ExperienceBuffer } from './core/experience-buffer.js';
17
+ export { MCPLearningTools } from './tools/mcp-learning-tools.js';
18
+ export type { ExecutionContext, State, Action, Experience, Outcome, Reward, ActionPrediction, TrainingOptions, TrainingMetrics, LearningSession, FeedbackInput, LearningMetrics, TransferMetrics, } from './types/index.js';
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/learning/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,YAAY,EACV,gBAAgB,EAChB,KAAK,EACL,MAAM,EACN,UAAU,EACV,OAAO,EACP,MAAM,EACN,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EACf,aAAa,EACb,eAAe,EACf,eAAe,GAChB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /**
3
+ * MCP Learning Integration - Main Entry Point
4
+ *
5
+ * Provides reinforcement learning capabilities for MCP tools including:
6
+ * - Experience recording and replay
7
+ * - Multi-dimensional reward calculation
8
+ * - Policy optimization (Q-learning)
9
+ * - Session management
10
+ * - Transfer learning between tasks
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.MCPLearningTools = exports.ExperienceBuffer = exports.PolicyOptimizer = exports.SessionManager = exports.RewardEstimator = exports.ExperienceRecorder = exports.LearningManager = void 0;
14
+ // Core classes
15
+ var learning_manager_js_1 = require("./core/learning-manager.js");
16
+ Object.defineProperty(exports, "LearningManager", { enumerable: true, get: function () { return learning_manager_js_1.LearningManager; } });
17
+ var experience_recorder_js_1 = require("./core/experience-recorder.js");
18
+ Object.defineProperty(exports, "ExperienceRecorder", { enumerable: true, get: function () { return experience_recorder_js_1.ExperienceRecorder; } });
19
+ var reward_estimator_js_1 = require("./core/reward-estimator.js");
20
+ Object.defineProperty(exports, "RewardEstimator", { enumerable: true, get: function () { return reward_estimator_js_1.RewardEstimator; } });
21
+ var session_manager_js_1 = require("./core/session-manager.js");
22
+ Object.defineProperty(exports, "SessionManager", { enumerable: true, get: function () { return session_manager_js_1.SessionManager; } });
23
+ var policy_optimizer_js_1 = require("./core/policy-optimizer.js");
24
+ Object.defineProperty(exports, "PolicyOptimizer", { enumerable: true, get: function () { return policy_optimizer_js_1.PolicyOptimizer; } });
25
+ var experience_buffer_js_1 = require("./core/experience-buffer.js");
26
+ Object.defineProperty(exports, "ExperienceBuffer", { enumerable: true, get: function () { return experience_buffer_js_1.ExperienceBuffer; } });
27
+ // MCP tools
28
+ var mcp_learning_tools_js_1 = require("./tools/mcp-learning-tools.js");
29
+ Object.defineProperty(exports, "MCPLearningTools", { enumerable: true, get: function () { return mcp_learning_tools_js_1.MCPLearningTools; } });
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/learning/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,eAAe;AACf,kEAA6D;AAApD,sHAAA,eAAe,OAAA;AACxB,wEAAmE;AAA1D,4HAAA,kBAAkB,OAAA;AAC3B,kEAA6D;AAApD,sHAAA,eAAe,OAAA;AACxB,gEAA2D;AAAlD,oHAAA,cAAc,OAAA;AACvB,kEAA6D;AAApD,sHAAA,eAAe,OAAA;AACxB,oEAA+D;AAAtD,wHAAA,gBAAgB,OAAA;AAEzB,YAAY;AACZ,uEAAiE;AAAxD,yHAAA,gBAAgB,OAAA"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * MCP Learning Integration - Main Entry Point
3
+ *
4
+ * Provides reinforcement learning capabilities for MCP tools including:
5
+ * - Experience recording and replay
6
+ * - Multi-dimensional reward calculation
7
+ * - Policy optimization (Q-learning)
8
+ * - Session management
9
+ * - Transfer learning between tasks
10
+ */
11
+ // Core classes
12
+ export { LearningManager } from './core/learning-manager.mjs';
13
+ export { ExperienceRecorder } from './core/experience-recorder.mjs';
14
+ export { RewardEstimator } from './core/reward-estimator.mjs';
15
+ export { SessionManager } from './core/session-manager.mjs';
16
+ export { PolicyOptimizer } from './core/policy-optimizer.mjs';
17
+ export { ExperienceBuffer } from './core/experience-buffer.mjs';
18
+ // MCP tools
19
+ export { MCPLearningTools } from './tools/mcp-learning-tools.mjs';