snow-flow 1.1.76 → 1.1.78

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 (234) hide show
  1. package/.claude-flow/queen/queen-memory.db +0 -0
  2. package/CLAUDE.md +34 -5
  3. package/README.md +256 -384
  4. package/dist/agents/base-agent.d.ts +92 -0
  5. package/dist/agents/base-agent.d.ts.map +1 -0
  6. package/dist/agents/base-agent.js +228 -0
  7. package/dist/agents/base-agent.js.map +1 -0
  8. package/dist/agents/coordinator.d.ts +200 -0
  9. package/dist/agents/coordinator.d.ts.map +1 -0
  10. package/dist/agents/coordinator.js +775 -0
  11. package/dist/agents/coordinator.js.map +1 -0
  12. package/dist/agents/flow-builder-agent.d.ts +18 -0
  13. package/dist/agents/flow-builder-agent.d.ts.map +1 -0
  14. package/dist/agents/flow-builder-agent.js +536 -0
  15. package/dist/agents/flow-builder-agent.js.map +1 -0
  16. package/dist/agents/index.d.ts +18 -0
  17. package/dist/agents/index.d.ts.map +1 -0
  18. package/dist/agents/index.js +61 -0
  19. package/dist/agents/index.js.map +1 -0
  20. package/dist/agents/queen-agent-example.d.ts +23 -0
  21. package/dist/agents/queen-agent-example.d.ts.map +1 -0
  22. package/dist/agents/queen-agent-example.js +241 -0
  23. package/dist/agents/queen-agent-example.js.map +1 -0
  24. package/dist/agents/queen-agent.d.ts +180 -0
  25. package/dist/agents/queen-agent.d.ts.map +1 -0
  26. package/dist/agents/queen-agent.js +909 -0
  27. package/dist/agents/queen-agent.js.map +1 -0
  28. package/dist/agents/queen-agent.test.d.ts +6 -0
  29. package/dist/agents/queen-agent.test.d.ts.map +1 -0
  30. package/dist/agents/queen-agent.test.js.map +1 -0
  31. package/dist/agents/script-writer-agent.d.ts +22 -0
  32. package/dist/agents/script-writer-agent.d.ts.map +1 -0
  33. package/dist/agents/script-writer-agent.js +695 -0
  34. package/dist/agents/script-writer-agent.js.map +1 -0
  35. package/dist/agents/security-agent.d.ts +23 -0
  36. package/dist/agents/security-agent.d.ts.map +1 -0
  37. package/dist/agents/security-agent.js +619 -0
  38. package/dist/agents/security-agent.js.map +1 -0
  39. package/dist/agents/test-agent.d.ts +26 -0
  40. package/dist/agents/test-agent.d.ts.map +1 -0
  41. package/dist/agents/test-agent.js +735 -0
  42. package/dist/agents/test-agent.js.map +1 -0
  43. package/dist/agents/test-agents.d.ts +7 -0
  44. package/dist/agents/test-agents.d.ts.map +1 -0
  45. package/dist/agents/test-agents.js +65 -0
  46. package/dist/agents/test-agents.js.map +1 -0
  47. package/dist/agents/widget-creator-agent.d.ts +18 -0
  48. package/dist/agents/widget-creator-agent.d.ts.map +1 -0
  49. package/dist/agents/widget-creator-agent.js +440 -0
  50. package/dist/agents/widget-creator-agent.js.map +1 -0
  51. package/dist/cli/snow-flow-cli-integration.d.ts +30 -0
  52. package/dist/cli/snow-flow-cli-integration.d.ts.map +1 -0
  53. package/dist/cli/snow-flow-cli-integration.js +385 -0
  54. package/dist/cli/snow-flow-cli-integration.js.map +1 -0
  55. package/dist/cli.js +466 -150
  56. package/dist/cli.js.map +1 -1
  57. package/dist/config/snow-flow-config.d.ts +1454 -0
  58. package/dist/config/snow-flow-config.d.ts.map +1 -0
  59. package/dist/config/snow-flow-config.js +403 -0
  60. package/dist/config/snow-flow-config.js.map +1 -0
  61. package/dist/health/system-health.d.ts +123 -0
  62. package/dist/health/system-health.d.ts.map +1 -0
  63. package/dist/health/system-health.js +580 -0
  64. package/dist/health/system-health.js.map +1 -0
  65. package/dist/index.d.ts +12 -1
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +19 -3
  68. package/dist/index.js.map +1 -1
  69. package/dist/mcp/servicenow-deployment-mcp-refactored.d.ts +58 -0
  70. package/dist/mcp/servicenow-deployment-mcp-refactored.d.ts.map +1 -0
  71. package/dist/mcp/servicenow-deployment-mcp-refactored.js +651 -0
  72. package/dist/mcp/servicenow-deployment-mcp-refactored.js.map +1 -0
  73. package/dist/mcp/servicenow-intelligent-mcp-refactored.d.ts +43 -0
  74. package/dist/mcp/servicenow-intelligent-mcp-refactored.d.ts.map +1 -0
  75. package/dist/mcp/servicenow-intelligent-mcp-refactored.js +576 -0
  76. package/dist/mcp/servicenow-intelligent-mcp-refactored.js.map +1 -0
  77. package/dist/mcp/servicenow-intelligent-mcp.d.ts +102 -1
  78. package/dist/mcp/servicenow-intelligent-mcp.d.ts.map +1 -1
  79. package/dist/mcp/servicenow-intelligent-mcp.js +2 -0
  80. package/dist/mcp/servicenow-intelligent-mcp.js.map +1 -1
  81. package/dist/mcp/shared/agent-context-provider.d.ts +77 -0
  82. package/dist/mcp/shared/agent-context-provider.d.ts.map +1 -0
  83. package/dist/mcp/shared/agent-context-provider.js +292 -0
  84. package/dist/mcp/shared/agent-context-provider.js.map +1 -0
  85. package/dist/mcp/shared/base-mcp-server.d.ts +97 -0
  86. package/dist/mcp/shared/base-mcp-server.d.ts.map +1 -0
  87. package/dist/mcp/shared/base-mcp-server.js +216 -0
  88. package/dist/mcp/shared/base-mcp-server.js.map +1 -0
  89. package/dist/mcp/shared/mcp-memory-manager.d.ts +87 -0
  90. package/dist/mcp/shared/mcp-memory-manager.d.ts.map +1 -0
  91. package/dist/mcp/shared/mcp-memory-manager.js +423 -0
  92. package/dist/mcp/shared/mcp-memory-manager.js.map +1 -0
  93. package/dist/memory/index.d.ts +9 -0
  94. package/dist/memory/index.d.ts.map +1 -0
  95. package/dist/memory/index.js +20 -0
  96. package/dist/memory/index.js.map +1 -0
  97. package/dist/memory/mcp-integration-example.d.ts +6 -0
  98. package/dist/memory/mcp-integration-example.d.ts.map +1 -0
  99. package/dist/memory/mcp-integration-example.js +282 -0
  100. package/dist/memory/mcp-integration-example.js.map +1 -0
  101. package/dist/memory/memory-client.d.ts +184 -0
  102. package/dist/memory/memory-client.d.ts.map +1 -0
  103. package/dist/memory/memory-client.js +325 -0
  104. package/dist/memory/memory-client.js.map +1 -0
  105. package/dist/memory/memory-operations.d.ts +170 -0
  106. package/dist/memory/memory-operations.d.ts.map +1 -0
  107. package/dist/memory/memory-operations.js +639 -0
  108. package/dist/memory/memory-operations.js.map +1 -0
  109. package/dist/memory/memory-system.d.ts +118 -0
  110. package/dist/memory/memory-system.d.ts.map +1 -0
  111. package/dist/memory/memory-system.js +477 -0
  112. package/dist/memory/memory-system.js.map +1 -0
  113. package/dist/memory/memory-test.d.ts +6 -0
  114. package/dist/memory/memory-test.d.ts.map +1 -0
  115. package/dist/memory/memory-test.js +162 -0
  116. package/dist/memory/memory-test.js.map +1 -0
  117. package/dist/memory/swarm-memory.d.ts +135 -0
  118. package/dist/memory/swarm-memory.d.ts.map +1 -0
  119. package/dist/memory/swarm-memory.js +378 -0
  120. package/dist/memory/swarm-memory.js.map +1 -0
  121. package/dist/monitoring/performance-tracker.d.ts +157 -0
  122. package/dist/monitoring/performance-tracker.d.ts.map +1 -0
  123. package/dist/monitoring/performance-tracker.js +571 -0
  124. package/dist/monitoring/performance-tracker.js.map +1 -0
  125. package/dist/queen/agent-factory.d.ts +3 -0
  126. package/dist/queen/agent-factory.d.ts.map +1 -1
  127. package/dist/queen/agent-factory.js +52 -0
  128. package/dist/queen/agent-factory.js.map +1 -1
  129. package/dist/queen/queen-memory.d.ts +8 -2
  130. package/dist/queen/queen-memory.d.ts.map +1 -1
  131. package/dist/queen/queen-memory.js +46 -4
  132. package/dist/queen/queen-memory.js.map +1 -1
  133. package/dist/snow-flow-system.d.ts +132 -0
  134. package/dist/snow-flow-system.d.ts.map +1 -0
  135. package/dist/snow-flow-system.js +396 -0
  136. package/dist/snow-flow-system.js.map +1 -0
  137. package/dist/types/todo.types.d.ts +61 -0
  138. package/dist/types/todo.types.d.ts.map +1 -0
  139. package/dist/types/todo.types.js +7 -0
  140. package/dist/types/todo.types.js.map +1 -0
  141. package/dist/utils/error-recovery.d.ts +101 -0
  142. package/dist/utils/error-recovery.d.ts.map +1 -0
  143. package/dist/utils/error-recovery.js +548 -0
  144. package/dist/utils/error-recovery.js.map +1 -0
  145. package/dist/version.d.ts +1 -1
  146. package/dist/version.js +1 -1
  147. package/package.json +7 -2
  148. package/deploy.sh +0 -366
  149. package/docker/base/Dockerfile.base +0 -45
  150. package/docker/generate-services.js +0 -244
  151. package/docker/nginx/Dockerfile +0 -71
  152. package/docker/nginx/consul-template.hcl +0 -64
  153. package/docker/nginx/healthcheck.sh +0 -178
  154. package/docker/nginx/nginx.conf +0 -210
  155. package/docker/nginx/supervisord.conf +0 -57
  156. package/docker/nginx/templates/upstreams.conf.tpl +0 -48
  157. package/docker/services/automation-mcp/Dockerfile +0 -32
  158. package/docker/services/automation-mcp/config/service.json +0 -28
  159. package/docker/services/automation-mcp/entrypoint.js +0 -51
  160. package/docker/services/deployment-mcp/Dockerfile +0 -32
  161. package/docker/services/deployment-mcp/entrypoint.js +0 -51
  162. package/docker/services/flow-composer-mcp/Dockerfile +0 -32
  163. package/docker/services/flow-composer-mcp/config/service.json +0 -28
  164. package/docker/services/flow-composer-mcp/entrypoint.js +0 -51
  165. package/docker/services/graph-memory-mcp/Dockerfile +0 -32
  166. package/docker/services/graph-memory-mcp/config/service.json +0 -28
  167. package/docker/services/graph-memory-mcp/entrypoint.js +0 -51
  168. package/docker/services/integration-mcp/Dockerfile +0 -32
  169. package/docker/services/integration-mcp/config/service.json +0 -28
  170. package/docker/services/integration-mcp/entrypoint.js +0 -51
  171. package/docker/services/intelligent-mcp/Dockerfile +0 -32
  172. package/docker/services/intelligent-mcp/config/service.json +0 -28
  173. package/docker/services/intelligent-mcp/entrypoint.js +0 -51
  174. package/docker/services/operations-mcp/Dockerfile +0 -32
  175. package/docker/services/operations-mcp/config/service.json +0 -28
  176. package/docker/services/operations-mcp/entrypoint.js +0 -51
  177. package/docker/services/platform-development-mcp/Dockerfile +0 -32
  178. package/docker/services/platform-development-mcp/config/service.json +0 -28
  179. package/docker/services/platform-development-mcp/entrypoint.js +0 -51
  180. package/docker/services/reporting-analytics-mcp/Dockerfile +0 -32
  181. package/docker/services/reporting-analytics-mcp/config/service.json +0 -28
  182. package/docker/services/reporting-analytics-mcp/entrypoint.js +0 -51
  183. package/docker/services/security-compliance-mcp/Dockerfile +0 -32
  184. package/docker/services/security-compliance-mcp/config/service.json +0 -28
  185. package/docker/services/security-compliance-mcp/entrypoint.js +0 -51
  186. package/docker/services/update-set-mcp/Dockerfile +0 -32
  187. package/docker/services/update-set-mcp/config/service.json +0 -28
  188. package/docker/services/update-set-mcp/entrypoint.js +0 -51
  189. package/docker-compose.override.yml +0 -132
  190. package/docker-compose.prod.yml +0 -340
  191. package/docker-compose.yml +0 -579
  192. package/k8s/automation-mcp.yaml +0 -232
  193. package/k8s/configmap.yaml +0 -237
  194. package/k8s/deployment-mcp.yaml +0 -232
  195. package/k8s/flow-composer-mcp.yaml +0 -232
  196. package/k8s/generate-k8s-manifests.js +0 -453
  197. package/k8s/graph-memory-mcp.yaml +0 -232
  198. package/k8s/infrastructure.yaml +0 -456
  199. package/k8s/ingress.yaml +0 -361
  200. package/k8s/integration-mcp.yaml +0 -232
  201. package/k8s/intelligent-mcp.yaml +0 -232
  202. package/k8s/kustomization.yaml +0 -111
  203. package/k8s/mcp-services.yaml +0 -2552
  204. package/k8s/monitoring.yaml +0 -515
  205. package/k8s/namespace.yaml +0 -80
  206. package/k8s/operations-mcp.yaml +0 -232
  207. package/k8s/platform-development-mcp.yaml +0 -232
  208. package/k8s/rbac.yaml +0 -140
  209. package/k8s/reporting-analytics-mcp.yaml +0 -232
  210. package/k8s/security-compliance-mcp.yaml +0 -232
  211. package/k8s/update-set-mcp.yaml +0 -232
  212. package/test-clean-install/.claude/config.json +0 -12
  213. package/test-clean-install/.env.example +0 -49
  214. package/test-clean-install/CLAUDE.md +0 -26
  215. package/test-clean-install/README.md +0 -23
  216. package/test-global-install/.claude/config.json +0 -12
  217. package/test-global-install/CLAUDE.md +0 -26
  218. package/test-global-install/README.md +0 -23
  219. package/test-global-install/test-global-install/.claude/config.json +0 -12
  220. package/test-global-install/test-global-install/CLAUDE.md +0 -26
  221. package/test-global-install/test-global-install/README.md +0 -23
  222. package/test-global-install/test-global-install/test-global-install/.claude/config.json +0 -12
  223. package/test-global-install/test-global-install/test-global-install/.env.example +0 -49
  224. package/test-global-install/test-global-install/test-global-install/CLAUDE.md +0 -26
  225. package/test-global-install/test-global-install/test-global-install/README.md +0 -23
  226. package/test-init-debug/.claude/config.json +0 -12
  227. package/test-init-debug/CLAUDE.md +0 -693
  228. package/test-init-debug/README.md +0 -392
  229. package/test-init-real/.claude/config.json +0 -12
  230. package/test-init-real/.claude/mcp-config.json +0 -128
  231. package/test-init-real/.claude/settings.json +0 -37
  232. package/test-init-real/CLAUDE.md +0 -693
  233. package/test-init-real/README.md +0 -392
  234. package/test-init-real/activate-mcp.sh +0 -15
