agentic-qe 1.8.3 → 1.8.4

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 (91) hide show
  1. package/.claude/skills/cicd-pipeline-qe-orchestrator/README.md +2 -2
  2. package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +6 -6
  3. package/CHANGELOG.md +220 -0
  4. package/README.md +36 -3
  5. package/config/constitution.schema.json +423 -0
  6. package/config/otel-collector.yaml +234 -0
  7. package/dist/cli/commands/init-claude-md-template.js +3 -3
  8. package/dist/constitution/index.d.ts +105 -0
  9. package/dist/constitution/index.d.ts.map +1 -0
  10. package/dist/constitution/index.js +207 -0
  11. package/dist/constitution/index.js.map +1 -0
  12. package/dist/constitution/loader.d.ts +141 -0
  13. package/dist/constitution/loader.d.ts.map +1 -0
  14. package/dist/constitution/loader.js +515 -0
  15. package/dist/constitution/loader.js.map +1 -0
  16. package/dist/constitution/schema.d.ts +409 -0
  17. package/dist/constitution/schema.d.ts.map +1 -0
  18. package/dist/constitution/schema.js +71 -0
  19. package/dist/constitution/schema.js.map +1 -0
  20. package/dist/core/memory/MemoryManagerFactory.d.ts +77 -0
  21. package/dist/core/memory/MemoryManagerFactory.d.ts.map +1 -0
  22. package/dist/core/memory/MemoryManagerFactory.js +270 -0
  23. package/dist/core/memory/MemoryManagerFactory.js.map +1 -0
  24. package/dist/core/memory/SwarmMemoryManager.d.ts +18 -0
  25. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  26. package/dist/core/memory/SwarmMemoryManager.js +96 -11
  27. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  28. package/dist/core/memory/index.d.ts +1 -0
  29. package/dist/core/memory/index.d.ts.map +1 -1
  30. package/dist/core/memory/index.js +12 -1
  31. package/dist/core/memory/index.js.map +1 -1
  32. package/dist/mcp/handlers/memory/memory-backup.js +6 -6
  33. package/dist/mcp/handlers/memory/memory-backup.js.map +1 -1
  34. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -1
  35. package/dist/mcp/handlers/phase2/Phase2Tools.js +4 -2
  36. package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -1
  37. package/dist/mcp/server.d.ts.map +1 -1
  38. package/dist/mcp/server.js +4 -38
  39. package/dist/mcp/server.js.map +1 -1
  40. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  41. package/dist/mcp/services/AgentRegistry.js +4 -4
  42. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  43. package/dist/persistence/event-store.d.ts +162 -0
  44. package/dist/persistence/event-store.d.ts.map +1 -0
  45. package/dist/persistence/event-store.js +315 -0
  46. package/dist/persistence/event-store.js.map +1 -0
  47. package/dist/persistence/index.d.ts +145 -0
  48. package/dist/persistence/index.d.ts.map +1 -0
  49. package/dist/persistence/index.js +227 -0
  50. package/dist/persistence/index.js.map +1 -0
  51. package/dist/persistence/metrics-aggregator.d.ts +187 -0
  52. package/dist/persistence/metrics-aggregator.d.ts.map +1 -0
  53. package/dist/persistence/metrics-aggregator.js +495 -0
  54. package/dist/persistence/metrics-aggregator.js.map +1 -0
  55. package/dist/persistence/reasoning-store.d.ts +178 -0
  56. package/dist/persistence/reasoning-store.d.ts.map +1 -0
  57. package/dist/persistence/reasoning-store.js +440 -0
  58. package/dist/persistence/reasoning-store.js.map +1 -0
  59. package/dist/persistence/schema.d.ts +181 -0
  60. package/dist/persistence/schema.d.ts.map +1 -0
  61. package/dist/persistence/schema.js +186 -0
  62. package/dist/persistence/schema.js.map +1 -0
  63. package/dist/telemetry/bootstrap.d.ts +67 -0
  64. package/dist/telemetry/bootstrap.d.ts.map +1 -0
  65. package/dist/telemetry/bootstrap.js +320 -0
  66. package/dist/telemetry/bootstrap.js.map +1 -0
  67. package/dist/telemetry/index.d.ts +16 -0
  68. package/dist/telemetry/index.d.ts.map +1 -0
  69. package/dist/telemetry/index.js +84 -0
  70. package/dist/telemetry/index.js.map +1 -0
  71. package/dist/telemetry/metrics/agent-metrics.d.ts +109 -0
  72. package/dist/telemetry/metrics/agent-metrics.d.ts.map +1 -0
  73. package/dist/telemetry/metrics/agent-metrics.js +213 -0
  74. package/dist/telemetry/metrics/agent-metrics.js.map +1 -0
  75. package/dist/telemetry/metrics/index.d.ts +51 -0
  76. package/dist/telemetry/metrics/index.d.ts.map +1 -0
  77. package/dist/telemetry/metrics/index.js +100 -0
  78. package/dist/telemetry/metrics/index.js.map +1 -0
  79. package/dist/telemetry/metrics/quality-metrics.d.ts +171 -0
  80. package/dist/telemetry/metrics/quality-metrics.d.ts.map +1 -0
  81. package/dist/telemetry/metrics/quality-metrics.js +259 -0
  82. package/dist/telemetry/metrics/quality-metrics.js.map +1 -0
  83. package/dist/telemetry/metrics/system-metrics.d.ts +129 -0
  84. package/dist/telemetry/metrics/system-metrics.d.ts.map +1 -0
  85. package/dist/telemetry/metrics/system-metrics.js +380 -0
  86. package/dist/telemetry/metrics/system-metrics.js.map +1 -0
  87. package/dist/telemetry/types.d.ts +195 -0
  88. package/dist/telemetry/types.d.ts.map +1 -0
  89. package/dist/telemetry/types.js +90 -0
  90. package/dist/telemetry/types.js.map +1 -0
  91. package/package.json +18 -2
