agentic-qe 1.8.3 → 1.9.0

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 (290) hide show
  1. package/.claude/skills/agentic-jujutsu/SKILL.md +645 -0
  2. package/.claude/skills/cicd-pipeline-qe-orchestrator/README.md +2 -2
  3. package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +6 -6
  4. package/CHANGELOG.md +595 -0
  5. package/README.md +117 -16
  6. package/config/constitution.schema.json +423 -0
  7. package/config/otel-collector.yaml +234 -0
  8. package/dist/App.d.ts +5 -0
  9. package/dist/App.d.ts.map +1 -0
  10. package/dist/App.js +15 -0
  11. package/dist/App.js.map +1 -0
  12. package/dist/cli/commands/constitution.d.ts +34 -0
  13. package/dist/cli/commands/constitution.d.ts.map +1 -0
  14. package/dist/cli/commands/constitution.js +679 -0
  15. package/dist/cli/commands/constitution.js.map +1 -0
  16. package/dist/cli/commands/init-claude-md-template.js +3 -3
  17. package/dist/cli/commands/init.d.ts +8 -75
  18. package/dist/cli/commands/init.d.ts.map +1 -1
  19. package/dist/cli/commands/init.js +22 -2292
  20. package/dist/cli/commands/init.js.map +1 -1
  21. package/dist/cli/commands/telemetry.d.ts +36 -0
  22. package/dist/cli/commands/telemetry.d.ts.map +1 -0
  23. package/dist/cli/commands/telemetry.js +364 -0
  24. package/dist/cli/commands/telemetry.js.map +1 -0
  25. package/dist/cli/index.js +66 -0
  26. package/dist/cli/index.js.map +1 -1
  27. package/dist/cli/init/agents.d.ts +22 -0
  28. package/dist/cli/init/agents.d.ts.map +1 -0
  29. package/dist/cli/init/agents.js +522 -0
  30. package/dist/cli/init/agents.js.map +1 -0
  31. package/dist/cli/init/bash-wrapper.d.ts +14 -0
  32. package/dist/cli/init/bash-wrapper.d.ts.map +1 -0
  33. package/dist/cli/init/bash-wrapper.js +47 -0
  34. package/dist/cli/init/bash-wrapper.js.map +1 -0
  35. package/dist/cli/init/claude-config.d.ts +24 -0
  36. package/dist/cli/init/claude-config.d.ts.map +1 -0
  37. package/dist/cli/init/claude-config.js +275 -0
  38. package/dist/cli/init/claude-config.js.map +1 -0
  39. package/dist/cli/init/claude-md.d.ts +19 -0
  40. package/dist/cli/init/claude-md.d.ts.map +1 -0
  41. package/dist/cli/init/claude-md.js +153 -0
  42. package/dist/cli/init/claude-md.js.map +1 -0
  43. package/dist/cli/init/commands.d.ts +6 -0
  44. package/dist/cli/init/commands.d.ts.map +1 -0
  45. package/dist/cli/init/commands.js +83 -0
  46. package/dist/cli/init/commands.js.map +1 -0
  47. package/dist/cli/init/database-init.d.ts +15 -0
  48. package/dist/cli/init/database-init.d.ts.map +1 -0
  49. package/dist/cli/init/database-init.js +203 -0
  50. package/dist/cli/init/database-init.js.map +1 -0
  51. package/dist/cli/init/directory-structure.d.ts +14 -0
  52. package/dist/cli/init/directory-structure.d.ts.map +1 -0
  53. package/dist/cli/init/directory-structure.js +107 -0
  54. package/dist/cli/init/directory-structure.js.map +1 -0
  55. package/dist/cli/init/documentation.d.ts +14 -0
  56. package/dist/cli/init/documentation.d.ts.map +1 -0
  57. package/dist/cli/init/documentation.js +195 -0
  58. package/dist/cli/init/documentation.js.map +1 -0
  59. package/dist/cli/init/fleet-config.d.ts +34 -0
  60. package/dist/cli/init/fleet-config.d.ts.map +1 -0
  61. package/dist/cli/init/fleet-config.js +269 -0
  62. package/dist/cli/init/fleet-config.js.map +1 -0
  63. package/dist/cli/init/helpers.d.ts +6 -0
  64. package/dist/cli/init/helpers.d.ts.map +1 -0
  65. package/dist/cli/init/helpers.js +94 -0
  66. package/dist/cli/init/helpers.js.map +1 -0
  67. package/dist/cli/init/index.d.ts +32 -0
  68. package/dist/cli/init/index.d.ts.map +1 -0
  69. package/dist/cli/init/index.js +294 -0
  70. package/dist/cli/init/index.js.map +1 -0
  71. package/dist/cli/init/skills.d.ts +6 -0
  72. package/dist/cli/init/skills.d.ts.map +1 -0
  73. package/dist/cli/init/skills.js +138 -0
  74. package/dist/cli/init/skills.js.map +1 -0
  75. package/dist/cli/init/utils/file-utils.d.ts +74 -0
  76. package/dist/cli/init/utils/file-utils.d.ts.map +1 -0
  77. package/dist/cli/init/utils/file-utils.js +187 -0
  78. package/dist/cli/init/utils/file-utils.js.map +1 -0
  79. package/dist/cli/init/utils/index.d.ts +18 -0
  80. package/dist/cli/init/utils/index.d.ts.map +1 -0
  81. package/dist/cli/init/utils/index.js +48 -0
  82. package/dist/cli/init/utils/index.js.map +1 -0
  83. package/dist/cli/init/utils/log-utils.d.ts +47 -0
  84. package/dist/cli/init/utils/log-utils.d.ts.map +1 -0
  85. package/dist/cli/init/utils/log-utils.js +68 -0
  86. package/dist/cli/init/utils/log-utils.js.map +1 -0
  87. package/dist/cli/init/utils/path-utils.d.ts +91 -0
  88. package/dist/cli/init/utils/path-utils.d.ts.map +1 -0
  89. package/dist/cli/init/utils/path-utils.js +208 -0
  90. package/dist/cli/init/utils/path-utils.js.map +1 -0
  91. package/dist/cli/init/utils/validation-utils.d.ts +44 -0
  92. package/dist/cli/init/utils/validation-utils.d.ts.map +1 -0
  93. package/dist/cli/init/utils/validation-utils.js +68 -0
  94. package/dist/cli/init/utils/validation-utils.js.map +1 -0
  95. package/dist/cli/init/utils.d.ts +183 -0
  96. package/dist/cli/init/utils.d.ts.map +1 -0
  97. package/dist/cli/init/utils.js +354 -0
  98. package/dist/cli/init/utils.js.map +1 -0
  99. package/dist/components/Dashboard/Dashboard.d.ts +4 -0
  100. package/dist/components/Dashboard/Dashboard.d.ts.map +1 -0
  101. package/dist/components/Dashboard/Dashboard.js +148 -0
  102. package/dist/components/Dashboard/Dashboard.js.map +1 -0
  103. package/dist/components/Dashboard/DashboardHeader.d.ts +4 -0
  104. package/dist/components/Dashboard/DashboardHeader.d.ts.map +1 -0
  105. package/dist/components/Dashboard/DashboardHeader.js +138 -0
  106. package/dist/components/Dashboard/DashboardHeader.js.map +1 -0
  107. package/dist/constitution/evaluators/ast-evaluator.d.ts +42 -0
  108. package/dist/constitution/evaluators/ast-evaluator.d.ts.map +1 -0
  109. package/dist/constitution/evaluators/ast-evaluator.js +303 -0
  110. package/dist/constitution/evaluators/ast-evaluator.js.map +1 -0
  111. package/dist/constitution/evaluators/base.d.ts +144 -0
  112. package/dist/constitution/evaluators/base.d.ts.map +1 -0
  113. package/dist/constitution/evaluators/base.js +144 -0
  114. package/dist/constitution/evaluators/base.js.map +1 -0
  115. package/dist/constitution/evaluators/index.d.ts +19 -0
  116. package/dist/constitution/evaluators/index.d.ts.map +1 -0
  117. package/dist/constitution/evaluators/index.js +56 -0
  118. package/dist/constitution/evaluators/index.js.map +1 -0
  119. package/dist/constitution/evaluators/metric-evaluator.d.ts +59 -0
  120. package/dist/constitution/evaluators/metric-evaluator.d.ts.map +1 -0
  121. package/dist/constitution/evaluators/metric-evaluator.js +195 -0
  122. package/dist/constitution/evaluators/metric-evaluator.js.map +1 -0
  123. package/dist/constitution/evaluators/pattern-evaluator.d.ts +66 -0
  124. package/dist/constitution/evaluators/pattern-evaluator.d.ts.map +1 -0
  125. package/dist/constitution/evaluators/pattern-evaluator.js +221 -0
  126. package/dist/constitution/evaluators/pattern-evaluator.js.map +1 -0
  127. package/dist/constitution/evaluators/semantic-evaluator.d.ts +68 -0
  128. package/dist/constitution/evaluators/semantic-evaluator.d.ts.map +1 -0
  129. package/dist/constitution/evaluators/semantic-evaluator.js +250 -0
  130. package/dist/constitution/evaluators/semantic-evaluator.js.map +1 -0
  131. package/dist/constitution/index.d.ts +105 -0
  132. package/dist/constitution/index.d.ts.map +1 -0
  133. package/dist/constitution/index.js +207 -0
  134. package/dist/constitution/index.js.map +1 -0
  135. package/dist/constitution/loader.d.ts +141 -0
  136. package/dist/constitution/loader.d.ts.map +1 -0
  137. package/dist/constitution/loader.js +515 -0
  138. package/dist/constitution/loader.js.map +1 -0
  139. package/dist/constitution/schema.d.ts +409 -0
  140. package/dist/constitution/schema.d.ts.map +1 -0
  141. package/dist/constitution/schema.js +71 -0
  142. package/dist/constitution/schema.js.map +1 -0
  143. package/dist/contexts/DashboardContext.d.ts +41 -0
  144. package/dist/contexts/DashboardContext.d.ts.map +1 -0
  145. package/dist/contexts/DashboardContext.js +187 -0
  146. package/dist/contexts/DashboardContext.js.map +1 -0
  147. package/dist/core/memory/MemoryManagerFactory.d.ts +77 -0
  148. package/dist/core/memory/MemoryManagerFactory.d.ts.map +1 -0
  149. package/dist/core/memory/MemoryManagerFactory.js +270 -0
  150. package/dist/core/memory/MemoryManagerFactory.js.map +1 -0
  151. package/dist/core/memory/SwarmMemoryManager.d.ts +58 -0
  152. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  153. package/dist/core/memory/SwarmMemoryManager.js +375 -131
  154. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  155. package/dist/core/memory/index.d.ts +1 -0
  156. package/dist/core/memory/index.d.ts.map +1 -1
  157. package/dist/core/memory/index.js +12 -1
  158. package/dist/core/memory/index.js.map +1 -1
  159. package/dist/hooks/useKeyboardShortcuts.d.ts +12 -0
  160. package/dist/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  161. package/dist/hooks/useKeyboardShortcuts.js +69 -0
  162. package/dist/hooks/useKeyboardShortcuts.js.map +1 -0
  163. package/dist/mcp/handlers/memory/memory-backup.js +6 -6
  164. package/dist/mcp/handlers/memory/memory-backup.js.map +1 -1
  165. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -1
  166. package/dist/mcp/handlers/phase2/Phase2Tools.js +4 -2
  167. package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -1
  168. package/dist/mcp/server.d.ts.map +1 -1
  169. package/dist/mcp/server.js +4 -38
  170. package/dist/mcp/server.js.map +1 -1
  171. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  172. package/dist/mcp/services/AgentRegistry.js +4 -4
  173. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  174. package/dist/persistence/event-store.d.ts +162 -0
  175. package/dist/persistence/event-store.d.ts.map +1 -0
  176. package/dist/persistence/event-store.js +315 -0
  177. package/dist/persistence/event-store.js.map +1 -0
  178. package/dist/persistence/index.d.ts +145 -0
  179. package/dist/persistence/index.d.ts.map +1 -0
  180. package/dist/persistence/index.js +227 -0
  181. package/dist/persistence/index.js.map +1 -0
  182. package/dist/persistence/metrics-aggregator.d.ts +187 -0
  183. package/dist/persistence/metrics-aggregator.d.ts.map +1 -0
  184. package/dist/persistence/metrics-aggregator.js +495 -0
  185. package/dist/persistence/metrics-aggregator.js.map +1 -0
  186. package/dist/persistence/reasoning-store.d.ts +178 -0
  187. package/dist/persistence/reasoning-store.d.ts.map +1 -0
  188. package/dist/persistence/reasoning-store.js +440 -0
  189. package/dist/persistence/reasoning-store.js.map +1 -0
  190. package/dist/persistence/schema.d.ts +181 -0
  191. package/dist/persistence/schema.d.ts.map +1 -0
  192. package/dist/persistence/schema.js +186 -0
  193. package/dist/persistence/schema.js.map +1 -0
  194. package/dist/telemetry/bootstrap.d.ts +67 -0
  195. package/dist/telemetry/bootstrap.d.ts.map +1 -0
  196. package/dist/telemetry/bootstrap.js +320 -0
  197. package/dist/telemetry/bootstrap.js.map +1 -0
  198. package/dist/telemetry/index.d.ts +16 -0
  199. package/dist/telemetry/index.d.ts.map +1 -0
  200. package/dist/telemetry/index.js +84 -0
  201. package/dist/telemetry/index.js.map +1 -0
  202. package/dist/telemetry/instrumentation/agent.d.ts +158 -0
  203. package/dist/telemetry/instrumentation/agent.d.ts.map +1 -0
  204. package/dist/telemetry/instrumentation/agent.js +372 -0
  205. package/dist/telemetry/instrumentation/agent.js.map +1 -0
  206. package/dist/telemetry/instrumentation/index.d.ts +24 -0
  207. package/dist/telemetry/instrumentation/index.d.ts.map +1 -0
  208. package/dist/telemetry/instrumentation/index.js +54 -0
  209. package/dist/telemetry/instrumentation/index.js.map +1 -0
  210. package/dist/telemetry/instrumentation/memory.d.ts +313 -0
  211. package/dist/telemetry/instrumentation/memory.d.ts.map +1 -0
  212. package/dist/telemetry/instrumentation/memory.js +552 -0
  213. package/dist/telemetry/instrumentation/memory.js.map +1 -0
  214. package/dist/telemetry/instrumentation/task.d.ts +146 -0
  215. package/dist/telemetry/instrumentation/task.d.ts.map +1 -0
  216. package/dist/telemetry/instrumentation/task.js +305 -0
  217. package/dist/telemetry/instrumentation/task.js.map +1 -0
  218. package/dist/telemetry/metrics/agent-metrics.d.ts +109 -0
  219. package/dist/telemetry/metrics/agent-metrics.d.ts.map +1 -0
  220. package/dist/telemetry/metrics/agent-metrics.js +213 -0
  221. package/dist/telemetry/metrics/agent-metrics.js.map +1 -0
  222. package/dist/telemetry/metrics/collectors/cost.d.ts +246 -0
  223. package/dist/telemetry/metrics/collectors/cost.d.ts.map +1 -0
  224. package/dist/telemetry/metrics/collectors/cost.js +526 -0
  225. package/dist/telemetry/metrics/collectors/cost.js.map +1 -0
  226. package/dist/telemetry/metrics/collectors/pricing-config.d.ts +87 -0
  227. package/dist/telemetry/metrics/collectors/pricing-config.d.ts.map +1 -0
  228. package/dist/telemetry/metrics/collectors/pricing-config.js +207 -0
  229. package/dist/telemetry/metrics/collectors/pricing-config.js.map +1 -0
  230. package/dist/telemetry/metrics/index.d.ts +54 -0
  231. package/dist/telemetry/metrics/index.d.ts.map +1 -0
  232. package/dist/telemetry/metrics/index.js +116 -0
  233. package/dist/telemetry/metrics/index.js.map +1 -0
  234. package/dist/telemetry/metrics/quality-metrics.d.ts +171 -0
  235. package/dist/telemetry/metrics/quality-metrics.d.ts.map +1 -0
  236. package/dist/telemetry/metrics/quality-metrics.js +259 -0
  237. package/dist/telemetry/metrics/quality-metrics.js.map +1 -0
  238. package/dist/telemetry/metrics/system-metrics.d.ts +129 -0
  239. package/dist/telemetry/metrics/system-metrics.d.ts.map +1 -0
  240. package/dist/telemetry/metrics/system-metrics.js +380 -0
  241. package/dist/telemetry/metrics/system-metrics.js.map +1 -0
  242. package/dist/telemetry/types.d.ts +195 -0
  243. package/dist/telemetry/types.d.ts.map +1 -0
  244. package/dist/telemetry/types.js +90 -0
  245. package/dist/telemetry/types.js.map +1 -0
  246. package/dist/visualization/api/RestEndpoints.d.ts +136 -0
  247. package/dist/visualization/api/RestEndpoints.d.ts.map +1 -0
  248. package/dist/visualization/api/RestEndpoints.js +428 -0
  249. package/dist/visualization/api/RestEndpoints.js.map +1 -0
  250. package/dist/visualization/api/WebSocketServer.d.ts +165 -0
  251. package/dist/visualization/api/WebSocketServer.d.ts.map +1 -0
  252. package/dist/visualization/api/WebSocketServer.js +518 -0
  253. package/dist/visualization/api/WebSocketServer.js.map +1 -0
  254. package/dist/visualization/core/DataTransformer.d.ts +89 -0
  255. package/dist/visualization/core/DataTransformer.d.ts.map +1 -0
  256. package/dist/visualization/core/DataTransformer.js +478 -0
  257. package/dist/visualization/core/DataTransformer.js.map +1 -0
  258. package/dist/visualization/index.d.ts +92 -0
  259. package/dist/visualization/index.d.ts.map +1 -0
  260. package/dist/visualization/index.js +121 -0
  261. package/dist/visualization/index.js.map +1 -0
  262. package/dist/visualization/types.d.ts +148 -0
  263. package/dist/visualization/types.d.ts.map +1 -0
  264. package/dist/visualization/types.js +7 -0
  265. package/dist/visualization/types.js.map +1 -0
  266. package/dist/voting/consensus.d.ts +87 -0
  267. package/dist/voting/consensus.d.ts.map +1 -0
  268. package/dist/voting/consensus.js +568 -0
  269. package/dist/voting/consensus.js.map +1 -0
  270. package/dist/voting/index.d.ts +12 -0
  271. package/dist/voting/index.d.ts.map +1 -0
  272. package/dist/voting/index.js +36 -0
  273. package/dist/voting/index.js.map +1 -0
  274. package/dist/voting/orchestrator.d.ts +65 -0
  275. package/dist/voting/orchestrator.d.ts.map +1 -0
  276. package/dist/voting/orchestrator.js +306 -0
  277. package/dist/voting/orchestrator.js.map +1 -0
  278. package/dist/voting/panel-assembly.d.ts +54 -0
  279. package/dist/voting/panel-assembly.d.ts.map +1 -0
  280. package/dist/voting/panel-assembly.js +192 -0
  281. package/dist/voting/panel-assembly.js.map +1 -0
  282. package/dist/voting/protocol.d.ts +119 -0
  283. package/dist/voting/protocol.d.ts.map +1 -0
  284. package/dist/voting/protocol.js +18 -0
  285. package/dist/voting/protocol.js.map +1 -0
  286. package/dist/voting/types.d.ts +125 -0
  287. package/dist/voting/types.d.ts.map +1 -0
  288. package/dist/voting/types.js +7 -0
  289. package/dist/voting/types.js.map +1 -0
  290. package/package.json +43 -2
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.useDashboard = exports.DashboardProvider = void 0;
37
+ const react_1 = __importStar(require("react"));
38
+ const WebSocketClient_1 = require("../services/websocket/WebSocketClient");
39
+ const DashboardContext = (0, react_1.createContext)(undefined);
40
+ const DEFAULT_FILTERS = {
41
+ sessionId: null,
42
+ timeRange: {
43
+ start: null,
44
+ end: null,
45
+ },
46
+ agents: [],
47
+ searchTerm: '',
48
+ };
49
+ const DashboardProvider = ({ children }) => {
50
+ const [filters, setFilters] = (0, react_1.useState)(DEFAULT_FILTERS);
51
+ const [wsClient, setWsClient] = (0, react_1.useState)(null);
52
+ const [wsConnected, setWsConnected] = (0, react_1.useState)(false);
53
+ const [wsError, setWsError] = (0, react_1.useState)(null);
54
+ const [notifications, setNotifications] = (0, react_1.useState)([]);
55
+ const [activeView, setActiveView] = (0, react_1.useState)('overview');
56
+ // Initialize WebSocket connection
57
+ (0, react_1.useEffect)(() => {
58
+ const client = new WebSocketClient_1.WebSocketClient({
59
+ url: process.env.REACT_APP_WS_URL || 'ws://localhost:8081',
60
+ reconnectInterval: 3000,
61
+ maxReconnectAttempts: 5,
62
+ });
63
+ client.on('connect', () => {
64
+ setWsConnected(true);
65
+ setWsError(null);
66
+ addNotification({
67
+ type: 'success',
68
+ title: 'Connected',
69
+ message: 'WebSocket connection established',
70
+ });
71
+ });
72
+ client.on('disconnect', () => {
73
+ setWsConnected(false);
74
+ addNotification({
75
+ type: 'warning',
76
+ title: 'Disconnected',
77
+ message: 'WebSocket connection lost',
78
+ });
79
+ });
80
+ client.on('error', (error) => {
81
+ setWsError(error.message);
82
+ addNotification({
83
+ type: 'error',
84
+ title: 'Connection Error',
85
+ message: error.message,
86
+ });
87
+ });
88
+ client.on('event', (event) => {
89
+ // Notify on important events
90
+ if (event.metadata?.severity === 'high' || event.metadata?.quality_gate_failed) {
91
+ addNotification({
92
+ type: event.metadata.quality_gate_failed ? 'error' : 'warning',
93
+ title: `Event: ${event.type}`,
94
+ message: event.metadata.quality_gate_failed
95
+ ? `Quality gate violation: ${event.metadata.quality_gate_name}`
96
+ : event.description || 'New event received',
97
+ });
98
+ }
99
+ });
100
+ client.connect();
101
+ setWsClient(client);
102
+ return () => {
103
+ client.disconnect();
104
+ };
105
+ }, []);
106
+ const updateFilters = (0, react_1.useCallback)((newFilters) => {
107
+ setFilters((prev) => ({ ...prev, ...newFilters }));
108
+ }, []);
109
+ const resetFilters = (0, react_1.useCallback)(() => {
110
+ setFilters(DEFAULT_FILTERS);
111
+ }, []);
112
+ const addNotification = (0, react_1.useCallback)((notification) => {
113
+ const newNotification = {
114
+ ...notification,
115
+ id: `notif-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
116
+ timestamp: new Date(),
117
+ read: false,
118
+ };
119
+ setNotifications((prev) => [newNotification, ...prev].slice(0, 50)); // Keep last 50
120
+ }, []);
121
+ const markNotificationRead = (0, react_1.useCallback)((id) => {
122
+ setNotifications((prev) => prev.map((notif) => (notif.id === id ? { ...notif, read: true } : notif)));
123
+ }, []);
124
+ const clearNotifications = (0, react_1.useCallback)(() => {
125
+ setNotifications([]);
126
+ }, []);
127
+ const exportData = (0, react_1.useCallback)(() => {
128
+ // Export all data to JSON
129
+ const data = {
130
+ filters,
131
+ notifications,
132
+ timestamp: new Date().toISOString(),
133
+ };
134
+ const blob = new Blob([JSON.stringify(data, null, 2)], { type: 'application/json' });
135
+ const url = URL.createObjectURL(blob);
136
+ const a = document.createElement('a');
137
+ a.href = url;
138
+ a.download = `dashboard-export-${new Date().toISOString()}.json`;
139
+ document.body.appendChild(a);
140
+ a.click();
141
+ document.body.removeChild(a);
142
+ URL.revokeObjectURL(url);
143
+ addNotification({
144
+ type: 'success',
145
+ title: 'Export Complete',
146
+ message: 'Dashboard data exported successfully',
147
+ });
148
+ }, [filters, notifications, addNotification]);
149
+ const refreshData = (0, react_1.useCallback)(() => {
150
+ // Trigger refresh event
151
+ if (wsClient && wsConnected) {
152
+ wsClient.send({ type: 'refresh', timestamp: new Date().toISOString() });
153
+ }
154
+ addNotification({
155
+ type: 'info',
156
+ title: 'Refreshing',
157
+ message: 'Data refresh requested',
158
+ });
159
+ }, [wsClient, wsConnected, addNotification]);
160
+ const value = {
161
+ filters,
162
+ updateFilters,
163
+ resetFilters,
164
+ wsClient,
165
+ wsConnected,
166
+ wsError,
167
+ notifications,
168
+ addNotification,
169
+ markNotificationRead,
170
+ clearNotifications,
171
+ activeView,
172
+ setActiveView,
173
+ exportData,
174
+ refreshData,
175
+ };
176
+ return react_1.default.createElement(DashboardContext.Provider, { value: value }, children);
177
+ };
178
+ exports.DashboardProvider = DashboardProvider;
179
+ const useDashboard = () => {
180
+ const context = (0, react_1.useContext)(DashboardContext);
181
+ if (context === undefined) {
182
+ throw new Error('useDashboard must be used within a DashboardProvider');
183
+ }
184
+ return context;
185
+ };
186
+ exports.useDashboard = useDashboard;
187
+ //# sourceMappingURL=DashboardContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardContext.js","sourceRoot":"","sources":["../../src/contexts/DashboardContext.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * MemoryManagerFactory - Singleton Pattern for Shared Memory Management
3
+ *
4
+ * Resolves the persistence issue where multiple SwarmMemoryManager instances
5
+ * cause data fragmentation - data written to one instance is not visible to others.
6
+ *
7
+ * Key Issues Fixed:
8
+ * 1. Multiple isolated instances (MCP server, AgentRegistry, Phase2Tools each created their own)
9
+ * 2. sql.js persistence model requires explicit save()/close() calls
10
+ * 3. Ensures all components share the same database connection
11
+ *
12
+ * @module MemoryManagerFactory
13
+ * @version 1.0.0
14
+ */
15
+ import { SwarmMemoryManager } from './SwarmMemoryManager.js';
16
+ /**
17
+ * Resolve database path - ensures we use an absolute path in user's project
18
+ *
19
+ * Database should be in the USER'S project directory (process.cwd()),
20
+ * NOT in the package installation directory.
21
+ */
22
+ export declare function resolveDbPath(inputPath?: string): string;
23
+ /**
24
+ * Ensure the database directory exists
25
+ */
26
+ export declare function ensureDbDirectoryExists(dbPath: string): void;
27
+ /**
28
+ * Get the shared SwarmMemoryManager singleton
29
+ *
30
+ * Ensures all components use the same database connection for consistent
31
+ * persistence across MCP server, AgentRegistry, handlers, and agents.
32
+ *
33
+ * @param dbPath Optional database path (relative paths resolved from cwd)
34
+ * @returns Shared SwarmMemoryManager instance
35
+ */
36
+ export declare function getSharedMemoryManager(dbPath?: string): SwarmMemoryManager;
37
+ /**
38
+ * Initialize the shared memory manager asynchronously
39
+ *
40
+ * This method ensures only ONE initialization happens even if called multiple times.
41
+ * All callers will receive the same initialized instance.
42
+ *
43
+ * @param dbPath Optional database path
44
+ * @returns Promise that resolves to the initialized SwarmMemoryManager
45
+ */
46
+ export declare function initializeSharedMemoryManager(dbPath?: string): Promise<SwarmMemoryManager>;
47
+ /**
48
+ * Check if shared memory manager is initialized
49
+ */
50
+ export declare function hasSharedMemoryManager(): boolean;
51
+ /**
52
+ * Get the path of the current shared memory manager
53
+ */
54
+ export declare function getSharedMemoryManagerPath(): string | null;
55
+ /**
56
+ * Reset the shared memory manager singleton
57
+ *
58
+ * Use with caution - this should only be called during testing or
59
+ * when explicitly changing database paths.
60
+ */
61
+ export declare function resetSharedMemoryManager(): Promise<void>;
62
+ /**
63
+ * Get database path info for debugging
64
+ */
65
+ export declare function getDbPathInfo(): {
66
+ defaultPath: string;
67
+ currentSharedPath: string | null;
68
+ processCwd: string;
69
+ envPath: string | undefined;
70
+ };
71
+ /**
72
+ * Setup process exit handlers to ensure database is properly closed
73
+ *
74
+ * This is critical for sql.js which only persists to disk on close()
75
+ */
76
+ export declare function setupExitHandlers(): void;
77
+ //# sourceMappingURL=MemoryManagerFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryManagerFactory.d.ts","sourceRoot":"","sources":["../../../src/core/memory/MemoryManagerFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAO7D;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CA6BxD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAW5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,kBAAkB,CA0B1E;AAED;;;;;;;;GAQG;AACH,wBAAsB,6BAA6B,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA8BhG;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,GAAG,IAAI,CAE1D;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAY9D;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,CAOA;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CA2CxC"}
@@ -0,0 +1,270 @@
1
+ "use strict";
2
+ /**
3
+ * MemoryManagerFactory - Singleton Pattern for Shared Memory Management
4
+ *
5
+ * Resolves the persistence issue where multiple SwarmMemoryManager instances
6
+ * cause data fragmentation - data written to one instance is not visible to others.
7
+ *
8
+ * Key Issues Fixed:
9
+ * 1. Multiple isolated instances (MCP server, AgentRegistry, Phase2Tools each created their own)
10
+ * 2. sql.js persistence model requires explicit save()/close() calls
11
+ * 3. Ensures all components share the same database connection
12
+ *
13
+ * @module MemoryManagerFactory
14
+ * @version 1.0.0
15
+ */
16
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ var desc = Object.getOwnPropertyDescriptor(m, k);
19
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
+ desc = { enumerable: true, get: function() { return m[k]; } };
21
+ }
22
+ Object.defineProperty(o, k2, desc);
23
+ }) : (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ o[k2] = m[k];
26
+ }));
27
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29
+ }) : function(o, v) {
30
+ o["default"] = v;
31
+ });
32
+ var __importStar = (this && this.__importStar) || (function () {
33
+ var ownKeys = function(o) {
34
+ ownKeys = Object.getOwnPropertyNames || function (o) {
35
+ var ar = [];
36
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
37
+ return ar;
38
+ };
39
+ return ownKeys(o);
40
+ };
41
+ return function (mod) {
42
+ if (mod && mod.__esModule) return mod;
43
+ var result = {};
44
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
45
+ __setModuleDefault(result, mod);
46
+ return result;
47
+ };
48
+ })();
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.resolveDbPath = resolveDbPath;
51
+ exports.ensureDbDirectoryExists = ensureDbDirectoryExists;
52
+ exports.getSharedMemoryManager = getSharedMemoryManager;
53
+ exports.initializeSharedMemoryManager = initializeSharedMemoryManager;
54
+ exports.hasSharedMemoryManager = hasSharedMemoryManager;
55
+ exports.getSharedMemoryManagerPath = getSharedMemoryManagerPath;
56
+ exports.resetSharedMemoryManager = resetSharedMemoryManager;
57
+ exports.getDbPathInfo = getDbPathInfo;
58
+ exports.setupExitHandlers = setupExitHandlers;
59
+ const path = __importStar(require("path"));
60
+ const fs = __importStar(require("fs-extra"));
61
+ const SwarmMemoryManager_js_1 = require("./SwarmMemoryManager.js");
62
+ // Singleton instances
63
+ let sharedMemoryManager = null;
64
+ let sharedMemoryManagerPath = null;
65
+ let initializationPromise = null;
66
+ /**
67
+ * Resolve database path - ensures we use an absolute path in user's project
68
+ *
69
+ * Database should be in the USER'S project directory (process.cwd()),
70
+ * NOT in the package installation directory.
71
+ */
72
+ function resolveDbPath(inputPath) {
73
+ // If no path provided, use default in user's project
74
+ if (!inputPath) {
75
+ return path.join(process.cwd(), '.agentic-qe', 'memory.db');
76
+ }
77
+ // Special case: in-memory database
78
+ if (inputPath === ':memory:') {
79
+ return inputPath;
80
+ }
81
+ // Check environment variable override
82
+ const envPath = process.env.AQE_DB_PATH;
83
+ if (envPath) {
84
+ // If absolute, use as-is
85
+ if (path.isAbsolute(envPath)) {
86
+ return envPath;
87
+ }
88
+ // If relative, resolve from cwd
89
+ return path.join(process.cwd(), envPath);
90
+ }
91
+ // If already absolute, return as-is
92
+ if (path.isAbsolute(inputPath)) {
93
+ return inputPath;
94
+ }
95
+ // Convert relative path to absolute using cwd (user's project)
96
+ return path.join(process.cwd(), inputPath);
97
+ }
98
+ /**
99
+ * Ensure the database directory exists
100
+ */
101
+ function ensureDbDirectoryExists(dbPath) {
102
+ if (dbPath === ':memory:') {
103
+ return;
104
+ }
105
+ const dbDir = path.dirname(dbPath);
106
+ if (!fs.existsSync(dbDir)) {
107
+ fs.mkdirSync(dbDir, { recursive: true });
108
+ console.log(`[MemoryManagerFactory] Created database directory: ${dbDir}`);
109
+ }
110
+ }
111
+ /**
112
+ * Get the shared SwarmMemoryManager singleton
113
+ *
114
+ * Ensures all components use the same database connection for consistent
115
+ * persistence across MCP server, AgentRegistry, handlers, and agents.
116
+ *
117
+ * @param dbPath Optional database path (relative paths resolved from cwd)
118
+ * @returns Shared SwarmMemoryManager instance
119
+ */
120
+ function getSharedMemoryManager(dbPath) {
121
+ const resolvedPath = resolveDbPath(dbPath);
122
+ // If singleton exists with same path, return it
123
+ if (sharedMemoryManager && sharedMemoryManagerPath === resolvedPath) {
124
+ return sharedMemoryManager;
125
+ }
126
+ // If singleton exists with different path, warn but return existing
127
+ // (prevents multiple database connections causing fragmentation)
128
+ if (sharedMemoryManager && sharedMemoryManagerPath !== resolvedPath) {
129
+ console.warn(`[MemoryManagerFactory] Memory manager already initialized with path: ${sharedMemoryManagerPath}. ` +
130
+ `Ignoring new path: ${resolvedPath}. Use resetSharedMemoryManager() to change path.`);
131
+ return sharedMemoryManager;
132
+ }
133
+ // Create new singleton
134
+ ensureDbDirectoryExists(resolvedPath);
135
+ console.log(`[MemoryManagerFactory] Creating shared memory manager at: ${resolvedPath}`);
136
+ sharedMemoryManager = new SwarmMemoryManager_js_1.SwarmMemoryManager(resolvedPath);
137
+ sharedMemoryManagerPath = resolvedPath;
138
+ return sharedMemoryManager;
139
+ }
140
+ /**
141
+ * Initialize the shared memory manager asynchronously
142
+ *
143
+ * This method ensures only ONE initialization happens even if called multiple times.
144
+ * All callers will receive the same initialized instance.
145
+ *
146
+ * @param dbPath Optional database path
147
+ * @returns Promise that resolves to the initialized SwarmMemoryManager
148
+ */
149
+ async function initializeSharedMemoryManager(dbPath) {
150
+ // If already initializing, return the existing promise
151
+ if (initializationPromise) {
152
+ return initializationPromise;
153
+ }
154
+ // If already initialized, return the instance
155
+ if (sharedMemoryManager) {
156
+ const resolvedPath = resolveDbPath(dbPath);
157
+ if (sharedMemoryManagerPath === resolvedPath) {
158
+ return sharedMemoryManager;
159
+ }
160
+ }
161
+ // Start initialization
162
+ initializationPromise = (async () => {
163
+ const manager = getSharedMemoryManager(dbPath);
164
+ await manager.initialize();
165
+ console.log(`[MemoryManagerFactory] Shared memory manager initialized at: ${sharedMemoryManagerPath}`);
166
+ return manager;
167
+ })();
168
+ try {
169
+ const result = await initializationPromise;
170
+ return result;
171
+ }
172
+ catch (error) {
173
+ // Reset on failure so it can be retried
174
+ initializationPromise = null;
175
+ throw error;
176
+ }
177
+ }
178
+ /**
179
+ * Check if shared memory manager is initialized
180
+ */
181
+ function hasSharedMemoryManager() {
182
+ return sharedMemoryManager !== null;
183
+ }
184
+ /**
185
+ * Get the path of the current shared memory manager
186
+ */
187
+ function getSharedMemoryManagerPath() {
188
+ return sharedMemoryManagerPath;
189
+ }
190
+ /**
191
+ * Reset the shared memory manager singleton
192
+ *
193
+ * Use with caution - this should only be called during testing or
194
+ * when explicitly changing database paths.
195
+ */
196
+ async function resetSharedMemoryManager() {
197
+ if (sharedMemoryManager) {
198
+ try {
199
+ await sharedMemoryManager.close();
200
+ }
201
+ catch (error) {
202
+ console.warn('[MemoryManagerFactory] Error closing memory manager:', error);
203
+ }
204
+ sharedMemoryManager = null;
205
+ sharedMemoryManagerPath = null;
206
+ initializationPromise = null;
207
+ console.log('[MemoryManagerFactory] Shared memory manager reset');
208
+ }
209
+ }
210
+ /**
211
+ * Get database path info for debugging
212
+ */
213
+ function getDbPathInfo() {
214
+ return {
215
+ defaultPath: resolveDbPath(),
216
+ currentSharedPath: sharedMemoryManagerPath,
217
+ processCwd: process.cwd(),
218
+ envPath: process.env.AQE_DB_PATH
219
+ };
220
+ }
221
+ /**
222
+ * Setup process exit handlers to ensure database is properly closed
223
+ *
224
+ * This is critical for sql.js which only persists to disk on close()
225
+ */
226
+ function setupExitHandlers() {
227
+ const cleanup = async () => {
228
+ if (sharedMemoryManager) {
229
+ console.log('[MemoryManagerFactory] Closing database on process exit...');
230
+ try {
231
+ await sharedMemoryManager.close();
232
+ console.log('[MemoryManagerFactory] Database closed successfully');
233
+ }
234
+ catch (error) {
235
+ console.error('[MemoryManagerFactory] Error closing database:', error);
236
+ }
237
+ }
238
+ };
239
+ // Handle normal exit
240
+ process.on('exit', () => {
241
+ // Can't use async here, but close() should be synchronous for better-sqlite3
242
+ if (sharedMemoryManager) {
243
+ try {
244
+ // SwarmMemoryManager.close() is async but better-sqlite3 close is sync
245
+ sharedMemoryManager.db?.close?.();
246
+ }
247
+ catch (error) {
248
+ console.error('[MemoryManagerFactory] Error on exit:', error);
249
+ }
250
+ }
251
+ });
252
+ // Handle termination signals
253
+ process.on('SIGINT', async () => {
254
+ await cleanup();
255
+ process.exit(0);
256
+ });
257
+ process.on('SIGTERM', async () => {
258
+ await cleanup();
259
+ process.exit(0);
260
+ });
261
+ // Handle uncaught exceptions
262
+ process.on('uncaughtException', async (error) => {
263
+ console.error('[MemoryManagerFactory] Uncaught exception:', error);
264
+ await cleanup();
265
+ process.exit(1);
266
+ });
267
+ }
268
+ // Setup exit handlers when module is loaded
269
+ setupExitHandlers();
270
+ //# sourceMappingURL=MemoryManagerFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryManagerFactory.js","sourceRoot":"","sources":["../../../src/core/memory/MemoryManagerFactory.ts"],"names":[],"mappings":"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"}
@@ -180,6 +180,7 @@ export declare class SwarmMemoryManager {
180
180
  private initialized;
181
181
  private accessControl;
182
182
  private aclCache;
183
+ private patternCache;
183
184
  private agentDBManager;
184
185
  private lastModifiedTimestamps;
185
186
  private readonly TTL_POLICY;
@@ -188,6 +189,16 @@ export declare class SwarmMemoryManager {
188
189
  private queryOne;
189
190
  private queryAll;
190
191
  initialize(): Promise<void>;
192
+ /**
193
+ * Store a key-value pair in memory with OpenTelemetry instrumentation
194
+ *
195
+ * Automatically instruments the memory store operation with distributed tracing.
196
+ * Records namespace, key, value size, TTL, and operation performance metrics.
197
+ *
198
+ * @param key - Memory key
199
+ * @param value - Value to store (will be JSON serialized)
200
+ * @param options - Store options including partition, TTL, access control
201
+ */
191
202
  store(key: string, value: any, options?: StoreOptions): Promise<void>;
192
203
  /**
193
204
  * Alias for store() method to maintain compatibility with MemoryStore interface
@@ -199,8 +210,38 @@ export declare class SwarmMemoryManager {
199
210
  * Supports both options object and partition string
200
211
  */
201
212
  get(key: string, options?: RetrieveOptions | string): Promise<any>;
213
+ /**
214
+ * Retrieve a value from memory with OpenTelemetry instrumentation
215
+ *
216
+ * Automatically instruments the memory retrieve operation with distributed tracing.
217
+ * Records namespace, key, whether the value was found, value size, and performance metrics.
218
+ *
219
+ * @param key - Memory key
220
+ * @param options - Retrieve options including partition, agentId for access control
221
+ * @returns Retrieved value or null if not found
222
+ */
202
223
  retrieve(key: string, options?: RetrieveOptions): Promise<any>;
224
+ /**
225
+ * Query/search memory entries by pattern with OpenTelemetry instrumentation
226
+ *
227
+ * Automatically instruments the memory search operation with distributed tracing.
228
+ * Records namespace, search pattern, result count, and performance metrics.
229
+ *
230
+ * @param pattern - SQL LIKE pattern for key matching
231
+ * @param options - Retrieve options including partition, agentId for access control
232
+ * @returns Array of matching memory entries
233
+ */
203
234
  query(pattern: string, options?: RetrieveOptions): Promise<MemoryEntry[]>;
235
+ /**
236
+ * Delete a key from memory with OpenTelemetry instrumentation
237
+ *
238
+ * Automatically instruments the memory delete operation with distributed tracing.
239
+ * Records namespace, key, and operation performance metrics.
240
+ *
241
+ * @param key - Memory key to delete
242
+ * @param partition - Memory partition (namespace)
243
+ * @param options - Delete options including agentId for access control
244
+ */
204
245
  delete(key: string, partition?: string, options?: DeleteOptions): Promise<void>;
205
246
  clear(partition?: string): Promise<void>;
206
247
  postHint(hint: {
@@ -239,6 +280,11 @@ export declare class SwarmMemoryManager {
239
280
  storePattern(pattern: Pattern): Promise<string>;
240
281
  getPattern(patternName: string): Promise<Pattern>;
241
282
  incrementPatternUsage(patternName: string): Promise<void>;
283
+ /**
284
+ * Invalidate pattern cache for a specific agent
285
+ * Call this after any pattern mutation to maintain cache coherence
286
+ */
287
+ private invalidatePatternCacheForAgent;
242
288
  queryPatternsByConfidence(threshold: number): Promise<Pattern[]>;
243
289
  /**
244
290
  * Query patterns by agent ID and minimum confidence
@@ -247,7 +293,19 @@ export declare class SwarmMemoryManager {
247
293
  * @param minConfidence Minimum confidence threshold (default: 0)
248
294
  * @returns Array of patterns belonging to the agent
249
295
  */
296
+ /**
297
+ * Escape special LIKE pattern characters to prevent SQL injection
298
+ */
299
+ private escapeLikePattern;
250
300
  queryPatternsByAgent(agentId: string, minConfidence?: number): Promise<Pattern[]>;
301
+ /**
302
+ * Get pattern cache statistics for monitoring
303
+ */
304
+ getPatternCacheStats(): import("./PatternCache").CacheStats;
305
+ /**
306
+ * Clear pattern cache (useful after bulk updates)
307
+ */
308
+ clearPatternCache(): void;
251
309
  createConsensusProposal(proposal: ConsensusProposal): Promise<void>;
252
310
  getConsensusProposal(id: string): Promise<ConsensusProposal>;
253
311
  voteOnConsensus(proposalId: string, agentId: string): Promise<boolean>;