@@ -0,0 +1,639 @@
1
+ "use strict";
2
+ /**
3
+ * Snow-Flow Memory Operations
4
+ * High-level operations for agent coordination and data management
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.MemoryOperations = void 0;
8
+ const uuid_1 = require("uuid");
9
+ const logger_js_1 = require("../utils/logger.js");
10
+ class MemoryOperations {
11
+ constructor(memory) {
12
+ this.memory = memory;
13
+ this.logger = new logger_js_1.Logger('MemoryOperations');
14
+ }
15
+ // ==================== Agent Coordination Operations ====================
16
+ /**
17
+ * Register a new agent in the coordination system
18
+ */
19
+ async registerAgent(session_id, agent_id, agent_type, assigned_tasks = []) {
20
+ try {
21
+ this.memory.run(`
22
+ INSERT OR REPLACE INTO agent_coordination
23
+ (session_id, agent_id, agent_type, status, assigned_tasks, progress_percentage, last_activity)
24
+ VALUES (?, ?, ?, 'spawned', ?, 0, datetime('now'))
25
+ `, [session_id, agent_id, agent_type, JSON.stringify(assigned_tasks)]);
26
+ this.logger.info('Agent registered', { session_id, agent_id, agent_type });
27
+ }
28
+ catch (error) {
29
+ this.logger.error('Failed to register agent', error);
30
+ throw error;
31
+ }
32
+ }
33
+ /**
34
+ * Update agent status and progress
35
+ */
36
+ async updateAgentStatus(session_id, agent_id, updates) {
37
+ const setters = ["last_activity = datetime('now')"];
38
+ const params = [];
39
+ if (updates.status !== undefined) {
40
+ setters.push('status = ?');
41
+ params.push(updates.status);
42
+ }
43
+ if (updates.progress_percentage !== undefined) {
44
+ setters.push('progress_percentage = ?');
45
+ params.push(updates.progress_percentage);
46
+ }
47
+ if (updates.current_tool !== undefined) {
48
+ setters.push('current_tool = ?');
49
+ params.push(updates.current_tool);
50
+ }
51
+ if (updates.error_state !== undefined) {
52
+ setters.push('error_state = ?');
53
+ params.push(updates.error_state);
54
+ }
55
+ if (updates.assigned_tasks !== undefined) {
56
+ setters.push('assigned_tasks = ?');
57
+ params.push(updates.assigned_tasks);
58
+ }
59
+ params.push(session_id, agent_id);
60
+ try {
61
+ this.memory.run(`
62
+ UPDATE agent_coordination
63
+ SET ${setters.join(', ')}
64
+ WHERE session_id = ? AND agent_id = ?
65
+ `, params);
66
+ this.logger.debug('Agent status updated', { session_id, agent_id, updates });
67
+ }
68
+ catch (error) {
69
+ this.logger.error('Failed to update agent status', error);
70
+ throw error;
71
+ }
72
+ }
73
+ /**
74
+ * Get all active agents for a session
75
+ */
76
+ async getActiveAgents(session_id) {
77
+ return this.memory.all(`
78
+ SELECT * FROM agent_coordination
79
+ WHERE session_id = ? AND status IN ('spawned', 'active', 'blocked')
80
+ ORDER BY last_activity DESC
81
+ `, [session_id]);
82
+ }
83
+ /**
84
+ * Get agent coordination status
85
+ */
86
+ async getAgentStatus(session_id, agent_id) {
87
+ return this.memory.get(`
88
+ SELECT * FROM agent_coordination
89
+ WHERE session_id = ? AND agent_id = ?
90
+ `, [session_id, agent_id]);
91
+ }
92
+ // ==================== ServiceNow Artifact Operations ====================
93
+ /**
94
+ * Store a ServiceNow artifact
95
+ */
96
+ async storeArtifact(artifact) {
97
+ try {
98
+ this.memory.run(`
99
+ INSERT OR REPLACE INTO servicenow_artifacts
100
+ (sys_id, artifact_type, name, description, created_by_agent, session_id,
101
+ deployment_status, update_set_id, dependencies, metadata)
102
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
103
+ `, [
104
+ artifact.sys_id,
105
+ artifact.artifact_type,
106
+ artifact.name,
107
+ artifact.description || null,
108
+ artifact.created_by_agent,
109
+ artifact.session_id,
110
+ artifact.deployment_status,
111
+ artifact.update_set_id || null,
112
+ artifact.dependencies || null,
113
+ artifact.metadata || null
114
+ ]);
115
+ this.logger.info('Artifact stored', {
116
+ sys_id: artifact.sys_id,
117
+ type: artifact.artifact_type,
118
+ name: artifact.name
119
+ });
120
+ }
121
+ catch (error) {
122
+ this.logger.error('Failed to store artifact', error);
123
+ throw error;
124
+ }
125
+ }
126
+ /**
127
+ * Update artifact deployment status
128
+ */
129
+ async updateArtifactStatus(sys_id, deployment_status) {
130
+ try {
131
+ this.memory.run(`
132
+ UPDATE servicenow_artifacts
133
+ SET deployment_status = ?, updated_at = datetime('now')
134
+ WHERE sys_id = ?
135
+ `, [deployment_status, sys_id]);
136
+ this.logger.debug('Artifact status updated', { sys_id, deployment_status });
137
+ }
138
+ catch (error) {
139
+ this.logger.error('Failed to update artifact status', error);
140
+ throw error;
141
+ }
142
+ }
143
+ /**
144
+ * Search for artifacts
145
+ */
146
+ async searchArtifacts(options = {}) {
147
+ const conditions = [];
148
+ const params = [];
149
+ if (options.session_id) {
150
+ conditions.push('session_id = ?');
151
+ params.push(options.session_id);
152
+ }
153
+ if (options.artifact_type) {
154
+ conditions.push('artifact_type = ?');
155
+ params.push(options.artifact_type);
156
+ }
157
+ if (options.deployment_status) {
158
+ conditions.push('deployment_status = ?');
159
+ params.push(options.deployment_status);
160
+ }
161
+ if (options.created_by_agent) {
162
+ conditions.push('created_by_agent = ?');
163
+ params.push(options.created_by_agent);
164
+ }
165
+ const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
166
+ const limitClause = options.limit ? `LIMIT ${options.limit}` : '';
167
+ return this.memory.all(`
168
+ SELECT * FROM servicenow_artifacts
169
+ ${whereClause}
170
+ ORDER BY updated_at DESC
171
+ ${limitClause}
172
+ `, params);
173
+ }
174
+ /**
175
+ * Get artifact by sys_id
176
+ */
177
+ async getArtifact(sys_id) {
178
+ return this.memory.get(`
179
+ SELECT * FROM servicenow_artifacts
180
+ WHERE sys_id = ?
181
+ `, [sys_id]);
182
+ }
183
+ // ==================== Agent Message Operations ====================
184
+ /**
185
+ * Send a message between agents
186
+ */
187
+ async sendMessage(session_id, from_agent, to_agent, message_type, content, artifact_reference) {
188
+ const id = (0, uuid_1.v4)();
189
+ try {
190
+ this.memory.run(`
191
+ INSERT INTO agent_messages
192
+ (id, session_id, from_agent, to_agent, message_type, content, artifact_reference, processed)
193
+ VALUES (?, ?, ?, ?, ?, ?, ?, 0)
194
+ `, [
195
+ id,
196
+ session_id,
197
+ from_agent,
198
+ to_agent,
199
+ message_type,
200
+ typeof content === 'string' ? content : JSON.stringify(content),
201
+ artifact_reference || null
202
+ ]);
203
+ this.logger.debug('Message sent', { id, from_agent, to_agent, message_type });
204
+ return id;
205
+ }
206
+ catch (error) {
207
+ this.logger.error('Failed to send message', error);
208
+ throw error;
209
+ }
210
+ }
211
+ /**
212
+ * Get unprocessed messages for an agent
213
+ */
214
+ async getUnprocessedMessages(to_agent, session_id) {
215
+ const conditions = ['to_agent = ?', 'processed = 0'];
216
+ const params = [to_agent];
217
+ if (session_id) {
218
+ conditions.push('session_id = ?');
219
+ params.push(session_id);
220
+ }
221
+ return this.memory.all(`
222
+ SELECT * FROM agent_messages
223
+ WHERE ${conditions.join(' AND ')}
224
+ ORDER BY timestamp ASC
225
+ `, params);
226
+ }
227
+ /**
228
+ * Mark message as processed
229
+ */
230
+ async markMessageProcessed(message_id) {
231
+ try {
232
+ this.memory.run(`
233
+ UPDATE agent_messages
234
+ SET processed = 1
235
+ WHERE id = ?
236
+ `, [message_id]);
237
+ this.logger.debug('Message marked as processed', { message_id });
238
+ }
239
+ catch (error) {
240
+ this.logger.error('Failed to mark message as processed', error);
241
+ throw error;
242
+ }
243
+ }
244
+ /**
245
+ * Search messages
246
+ */
247
+ async searchMessages(options = {}) {
248
+ const conditions = [];
249
+ const params = [];
250
+ if (options.session_id) {
251
+ conditions.push('session_id = ?');
252
+ params.push(options.session_id);
253
+ }
254
+ if (options.to_agent) {
255
+ conditions.push('to_agent = ?');
256
+ params.push(options.to_agent);
257
+ }
258
+ if (options.from_agent) {
259
+ conditions.push('from_agent = ?');
260
+ params.push(options.from_agent);
261
+ }
262
+ if (options.message_type) {
263
+ conditions.push('message_type = ?');
264
+ params.push(options.message_type);
265
+ }
266
+ if (options.processed !== undefined) {
267
+ conditions.push('processed = ?');
268
+ params.push(options.processed ? 1 : 0);
269
+ }
270
+ const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
271
+ const limitClause = options.limit ? `LIMIT ${options.limit}` : '';
272
+ return this.memory.all(`
273
+ SELECT * FROM agent_messages
274
+ ${whereClause}
275
+ ORDER BY timestamp DESC
276
+ ${limitClause}
277
+ `, params);
278
+ }
279
+ // ==================== Shared Context Operations ====================
280
+ /**
281
+ * Store shared context
282
+ */
283
+ async setContext(session_id, context_key, context_value, created_by_agent, expires_at, access_permissions) {
284
+ try {
285
+ this.memory.run(`
286
+ INSERT OR REPLACE INTO shared_context
287
+ (session_id, context_key, context_value, created_by_agent, expires_at, access_permissions)
288
+ VALUES (?, ?, ?, ?, ?, ?)
289
+ `, [
290
+ session_id,
291
+ context_key,
292
+ typeof context_value === 'string' ? context_value : JSON.stringify(context_value),
293
+ created_by_agent,
294
+ expires_at ? expires_at.toISOString() : null,
295
+ access_permissions ? JSON.stringify(access_permissions) : null
296
+ ]);
297
+ this.logger.debug('Context stored', { session_id, context_key, created_by_agent });
298
+ }
299
+ catch (error) {
300
+ this.logger.error('Failed to store context', error);
301
+ throw error;
302
+ }
303
+ }
304
+ /**
305
+ * Get shared context
306
+ */
307
+ async getContext(session_id, context_key) {
308
+ const result = this.memory.get(`
309
+ SELECT * FROM shared_context
310
+ WHERE session_id = ? AND context_key = ?
311
+ AND (expires_at IS NULL OR expires_at > datetime('now'))
312
+ `, [session_id, context_key]);
313
+ if (result) {
314
+ try {
315
+ // Try to parse JSON values
316
+ if (result.context_value && result.context_value.startsWith('{') || result.context_value.startsWith('[')) {
317
+ result.context_value = JSON.parse(result.context_value);
318
+ }
319
+ if (result.access_permissions) {
320
+ result.access_permissions = JSON.parse(result.access_permissions);
321
+ }
322
+ }
323
+ catch (e) {
324
+ // If parsing fails, return as-is
325
+ }
326
+ }
327
+ return result;
328
+ }
329
+ /**
330
+ * Get all context for a session
331
+ */
332
+ async getSessionContext(session_id) {
333
+ const results = this.memory.all(`
334
+ SELECT * FROM shared_context
335
+ WHERE session_id = ?
336
+ AND (expires_at IS NULL OR expires_at > datetime('now'))
337
+ ORDER BY updated_at DESC
338
+ `, [session_id]);
339
+ // Parse JSON values
340
+ return results.map(result => {
341
+ try {
342
+ if (result.context_value && (result.context_value.startsWith('{') || result.context_value.startsWith('['))) {
343
+ result.context_value = JSON.parse(result.context_value);
344
+ }
345
+ if (result.access_permissions) {
346
+ result.access_permissions = JSON.parse(result.access_permissions);
347
+ }
348
+ }
349
+ catch (e) {
350
+ // If parsing fails, return as-is
351
+ }
352
+ return result;
353
+ });
354
+ }
355
+ // ==================== Deployment History Operations ====================
356
+ /**
357
+ * Record deployment event
358
+ */
359
+ async recordDeployment(session_id, artifact_sys_id, deployment_type, agent_id, success, error_details, rollback_available = false) {
360
+ const id = (0, uuid_1.v4)();
361
+ try {
362
+ this.memory.run(`
363
+ INSERT INTO deployment_history
364
+ (id, session_id, artifact_sys_id, deployment_type, success, agent_id, error_details, rollback_available)
365
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
366
+ `, [
367
+ id,
368
+ session_id,
369
+ artifact_sys_id,
370
+ deployment_type,
371
+ success ? 1 : 0,
372
+ agent_id,
373
+ error_details || null,
374
+ rollback_available ? 1 : 0
375
+ ]);
376
+ this.logger.info('Deployment recorded', {
377
+ id,
378
+ artifact_sys_id,
379
+ deployment_type,
380
+ success
381
+ });
382
+ return id;
383
+ }
384
+ catch (error) {
385
+ this.logger.error('Failed to record deployment', error);
386
+ throw error;
387
+ }
388
+ }
389
+ /**
390
+ * Get deployment history for an artifact
391
+ */
392
+ async getDeploymentHistory(artifact_sys_id) {
393
+ return this.memory.all(`
394
+ SELECT * FROM deployment_history
395
+ WHERE artifact_sys_id = ?
396
+ ORDER BY deployment_time DESC
397
+ `, [artifact_sys_id]);
398
+ }
399
+ /**
400
+ * Get latest deployment for an artifact
401
+ */
402
+ async getLatestDeployment(artifact_sys_id) {
403
+ return this.memory.get(`
404
+ SELECT * FROM deployment_history
405
+ WHERE artifact_sys_id = ?
406
+ ORDER BY deployment_time DESC
407
+ LIMIT 1
408
+ `, [artifact_sys_id]);
409
+ }
410
+ // ==================== Agent Dependency Operations ====================
411
+ /**
412
+ * Add agent dependency
413
+ */
414
+ async addDependency(session_id, agent_id, depends_on_agent, dependency_type, artifact_reference) {
415
+ try {
416
+ this.memory.run(`
417
+ INSERT OR REPLACE INTO agent_dependencies
418
+ (session_id, agent_id, depends_on_agent, dependency_type, artifact_reference, status)
419
+ VALUES (?, ?, ?, ?, ?, 'pending')
420
+ `, [
421
+ session_id,
422
+ agent_id,
423
+ depends_on_agent,
424
+ dependency_type,
425
+ artifact_reference || null
426
+ ]);
427
+ this.logger.debug('Dependency added', {
428
+ session_id,
429
+ agent_id,
430
+ depends_on_agent,
431
+ dependency_type
432
+ });
433
+ }
434
+ catch (error) {
435
+ this.logger.error('Failed to add dependency', error);
436
+ throw error;
437
+ }
438
+ }
439
+ /**
440
+ * Mark dependency as satisfied
441
+ */
442
+ async satisfyDependency(session_id, agent_id, depends_on_agent) {
443
+ try {
444
+ this.memory.run(`
445
+ UPDATE agent_dependencies
446
+ SET status = 'satisfied', satisfied_at = datetime('now')
447
+ WHERE session_id = ? AND agent_id = ? AND depends_on_agent = ?
448
+ `, [session_id, agent_id, depends_on_agent]);
449
+ this.logger.debug('Dependency satisfied', {
450
+ session_id,
451
+ agent_id,
452
+ depends_on_agent
453
+ });
454
+ }
455
+ catch (error) {
456
+ this.logger.error('Failed to satisfy dependency', error);
457
+ throw error;
458
+ }
459
+ }
460
+ /**
461
+ * Get pending dependencies for an agent
462
+ */
463
+ async getPendingDependencies(session_id, agent_id) {
464
+ return this.memory.all(`
465
+ SELECT * FROM agent_dependencies
466
+ WHERE session_id = ? AND agent_id = ? AND status = 'pending'
467
+ ORDER BY created_at ASC
468
+ `, [session_id, agent_id]);
469
+ }
470
+ /**
471
+ * Check if all dependencies are satisfied
472
+ */
473
+ async checkDependenciesSatisfied(session_id, agent_id) {
474
+ const pending = this.memory.get(`
475
+ SELECT COUNT(*) as count FROM agent_dependencies
476
+ WHERE session_id = ? AND agent_id = ? AND status = 'pending'
477
+ `, [session_id, agent_id]);
478
+ return pending?.count === 0;
479
+ }
480
+ // ==================== Performance Metric Operations ====================
481
+ /**
482
+ * Start performance tracking
483
+ */
484
+ startPerformanceTracking(session_id, agent_id, operation_name) {
485
+ return {
486
+ id: (0, uuid_1.v4)(),
487
+ startTime: Date.now()
488
+ };
489
+ }
490
+ /**
491
+ * Complete performance tracking
492
+ */
493
+ async completePerformanceTracking(tracking, session_id, agent_id, operation_name, success, error_message, metadata) {
494
+ const duration_ms = Date.now() - tracking.startTime;
495
+ try {
496
+ this.memory.run(`
497
+ INSERT INTO performance_metrics
498
+ (id, session_id, agent_id, operation_name, duration_ms, success, error_message, metadata)
499
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
500
+ `, [
501
+ tracking.id,
502
+ session_id,
503
+ agent_id,
504
+ operation_name,
505
+ duration_ms,
506
+ success ? 1 : 0,
507
+ error_message || null,
508
+ metadata ? JSON.stringify(metadata) : null
509
+ ]);
510
+ this.logger.debug('Performance metric recorded', {
511
+ id: tracking.id,
512
+ operation_name,
513
+ duration_ms,
514
+ success
515
+ });
516
+ }
517
+ catch (error) {
518
+ this.logger.error('Failed to record performance metric', error);
519
+ throw error;
520
+ }
521
+ }
522
+ /**
523
+ * Query performance metrics
524
+ */
525
+ async queryPerformanceMetrics(query = {}) {
526
+ const conditions = [];
527
+ const params = [];
528
+ if (query.session_id) {
529
+ conditions.push('session_id = ?');
530
+ params.push(query.session_id);
531
+ }
532
+ if (query.agent_id) {
533
+ conditions.push('agent_id = ?');
534
+ params.push(query.agent_id);
535
+ }
536
+ if (query.operation_name) {
537
+ conditions.push('operation_name = ?');
538
+ params.push(query.operation_name);
539
+ }
540
+ if (query.success !== undefined) {
541
+ conditions.push('success = ?');
542
+ params.push(query.success ? 1 : 0);
543
+ }
544
+ if (query.start_time) {
545
+ conditions.push('timestamp >= ?');
546
+ params.push(query.start_time.toISOString());
547
+ }
548
+ if (query.end_time) {
549
+ conditions.push('timestamp <= ?');
550
+ params.push(query.end_time.toISOString());
551
+ }
552
+ const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
553
+ const limitClause = query.limit ? `LIMIT ${query.limit}` : '';
554
+ return this.memory.all(`
555
+ SELECT * FROM performance_metrics
556
+ ${whereClause}
557
+ ORDER BY timestamp DESC
558
+ ${limitClause}
559
+ `, params);
560
+ }
561
+ /**
562
+ * Get average performance for an operation
563
+ */
564
+ async getAveragePerformance(operation_name, session_id) {
565
+ const conditions = ['operation_name = ?'];
566
+ const params = [operation_name];
567
+ if (session_id) {
568
+ conditions.push('session_id = ?');
569
+ params.push(session_id);
570
+ }
571
+ return this.memory.get(`
572
+ SELECT
573
+ AVG(duration_ms) as avg_duration_ms,
574
+ AVG(CASE WHEN success = 1 THEN 1.0 ELSE 0.0 END) as success_rate,
575
+ COUNT(*) as total_operations
576
+ FROM performance_metrics
577
+ WHERE ${conditions.join(' AND ')}
578
+ `, params);
579
+ }
580
+ // ==================== Session Management ====================
581
+ /**
582
+ * Get complete session state
583
+ */
584
+ async getSessionState(session_id) {
585
+ const agents = await this.getActiveAgents(session_id);
586
+ const artifacts = await this.searchArtifacts({ session_id });
587
+ const activeContext = await this.getSessionContext(session_id);
588
+ const pendingMessages = this.memory.get(`
589
+ SELECT COUNT(*) as count FROM agent_messages
590
+ WHERE session_id = ? AND processed = 0
591
+ `, [session_id])?.count || 0;
592
+ const performanceSummary = this.memory.get(`
593
+ SELECT
594
+ COUNT(*) as total_operations,
595
+ AVG(duration_ms) as avg_duration_ms,
596
+ MIN(duration_ms) as min_duration_ms,
597
+ MAX(duration_ms) as max_duration_ms,
598
+ AVG(CASE WHEN success = 1 THEN 1.0 ELSE 0.0 END) as success_rate
599
+ FROM performance_metrics
600
+ WHERE session_id = ?
601
+ `, [session_id]);
602
+ return {
603
+ agents,
604
+ artifacts,
605
+ pendingMessages,
606
+ activeContext,
607
+ performanceSummary
608
+ };
609
+ }
610
+ /**
611
+ * Clean up session data
612
+ */
613
+ async cleanupSession(session_id) {
614
+ this.logger.info('Cleaning up session', { session_id });
615
+ this.memory.transaction(() => {
616
+ // Mark all agents as completed
617
+ this.memory.run(`
618
+ UPDATE agent_coordination
619
+ SET status = 'completed'
620
+ WHERE session_id = ? AND status IN ('spawned', 'active', 'blocked')
621
+ `, [session_id]);
622
+ // Mark all messages as processed
623
+ this.memory.run(`
624
+ UPDATE agent_messages
625
+ SET processed = 1
626
+ WHERE session_id = ? AND processed = 0
627
+ `, [session_id]);
628
+ // Mark all dependencies as satisfied or failed
629
+ this.memory.run(`
630
+ UPDATE agent_dependencies
631
+ SET status = 'failed'
632
+ WHERE session_id = ? AND status = 'pending'
633
+ `, [session_id]);
634
+ });
635
+ this.logger.info('Session cleanup completed', { session_id });
636
+ }
637
+ }
638
+ exports.MemoryOperations = MemoryOperations;
639
+ //# sourceMappingURL=memory-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-operations.js","sourceRoot":"","sources":["../../src/memory/memory-operations.ts"],"names":[],"mappings":"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"}