@@ -0,0 +1,409 @@
1
+ /**
2
+ * Constitution Schema - TypeScript Type Definitions
3
+ *
4
+ * Defines the structure for quality evaluation constitutions that govern
5
+ * agent behavior and quality criteria in the Agentic QE Fleet.
6
+ *
7
+ * @module constitution/schema
8
+ * @version 1.0.0
9
+ */
10
+ /**
11
+ * Priority levels for principles and rules
12
+ */
13
+ export type PriorityLevel = 'critical' | 'high' | 'medium' | 'low';
14
+ /**
15
+ * Severity levels for rule violations
16
+ */
17
+ export type SeverityLevel = 'error' | 'warning' | 'info';
18
+ /**
19
+ * Aggregation methods for metrics
20
+ */
21
+ export type AggregationType = 'sum' | 'avg' | 'min' | 'max' | 'count' | 'percentile';
22
+ /**
23
+ * Condition operators for rule evaluation
24
+ */
25
+ export type ConditionOperator = 'equals' | 'not_equals' | 'greater_than' | 'less_than' | 'greater_than_or_equal' | 'less_than_or_equal' | 'contains' | 'not_contains' | 'matches' | 'in' | 'not_in' | 'exists' | 'not_exists';
26
+ /**
27
+ * Action types when rules are triggered
28
+ */
29
+ export type ActionType = 'fail' | 'warn' | 'notify' | 'log' | 'block' | 'require_review' | 'auto_fix' | 'escalate';
30
+ /**
31
+ * Threshold comparison modes
32
+ */
33
+ export type ThresholdMode = 'absolute' | 'percentage' | 'relative';
34
+ /**
35
+ * Constitution status
36
+ */
37
+ export type ConstitutionStatus = 'active' | 'deprecated' | 'draft' | 'archived';
38
+ /**
39
+ * Principle definition within a constitution
40
+ * Represents a core quality principle that guides evaluation
41
+ */
42
+ export interface Principle {
43
+ /** Unique identifier for the principle */
44
+ id: string;
45
+ /** Human-readable name */
46
+ name: string;
47
+ /** Detailed description of the principle */
48
+ description: string;
49
+ /** Priority level for this principle */
50
+ priority: PriorityLevel;
51
+ /** Category grouping for the principle */
52
+ category: string;
53
+ /** Optional tags for filtering and search */
54
+ tags?: string[];
55
+ /** Whether this principle is mandatory */
56
+ mandatory?: boolean;
57
+ /** Related principle IDs */
58
+ relatedPrinciples?: string[];
59
+ }
60
+ /**
61
+ * Condition for rule evaluation
62
+ */
63
+ export interface RuleCondition {
64
+ /** The field or metric to evaluate */
65
+ field: string;
66
+ /** Comparison operator */
67
+ operator: ConditionOperator;
68
+ /** Value to compare against */
69
+ value: string | number | boolean | string[] | number[];
70
+ /** Optional unit for the value */
71
+ unit?: string;
72
+ /** Nested conditions for complex logic */
73
+ and?: RuleCondition[];
74
+ /** Alternative conditions */
75
+ or?: RuleCondition[];
76
+ }
77
+ /**
78
+ * Action to take when a rule is triggered
79
+ */
80
+ export interface RuleAction {
81
+ /** Type of action to perform */
82
+ type: ActionType;
83
+ /** Message to display or log */
84
+ message: string;
85
+ /** Additional parameters for the action */
86
+ params?: Record<string, unknown>;
87
+ /** Whether to halt further processing */
88
+ stopProcessing?: boolean;
89
+ /** Notification targets */
90
+ notify?: string[];
91
+ }
92
+ /**
93
+ * Rule definition linking principles to conditions and actions
94
+ */
95
+ export interface Rule {
96
+ /** Unique identifier for the rule */
97
+ id: string;
98
+ /** Human-readable name */
99
+ name?: string;
100
+ /** Reference to the principle this rule enforces */
101
+ principleId: string;
102
+ /** Condition that triggers the rule */
103
+ condition: RuleCondition;
104
+ /** Action to take when condition is met */
105
+ action: RuleAction;
106
+ /** Severity of rule violation */
107
+ severity: SeverityLevel;
108
+ /** Whether this rule is enabled */
109
+ enabled?: boolean;
110
+ /** Description of what this rule checks */
111
+ description?: string;
112
+ /** Remediation guidance when rule is violated */
113
+ remediation?: string;
114
+ /** Example of compliant code/configuration */
115
+ examples?: string[];
116
+ }
117
+ /**
118
+ * Metric definition for quality measurement
119
+ */
120
+ export interface MetricDefinition {
121
+ /** Unique identifier for the metric */
122
+ id: string;
123
+ /** Human-readable name */
124
+ name: string;
125
+ /** Description of what this metric measures */
126
+ description?: string;
127
+ /** Unit of measurement */
128
+ unit: string;
129
+ /** How to aggregate multiple values */
130
+ aggregation: AggregationType;
131
+ /** Target value to achieve */
132
+ targetValue?: number;
133
+ /** Value that triggers a warning */
134
+ warningThreshold?: number;
135
+ /** Value that triggers a critical alert */
136
+ criticalThreshold?: number;
137
+ /** Data type of the metric value */
138
+ dataType?: 'number' | 'percentage' | 'duration' | 'count' | 'ratio';
139
+ /** Whether higher values are better */
140
+ higherIsBetter?: boolean;
141
+ /** Formula for computed metrics */
142
+ formula?: string;
143
+ /** Dependencies on other metrics */
144
+ dependencies?: string[];
145
+ /** Percentile for percentile-based metrics */
146
+ percentile?: number;
147
+ }
148
+ /**
149
+ * Threshold definition for quality gates
150
+ */
151
+ export interface Threshold {
152
+ /** Unique identifier for the threshold */
153
+ id: string;
154
+ /** Reference to the metric this threshold applies to */
155
+ metricId: string;
156
+ /** Human-readable name */
157
+ name?: string;
158
+ /** Comparison mode */
159
+ mode: ThresholdMode;
160
+ /** Warning level value */
161
+ warning: number;
162
+ /** Critical level value */
163
+ critical: number;
164
+ /** Target value to aim for */
165
+ target?: number;
166
+ /** Whether to block on threshold violation */
167
+ blocking?: boolean;
168
+ /** Time period for the threshold evaluation */
169
+ period?: string;
170
+ /** Applicable environments */
171
+ environments?: string[];
172
+ }
173
+ /**
174
+ * Metadata about the constitution
175
+ */
176
+ export interface ConstitutionMetadata {
177
+ /** When the constitution was created */
178
+ createdAt: string;
179
+ /** When the constitution was last updated */
180
+ updatedAt: string;
181
+ /** Who created or maintains the constitution */
182
+ author: string;
183
+ /** Applicable agent types */
184
+ applicableTo: string[];
185
+ /** Parent constitution to inherit from */
186
+ inheritsFrom?: string;
187
+ /** Current status of the constitution */
188
+ status: ConstitutionStatus;
189
+ /** Optional expiration date */
190
+ expiresAt?: string;
191
+ /** Changelog entries */
192
+ changelog?: ChangelogEntry[];
193
+ /** Custom properties */
194
+ customProperties?: Record<string, unknown>;
195
+ }
196
+ /**
197
+ * Changelog entry for constitution version history
198
+ */
199
+ export interface ChangelogEntry {
200
+ /** Version number */
201
+ version: string;
202
+ /** Date of change */
203
+ date: string;
204
+ /** Description of changes */
205
+ description: string;
206
+ /** Who made the change */
207
+ author?: string;
208
+ }
209
+ /**
210
+ * Complete constitution definition
211
+ */
212
+ export interface Constitution {
213
+ /** Unique identifier for the constitution */
214
+ id: string;
215
+ /** Human-readable name */
216
+ name: string;
217
+ /** Semantic version string */
218
+ version: string;
219
+ /** Description of the constitution's purpose */
220
+ description: string;
221
+ /** Core principles */
222
+ principles: Principle[];
223
+ /** Evaluation rules */
224
+ rules: Rule[];
225
+ /** Metric definitions */
226
+ metrics: MetricDefinition[];
227
+ /** Quality thresholds */
228
+ thresholds: Threshold[];
229
+ /** Constitution metadata */
230
+ metadata: ConstitutionMetadata;
231
+ }
232
+ /**
233
+ * Result of constitution validation
234
+ */
235
+ export interface ValidationResult {
236
+ /** Whether validation passed */
237
+ valid: boolean;
238
+ /** List of validation errors */
239
+ errors: ValidationError[];
240
+ /** List of validation warnings */
241
+ warnings: ValidationWarning[];
242
+ }
243
+ /**
244
+ * Validation error details
245
+ */
246
+ export interface ValidationError {
247
+ /** JSON path to the error location */
248
+ path: string;
249
+ /** Error message */
250
+ message: string;
251
+ /** Error code */
252
+ code: string;
253
+ /** Expected value or type */
254
+ expected?: string;
255
+ /** Actual value received */
256
+ actual?: string;
257
+ }
258
+ /**
259
+ * Validation warning details
260
+ */
261
+ export interface ValidationWarning {
262
+ /** JSON path to the warning location */
263
+ path: string;
264
+ /** Warning message */
265
+ message: string;
266
+ /** Warning code */
267
+ code: string;
268
+ /** Suggested improvement */
269
+ suggestion?: string;
270
+ }
271
+ /**
272
+ * Options for loading constitutions
273
+ */
274
+ export interface LoadOptions {
275
+ /** Whether to validate after loading */
276
+ validate?: boolean;
277
+ /** Whether to resolve inheritance */
278
+ resolveInheritance?: boolean;
279
+ /** Custom schema path */
280
+ schemaPath?: string;
281
+ /** Strict mode for validation */
282
+ strict?: boolean;
283
+ }
284
+ /**
285
+ * Options for merging constitutions
286
+ */
287
+ export interface MergeOptions {
288
+ /** Strategy for array merging */
289
+ arrayStrategy?: 'replace' | 'concat' | 'merge';
290
+ /** Whether to preserve base metadata */
291
+ preserveMetadata?: boolean;
292
+ /** Deep merge objects */
293
+ deepMerge?: boolean;
294
+ }
295
+ /**
296
+ * Agent type to constitution mapping
297
+ */
298
+ export interface AgentConstitutionMapping {
299
+ /** Agent type identifier */
300
+ agentType: string;
301
+ /** Primary constitution ID */
302
+ constitutionId: string;
303
+ /** Additional constitution IDs to apply */
304
+ additionalConstitutions?: string[];
305
+ /** Override settings */
306
+ overrides?: Partial<Constitution>;
307
+ }
308
+ /**
309
+ * Constitution evaluation context
310
+ */
311
+ export interface EvaluationContext {
312
+ /** Agent performing the evaluation */
313
+ agentId: string;
314
+ /** Agent type */
315
+ agentType: string;
316
+ /** Target being evaluated */
317
+ target: string;
318
+ /** Environment context */
319
+ environment: string;
320
+ /** Additional context data */
321
+ data: Record<string, unknown>;
322
+ /** Timestamp of evaluation */
323
+ timestamp: string;
324
+ }
325
+ /**
326
+ * Result of constitution evaluation
327
+ */
328
+ export interface EvaluationResult {
329
+ /** Overall pass/fail status */
330
+ passed: boolean;
331
+ /** Constitution that was evaluated */
332
+ constitutionId: string;
333
+ /** Individual rule results */
334
+ ruleResults: RuleEvaluationResult[];
335
+ /** Metric values collected */
336
+ metricValues: MetricValue[];
337
+ /** Threshold violations */
338
+ thresholdViolations: ThresholdViolation[];
339
+ /** Overall score (0-100) */
340
+ score: number;
341
+ /** Evaluation context */
342
+ context: EvaluationContext;
343
+ /** Duration of evaluation in ms */
344
+ duration: number;
345
+ }
346
+ /**
347
+ * Result of individual rule evaluation
348
+ */
349
+ export interface RuleEvaluationResult {
350
+ /** Rule ID */
351
+ ruleId: string;
352
+ /** Whether rule passed */
353
+ passed: boolean;
354
+ /** Actual value that was evaluated */
355
+ actualValue: unknown;
356
+ /** Message from the rule */
357
+ message?: string;
358
+ /** Action that was triggered */
359
+ actionTaken?: ActionType;
360
+ }
361
+ /**
362
+ * Collected metric value
363
+ */
364
+ export interface MetricValue {
365
+ /** Metric ID */
366
+ metricId: string;
367
+ /** Collected value */
368
+ value: number;
369
+ /** Unit of measurement */
370
+ unit: string;
371
+ /** Timestamp of collection */
372
+ timestamp: string;
373
+ /** Additional context */
374
+ context?: Record<string, unknown>;
375
+ }
376
+ /**
377
+ * Threshold violation details
378
+ */
379
+ export interface ThresholdViolation {
380
+ /** Threshold ID */
381
+ thresholdId: string;
382
+ /** Metric ID */
383
+ metricId: string;
384
+ /** Actual value */
385
+ actualValue: number;
386
+ /** Threshold value that was violated */
387
+ thresholdValue: number;
388
+ /** Severity level */
389
+ severity: 'warning' | 'critical';
390
+ /** Whether this is blocking */
391
+ blocking: boolean;
392
+ }
393
+ /**
394
+ * Type guard to check if an object is a valid Constitution
395
+ */
396
+ export declare function isConstitution(obj: unknown): obj is Constitution;
397
+ /**
398
+ * Type guard to check if an object is a valid Principle
399
+ */
400
+ export declare function isPrinciple(obj: unknown): obj is Principle;
401
+ /**
402
+ * Type guard to check if an object is a valid Rule
403
+ */
404
+ export declare function isRule(obj: unknown): obj is Rule;
405
+ /**
406
+ * Type guard to check if an object is a valid MetricDefinition
407
+ */
408
+ export declare function isMetricDefinition(obj: unknown): obj is MetricDefinition;
409
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/constitution/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ /**
3
+ * Constitution Schema - TypeScript Type Definitions
4
+ *
5
+ * Defines the structure for quality evaluation constitutions that govern
6
+ * agent behavior and quality criteria in the Agentic QE Fleet.
7
+ *
8
+ * @module constitution/schema
9
+ * @version 1.0.0
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.isConstitution = isConstitution;
13
+ exports.isPrinciple = isPrinciple;
14
+ exports.isRule = isRule;
15
+ exports.isMetricDefinition = isMetricDefinition;
16
+ /**
17
+ * Type guard to check if an object is a valid Constitution
18
+ */
19
+ function isConstitution(obj) {
20
+ if (!obj || typeof obj !== 'object')
21
+ return false;
22
+ const c = obj;
23
+ return (typeof c.id === 'string' &&
24
+ typeof c.name === 'string' &&
25
+ typeof c.version === 'string' &&
26
+ typeof c.description === 'string' &&
27
+ Array.isArray(c.principles) &&
28
+ Array.isArray(c.rules) &&
29
+ Array.isArray(c.metrics) &&
30
+ Array.isArray(c.thresholds) &&
31
+ c.metadata !== undefined);
32
+ }
33
+ /**
34
+ * Type guard to check if an object is a valid Principle
35
+ */
36
+ function isPrinciple(obj) {
37
+ if (!obj || typeof obj !== 'object')
38
+ return false;
39
+ const p = obj;
40
+ return (typeof p.id === 'string' &&
41
+ typeof p.name === 'string' &&
42
+ typeof p.description === 'string' &&
43
+ ['critical', 'high', 'medium', 'low'].includes(p.priority) &&
44
+ typeof p.category === 'string');
45
+ }
46
+ /**
47
+ * Type guard to check if an object is a valid Rule
48
+ */
49
+ function isRule(obj) {
50
+ if (!obj || typeof obj !== 'object')
51
+ return false;
52
+ const r = obj;
53
+ return (typeof r.id === 'string' &&
54
+ typeof r.principleId === 'string' &&
55
+ r.condition !== undefined &&
56
+ r.action !== undefined &&
57
+ ['error', 'warning', 'info'].includes(r.severity));
58
+ }
59
+ /**
60
+ * Type guard to check if an object is a valid MetricDefinition
61
+ */
62
+ function isMetricDefinition(obj) {
63
+ if (!obj || typeof obj !== 'object')
64
+ return false;
65
+ const m = obj;
66
+ return (typeof m.id === 'string' &&
67
+ typeof m.name === 'string' &&
68
+ typeof m.unit === 'string' &&
69
+ ['sum', 'avg', 'min', 'max', 'count', 'percentile'].includes(m.aggregation));
70
+ }
71
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/constitution/schema.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAobH,wCAcC;AAKD,kCAUC;AAKD,wBAUC;AAKD,gDASC;AA7DD;;GAEG;AACH,SAAgB,cAAc,CAAC,GAAY;IACzC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,CAAC,GAAG,GAA4B,CAAC;IACvC,OAAO,CACL,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ;QACxB,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;QAC1B,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;QAC7B,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ;QACjC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;QAC3B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;QAC3B,CAAC,CAAC,QAAQ,KAAK,SAAS,CACzB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,GAAY;IACtC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,CAAC,GAAG,GAAyB,CAAC;IACpC,OAAO,CACL,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ;QACxB,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;QAC1B,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ;QACjC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAkB,CAAC;QACpE,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAC/B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,MAAM,CAAC,GAAY;IACjC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,CAAC,GAAG,GAAoB,CAAC;IAC/B,OAAO,CACL,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ;QACxB,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ;QACjC,CAAC,CAAC,SAAS,KAAK,SAAS;QACzB,CAAC,CAAC,MAAM,KAAK,SAAS;QACtB,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAkB,CAAC,CAC5D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,GAAY;IAC7C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,CAAC,GAAG,GAAgC,CAAC;IAC3C,OAAO,CACL,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ;QACxB,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;QAC1B,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;QAC1B,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAqB,CAAC,CACtF,CAAC;AACJ,CAAC"}
@@ -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"}